Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ интернационализация
Автор: jim1406 4.9.2009, 8:40
Доброго времени!
Может я просто найти не могу нужный пост в форуме, конечно... Проблема следующая...
Программа написана с русским интерфейсом. Нужно сделать интернационализацию приложения.
Дорисовываю в .pro
TRANSLATIONS = proga_uk.ts
CODECFORTR = Windows-1251
генерю proga_uk.ts
правлю linguist-ом и помечаю все строки как завершенные (независимо перевел их или нет)
генерю proga_uk.qm и кидаю его в дебаг
в main рисую
int main(int argc, char *argv[])
{
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QTextCodec::setCodecForTr(codec);
QxtApplication a(argc, argv);
QTranslator progaTranslator;
bool bb = progaTranslator.load("proga_uk", a.applicationDirPath());
a.installTranslator(&progaTranslator);
DialogConfig dialogConfig;
dialogConfig.show();
return a.exec();
}
Тексты, писанные мной в коде, вроде бы перевел, а интерфейс разработанный с помощью дизайнера (в ui файлах который) - остался русский. Что не так?
Автор: kwisp 4.9.2009, 8:49
http://wiki.crossplatform.ru/index.php/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9_Qt
Автор: jim1406 4.9.2009, 11:25
Цитата(kwisp @ 4.9.2009, 12:49)
http://wiki.crossplatform.ru/index.php/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9_Qt
Может я чего-то не понимаю, но у меня нормально все русифицировано... Мне нужно сделать интернационализацию моего РУССКОГО приложения. Сделать его англицким, например. Как этого добиться для русского текста на виджетах, если разработка оконного интерфейса велась в дизайнере Qt Creater-а. Строки выдергиваются Лингвистом. Я их перевожу. Компилю полученный ts файл. Но для МОИХ текстов на виждетах не применяется. Применяется только если я креатил виджет "ручками" в сорцах...
Автор: Litkevich Yuriy 4.9.2009, 12:02
jim1406, а версия Qt какая?
Была такая проблема с 4.5.0 (именно когда исходный такст ui-файлов содержал символы не Latin1)
Автор: jim1406 5.9.2009, 4:02
Цитата(Litkevich Yuriy @ 4.9.2009, 16:02)
jim1406, а версия Qt какая?
Была такая проблема с 4.5.0 (именно когда исходный такст ui-файлов содержал символы не Latin1)
Уже инересней... Да, 4.5... Какой выход? Перелопатить ui?
Автор: Litkevich Yuriy 5.9.2009, 12:25
Цитата(jim1406 @ 5.9.2009, 8:02)
Уже инересней... Да, 4.5... Какой выход? Перелопатить ui?
обновить до 4.5.2 там исправлено. Либо писать всё по аглицки, а потом перевести на русский.
Автор: jim1406 6.9.2009, 14:52
Цитата(Litkevich Yuriy @ 5.9.2009, 16:25)
Цитата(jim1406 @ 5.9.2009, 8:02)
Уже инересней... Да, 4.5... Какой выход? Перелопатить ui?
обновить до 4.5.2 там исправлено. Либо писать всё по аглицки, а потом перевести на русский.
Обновил... Не помогло... Может в свойствах виджета еще что-то нужно поменять??? У меня locale по умолчанию Russian, RussianFederation. А у текстовых полей выставлено translatable.
Автор: Litkevich Yuriy 6.9.2009, 15:26
Мысли вслух:
я всегда пользую UTF-8 для исходников. Но я не думаю, что это могло повлиять, т.к. в UI-файлах, вместо кирилицы помещаются коды символов.
Могу лишь дать тебе тестовый проект, который я отправлял тролям, чтобы подтвердить существование ошибки.
посмотри как он у тебя работает.
Там две поясняющие картинки.
Суть:
три текста на трёх разных языках, переводятся на английский фиктивно, только для проверки, что перевод подхватился.
test_tr.zip ( 8.01 килобайт )
: 185
Автор: igor_bogomolov 7.9.2009, 20:31
Привет всем.
Так же волнует вопрос интернационализации приложения.
Конкретно, переменная qmake TRANSLATIONS.
Я предполагал, что добавив эту переменную в файл проекта, lupdate будет запускаться автоматически, и я буду всегда иметь актуальный ts файл. В реальности же ts-ка не создаётся и не обновляется, если уже была создана до этого ручками.
Видимо я просто не разобрался, для чего собственно нужна переменная TRANSLATIONS???
Автор: Litkevich Yuriy 7.9.2009, 22:15
Цитата(igor_bogomolov @ 8.9.2009, 0:31)
lupdate будет запускаться автоматически
его надо руками запускать и указывать файл проекта.
Цитата(igor_bogomolov @ 8.9.2009, 0:31)
для чего собственно нужна переменная TRANSLATIONS???
lupdate при чтении pro-файла, по списку в ней генерирует/обновляет ts-файлы.
Автор: jim1406 1.10.2009, 16:10
Цитата
Мысли вслух:
я всегда пользую UTF-8 для исходников. Но я не думаю, что это могло повлиять, т.к. в UI-файлах, вместо кирилицы помещаются коды символов.
Могу лишь дать тебе тестовый проект, который я отправлял тролям, чтобы подтвердить существование ошибки.
посмотри как он у тебя работает.
Там две поясняющие картинки.
Суть:
три текста на трёх разных языках, переводятся на английский фиктивно, только для проверки, что перевод подхватился.
Прикрепленный файл test_tr.zip ( 8,01 килобайт ) Кол-во скачиваний: 5
Помоему проблема была в настройках моего ts файла...
Спасибо за пример!..
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)