Qt多國語言的實現與切換(國際化)

來源:互聯網
上載者:User
Qt多國語言的實現與切換(國際化)

1、建立語言檔案

  開啟.pro檔案,加入以下:

TRANSLATIONS+=cn.ts

  工具->外部->Qt語言家->更新翻譯,將產生翻譯檔案cn.ts

2、編輯翻譯檔案

  啟動Linguist(Qt語言家),開啟cn.ts,然後進行編輯,主要是將源文對應的譯文填寫上,最後儲存

3、部署翻譯檔案

  工具->外部->Qt語言家->部署翻譯,將產生語言檔案qm

4、載入翻譯檔案 ?

QTranslator translator; bool  b = false ; b = translator.load( "cn.qm" ); a.installTranslator(&translator);
(以上四步要注意清理和更新,負載檔案路徑不對時load會失敗,最好方式是把翻譯檔案放到qrc裡,用qrc的調用方式,路徑基本不會出問題)


4.1要翻譯一個指定(使用者可見)的字串,如果在QObject類中可以直接調用tr()函數,如果在不是QObject類中加入QObject首碼QObject::tr()重寫tr(),也可以使用Q_DECLARE_TR_FUNCTION()宏把tr()函數添加到該類中。

 4.2用這個命令產生最新ts檔案(工程編譯過後再產生該檔案) lupdate qml/LoginWindow.qml qml/MainWindow.qml -ts en.ts zh_cn.ts

4.3用Qt Linguist開啟上一步產生的qml.ts 和 app.ts,將我們翻譯的文字輸入進去即可,最後儲存檔案,完成。 然後在命令列中輸入:

lconvert app.ts qml.ts -o displayChinese_zh_CN.ts

這是為了將兩個ts檔案合并起來。最後的效果如圖:

 4.4.動態庫中的多語言也可以放到主程式做,用同一個ts qm檔案,只要在main載入一次就行,但是要注意的是ts/qm檔案的命名必須遵循iso標準格式,不然的話動態庫的多語言顯示不出來,只能顯示主程式的多語言。比如translation_zh_CN.ts 或 translation_en.ts這些格式,而尾碼不是標準格式的則只能應用在主程式的多語言,動態庫的多語言無能為力,這可能是動態庫載入時必須搜尋標準格式的原因吧。

4.5要注意還要載入上qt內建翻譯,否則qt的彈出框之類的都是英語了。

4.6

多語言要注意載入系統的多語言,比如彈出框要是沒載入系統多語言的話,有些系統介面會只顯示英文

。具體實現為 QString language = set.value("language",Qlocale::system()).tolocale().name();
//載入本系統翻譯的結果
QTranslator *translator = new QTranslator();
if(translator->load(Gt::home()+"/translations/mcs_"+language)==false){
translator->deleteLater();}
else
QApplication::installTranslator(translator);
//載入qt自有的翻譯
QTranslator *qtTranslator = new QTranslator();
if(qtTranslator->load(Gt::home()+"/translations/qt_"+language)==false){
qtTranslator->deleteLater();}
else
QApplication::installTranslator(qtTranslator);

 

 

5、

ui->retranslateUi(this);//這裡實現語言翻譯器的更新


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.