QT 国际化

最近在做软件的中英文切换功能,所以找了些资料,研究了一下Qt的国际化,这里分享一下。现将实现方式记录下来,也是方便自己以后查找。

百度云下载:https://pan.baidu.com/s/1szQa6pkwuO0-y01885i-5g    提取码:0re8

CSDN下载:https://download.csdn.net/download/Sakuya__/12401921

目录

效果

实现国际化

一、将所有需要翻译的字符用tr()包起来

二、在pro文件中添加

 三、生成ts文件

四丶编辑翻译语言文件

五、生成qm文件

六、 在代码中加载qm文件,实现切换语言

 


效果

 


实现国际化

一、将所有需要翻译的字符用tr()包起来

首先将自己代码中所有要显示的文本信息,字符串外用tr()括起来,例如这样:

QMessageBox::information(this, tr("Title"), tr("This is a Dialog"), QMessageBox::Yes);

这里建议源代码中的所有要显示的字符串都用英文,然后在国际化时再翻译一个中文版的。因为如果在代码中使用中文字符串是要使用utf-8或GBK编码的,而QT内部采用的是Unicode编码,QT自带的lingiust翻译工具默认是Latin-1编码,这也就会造成我们生成的ts文件中读入的中文字符串会变成乱码。

二、在pro文件中添加

在pro文件中加入下面这一句,代表在pro文件的路径下的Language文件夹里生成用于语言翻译的ts文件,也可以设置你自己喜欢的路径:

TRANSLATIONS += Language/english.ts Language/chinese.ts

 三、生成ts文件

在QT Creator上面的菜单栏中找到:工具→外部→Qt语言家→更新翻译,点击后就会在我们刚才在pro文件中设置的路径下生成对应的ts文件。ts文件和XML文件类似,其中包括了我们代码中所有的用tr()括起来的字符串和ui中添加的控件中的文本信息。

四丶编辑翻译语言文件

生成ts文件后,我们要进行编译翻译。使用QT自带的linguist.exe工具可以很方便的进行翻译。这个工具在QT的安装目录下的版本目录下的MSVC目录下的bin目录里,这是我的目录:

打开工具后,把刚才生成的ts文件拖入工具中,所有要翻译的文本信息就全列出来了,一个一个翻译即可。

五、生成qm文件

在linguist中翻译完后点击保存,然后回到Qt Creator中,在刚才更新翻译的下面,有一个发布翻译,点击后,就会在ts文件的相同路径下生成对应的qm文件。

六、 在代码中加载qm文件,实现切换语言

首先,我们在工程中新建一个资源文件,然后把qm文件添加进去,方便加载语言文件的时候写路径。不知道怎么添加资源文件的可以去网上搜一下,这里就不赘述了。

添加好资源文件后,就是在代码中加载语言文件了,直接在main函数中添加,因为要在窗口初始化之前添加语言到翻译文件列表中

#include "Internationalization.h"
#include "Dlg_SelectLanguage.h"
#include <QApplication>
// 使用QTranslator类进行语言翻译
#include <QTranslator>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator* translator = new QTranslator();         // 创建QTranslator类对象

    // 初始化选择语言对话框,在主窗口初始化之前初始化语言
    Dlg_SelectLanguage dlg_SelectLanguage;
    if(dlg_SelectLanguage.exec() == QDialog::Accepted)
    {
        int index = dlg_SelectLanguage.GetCurrentIndex();
        switch (index) {
        case 0:
            translator->load(":/Language/chinese.qm");   // 加载语言文件
            break;
        case 1:
            translator->load(":/Language/english.qm");
            break;
        default:
            break;
        }
        a.installTranslator(translator);                 // 调用QApplication对象中的installTranslator方法将上面加载的语言文件添加到翻译文件列表中
    }

    // 初始化主窗口界面
    Internationalization w;
    w.show();

    return a.exec();
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值