qt國際化屬于qt進階中的一部分,本想着放到後面來說,上節剛好介紹了qt linguist,趁熱打鐵就一起了解下。
對于絕大多數的應用程式,在剛啟動時,需要加載預設的語言(或最後一次設定的語言)。在使用的過程中,我們也不需要重新開機應用程式而實作語言的動态切換。這樣的話,易用性就非常好了。
<a href="#%e7%ae%80%e4%bb%8b">簡介</a>
<a href="#%e5%a4%9a%e8%af%ad%e8%a8%80%e5%88%87%e6%8d%a2">多語言切換</a>
<a href="#%e6%ba%90%e7%a0%81%e5%88%86%e6%9e%90">源碼分析</a>
<a href="#%e6%b7%bb%e5%8a%a0%e7%bf%bb%e8%af%91%e6%ba%90">添加翻譯源</a>
<a href="#%e7%bf%bb%e8%af%91">翻譯</a>
<a href="#%e5%8f%91%e5%b8%83%e7%bf%bb%e8%af%91">釋出翻譯</a>
<a href="#%e5%8a%a0%e8%bd%bd%e7%bf%bb%e8%af%91%e6%96%87%e4%bb%b6">加載翻譯檔案</a>
<a href="#%e6%ba%90%e7%a0%81%e4%b8%8b%e8%bd%bd">源碼下載下傳</a>
要進行多語言的切換,需要執行以下步驟:
對使用者可見的文本資訊全部使用tr()進行封裝
提供使用者可以用來切換語言的一種方法。
對于每一個視窗部件或者對話框,重寫changeevent事件,當事件類型為qevent::languagechange時,翻譯文本進行重新調用(為了簡單我把它放在一個單獨的函數translateui()中)。
我們來看一個簡單的示例:主界面、設定界面,設定界面可根據選擇不同語言下拉選項實作語言的動态切換!
為了簡單起見,這裡隻給出關鍵代碼(源碼下載下傳請參考最下面下載下傳位址):
設定界面:setting_dialog.h
設定界面:setting_dialog.cpp
主界面:mainwidget.cpp
main.cpp
流程:
進入main(),首先加載預設的語言(或最後一次設定的語言),然後顯示主界面。
當打開設定界面後,首先加載目前選擇的語言,然後通過下拉設定語言選項來進行語言切換(設定界面的switchlanguage信号關聯到主界面的switchlanguage槽中),然後将目前的語言進行儲存。
語言切換後,首先會進入changeevent函數,判斷當事件類型為qevent::languagechange時,就會執行translateui函數進行文本重新顯示。
注:
q_declare_metatype:如果要使自定義類型或其他非qmetatype内置類型在qvariant中使用,必須使用該宏 。
qregistermetatype:如果非qmetatype内置類型要在信号與槽中使用。
為了友善,這裡隻介紹中、英文之間的切換。
在pro中添加:
選擇:工具->外部->qt語言家->更新翻譯,則會生成對應的ts檔案。
使用qt linguist打開要翻譯的ts檔案,對翻譯源進行相應語言的翻譯。
選擇:檔案->釋出,就會生成對應的qm檔案。
使用qtranslator來加載生成的qm檔案,就可以讓程式顯示指定的語言。
<a href="http://download.csdn.net/detail/u011012932/9349909">qt國際化</a>