Qt Linguist — 被稱為 Qt 語言家的 Linguist 是用于界面國際化的重要工具,但其實(shí)它并不能幫你翻譯,它的主要任務(wù)只是讀取翻譯文件、為翻譯人員提供友好的翻譯界面。
qt linguist是什么?
QT軟件自帶的翻譯工具。
比如你的界面是英文的,運(yùn)行l(wèi)update生成ts文件后,用 linguist打開,可以對(duì)照翻譯成你想要的語言(比如中文),翻譯完畢運(yùn)行l(wèi)release生成qm文件。運(yùn)行程序可以根據(jù)需要加載不同的qm文件。
QT-Linguist使用方法簡單介紹:
QT-Linguist工具主要用在項(xiàng)目的多語言翻譯處理過程中,所有先簡單介紹一下整個(gè)多語言處理過程,最后介紹Linguist的用法。
(一)QT項(xiàng)目實(shí)現(xiàn)多語言,必須做兩件事:
1)確保每一個(gè)用戶可見的字符串都使用了tr()函數(shù)。
2)在應(yīng)用程序啟動(dòng)的時(shí)候,使用QTranslator載入一個(gè)翻譯文件(.qm)。
tr() 的用法:
caseCheckBox = new QCheckBox(tr("Match &case"));
在main()函數(shù)里載入翻譯文件:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//翻譯程序
QTranslator translator;
translator.load("spreadsheet_cn.qm");
app.installTranslator(&translator);
……
}
注意:翻譯文件加載的位置必須在界面實(shí)例化之前完成。
(二)生成.qm翻譯文件
1、在該應(yīng)用程序的.pro文件文件中添加TRANSLATIONS項(xiàng),可分別對(duì)應(yīng)于不同的語言,如:spreadsheet_cn.ts, 對(duì)應(yīng)中文,名字可以自己定義,后綴名.ts不可變動(dòng)。<.ts是可讀的翻譯文件,使用簡單的XML格式;而.qm是經(jīng)過.ts轉(zhuǎn)換而成的二進(jìn)制機(jī)器語言>
2、翻譯文件。分三步來完成:
1)運(yùn)行l(wèi)update, 從應(yīng)用程序的源代碼中提取所有用戶可見的字符串。
2)使用Qt Linguist 翻譯該應(yīng)用程序。
3)運(yùn)行l(wèi)release,生成二進(jìn)制的.qm 文件。
以上三步均需用到QT自帶的命令行控制臺(tái),啟動(dòng)方法:開始--->所有程序--->Qt by Nokia v4.6.3 (OpenSource)--->Qt 4.6.3 Command Prompt
啟動(dòng)命令行后,對(duì)應(yīng)輸入如下命令:
1)lupdate –verbose spreadsheet.pro //生成相應(yīng)的.ts 文件
2)linguist //啟動(dòng)Linguist語言翻譯工具,可以翻譯相應(yīng)可見字符串
3)lrelease –verbose spreadsheet.pro //將翻譯好的文件生成.qm文件
(三)Linguist 語言工具的使用
1)啟動(dòng):命令行或者開始菜單均可
2)打開:工具界面中的File--->Open,可以打開所需的 .ts 文件
3)翻譯:界面中部的翻譯欄,兩行:第一行:Source Text 第二行:… Translation, 在地二行進(jìn)行相應(yīng)的翻譯即可,翻譯完一條之后點(diǎn)擊“確定下一個(gè)”按鈕。
4)發(fā)布:點(diǎn)擊File--->Release, 生成 .qm 文件。(與命令行的效果一樣)
QT Linguist使用:
QT Linguist可以方便的為你的QT程序界面進(jìn)行翻譯,讓你的程序可以有多個(gè)語言的版本。其使用非常簡單,會(huì)讓你的工作效率大大提高。
大體步驟:
lupdate可以把.h, .cpp, .ui中需要翻譯的字符串抽出來形成.ts文件
然后用linguist翻譯
用lerealse生成.qm
1.修改*.pro,在其中添加 TRANSLATIONS = XXX. ts
2.lupdate *.pro,生成XXX. ts
3.使用linguist打開XXX. ts,進(jìn)行翻譯,翻譯結(jié)束后,保存成為qm格式的。File->Release As
或者是翻譯結(jié)束后,使用命令,lrelease XXX. ts,生成qm文件。
4.在程序中加入。
QTranslator translator;
translator.load("browser");
app.installTranslator(&translator);
其中l(wèi)oad的是XXX.qm中的不包含后綴名的文件名(即XXX)。
漢化精簡版說明:
此 Qt Linguist 是由漢化新世紀(jì)成員-呂達(dá)嶸從 QT 4.8.3中提取出來,并稍作修改后的精簡版本。主要用于 QT 類項(xiàng)目的多語言翻譯處理,可直接本地化 ts 及 qm 文件,可將源文件 ts 編譯為 qm 文件,或 qm 反編譯為 ts 源文件。程序自帶字典功能,同時(shí)也支持 Gettext 的 PO文件格式,乃 QT 軟件本地化之利器。
安裝使用注意:
打包時(shí)默認(rèn)的安裝路徑是 D:\Qt_Linguist,如果更改了路徑,則程序運(yùn)行時(shí)不會(huì)顯示中文界面,解決方法如下:
用十六進(jìn)制編輯器如 UE 等打開安裝目錄中的 QtCore4.dll,查找D:\Qt_Linguist,改為你需要的路徑,字節(jié)較短的,十六進(jìn)制下填零,切記:目錄名中不能含空格!
MO語言文件
其實(shí)poedit足矣,poedit目錄下已經(jīng)包含了msgunfmt.exe(MO轉(zhuǎn)PO的工具)
一個(gè)有用的工具,能幫助您很容易讀懂C++語言。
它的使用方式:
lupdate可以把.h, .cpp, .ui中需要翻譯的字符串抽出來形成.ts文件
然后用linguist翻譯.用lerealse生成.qm.
特別說明:
1. 官方的簡體中文語言文件 linguist_zh_CN.qm 不完整,所以本人使用lupdate 工具重新生成完整的 linguist_zh_CN.ts 文件,并翻譯。
2. 無須安裝,解壓縮后即可使用。