Название: Динамический перевод Отправлено: daimon от Январь 17, 2012, 16:50 как перевести динамически приложение, если текст от виджета я знаю только так
Код
такой вариант не прокатит Код
так происходит ещё и дублирование набивание виджета текстом сначала в одном месте, потом ещё и здесь и к примеру лейбла на статусе - статусов может быть несколько, откуда я буду знать явно какой именно сейчас нужно заново писать в функции retranslate()!!!!!!!! кстати ещё может быть проблема и с диалогом, который вызывается по слоту или он после вызова уже будет переведён? я просто хотел сказать про другие виджеты можно конечно создать для каждого класса виджетов функцию retranslate(), но тут может потеряться именно тот текст, который я установил в какой-то функции шаблонным образом (с аргументами) Название: Re: Динамический перевод Отправлено: Bepec от Январь 19, 2012, 21:22 Эм. вопрос какой то странный. Из темы, я незнаю что хочу, но зато могу извратиться...
Ты не можешь динамически переводить приложение, если текст виджетов меняется произвольно. Точнее это можно, но нужен какой либо переводчик. А чем ненравится перевод в tr("")? Название: Re: Динамический перевод Отправлено: daimon от Январь 19, 2012, 23:35 Эм. вопрос какой то странный. Из темы, я незнаю что хочу, но зато могу извратиться... Ты не можешь динамически переводить приложение, если текст виджетов меняется произвольно. Точнее это можно, но нужен какой либо переводчик. А чем ненравится перевод в tr("")? всё просто есть несколько статусов, например "сделано", "сохранено" и т.д., это всё вешается на лейбл (всё к примеру) так вот после динамической смены языка, я на данный момент не знаю буквально какой у меня текст в лейбле (ведь он ставился по сигналу-слоту) и получается я не могу просто так написать ui.label->setText(tr("ok")) в функции retranslate() Название: Re: Динамический перевод Отправлено: Bepec от Январь 20, 2012, 06:56 Я так и не решил эту проблему, в своей программе.
Или в changeEvent, использовать словарь (список перевода), с рус/анг значениями... по другому не вижу выходов. Со словарем в принципе неплохо. Забил все статусы, все переводы, а потом лишь определяй язык и переустанавливай на виджет. PS тоже интересует данный вопрос... Возможно есть более изящное решение? Название: Re: Динамический перевод Отправлено: Пантер от Январь 20, 2012, 07:34 Я когда-то реализовывал (https://github.com/panter-dsd/QDBFRedactor) динамическую смену языка. Может, что дельное найдете.
Название: Re: Динамический перевод Отправлено: daimon от Январь 20, 2012, 14:26 Я так и не решил эту проблему, в своей программе. Или в changeEvent, использовать словарь (список перевода), с рус/анг значениями... по другому не вижу выходов. Со словарем в принципе неплохо. Забил все статусы, все переводы, а потом лишь определяй язык и переустанавливай на виджет. PS тоже интересует данный вопрос... Возможно есть более изящное решение? подробнее про словарь, пожлуйста Название: Re: Динамический перевод Отправлено: daimon от Январь 20, 2012, 14:37 Я когда-то реализовывал (https://github.com/panter-dsd/QDBFRedactor) динамическую смену языка. Может, что дельное найдете. там всё через retranslate() - не то, а диалог перевода нужная штукаНазвание: Re: Динамический перевод Отправлено: Bepec от Январь 20, 2012, 14:46 ну словарь аля
Код: QMap <QString, QString> engRu; но тогда нид будет делать словари по количеству языков. Название: Re: Динамический перевод Отправлено: andrew.k от Январь 20, 2012, 14:57 Где-то же у тебя хранится реальный статус? Енум какой-нибудь.
Или ты статус хранишь в QLabel? ))) Тогда в чем проблемы? После смены языка, вызови еще раз слот который заполняет UI. Название: Re: Динамический перевод Отправлено: Bepec от Январь 20, 2012, 18:47 При смене языка, лейбл будет сменен на стандартный статус, находящийся на ui.
А кому хочется, чтобы надпись "Через 5 минут ваш комп взорвётся", сменилась на "Please wait". Автор собственно и пишет, что у него с этим проблема ;) Название: Re: Динамический перевод Отправлено: daimon от Январь 21, 2012, 05:02 Где-то же у тебя хранится реальный статус? Енум какой-нибудь. Или ты статус хранишь в QLabel? ))) Тогда в чем проблемы? После смены языка, вызови еще раз слот который заполняет UI. лейбл, просто пример, может быть любой виджет, хранящий текст Название: Re: Динамический перевод Отправлено: daimon от Январь 21, 2012, 05:04 ну словарь аля Код: QMap <QString, QString> engRu; но тогда нид будет делать словари по количеству языков. не покатит, после retranslate должны быть только строки с tr(), тогда перевод сработает для виджета Название: Re: Динамический перевод Отправлено: Bepec от Январь 21, 2012, 11:37 Сигнал ChangeLang (не помню) посылается при смене языка. И там уже вступает в действие спокойная схема с мапом.
|