qt應用程式的國際化問題,應該總的來說還是比較容易的,如果你原始碼中沒有使用漢字,直接使用英文,這個問題就不大,下面我講的是通過在原始碼中直接使用中文(就是本地化了的),然後把中文翻譯成別的文字而言的(例如加密文字),大致分這麼幾個步驟,基本與對英文進行國際化的步驟差不多(這裡是針對windows平台的,我使用的是qt4.5.3版本):
前期準備,首先在main.cpp中指明你的編碼格式:
我在main.cpp指明的字串的編碼格式都是gbk(windows下基本都用這個)的,**如下:
qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));
qtextcodec::setcodecforcstrings(qtextcodec::codecforname("gbk"));
qtextcodec::setcodecforlocale(qtextcodec::codecforname("gbk"));
下面是翻譯資源的步驟:
1。在你工程的.pro檔案中加上:
translations = ***.ts(***你工程的名字,或其它名字,以下類似)
如果是中文系統的話還要加上
codecfortr = gbk(指明你源**裡tr裡使用的編碼格式)
codecforsrc = gbk(指明你源**檔案使用的編碼格式,不過在
linguist仍舊是顯示亂碼
)在qt的assistant幫助文件裡特別指明了,如果使用visual studio開發工具的話,必須加上codecforsrc = 編碼格式。
2。執行cmd命令,然後進入到你源**目錄下,使用lupdate ***.pro命令提取你源**裡tr裡的資源;
3。使用linguist.exe開啟,第2步驟中生成的***.ts檔案進行翻譯。
這裡需要注意的是,當你在linguist翻譯的時候,當翻譯完乙個字元的時候,別忘了點工具欄按鈕上那個帶有對勾並有乙個向右箭頭的按鈕,表示你完成了翻譯,如果在linguist的右下角的警告出視窗中有提示的話,那表示你翻譯的資源字元要與原資源字元的結尾標點是一樣的,翻譯好之後,然後儲存(當你進行翻譯的時候可能原始碼的位置把漢字顯示成了亂碼,這個不必關心,只要提取的tr中的字元時正確的就可以了);
4。使用lrelease ***.ts就可以生成***.qm檔案,這就是我們想要的,放到你***.exe所在目錄下就可以了。
如果直接在linguist的file選單下release的話,通過本人的實踐證明
,直接在linguist的file選單下release與直接在命令列裡面生成的.qm檔案是不一樣的,命令列裡的是正確的,能被.exe載入並且翻譯也是正確的,而
linguist的file下release生成的.qm檔案就不行,原因是
linguist裡使用了自己預定義好的編碼集,即使你在
linguist剛開啟時選擇了chinese-china也不行
,這個應該算是
linguist的bug吧,
qtranslator載入多個.qm檔案的),
這樣就能正確翻譯了。
Qt 國際化小結
通過qt linguist翻譯應用程式執行ludata工具,提取要翻譯的文字,生成.ts檔案,這個檔案是xml格式的。開啟qt linguist進行翻譯。執行lrelease工具,生成.qm檔案,這個乙個根據.ts生成的檔案,供我們翻譯時使用。這裡的.ts和.qm均與平台無關。pro transla...
QT國際化支援
為了是我們的qt程式支援如中文等其他語言,通常的做法是在需要翻譯的地方顯示的用tr標記,所以你在閱讀其他人編寫的源程式時會看到很多字串做了tr標記,這樣做是有原因的。1.在hello.pro檔案中增加 translations hello zh cn.ts 2.進入工程目錄,執行 lupdate h...
qt國際化程式設計
下面說一下qt國際化程式設計的操作步驟 1 編寫源 2 在 pro檔案中新增translations ts 有多少中語言就新增多少個ts檔案。3 執行lupdate pro 生成ts檔案。lupdate會根據源 中的內容提取出待翻譯的字段,然後生成ts檔案,ts檔案是xml格式的。4 用qt lin...