Название: Интернационализация для QML Отправлено: Yegor от Ноябрь 10, 2014, 23:02 Здравствуйте, уважаемые форумчане!
Работаю в Qt4.8.6. В проекте использую qml файлы, в которых есть строки, требующие перевод. Вопрос: как в .pro файле проекта указать список всех qml файлов, чтобы при сборке они были найдены и обработаны (отмечены, что lupdate их может брать)? Есть такая переменная для qmake? Название: Re: Интернационализация для QML Отправлено: vulko от Ноябрь 11, 2014, 09:30 tr("text") не работает в qml?
Название: Re: Интернационализация для QML Отправлено: vregess от Ноябрь 11, 2014, 10:27 tr("text") не работает в qml? Нет, там qsTr(). чтобы qml файлы подхватывались lupdate, их надо добавить в список исходников. Например так: Код: lupdate_only { Это работает в Qt5, в Qt4, думаю, так же. * - работает не рекурсивно, поэтому каждую директорию нужно добавлять отдельно. Название: Re: Интернационализация для QML Отправлено: Yegor от Ноябрь 11, 2014, 15:49 Для Qt4.8.6 нельзя прописывать qml файлы в pro файле, в переменной SOURCES, будет ошибка. Я проверял. Поэтому я пользуюсь lupdate напрямую с qml файлами. Так файлы переводов (*.ts) создаются без проблем.
Далее я создаю бинарные файлы переводов (*.qm). Только не понятно, как эти файлы переводов подгружать во время выполнения программы? В документации пишется что они должны загружаться автоматически, в зависимости от текущего языка. Но этого не происходит. Делаю как в примере в документации. Например, я узнаю свой текущий язык с помощью QLocale.name(). Он мне выдает uk_UA, значит мой текущий язык - uk. Далее я готовлю бинарный файл перевода, называю его qml_uk.qm. В этой же директории мой qml файл, который мне нужно перевести - StartPage.qml. Когда открываю свой StartPager.qml с помощью qmlviewer StartPage.qml, то никакой перевод не загружается автоматически. А если я явно укажу файл перевода - qmlviewer StartPage.qml -translation qml_uk.qm, то все нормально. Вопрос: как сделать, чтобы в реальной программе (не qmlviewer) файл перевода для qml загружался? Автоматически или динамически. Название: Re: Интернационализация для QML Отправлено: Alex Custov от Ноябрь 11, 2014, 16:07 Вопрос: как сделать, чтобы в реальной программе (не qmlviewer) файл перевода для qml загружался? Автоматически или динамически. Перед созданием основной формы использовать QTranslator и установить перевод, примеры есть в документации Название: [РЕШЕНО] Интернационализация для QML Отправлено: Yegor от Ноябрь 11, 2014, 17:15 Да, стандартными средствами файл перевода загружается.
Код: QTranslator qmlTranslator; //For qml. И далее при открытии файла qml в нем все переводится. Вопрос решен. Спасибо большое! |