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