QTranslator的使用__QT

來源:互聯網
上載者:User

一、怎樣去掉ui檔案

     1、為什麼要去掉ui檔案

       項目開發不建議使用.ui檔案,因為.ui檔案使部分代碼不可見,同時當多人同時開發時,合并分支會出現許多衝突。

      2、去掉ui檔案的方法

     使用QtDesigner開啟ui檔案,點擊“表單“菜單下的”查看代碼“項,會彈出ui檔案對應的源檔案;

      將其中的包含檔案複製到引用ui檔案的源檔案中;

      將Ui_***類中的成員變數,複製到引用ui檔案的標頭檔的類中, 將setupUi函數、retranslateUi函數複製為該類的成員函數,並複製函數體;

      在類的建構函式中將”ui.setupUi( this )“的調用改為” setupUi( this )“;

      

二、QTranslator的使用

     1、產生翻譯檔案

      項目名上右鍵菜單,選擇”create new translation file“;項目中會添加一個以”.ts“為尾碼的檔案,例如”testtranslator_zh.ts“;

      使用Qt Linguist開啟該檔案,就可以為指定的字串設定譯文;

      翻譯完成後,點擊”檔案“菜單下的”發布“項,就會產生.qm檔案;


      2、載入翻譯檔案

      在應用程式啟動時載入翻譯檔案,一般放在main函數的開始位置;

QApplication a(argc, argv);//載入語言套件QTranslator qtTranslator;qtTranslator.load( "testtranslator_zh");a.installTranslator( &qtTranslator );

     3、update 翻譯檔案

      在應用程式代碼中修改後添加某些翻譯字串後,“.ts”檔案不會自動更新,需要在相應的“.ts”檔案的右鍵菜單中點擊“lupdate”項,才會更新。


      注意:翻譯檔案的載入位置必須在介面執行個體化之前完成


注意:在程式中每一個使用tr()函數的字元創都會顯示到Qt Linguist中,另外tr()的範圍修飾很重要,因為Qt Linguist會根據該範圍設定不同的上下文,比如原始碼中只存在TestTranslator::tr("**")和TestTranslatorClass::tr("**")兩種類型的字串,那麼Qt Linguist會產生兩個上下文:TestTranslator和TestTranslatorClass,用TestTranslator修飾的字串會出現在TestTranslator上下文中,用TestTranslatorClass修飾的字串會出現在TestTranslatorClass上下文中,方便字串的管理。

      

三、Qt標準對話方塊中的翻譯

     1、安裝qt標準的翻譯檔案

      在Qt安裝目錄中搜尋“qt_zh_CN.qm”檔案和“qt_zh_CN.ts”檔案,複製到項目目錄;

QTranslator qtTranslatorStandard;qtTranslatorStandard.load("qt_zh_CN");a.installTranslator(&qtTranslatorStandard);
     2、修改ts檔案

     ** QDialogButtonBox的確定、取消按鈕沒有正常翻譯

     解決方案:在“qt_zh_CN.ts”裡面手動添加:

<context>      <name>QPlatformTheme</name>      <message>          <location filename="../src/widgets/qdialogbuttonbox.cpp" line="+42"/>          <location line="+18"/>          <source>OK</source>          <translation>確定</translation>      </message>      <message>          <location line="+54"/>          <source>Cancel</source>          <translation>取消</translation>      </message>  .....  </context>  
      ** QMessageBox中的QMessageBox::Yes, QMessageBox::No沒有正常翻譯

      解決方案:上述context中再添加:

 <message>        <source>&Yes</source>        <translation>是</translation>    </message>    <message>        <source>&No</source>        <translation>否</translation>    </message>
     注意:在xml中<source>&Yes</source>的寫法是<source>&amp;Yes</source>

    3、儲存並發布修改後的翻譯檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.