一、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 不能为局部变量,将变量放到类中,试了一下还真行。