QML国际化(中文示例)

在Qt程序中如何使用多国语言已经在《Qt的国际化和本地化》 这篇文章中有所介绍,本文则针对如何对出现在QML中的字符串进行国际化进行专门介绍。
本本将通过一个很小的中文例子程序,向大家一步步讲解如何使得出现在QML代码中的字符串显示成中文。示例程序可通过本文末尾所附链接下载。更多阅读可以参照“QML的国际化
修改pro在Qt的pro文件中首先加入以下几行:
CONFIG += localize_deployment
SYMBIAN_SUPPORTED_LANGUAGES += zh_CN
SYMBIAN_LANG.zh_CN = 31

TRANSLATIONS = displayChinese_zh_CN.ts
其中CONFIG += localize_deployment是为了可以为应用程序添加中文名称。
然后加入以下几行:
symbian {
addFiles.sources = qml/displayChinese/displayChinese_zh_CN.qm
addFiles.path = .
DEPLOYMENT += addFiles
}
这是为了程序在手机上能够找到需要的qm文件

标记字符串出现在QML 中的字符串如果需要翻译则可以通过使用 qsTr(), qsTranslate(), QT_TR_NOOP(), 或QT_TRANSLATE_NOOP() 来进行标记。例如在本例程中:
Text {
text: qsTr(“display Chinese character.”)
anchors.centerIn: parent
}
使用了 qsTr()。 只有这样做过标记之后,translator才知道“display Chinese character”。是需要被翻译的,以便于后面进行处理

生成中文目标语言的ts文件首先需要启动命令行,例如如果我们安装的是QtSDK 1.1 beta 则启动下图所示command prompt:

在命令行中进入我们项目的根目录,然后输入以下命令:

lupdate qml/displayChinese/main.qml -ts qml.ts

这样就会生成一个名为qml.ts的文件了.
然后我们在命令行中继续输入:
lupdate displayChinese.pro -ts app.ts
从而生成app.ts文件

翻译用Qt Linguist打开上一步生成的qml.ts 和 app.ts,将我们翻译的文字输入进去即可,最后保存文件,完成。 然后在命令行中输入:
lconvert app.ts qml.ts -o displayChinese_zh_CN.ts
这是为了将两个ts文件合并起来。最后的效果如图:

其中QtApplicationCaptions就是指的程序呈现在用户面前的名称(我们这里起名叫QML中文应用程序),而QtPackageNames是指的安装sis时给用户的提示信息中的名称。

生成运行时所需的qm文件上一步做完之后,我们点选择File 菜单中的release就可以生成qm文件了。

加载翻译文件要想使得翻译起作用,还需要在Qt程序的main函数中进行设定,例如:
QString locale = QLocale::system().name();
QTranslator translator;
bool success = translator.load( QString(“displayChinese_”) + locale);
app.installTranslator(&translator);
至此,整个示例程序就完成了,下面我们看一下效果。
程序截图本程序对QML中的字符串进行了多语言处理,并且给应用程序起了一个中文名字,只是没有处理软键,不过原理都是一样的,具体可以参阅《Qt的国际化和本地化》 。
下面是示例程序在N8上截图,当我们的N8语言设置为中文的时候就是第一幅图,当我们的N8语言设置为英文的时候就是第二副图。
当手机语言设定为中文时: