QT多國語言動態切換常見例子

2021-07-10 21:20:23 字數 2471 閱讀 8145

qt多國語言需要用到三個工具:

l        

lupdate

:生成ts檔案

l        linguist

:翻譯ts

檔案中的字串

l        lrelease:生成qm檔案

這三個工具都是qt自帶的工具,在相關的安裝路徑下。

1.    準備乙個介面工程

新建工程命名為: cabagge_langsw, 使用設計師設計介面設計如下

設定下拉框內容的時候不用翻譯,其他顯示的字串需要翻譯

如果手工**更新介面的內容,需要在字串前面使用tr函式

2.  配置ts檔案

在.pro中新增

需要支援多少種語言,則就新增多少個檔案,每個檔案對應一種語言的翻譯

3.  生成.ts檔案工具

->

外部->qt

語言家->

更新翻譯

,將生成翻譯檔案

ts檔案(lang_en.ts 和lang_zh.ts )

【注意】這一步一定要在編譯完後再做,因為ui_***.h編譯後才生成.

4. 使用linguist.exe翻譯檔案

linguist.exe在qt的安裝路徑下,

如我的是在:d:\devsoft\qt\qt5.4.2\5.4\mingw491_32\bin

通過linguist開啟.ts檔案,給每個需要翻譯的字元新增對應的翻譯語言

5. 發布生成qm檔案

每個字元翻譯完之後,需要轉換為qm檔案

在當前路徑下生成對應的qm檔案。

每個ts檔案都重複做上面兩個步驟。

6. 新增**:切換時更新翻譯語言的版本

新增切換下拉框的變化的槽函式:

[cpp]view plain

copy

//下拉框的切換的槽函式

void

widget::on_combobox_sw_currentindexchanged(

const

qstring &arg1)  

//安裝語言翻譯器

static

qtranslator* translator = null;  

if(translator != null)  

translator = new

qtranslator;  

qstring qmfilename = "lang_"

+ lang;  

//這裡用了絕對路徑你要更改回來哦

if(translator->load(  

qstring("g:/workingspace/qt/2016.3/cabagge_langsw/"

)+qmfilename))  

}7. 新增更新介面字串的響應

呼叫installtranslator方法後,系統會自動給每個窗體傳送訊號並告知changeevent槽event產生,在要切換語言的每個窗體中都要重寫changeevent這個方法,格式基本差不多:

[cpp]view plain

copy

void

widget::changeevent(qevent *e)  

}  8. 效果圖:

Qt 多國語言

1 建立語言檔案 開啟.pro檔案,加入以下 translations cn.ts 工具 外部 qt語言家 更新翻譯,將生成翻譯檔案cn.ts 2 編輯翻譯檔案 啟動linguist qt語言家 開啟cn.ts,然後進行編輯,主要是將源文對應的譯文填寫上,最後儲存 3 部署翻譯檔案 工具 外部 qt...

C WPF 動態切換多國語言支援

wpf支援多國語言方式大同小異,本文將介紹使用資源字典檔案實現多國語言動態切換,其不僅可以實現ui顯示語言的切換,也可以實現控制項對應繫結資料的語言切換,整體操作可行且較容易實現。以下分步描述具體實現過程 為方便說明,新建乙個wpf專案,新增乙個combox textbox以及button控制項 一...

c 實現動態多國語言的動態切換

動態多國語言的切換目前大多採用的是動態載入資源 dll,每乙個資源 dll中包含了乙份對應某一語言的字串表,但這種方法的缺點就是需要為每一種語言都要做乙個 dll,程式安裝時資源 dll過於繁多。下面我們將所有的多國語言資源都封裝在乙個動態庫中,然後通過 setthreadlocale api來實現...