Qt 国际化 (中英文切换)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kidults/article/details/87969380
  1. 在工程中,新建一个资源文件,命名为translator
    在这里插入图片描述
    在这里插入图片描述

资源文件在工程目录中的结构
在这里插入图片描述
2. 修改pro
在pro文件中添加


TRANSLATIONS  +=  resources/tr_zh.ts  \
        resources/tr_en.ts

3.代码中所有需要翻译的字符串用tr("")包含 eg: tr(“中文”)

4.如下图,点击更新翻译(lupdate)
在这里插入图片描述
此时会在工程目录新建一个resources文件夹 ,并在其中生成了 tr_en.ts 和 tr_zh.ts 两个文件
5. 打开tr_zh.ts (翻译成中文)

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
    <name>Form</name>
    <message>
        <location filename="../form.cpp" line="10"/>
        <source>中文</source>
        <translation type="unfinished"></translation>
    </message>
</context>
</TS>

修改  <translation type="unfinished"></translation>   为    
  <translation type="unfinished">中文</translation>
  1. 打开tr_en.ts(翻译成英文)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
    <name>Form</name>
    <message>
        <location filename="../form.cpp" line="10"/>
        <source>中文</source>
        <translation type="unfinished"></translation>
    </message>
</context>
</TS>
修改
<source>中文</source>
<translation type="unfinished"></translation>       为

<source>中文</source>
<translation type="unfinished">Chinese</translation>

除了上述手动修改,还可以使用Qt Linguist 工具进行编辑

  1. 如下图,点击发布翻译(lrelease)
    在这里插入图片描述
    会在resources中 生成 tr_en.qm 和tr_zh.qm两个文件
  2. 将qm文件添加到工程中
    在这里插入图片描述
  3. 切换
#include <QTranslator>
private:
    QTranslator translator;
 if(!qApp->removeTranslator(&translator)){
        qDebug()<<"remove  error....";
    }

    if( 中文显示 ){
        if(translator.load(":/resources/tr_zh.qm")){
            qApp->installTranslator(&translator);
        }else{
            qDebug()<<"load  Chinese file error";
        }
    }else  if(英文显示){
        if(translator.load(":/resources/tr_en.qm")){
            qApp->installTranslator(&translator);
        }else{
            qDebug()<<"load  English  file  error";
        }
    }

**

注:翻译文件加载的位置必须在界面实例化之前完成,否则是没有效果的

**

猜你喜欢

转载自blog.csdn.net/kidults/article/details/87969380
今日推荐