![]() |
|
|
![]()
|
|
| gordmiand |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Есть достаточно большая программа — модулей (классов) 20...
делаю ее локализацию: 1. в progect.pro прописываю TRANSLATIONS = rus.ts 2. даю команду lupdate progect.pro — создается rus.ts 3. программой Qt Linguist открываю rus.ts и перевожу в нем все строки (nazvanie 1, nazvanie 2,...) 4. компилирую rus.qm 5. в MainClass программы:
А можно ли каким-то образом автоматически применить загруженный «переводчик» (translate) ко всем строкам, а не вызывать еще раз соответствующие setText-ы? Все работает верно, вопросы в дальнейшем развитии программы: 1. если в каком-то модуле появляется новая строка, требующая перевода, как мне ее добавить в уже существующий ts-файл — ТОЛЬКО РУКАМИ дописать в него секцию вида <message> <source>text</source> <translation>перевод</translation> </message> 2. если к программе добавляется новый модуль допустим с парой десятков новых строк — тут как быть? Не создавать же заново ts-файл для всего проекта, так как тогда придется ВСЕ строки ЗАНОВО переводить... Это сообщение отредактировал(а) gordmiand - 17.3.2013, 21:23 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Запускаешь lupdate заново - новые строки появляются автоматически, старые больше не нужные помечаются как устаревшие.
Если новые с тем же текстом, что и старые - подбирается перевод, иначе перевода нет. Далее запускаешь Лингвиста. Если формы создаются дизайнером - у них будет создан метод для переименования метод и т.д. Для форм создаваемых вручную, такой метод нужно создавать самому. |
|||
|
||||
| Jeka178RUS |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 3.9.2012 Репутация: нет Всего: нет |
Не совсем понял что значит еще раз? Если лабел из формы он должен будет сам перевестись, если лабел создан руками то просто убедись что параметр был пропущен через tr
Повторно вызывать setText никогда не требовалось |
||||
|
|||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Amp, ты ошибаешься.
|
|||
|
||||
| gordmiand |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
вопрос в том можно ли после вызова installTranslator не вызывать еще раз setText-ы для строк, которые нужно перевести...почему перевод после выполнения installTranslator автоматически не применяется к строкам?
кстати похоже вместо tr надо использовать translate - тогда в ts-файле (и в лингвисте) эти строки будут корректно отображены (если исходная строка русскоязычная), иначе - абракадабра...или руками в ts- файл дописывать utf-8="true" для каждой <message>-секции, что не есть хорошо... или как-то можно, используя tr, корректно отобразить строки в ts-файле? Это сообщение отредактировал(а) gordmiand - 18.3.2013, 20:02 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Нужно использовать trUtf8() если для исходников используется кодировка utf8.
Виджеты сами по себе, ничего про то что нужно переводить не знают. setText() ничего не переоводит - он устанавливает текст, переведённый translate()/tr()/trUtf8(). Cтрока может быть задана отдельно от вызова tr():
Например, если у тебя в одной метке текст на английском, а на соседней перевод на русский, при вызове installTranslator ничего переводить не нужно. Если используется дизайнер, создаются setupUi() и retranslateUi(). Но нужно позаботиться, чтобы после installTranslator() было вызвано retranslateUi() - этого в автомате не произойдёт. Если форма создаётся вручную, retranslateUi() нужно создавать самостоятельно или после вызова installTranslator() закрыть форму и открыть заново. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |