Qt应用在Meego上的国际化和本地化
This article explains how to ...
Contents |
Introduction
本文介绍在Meego上Qt应用的国际化本地化的方法。
在代码中标记字符串
出现在QML 中的字符串如果需要翻译则可以通过使用 qsTr(), qsTranslate(), QT_TR_NOOP(), 或QT_TRANSLATE_NOOP() 来进行标记。例如本例程中
Label{
id: label
anchors.centerIn: parent
text: qsTr("Hello world!")
visible: false
}
Button{
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: label.bottom
anchors.topMargin: 10
text: qsTr("Click here!")
onClicked: label.visible=true
}使用了 qsTr()。只有这样做过标记之后,translator才知道“Hello world!”和“Click here!”。是需要被翻译的,以便于后面进行处理。
修改pro文件
修改.pro工程文件加入下面的行
#intertionalization
CONFIG += localize_deployment
TRANSLATIONS += meegoI18N_zh_HK.ts
OTHER_FILES += meegoI18N_zh_HK.ts\
meegoI18N_zh_HK.qm
unix:!symbian:!maemo5 {
translation.files = meegoI18N_zh_HK.ts meegoI18N_zh_HK.qm
translation.path = /usr/share/apps/meegoI18N/
INSTALLS += translation
}
生成中文目标语言的ts文件
首先需要启动命令行,如果我们在windows上安装的是QtSDK 1.1.2 则启动 Qt SDK 4.7.3 for Desktop(MinGW)command prompt, 进入工程目录,进入qml所在目录,输入命令
lupdate main.qml -ts main.ts
lupdate MainPage.qml -ts MainPage.ts
将ts文件合并成一个ts文件方便后面操作。
lconvert main.ts MainPage.ts -o meegoI18N.ts
复制ts 文件,修改文件名为目标语言后缀,如meegoI18N_zh_TW.ts, meegoI18N_zh_HK.ts 在Qt linguist中打开ts文件进行翻译. 打开后选择目标语言和地区。翻译并release输出qm文件
加载翻译文件
要想使得翻译起作用,还需要在Qt程序的main函数中进行设定,例如:
QString locale = QLocale::system().name();
QTranslator translator;
#if defined(Q_OS_UNIX)
bool err = translator.load(QString("meegoI18N_") + locale,"/usr/share/apps/meegoI18N/");
#else
bool err = translator.load(QString("meegoI18N_") + locale);
#endif
app.installTranslator(&translator);
将手机调到相应的国家及语言区域以测试。点击creator的运行按钮部署运行程序, 注意由Qt Creator运行后翻译并不工作,此时关闭程序,从图标运行,可以看到正确的翻译。


(no comments yet)