經過對qt的分析, 發現實際上qt的原理是將各種文字編碼先轉化為utf8編碼,然翻譯為qm檔案來顯示本地字元!
這裡不使用findstr、msg2qm工具,而採用另外的qt工具lupdate 、lrelease、linguist來完成本地化操作
以qt2/tutorial/t1 作為中文翻譯例子
進行了少部分修改,加入了中文字型支援
lupdate與findstr功能差不多,只是生成xml格式的文字採集文字
config += qt warn_on release
headers =
sources = main.cpp
target = t1
requires=small-config
# 加入需要生成的翻譯檔案,這裡採用中文
translations = t1_zh.ts
執行lupdate t1.pro
就會在當前目錄下生成t1_zh.ts採集的文字檔案了,修改為你採用的編碼文字!
修改後的t1_zh.ts
qpushbutton
hello world!
你好!這個工具是完全圖形話操作的,這裡就不再贅述
在檔案選單選擇release, 提示儲存為qm翻譯檔案即可
使用iconv與lrelease結合來完成linguist的功能
既然知道qt是採用utf8編碼才操作各種文字, 我們就可以借助iconv強大的編碼轉換功能完成同樣的工作! 我是因為linguist在我平台上無法翻譯才只好這麼做!
修改t1_zh.ts後轉換編碼,這裡採用gb2312->utf8轉換.
iconv -f gb2312 -t utf8 t1_zh.ts t1.ts
lrelease翻譯編碼檔案
lrelease t1.ts -qm t1_zh.qm
執行t1
./t1 -qws
顯示中文
要注意的是ts檔案中不能有空格,
翻譯成的qm檔案是不能夠顯示的!
[1]internationalization with q t
[2]qt 國際化程式設計
在Qtopia中新增國際化支援
使用 qt 編寫國際化的程式,最好不要在程式中直接使用特殊編碼的文字。比如要 編寫一中文介面的 qt 程式,應該在程式中使用英文,程式編寫完成後,把文字提取 出來翻譯。這樣,程式還可以根據locale的不同,支援多種語言。下面介紹如何在 qt 程式中標註字串,如何提取並翻譯文字。像普通的國際化過程一...
在Qtopia中新增國際化支援
使用 qt 編寫國際化的程式,最好不要在程式中直接使用特殊編碼的文字。比如要 編寫一中文介面的 qt 程式,應該在程式中使用英文,程式編寫完成後,把文字提取 出來翻譯。這樣,程式還可以根據locale的不同,支援多種語言。下面介紹如何在 qt 程式中標註字串,如何提取並翻譯文字。像普通的國際化過程一...
SpringBoot專案中增加國際化的支援
本文主要描述在springboot專案的後端增加國際化的支援。1.在src main resources目錄下新建i18n目錄並在該目錄下增加國際化檔案。其中,目錄i18n可選且目錄名可以自定義。國際化檔案的檔名為messages.properties,該檔案為預設的語言檔案,當需要增加對其他語言的...