大話QT之十四 QT實現多語言切換

2021-09-07 12:40:24 字數 2416 閱讀 1947

功能需求:

網盤client要可以實現多國語言的切換,第一版要支援中、英文的切換。

在實現過程中感覺qt對多國語言的支援還是非常不錯的。製作多語言包非常方便。切換的邏輯也非常easy。

以下就來看一下qt中怎樣製作多語言包。

實現方法:

為了支援國際化最關鍵的地方是製作多國語言包,然後再實現動態切換。

qt裡面既能夠採用命令列也能夠採用qt creator的介面操作來生成。這裡我們利用qt creator來生成多國語言包。基本流程是,先生成ts檔案。然後生成qm檔案,最後通過qtranslator類來載入qm檔案,實現多語言包的切換。

注意:為了更全面地實現多語言包,在程式中全部涉及到介面中的button或者選單中的文字顯示,都必須使用 qobject::tr("...") 的方式將顯示的內容包裹起來,這樣做的原因是:僅僅有加入了qobject::tr()的標記。生成ts檔案的時候程式才會覺得被qobject::tr()包裹的地方是須要製作多語言的,從而在ts中預留出位置。

1> 生成ts檔案

在qt的專案檔案(.pro)中加入:translations = ***.ts yyy.ts(假設是多行,則用 \ 切割)

然後執行【工具】-》【外部】-》【qt語言家】-》【更新翻譯(lupdate)】,例如以下圖所看到的。執行完之後專案下就會生成相應的***.ts、yyy.ts檔案。

注意:假設專案中包括ui檔案。如:forms += zzz.ui,則在生成的ts檔案裡包括全部ui檔案上的字元顯示。並且。在製作ui檔案時預設情況下介面上的文字顯示都是通過qobejct::tr(" ")包裹的。由於在預設情況下ui中的全部控制項都存在乙個屬性:可翻譯的。就代表了預設用qobject::tr()巢狀了。

2. 生成qm檔案

利用qt語言家:linguist開啟生成的ts檔案,將裡面須要翻譯的地方寫上相應的語言,例如以下圖所看到的:

ts檔案翻譯完畢後,執行qt creator中的【工具】-》【外部】-》【qt語言家】-》【部署翻譯(lrelease)】就會生成終於要用到的qm檔案,例如以下圖所看到的:

3. 載入qm語言包

到這裡qm語言包製作完畢,工作就完畢了一大半了。接下來的任務就是在**中實現語言包的載入。即:依據不同的選擇載入不同的語言包。    

void lhsyncclientprivate::inituibylanguage(const qstring strlanguage)

qstring strlanguagefile;

if (strlanguage.compare("en") == 0)

else if (strlanguage.compare("zh") == 0)

if (qfile(strlanguagefile).exists())

else

}4. 又一次設定介面顯示

又一次設定介面的顯示,這一步是非常多人easy忘記的一步,假設這兒被忽略了,往往就無法完畢語言的切換,即:又一次設定一下須要顯示的元素。該過程是在上面inituibylanguage過程之後進行的。相關**例如以下:

void lhsyncclientprivate::retranslateui()

實現效果:

好了,到這裡整個語言包的製作過程就基本完畢了。這裡還須要提及一點在網盤client實現時的設計思路:因為網盤在登入前和登入後可操作的選單是不一樣的。要涉及一種動態載入的方式,能夠實現乙個uiloader的外掛程式,它實現全部的視窗載入(即loadui()返回qwidget控制代碼)、選單載入、語言切換,在這些功能中可能uiloader外掛程式並不完畢詳細的工作,而不過實現訊號的**功能。相同。也須要實現乙個邏輯控制外掛程式,它負責全部的選單邏輯,而對於每乙個視窗則由各自的視窗外掛程式自行完畢。多語言切換的實現效果例如以下:

切換為中文:

切換後效果:

加油。堅持每天的學習。。

Qt 筆記 多語言

1 使用命令 lupdate no obsolete main.pro 作用 將main.pro檔案內的所有源程式檔案中的被tr 包裝的字串打包成.ts檔案,此檔案可以使用qt的qt linguist開啟並翻譯 2 使用命令 lrelease main.pro 作用 通過.ts檔案生成.qm檔案,此...

Qt多語言切換

qt多語言切換 在需要被翻譯的字串前面標識tr 如qstring str tr hello,world 這很重要,因為翻譯工具會把原始碼中tr標識的字串提取出來,翻譯成其他語言,如果沒有用tr標識的,不會被工具提取。在介面中輸入的文字,預設已經是加上tr的了,所以在翻譯時也能看見。建議 在程式中的字...

QT的多語言實現

基本流程是 先生成ts檔案,然後生成qm檔案,最後通過qtranslator類來載入qm檔案,實現多語言包的切換 在qt的專案檔案 pro 中新增 translations ts yyy.ts 如果是多行,則用 分割 pro檔案 qt core gui translations login.ts s...