功能需求:
網盤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)
4. 又一次設定介面顯示qstring strlanguagefile;
if (strlanguage.compare("en") == 0)
else if (strlanguage.compare("zh") == 0)
if (qfile(strlanguagefile).exists())
else
}
又一次設定介面的顯示,這一步是非常多人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...