QT 中英文翻译

第一章、中英文翻译简介

QTranslator类的对象包含一组从源语言到目标语言的翻译。QTranslator提供了在翻译文件中查找翻译的功能。翻译文件是使用Qt Linguist在这里插入图片描述
创建的。
QTranslator最常见的用途是:加载一个翻译文件,并使用QCoreApplication::installTranslator()安装它。

第二章、中英文翻译实战

本案例我们将创建一个演示案例如下图所示
在这里插入图片描述
通过Language按钮进行中英文切换

2.0 效果演示

请添加图片描述

2.1 生成*.ts文件

首先我们在工程文件中键入如下代码

TRANSLATIONS += xx.ts//xx可任意填写

如图所示
在这里插入图片描述
然后再构建中找到qmake,并且点击qmake
在这里插入图片描述
接着工具->外部->Qt语言家-更新翻译(lupdate),点击更新翻译如下图所示
在这里插入图片描述
概要信息中便会产生CN.ts(xx.ts)文件,如下图所示
在这里插入图片描述
与此同时我们也可以看到我们工程文件夹下生成了CN.ts(xx.ts)文件,如下图所示
在这里插入图片描述

2.2生成*.qm文件

我们打开Linguist软件,图标如下图
在这里插入图片描述然后通过打开文件,打开CN.ts(xx.ts),如图
在这里插入图片描述
在这里插入图片描述
1.选中需要翻译的源文
2.译文处填入译文
3.译文注释处填入译文
4.点击标记完成后会自动移动到下一个源文出处,如图所示在这里插入图片描述
翻译完成如下图所示,我们可以通过预览区看见我们所翻译的内容
在这里插入图片描述
文件->发布,即可生成CN.qm(.qm)文件如下图所示
在这里插入图片描述
此时我们可以看到我们的工程文件夹下多了一个CN.qm(
.qm)文件,如下图所示
在这里插入图片描述

2.3 加载翻译文件

在头文件中(*.h)添加如下代码

#include <QSettings>
#include <QDir>
const QString configPath=QDir::currentPath ()+"/config.ini";
const QString cf_language = "language_cn";
template<typename T>
inline void cfgWrite(QString key, T value)
{
    QSettings settings(configPath,QSettings::IniFormat);
    settings.setValue (key,QVariant(value));
}

inline QVariant cfgRead(QString key)
{
    QSettings settings(configPath,QSettings::IniFormat);
    return settings.value(key);
}

转到Language按钮的槽函数中添加如下代码

    bool cn = cfgRead (cf_language).toBool ();
    cfgWrite(cf_language,!cn);

在main函数中添加如下代码

QTranslator translator;
    if (translator.load(QLocale(), QLatin1String("CN.qm"), QLatin1String(), QDir::currentPath ()))
    {
        if(cfgRead (cf_language).toBool ())
        a.installTranslator(&translator);
    }

把这个Shadow build后的勾去掉,如图所示
在这里插入图片描述
然后运行,点击Language按钮
在这里插入图片描述
关闭软件,再次打开

在这里插入图片描述
可以看见已经切换成中文了

第三章、演示demo

演示demo我将放在以下仓库中,至此qt中英文切换完成
qt 中英文翻译演示demo

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐