QT做国际化几个步骤
- 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() << "[UNISOL] language file does not exists ...";
}
}
当然具体怎么样,完全可以自行修改。