QML로 번역을 사용하려고합니다. 새로운 프로젝트 QtQuick 프로젝트를 열었습니다. Symbian 용 QtQuick 애플리케이션을 QtQuick 애플리케이션 유형으로 선택했습니다.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 파일 : Qt는 창조주는 모든 표준 파일 (MAIN.CPP, main.qml, mainpage.qml ...)
MainPage.qml은 매우 간단와 응용 프로그램 소스 트리를 생성 보이는이 같은 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();
}
는 그럼, 내가 POSIX의 표현을 번역하는 언어 학자를 사용한 lupdate mainpage.qml -ts inter_en.ts을 실행 다른 것으로 번역 만하고 있는지 테스트합니다. 그런 다음 언어 학자와 함께 inter_en.qm 파일을 만들었습니다.
하지만 시뮬레이터에서 응용 프로그램을 실행하면 "Hello world!"가 표시되지 않습니다. 번역기가 성공적으로로드되었지만 (qDebug에서 "Translating : true"를 얻음).
번역기가 올바르게 작동합니다. QPushButton으로 코드의 일부를 deremark 할 때 (다시 한번 lupdate 및 언어학적인 것들을이 목적으로 반복하기 때문에), "Hello world!" QPushButton의식이 올바르게 변환됩니다.
올바르게 번역을 수행하지 않는 것은 QmlApplicationViewer 및 QML 파일뿐입니다. 어떤 quesses ?????
감사
UPDATE
나는 밖으로 다음 발견 : MainPage.qml이 main.qml에 재사용 가능한 구성 요소로 가져옵니다. main.qml에서 qsTr()을 사용하면 텍스트가 main.qml에서 올바르게 변환됩니다. 그러나 MainPage.qml의 텍스트는 정확하지 않습니다. 재사용 가능한 구성 요소로 가져 오는 것 같아요. 다른하실 말씀 있나요? 경험담?
는 UPDATE2 - 솔루션
번역 파일은 민감 케이스를 생성해야합니다
는lupdate mainpage.qml -ts myapp_sk.ts is wrong
lupdate MainPage.qml -ts myapp_sk.ts is correct
, 당신은 응답으로 붙여과 이용 약관을 읽고 동의를해야한다 . –
당신이 해결책을 찾았 기 때문에 다행이지만, 나는 무엇인가 언급해야만한다. 번역에 대한 최선의 접근법을 사용하지 않는다고 생각한다. 기본적으로 당신은 N 개의 다른 qml을위한 N 개의 파일을 생성하고 번역해야한다. separatly (어쩌면 나쁘지는 않은 생각). 통역을 하나씩. 같은 파일에서 모두 처리하지 않는 이유는 무엇입니까? 미안 당신이 벌써 그것을하고 있으면, 나는 항상 myproject.pro를 갱신하고 잊는다 : D –
질문에 대한 답을 발견했다면 그것을 게시하고 수락하는 것이 좋습니다. –