- QT做國際化幾個步驟
- 生成資源文件
- 在項目文件下,新建2個這樣名字的.ts文件(主要是en_US, zh_CN這段)
代表根據不同的locale信息對應文本。Udit_字樣是產品名字沒關係
- 選擇項目,選擇菜單上的這個,點擊後自動生成.ts文件
這個功能非常自動化,會掃描所有項目中的.ui文件和代碼中tr(“”)包括起來的字符串內容。
- 可以用QT的工具Linguist,也可以直接用任意文本編輯器,打開.ts文件,如下圖
其中,重要的信息如下:
第一塊區域,代表這個文本被哪些界面元素用到了
第二塊source是指目前是什麼值
第三塊,就是當前語言中你要顯示的。(一般,我們修改這個即可)
- 修改文本好後,生成最終.qm文件。
點擊菜單上:
會在剛纔的.ts 同目錄生成文件名一致,擴展名爲.qm的最終資源文件.
- 如何使用最終資源文件
一般的我們在bin目錄下新建locale目錄,將剛纔的2個.qm文件放入。
在代碼中這樣使用
- App初始化時,找到找到這個qm文件,進行全局設置
該函數內容如下:
//設置當前語言環境,入參如下
//zh->中文
//en->英文
void SetCurrentLanguage(QString language)
{
QString strLanguage("zh");
if (strLanguage.isEmpty())
{
return;
}
QString strLanguageFile;
if (strLanguage.compare("en") == 0)
{
strLanguageFile = qApp->applicationDirPath() + QString("/locale/udit_en_US.qm");
}
else if (strLanguage.compare("zh") == 0)
{
strLanguageFile = qApp->applicationDirPath() + QString("/locale/udit_zh_CN.qm");
}
QTranslator* m_translator=new QTranslator();
if (QFile(strLanguageFile).exists())
{
m_translator->load(strLanguageFile);
QApplication::installTranslator(m_translator);
}
else
{
qDebug() << " language file does not exists ...";
}
}
當然具體怎麼樣,完全可以自行修改。