QT使用多国语言及linguist工具使用

在QT代码中使用不同语言.qm文件就能让程序转换成相应的语言。但必须有相应语言的字库支持才能转换成功,否则会出现乱码或空格。字体库有各种格式,需要放在/usr/lib/fonts目录下才行,下图圈出来的是我使用的中文字体库与英文字体库。

QT使用多国语言及linguist工具使用_第1张图片

支持的字体库有了之后,就开始使用.qm文件来进行多国语言切换了。在代码中.H需要添加头文件,

#include 
#include 

QTranslator *translator  =nullptr;

.CPP文件通过load(".qm文件路径") 的方式来加载.qm文件。我代码中界面显示都是英文写的,这里运行中文的.qm就会切换成中文。哪些会切换成中文,就依据代码中的tr(),例如你要在界面建立一个Qlabel,来显示“hello word!”,一般会lable->setText(“hello word!”);但如果需要转换则lable->setText(tr(hello word!));这样才会转换。

 translator = new QTranslator(this);
    if(nullptr !=  translator){
        QString qmFilename;
        QString runPath = QCoreApplication::applicationDirPath();
        qmFilename =runPath + "/Chinese.qm";
        if (translator->load(qmFilename)){
            qApp->installTranslator(translator);
        }
    }

既然要用.qm文件就要生成.qm文件由.ts文件生成,需要在.pro文档里面加入TRANSLATIONS += Chinese.ts代码:如图所示,

QT使用多国语言及linguist工具使用_第2张图片

TRANSLATIONS += Chinese.ts\
                English.ts\

QT工具-->外部->QT语言家->更新翻译(lupdata)就能够在项目目录下生成Chinese.ts与English.ts文件如图所示。

QT使用多国语言及linguist工具使用_第3张图片

QT使用多国语言及linguist工具使用_第4张图片QT使用多国语言及linguist工具使用_第5张图片

ts.文件内容是XML格式的,两个文档都是你代码中写的那种语言(我这里都是英文),我们需要把Chinese.ts翻译成中文之后(翻译需要用到QT的linguist工具),QT工具-->外部->QT语言家->发布翻译(lrelease)就能够在项目目录下通过Chinese.ts与English.ts文件生成Chinese.qm与English.qm。

QT使用多国语言及linguist工具使用_第6张图片QT使用多国语言及linguist工具使用_第7张图片QT使用多国语言及linguist工具使用_第8张图片

在软件中只要你在代码中加了tr()在这里都会显示出来,你可以改成对应的汉字,我这里把“SIM”翻译成“你好”,翻译之后打勾✔就可以了,然后把你所有想改的都改完保存就可以了,就可以进行发布翻译(lrelease)操作了。有时候打开软件没有那么多视图,可以通过下图方式打开多个工具栏。

QT使用多国语言及linguist工具使用_第9张图片

现在开始,QT工具-->外部->QT语言家->发布翻译(lrelease)通过Chinese.ts与English.ts文件生成Chinese.qm与English.qm。如图:

QT使用多国语言及linguist工具使用_第10张图片QT使用多国语言及linguist工具使用_第11张图片QT使用多国语言及linguist工具使用_第12张图片

这里就可以用两个.qm文件了,一定要在翻译了ts文档之后再发布翻译,这样翻译的才有效。包括其他语言翻译同理。

你可能感兴趣的:(QT,技术笔记)