《Qt多國語言國際化》PPT課件_第1頁
《Qt多國語言國際化》PPT課件_第2頁
《Qt多國語言國際化》PPT課件_第3頁
《Qt多國語言國際化》PPT課件_第4頁
《Qt多國語言國際化》PPT課件_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第15章 Qt多國語言國際化15.1 概念15.2 實例15.1 概念15.1.1 QString、QTranslator等類和tr()函數(shù)的作用在支持國際化的過程中,一般在Qt中利用QString、QTranslator等類和tr()函數(shù)能夠很方便的完成加入國際化的支持,具體工作如下:(1) 使用QString對象來表示所有用戶可見的文本。(2) 使用tr()函數(shù)來取得所有需要翻譯的文本。(3) 使用QString:arg()來組織動態(tài)文本。比如下面的字符串用來表示任務(wù)的完成情況:QString m = tr(“Mission status: “ )+ x + tr(“of “) + y +

2、tr(”are completed”);(4) 利用QTranslator:load()和QCoreApplication:installTranslator()來讀取對應(yīng)的翻譯之后的資源文件。15.1.2 *.qm文件的生成對于翻譯工作者,主要是利用Qt提供的工具lupdate、linguist和lrelease來協(xié)助翻譯工作并生成最后需要的.qm文件,它包括以下內(nèi)容:(1) 利用lupdate工具從源代碼中掃描并提取需要翻譯的字符串,生成.ts文件。類似編譯時用到的qmake,運(yùn)行l(wèi)update時我們也需要指定一個.pro的文件,這個.pro文件可以單獨(dú)創(chuàng)建,也可以利用編譯時用到的.pro

3、文件。(2) 利用linguist工具來協(xié)助完成翻譯工作,即打開前面用lupdate生成的.ts文件,對其中的字符串逐條進(jìn)行翻譯并保存。(3) 利用lrelease工具處理翻譯好的.ts文件,生成格式更為緊湊的.qm文件。這便是翻譯工作者最終需要提供的資源文件,它所占的空間比.ts文件小,但基本不具有可讀性,只有QTranslator能正確的識別它。15.2 實例5.2.1 實例1 (1) 新建一個GUI工程TestH,然后在UI文件上添加兩個按鈕,并分別把文本修改為hello、china,如圖15.1所示。5.2.1 實例1 (2) 修改TestH文件,添加:

4、TRANSLATIONS =TestHello.ts(3) 編譯。假如沒有編譯而進(jìn)行下面的步驟,生成的ts文件只是一個只有標(biāo)題欄的框架。(4) 編譯完成后,假如是windows下就cmd ,假如是linux就開終端。單擊“開始”-“所有程序”-“Qt SDK by Nokia V2010.03(Open Source)”-“Qt Commond Prompt”命令打開“Qt Commond Prompt”窗口,cd 進(jìn)入TestH工程目錄,執(zhí)行命令:lupdate TestH5.2.1 實例1 在工程下生成一個ts文件,假如沒有編譯的話,會提示Found 1 s

5、ource text。假如編譯后,會提示Found 3 source text,如圖15.2所示。5.2.1 實例1 (5) 單擊“開始”-“所有程序”-“Qt SDK by Nokia V2010.03(Open Source)”-“Tools”-“Qt Linguist”命令,運(yùn)行Qt自帶工具Qt Linguist。 單擊菜單“文件”“打開”命令,選擇“TestHello.ts”文件,單擊“打開”按鈕,然后根據(jù)需要設(shè)置源語言和目標(biāo)語言,此處為默認(rèn)狀態(tài):源語言為任意國家語言,目標(biāo)語言為china國家的chinese。(6) 在第二欄選擇要翻譯的字符串,在下面兩行中輸入對應(yīng)的翻譯文字,然后單擊

6、上面的 按鈕。5.2.1 實例1 (7) 單擊“File”“release”,或者在命令行輸入“l(fā)release TestH”,生成TestHello.qm文件,如圖15.3所示。5.2.1 實例1 (8) 修改源代碼。添加前,具體代碼如下:int main(int argc, char *argv) QApplication a(argc, argv); MainWindow w;w.show();return a.exec();5.2.1 實例1 添加后,具體代碼如下:#includeint main(int argc, char *argv) QApplication a

7、(argc, argv);QTranslator *translator = new QTranslator;translator-load(./TestHello.qm);a.installTranslator(translator);MainWindow w;w.show();return a.exec();15.2.2 實例2此實例是用一個下拉菜單來選擇語言,然后下面有一個需要翻譯文字的標(biāo)簽。(1) 在頭文件LangSwitch.h中定義了類LangSwitch,創(chuàng)建用戶界面。#include #include #include class LangSwitch : public QWi

8、dget Q_OBJECTpublic: LangSwitch(QWidget *parent = 0); LangSwitch();private slots: void changeLang(int index);private: void createScreen(); void changeTr(const QString& langCode); void refreshLabel(); QComboBox* combo; QLabel* label;15.2.2 實例2(2) 源文件LangSwitch.cpp中的具體實現(xiàn):#include langswitch.h#include

9、#include #include LangSwitch:LangSwitch(QWidget *parent) : QWidget(parent) createScreen();LangSwitch:LangSwitch()15.2.2 實例2createScreen()函數(shù)用來創(chuàng)建基本的界面,其具體實現(xiàn)代碼如下:void LangSwitch:createScreen() combo = new QComboBox; combo-addItem(English, en); combo-addItem(Chinese, zh); combo-addItem(Latin, la); label

10、 = new QLabel; refreshLabel(); QVBoxLayout* layout = new QVBoxLayout; layout-addWidget(combo, 1); layout-addWidget(label, 5); setLayout(layout); connect(combo, SIGNAL(currentIndexChanged(int), this, SLOT(changeLang(int);15.2.2 實例2refreshLabel()函數(shù)具體實現(xiàn)如下:void LangSwitch:refreshLabel() label-setText(tr

11、(TXT_HELLO_WORLD, Hello World);changeLang()函數(shù)改變語言的具體代碼如下:void LangSwitch:changeLang(int index) QString langCode = combo-itemData(index).toString(); changeTr(langCode); refreshLabel();15.2.2 實例2函數(shù)changeTr()讀取對應(yīng)的.qm文件,并調(diào)用installTranslator()方法來安裝QTranslator對象,其具體實現(xiàn)代碼如下:void LangSwitch:changeTr(const QS

12、tring& langCode) static QTranslator* translator; if (translator != NULL) qApp-removeTranslator(translator); delete translator; translator = NULL; translator = new QTranslator; QString qmFilename = lang_ + langCode; if (translator-load(QString(./)+qmFilename) qApp-installTranslator(translator); 15.2.2 實例2(3) 提取需要翻譯的字符串并翻譯然后生成.qm文件(這工作一般有專門的工作組去負(fù)責(zé)),具體操作如下: 修改文件,即在后面加上TRANSLATIONS的定義。修改完的文件的具體內(nèi)容如下:TARGET = LangSwit

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論