在Qt中,所有的输入部件和文本绘制方式对Qt所支持的所有语言都提供了内置的支持。Qt在实际使用某一个语种需要使用QTranslator和Qt Linguist工具实现翻译,具体实施步骤如下:
一、创建Qt工程文件
![](https://i-blog.csdnimg.cn/blog_migrate/f9643b5423189d917592903b71e85b70.png)
二、编写Qt应用程序源码 (注意:所有需要翻译的文本需要使用tr(“ ”)管理)
![](https://i-blog.csdnimg.cn/blog_migrate/d6c49ce0264e456adf297675018f7dd6.png)
运行结果如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/37df165fe526914fb8c4f322bf296686.png)
三、翻译
-
在工程目录.pro文件中添加语句 TRANSLATIONS += Laos.ts 对于.ts 文件的名称可以随意编写,
-
使用lupdate生成.ts文件。 通过QtCreator菜单工具-> 外部->Qt 语言家-> 更新翻译lupdate 菜单项来完成该操作。这时会在概要信息处显示如下信息:
![](https://i-blog.csdnimg.cn/blog_migrate/ad3767bc6a80775d7ae452905fb5c2f2.png)
操作成功后会在源码所在目录生成Laos.ts文件。
-
使用Qt Linguist完成翻译
在Qt安装目录下的bin目录下,会有一个linguist工具,直接运行linguist,打开上一步生成的Laos.ts文件。
![](https://i-blog.csdnimg.cn/blog_migrate/3c30a2fa815a9b26a3ea5b0a11743b3e.png)
源码中需要翻译的文本都会被列出来,然后依次将需要翻译的文本翻译成老挝语,翻译完后保存文件,并退出linguist。
![](https://i-blog.csdnimg.cn/blog_migrate/6143b5c8c662dfe3e7191d9518b8ed9a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/15b08ec2199c76f75fdb4e820fd5a1e7.png)
四、使用lrelease生成.qm文件
可以通过QtCreator菜单工具->外部->Qt语言家->发布翻译lrelease菜单项来完成该操作。这时会在概要信息处显示如下信息
![](https://i-blog.csdnimg.cn/blog_migrate/ba526359135f975699504ae816e87414.png)
成功后会在源码所在目录生成Serbian.qm文件。
五、Qt工程文件使用.qm文件
进入main.cpp文件,添加头文件#include<QTranslator>,然后在QApplication a(argc, argv);代码下添加如下代码:
编译运行
运行结果:
六、lupdate更新翻译乱码
参考官方文档的说明:
If your sources contain genuine non-Latin1 strings, lupdate needs to be told about it in the .pro file by using, for example, the following line:
在工程文件.pro文件中添加:
CODECFORTR = UTF-8
![](https://i-blog.csdnimg.cn/blog_migrate/7a9a0665d0d9b47c118c8b7282e781db.png)