Qt國際化之一 國際化 幫助系統和Qt外掛程式

2022-02-20 17:42:18 字數 3417 閱讀 4384

國際化的英文表述為internationalization,通常簡寫為i18n(首尾字母加中間的字元數),乙個應用程式的國際化就是使該應用程式可以讓其他國家的使用者使用的過程。 qt支援現在使用的大多數語言,特別是:

在qt中,所有的輸入部件和文字繪製方式對qt所支援的所有語言都提供了內建的支援。qt內建的字型引擎可以在同一時間正確而且精細地繪製不同的文字,這些文字可以包含來自眾多不同書寫系統的字元。相關知識可以在幫助中檢視internationalization with qt關鍵字。

qt對把應用程式翻譯為本地語言提供了很好的支援,可以使用qt linguist工具很容易地完成應用程式的翻譯工作,下面進行介紹。

這一小節中先通過乙個簡單的例子介紹qt中翻譯應用程式的整個過程,然後再介紹其中需要注意的方面,對應這部分內容可以檢視qt linguist manual關鍵字。在 qt中編寫**時要對需要顯示的字串呼叫tr()函式,完成**編寫後對這個應用程式的翻譯主要包含3步:

下面通過乙個簡單的例子來介紹整個翻譯過程,該例子實現了將乙個英文版本的應用程式翻譯為簡體中文版本。

第一步,編寫原始碼。新建qt gui應用,專案名稱為myi18n,類名為mamwindow, 基類保持qmainwindow不變。建立完專案後,單擊mainwindow.ui檔案進入設計模式,先新增乙個選單,再為其新增乙個「&new」子選單並設定快捷鍵為ctrl + n,然後往介面上拖入乙個push button。再使用**新增幾個標籤,開啟mainwindow. cpp 檔案,新增標頭檔案 #include ,然後在建構函式中新增** :

qlabel *label = new qlabel(this);

label->settext(tr("hello qt!"));

label->move(100,50);

qlabel *label2 = new qlabel(this);

label2->settext(tr("password", "mainwindow"));

label2->move(100,80);

qlabel *label3 = new qlabel(this);

int id = 123;

qstring name = "linux";

label3->settext(tr("id is %1,name is %2").arg(id).arg(name));

label3->resize(150, 12);

label3->move(100, 120);

這裡向介面上新增了3個標籤,因為這3個標籤中的內容都是使用者可見的,所以需要呼叫tr()函式。

第二步,更改專案檔案。要在專案檔案中指定生成的.ts檔案,每一種翻譯語言對應乙個.ts檔案。開啟myi18n.pro檔案,在最後面新增如下一行**:

translations = myi18n_zh_cn.ts
這表明後面生成的.ts檔案的檔名為「myi18n_zh_cn. ts」,對於.ts的名稱可以隨意編寫,不過一般是以區域**來結尾,這樣可以更好地區分,例如這裡使用了「zh_cn」來表示簡體中文。最後按下ctrl + s儲存該檔案。

第三步,使用lupdate生成.ts檔案。要進行翻譯工作時,先要使用lupdate工具來提取源**中的翻譯文字,生成.ts檔案。在專案檔案列表的myi18n.pro檔案上右擊,在彈出的選單中選擇「在此彈出命令列提示」。這時開啟的命令列控制台中已經自動切換到了專案目錄下,這時輸人下面一行**,並按下回車鍵:

lupdate myi18n.pro
注意,這裡要確保已經將qt安裝目錄的bin目錄的路徑新增到了系統path環境變數中(筆者這裡是d:\software\technology\qt\qt5.11.2\tools\mingw530_32\bin)。如果還沒有設定path環境變數,可以按照2. 2. 1小節的方法設定,然後重啟qtcreator,再進行該步驟。最後的結果表明更新了「myi18n_zh_cn. ts」檔案,發現了8個源文字,其中有8條新的翻譯和0條已經存在的翻譯,如下圖所示。這就是說可以對程式**進行更改,然後多次執行lupdate,而只需要翻譯新新增的內容。可以在專案目錄中使用寫字板開啟這個.ts檔案,可以看到它是xml格式的,其中記錄了字串的位置和是否已經被翻譯等資訊。

第四步,使用qt linguist完成翻譯。

這一步一般是翻譯人員來做的,就是在qt linguist中開啟 .ts檔案,然後對字串逐個進行翻譯。在系統的開始選單中啟動liguist(也可以直接在命令列輸入linguist或者在qt安裝目錄的tools目錄下找到並啟動它),然後單擊介面左上角的open圖示,在彈出的檔案對話方塊中進入專案目錄,開啟myi18n_zh_cn檔案,這時整個介面如下圖所示。qt linguist視窗的具體介紹請去原書看,這裡由於篇幅限制不再介紹。

下面來翻譯程式。在翻譯區域可以看到現在已經是要翻譯成中文chinese translation,這是因為.ts檔名中包含了中文的區域**。如果這裡沒有正確顯示要翻譯成的語言,那麼可以使用edit→translation file settings選單項來更改。

下面首先對mainwindow進行翻譯,這裡翻譯為「應用程式主視窗 」,然後按下即回車鍵完成翻譯並開始翻譯第二個字串。按照這種方法完成所有字串的翻譯工作, 如下圖所示。翻譯完成後按下ctrl + s儲存更改,然後退出qt linguist。這裡對qt linguist只是進行了簡單介紹,詳細可以檢視qt linguist manual: translators關鍵字。

第五步,使用lrelease工具生成.qm檔案。

可以使用 工具→外部→qt語言家→lrelease(發布翻譯) 生成.qm檔案,或者在工程檔案對應命令列輸人如下一行**,並按下回車鍵:

lrelease myi18n. pro
輸出資訊如下圖所示,這表明已經生成了.qm檔案。另外在qt linguist中也可以使用file→reelase和file→release as這兩個選單項來生成當前已開啟的.ts檔案對應的.qm檔案。這三種方式都能生成.qm檔案。

由於篇幅原因,這裡不再介紹

由於篇幅原因,這裡不再進行說明。

由於篇幅原因,這裡不再進行說明。

由於篇幅原因,這裡不再進行說明。

QT國際化支援

為了是我們的qt程式支援如中文等其他語言,通常的做法是在需要翻譯的地方顯示的用tr標記,所以你在閱讀其他人編寫的源程式時會看到很多字串做了tr標記,這樣做是有原因的。1.在hello.pro檔案中增加 translations hello zh cn.ts 2.進入工程目錄,執行 lupdate h...

QT國際化 小結

qt應用程式的國際化問題,應該總的來說還是比較容易的,如果你原始碼中沒有使用漢字,直接使用英文,這個問題就不大,下面我講的是通過在原始碼中直接使用中文 就是本地化了的 然後把中文翻譯成別的文字而言的 例如加密文字 大致分這麼幾個步驟,基本與對英文進行國際化的步驟差不多 這裡是針對windows平台的...

qt國際化程式設計

下面說一下qt國際化程式設計的操作步驟 1 編寫源 2 在 pro檔案中新增translations ts 有多少中語言就新增多少個ts檔案。3 執行lupdate pro 生成ts檔案。lupdate會根據源 中的內容提取出待翻譯的字段,然後生成ts檔案,ts檔案是xml格式的。4 用qt lin...