QT程序中文翻譯步驟

第一步
在你的pro裏面加入 TRANSLATIONS = myexec_zh.ts (根據對應的ts文件修改)
第二步
用lupdate 操作pro 將要翻譯的提取到ts文件 命令是 lupdate my.pro
第三步
用 linguist 打開剛纔的ts文件,linugist是在qt的bin的目錄裏面, 是一個界面工具 打開linguist 後用菜單欄file ->open 打開 相應的ts文件 如剛纔myexec_zh.ts 打開後你會看到左邊是相應的類 右邊的上半部 是相應的類裏面tr 裏面的內容 所以在程序裏面 tr裏面的都是e文 到這裏就用上了 下半部是你要翻譯的語言的相應的東西,就是你輸入中文的地方 要注意的就是 那些標點符號 最好還是用e文輸入狀態的如save as.... 就應該是 另存爲.... 而不是 另存爲。。。。注意後面的標點的差別,其中綠色的表示翻譯好了 ,歎號的表示沒有翻譯對,交叉的表示沒有翻譯
第四步
先用 linguist 菜單保存你翻譯好的ts文件,接着用linguist界面工具裏面菜單file裏面的release...,點擊這個就會彈出對話框 提示你 輸入 qm文件的文件名,用默認的就可以了。按確定後你會在ts文件所在的目錄看到一個qm後綴名的個文件,這就程序翻譯器要用到的文件。
第五步,在你的程序裏面使用剛纔得到的qm文件 方法如下
       QTranslator translator( 0 );
       translator.load( "myexec_zh.qm", "." );//要跟剛纔得到的qm的文件名對應
       app.installTranslator( &translator );
切記 在第五步的時候,一定要在界面的前面安裝翻譯器
舉個例子 ,下面的順序是對的
      QTranslator translator( 0 );
       translator.load( "french.qm", "." );       
app.installTranslator( &translator );
   MyWidget m;       
app.setMainWidget( &m );       
m.show();
下面的順序就不對,它錯在界面出來之後才才安裝翻譯器
       MyWidget m;
       app.setMainWidget( &m );       
m.show();       
QTranslator translator( 0 );
       translator.( "myexec_zh.qm", "." );//要跟剛纔得到的qm的文件名對應       
app.installTranslator( &translator );
他的錯誤是在界面出來後才安裝翻譯器,就翻譯不到界面裏面了 ,
一定要在界面出來之前安裝翻譯器,最好就是在app後就立刻安裝  
QTranslator translator( 0 );
       translator.load( "french.qm", "." );       
app.installTranslator( &translator );
   MyWidget m;
m.setFont(QFont("unifont", 16));   
app.setMainWidget( &m );       
m.show();
補充一下 第二步的作用主要是將整個工程中所有tr的地方提取到ts文件裏面,在後面打開ts的時候就會看到的,所以所謂翻譯就是把tr("english")中的english 提取出來,讓你翻譯成相應的語言,供程序加載使用
最後需要把*.qm文件copy到debug目錄下,才能實現界面語言轉換.
qm要跟exe在一個文件夾裏面,這個主要是load的時候第二個參數導致的...那個是表示exe找的qm的路徑,因爲是.表示當前路徑,所以就有樓上上面出現的情況了,謝謝補充

我的整理版:

(1)在design.pro文件裏面加入TRANSLATIONS = design.ts。
(2)用lupdate 操作pro,以提取出.ts文件供下面的lingusit工具翻譯成漢化所需要的.qm文件。命令是#lupdate design.pro。*.ts文件是翻譯源文件,它是基於XML語言描述的。通過編輯*.ts文件,已經指定了對應的翻譯信息。這一步是翻譯的過程,所謂翻譯就是把tr("english")中的english 提取出來,以翻譯成相應的語言,供程序加載使用。
(3)用linguist打開剛纔的design.ts文件,linguist是在qt的bin的目錄下的一個界面工具。如果使用QT/E 2.3.7的版本,沒有自帶這一個工具,可以在windows下單獨下載linguist工具進行這一步。在linguist中用菜單欄file ->open 打開相應的.ts文件,如該設計中的design.ts。打開後會看到左邊是相應的類,右邊的上半部是相應的類裏面提取出來供翻譯的內容,下半部是要翻譯的語言的相應的東西,即爲需要輸入中文的地方。在翻譯中,要注意標點符號的翻譯最好還是用英文輸入狀態下的標點符號。當翻譯狀態前出現綠色勾的提示爲翻譯成功,歎號的表示沒有翻譯對,交叉的表示沒有翻譯。
(4)先用linguist 菜單保存翻譯好的.ts文件, 接着用linguist界面工具裏面菜單file裏面的release...,點擊這個彈出對話框,提示輸入.qm文件的文件名,用默認的即可。按確定後你會在.ts文件所在的目錄看到一個.qm後綴名的文件,這就是程序翻譯器要用到的文件。
(5)最後,把design.qm文件copy到design目錄下, 在main.cpp程序裏面使用剛纔得到的.qm文件 ,方法如下:
QTranslator translator( 0 );   //生成翻譯器
translator.load( "design.qm", "." ); //載入qm文件,與剛纔得到的qm的文件名對應
app.installTranslator( &translator ); //安裝翻譯器
MyWidget m;
m.setFont(QFont("unifont", 16));   //設置中文字體    
app.setMainWidget( &m ); // 將m設爲當前窗口
m.show(); //將當前窗口顯示出來
程序在運行時是動態提取和源語言對應的本地語言信息並顯示在用戶界面上。設計中一定要在界面出來之前安裝翻譯器,否則就不能在界面中顯示翻譯後的界面。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章