Qt项目涉及语言切换,语言翻译,QTranslator是最常见的做法,在程序加载之前就需要加载好qm翻译文件,这样被tr( )包裹的字符串就会设置为翻译的内容。
具体在程序pro文件里加上以下宏,在更新翻译的时候会生成ts文件方便用qt语言家工具进行翻译。
TRANSLATIONS = ts/XX.ts\ #中文简体
ts/XX.ts\ #英文
ts/XX.ts\ #中文繁体
ts/XX.ts\ #越南语
ts/XX.ts\ #日语
ts/XX.ts\ #韩语
ts/XX.ts #孟加拉语
点击更新翻译
再打开语言家,可以同时打开多个ts文件进行翻译
翻译好之后,需要使用添加以下代码就好,点击发布翻译就会生成对应的qm文件,下一步加载它就好。
//更新翻译文件的具体代码
if (m_mainwindow->m_translator) {
qApp->removeTranslator(m_mainwindow->m_translator);
delete m_mainwindow->m_translator;
m_mainwindow->m_translator = NULL;
}
//英文
m_mainwindow->m_translator = new QTranslator(m_mainwindow);
m_mainwindow->m_translator->load(languageFilePathL + "xx.qm");
if (! m_mainwindow->m_translator->isEmpty()) {
m_mainwindow->m_translator->setObjectName(tr("英文"));
qApp->installTranslator(m_mainwindow->m_translator);
m_mainwindow->signalUpdateUI();//要对界面元素进行重新设置text
} else {
qDebug() <<"英文 m_translator->isEmpty()";
}
需要注意的是,程序必须在应用程序的小部件之前创建翻译器,不然切换的时候界面文字时不会更改的,需要对文字进行重新设置,例如:
openFileAction->setText(tr("打开文件")); ///打开文件
saveFileAction->setText(tr("保存文件")); ///保存文件
saveAsFileAction->setText(tr("另存为")); ///另存为文件
closeFileAction->setText(tr("关闭当前文件")); ///另存为文件
setLanguageAction->setText(tr("设置语言")); ///设置语言
aboutAction->setText(tr("关于")); ///打开关于
以上就是简单的Qt程序界面语言翻译的流程,主要步骤是这样。下一篇写一下简单的语言设置对话框。