Qt項目翻譯中文化會涉及到qt基礎庫的漢化。
一、漢化步驟 - 針對普通漢化
1.在程序源碼中標識需要翻譯的文本信息
對用戶可見的文本信息使用tr()進行封裝。 舉例如下:label->setText(tr("Hello"));
2.通過Qtcreator生成.ts翻譯文件
如果翻譯文件位置為 translations/kylin-scanner.zh_CN.ts,
在工程文件中添加: TRANSLATIONS = translations/kylin-scanner.zh_CN.ts工具->外部->Qt語言家->更新翻譯(lupdate)
3.通過翻譯工具(Linguist), 對.ts文件進行翻譯, 發布生成.qm二進制文件
4.在源碼中加載.qm文件, 實現漢化
QTranslator translator;
QString locale = "/usr/share/kylin-scanner/translations/kylin-scanner."
+ QLocale::system().name();
qDebug() << locale ;
translator.load(locale);
a.installTranslator(&translator);
二、漢化步驟 - 針對Qt5基礎庫漢化
在文件對話框,如保存文件對話框或者打開文件對話框,往往會出現部分未漢化的情況(未漢化“cancel”按鈕)。
- 在qt基礎庫中找到源碼的.ts翻譯文件
我使用的qt版本為5.14.2,所以翻譯文件目錄為 Qt5.14.2/5.14.2/Src/qttranslations/translations/qt_zh_CN.ts
- 找到要復制翻譯的內容並復制到負責的項目中
如要漢化項目中的“cancel”按鈕和文件對話框中的內容,將 qt_zh_CN.ts 的相關內容復制到項目的translations/kylin-scanner.zh_CN.ts文件的末尾處。
3.通過翻譯工具(Linguist), 對.ts文件進行翻譯, 發布生成.qm二進制文件
<context>
<name>QPlatformTheme</name>
<message>
…
<message>
<message>
<location line="+18"/>
<source>Cancel</source>
<translation>取消</translation>
<message>
<context>
<context>
<name>QFileDialog</name>
<message>
…
<message>
<context>
4.在源碼中加載.qm文件, 實現漢化,見一中的第4步。