×
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.
239 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×