Я стараюсь использовать перевод в QML. Я открыл новый проект QtQuick project, я выбрал 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 не выполняют перевод правильно. Любые вопросы ?????
Спасибо
ОБНОВЛЕНИЕ
Я обнаружил следующее: MainPage.qml импортируется как многоразовый компонент в main.qml. Если я использую qsTr () в main.qml, тогда текст в main.qml переводится правильно. Однако текст в MainPage.qml не переведен правильно. Я думаю, из-за импорта его как многоразового компонента. Любые комментарии? Опыт?
ОБНОВЛЕНИЕ 2 - РЕШЕНИЕ
Файлы перевода должны создаваться с учетом регистра:
lupdate mainpage.qml -ts myapp_sk.ts is wrong
lupdate MainPage.qml -ts myapp_sk.ts is correct