Я стараюсь использовать перевод в QML. Я открыл новый проект QtQuick, я выбрал QtQuick Componenets для Symbian в качестве типа приложения QtQuick. Qt Creator создал дерево исходного кода приложения со всеми стандартными файлами (main.cpp, main.qml, mainpage.qml ...)
MainPage.qml очень прост:
import QtQuick 1.1
import com.nokia.symbian 1.1
Page {
id: mainPage
Text {
anchors.centerIn: parent
text: qsTr('Hello world!')
color: platformStyle.colorNormalLight
font.pixelSize: 20
}
}
Мой файл main.cpp выглядит после реализации QTranslator следующим образом:
#include "qmlapplicationviewer.h"
#include <QTranslator>
#include <QPushButton>
#include <QDebug>
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer<QApplication> app(createApplication(argc, argv));
QTranslator* translator = new QTranslator;
qDebug()<<"Translating: "<<translator->load(QString("qml/International/inter_en"));
app->installTranslator(translator);
//QPushButton hello(QPushButton::tr("Hello world!"));
// hello.resize(100, 30);
// hello.show();
QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
viewer->setMainQmlFile(QLatin1String("qml/International/main.qml"));
viewer->showExpanded();
return app->exec();
}
Затем я запускаю lupdate mainpage.qml -ts inter_en.ts, я использовал linguist для перевода выражения POSIX "Hello world!" к чему-то другому, просто проверьте, что оно переводит. Затем я создал файл inter_en.qm с лингвистом.
Но когда я запускаю приложение на симуляторе, я не получаю "Hello world!" переведен, хотя переводчик успешно загружен (я получаю "Translating: true" в qDebug).
Переводчик работает правильно, я уверен, потому что, когда я размечаю часть кода с помощью QPushButton (снова я повторяю lupdate и linguist вещи для этой цели), то "Hello world!" выражение в QPushButton переведено правильно.
Только файл QmlApplicationViewer и QML неправильно выполняет перевод.
Какие-нибудь квесты ?????
Спасибо
UPDATE
Я обнаружил следующее: MainPage.qml импортируется как повторно используемый компонент в main.qml. Если я использую qsTr () в main.qml, тогда текст будет правильно переведен в main.qml. Однако текст в MainPage.qml не переведен правильно. Я думаю, из-за импорта его в качестве компонента многократного использования. Любые комментарии? Опыт? * * 1023
ОБНОВЛЕНИЕ2 - РЕШЕНИЕ
Файлы перевода необходимо создавать с учетом регистра:
lupdate mainpage.qml -ts myapp_sk.ts is wrong
lupdate MainPage.qml -ts myapp_sk.ts is correct