Qt内置组件国际化文本
- 介绍
在Qt中,常规的国际化就是使用Qt Linguist制作国际化文本,再在代码中使用QObject::tr锚定国际化key,然后Qt Linguist编辑ts文本对应的国际化文本,最后生成导出qm翻译脚本。程序中加载这些qm文件即可。
- 背景
在使用Qt的时候,大部分时候会用到内置组件,如打开文件对话框,浏览文件,消息弹窗。这些组件使用时默认是英文界面文本,然后我们自己程序在做国际化文本的时候将会导致语言文本不统一的情况,一时间又不能编辑qt内部代码修改文本。虽然也可以通过重构一些自己的对话框实现他们,但是这样做既费时又费力。
对于这种情况,在不重复实现的情况下,可以用内置Qt默认提供的对应国际化文本资源,在启动时候加载他们,让他们自动对Qt内部组件做界面国际化。
要使用Qt自身的国际化文本资源,一般在Qt安装目录中的translations目录中:
在这些文件中 前缀qt_的则是qt动态库本身使用的国际化文本脚本,例如qt_zh_CN.qm就是中文简体的文本资源文件。qt_help_zh_TW.qm则是qt帮助程序的繁体中文国际化脚本。我们本身只需要使用qt动态库本体的文本资源即可。
- 程序动态加载该文本资源
在QApplication主循环之前调用QTranslator::load即可加载。之后QApplication安装即可。
需要注意的是一个QTranslator只能load一个资源文本,否则将覆盖掉第一个load的脚本。
这样即可完我们自由程序和qt动态库的国际化文本脚本的同时加载。