×
Namespaces

Variants
Actions
Revision as of 13:57, 13 June 2012 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Qt应用在Meego上的国际化和本地化

From Nokia Developer Wiki
Jump to: navigation, search

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文件

I18n1.png Linguist0.png
Linguist2.png Linguist3.png

加载翻译文件

要想使得翻译起作用,还需要在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运行后翻译并不工作,此时关闭程序,从图标运行,可以看到正确的翻译。

Screenshot0.png

示例工程

media:meegoI18n.zip

Summary

Article Metadata

代码示例
文章
flycarl 在 15 Aug 2011 创建
最后由 hamishwillee 在 13 Jun 2012 编辑
This page was last modified on 13 June 2012, at 13:57.
231 page views in the last 30 days.
×