QML基礎——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語言設置爲英文的時候就是第二副圖。

當手機語言設定爲中文時:

分類: QML
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章