zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)

Qt系统 文本 按钮 菜单 右键 国际化
2023-09-14 08:56:50 时间

我们可以从Qt的安装目录中找到它,以我的目录为例:D:\Qt\Qt5.5.1\5.5\msvc2013\translations。

如果没有此文件,不用着急,我们可以查找此文件对应的翻译源qt_zh_CN.ts。然后使用lrelease,生成对应的qt_zh_CN.qm文件。

加载翻译文件

这里写图片描述这里写图片描述这里写图片描述

加载为中文之后,假设我们存在多语言切换问题,那么当我把语言切换为中文后,之前的qt_zh_CN.qm已经加载了,如何再切换回来呢?

好了,既然存在load,那么不出意外地话也会存在unload吧。不好意思,翻完所有的API我们并没有发现此接口!

继续分析,installTranslator是安装翻译文件的意思,那么我们可以想办法把它卸载掉,通过查找我们很容易发现removeTranslator接口。

官网对此接口的的解释为:Removes the translation file translationFile from the list of translation files used by this application. (It does not delete the translation file from the file system.)

也就是说:从翻译文件列表中移除翻译文件后,并没有从文件系统中删除翻译文件。

那么也就是说,通过调用此接口,就可以移除翻译文件了。翻译文件一旦被移除,那么之前所加载的对应语言也就无效了。

if (language != MyApp::English)

 m_systemTranslator.load(QString(":/qm/qt_zh_CN.qm"));

 qApp- installTranslator( translator);

 qApp- removeTranslator( translator);

}

如上,切换语言的时候判断当前语言,如果为中文则加载qt_zh_CN.qm翻译文件,然后安装翻译器。否则,进行卸载!

这样,加载对应语言的时候,无论是自定义的文本,还是系统文本,我们都可以自由的切换了。