Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на 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)