一、qt Linguist(語言家)步驟流程
1、創建翻譯文件,在qt選項中
2.選擇對應所需的語言,得到.ts后綴的翻譯文件
3.創建.pro文件,并將.ts配置在.pro文件中
3.使用qt Linguist 打開創建好的以.ts為后綴的翻譯文件,按圖所示步驟將每一項內容配置好其翻譯內容。
4.發布ts后綴的文件,得到qm后綴的文件
5.在代碼中配置qm文件
QString sLanguage = "./bmpviewer_zh.qm";//設置翻譯語言包(中文)
QTranslator translator;
if (translator.load(sLanguage))
{qApp->installTranslator(&translator);ui->retranslateUi(this);
}
????????以上為空間文本的翻譯配置,若是需要對消息盒子的信息進行多語言控制,需要在字符串其加上tr,這樣即可在.ts文件中對其翻譯進行配置。
tr("需要翻譯的文本")
二、tr不生效問題
? ? ? ? 在使用過程中發現tr對應字符串翻譯不生效,網上大部分說明為,需要在派生類中加QObject宏。但是在我確認類中已加入QObject后,代碼仍不生效。原翻譯文件設置函數代碼。
void MainWindow::setLanguage(const QString& sLanguage)
{QTranslator translator;if (translator.load(sLanguage)){qApp->installTranslator(&translator);ui->retranslateUi(this);}
}
偶然間查閱到QObject::tr無法獲取翻譯文本_qobject::tr 不起作用-CSDN博客
知道了QTranslator 不能為局部變量,將變量放到類中,試了一下還真行。