Qt中多语言的实现

1. 将需要转换语言的部分加上标记;

(1)在这里如果用Widgets布局按照下面来操作
普通的情况下,直接使用Tr()方法包起来需要翻译的部分,
如果要翻译的内容存到变量里的话,要用Qt_TR_NOOP()宏做标记
拼接字符串时,用tr("第%1行").arg(1)
(2)如果用代码构建的界面,就是是qml布局用下面的标记方法
qsTr()包含起来

2. 生成ts文件;

进入项目配置文件(.pro)中,添加要生成的ts文件

执行下面的命令,生成ts文件;

3. 使用Linguist工具翻译

(1)可以通过“文件->打开”命令来打开多个ts文件
(2)在译文显示对话框中,填入要翻译的内容;
(3)将字符串前面的小对号点亮后,就完成一个字符的翻译了;
(4)最后注意保存;
选择 编辑->翻译文件设置,可以设置翻译目标语言;

4. 生成qm文件

在Qt Creator 中执行

下面的例子,这里我将生成的qm文件直接加载到资源文件中了,所以可以":/MultLanguage_cn.qm"这个位置来直接访问;
//下面是加载英语程序的一个例子

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QTranslator>
#include <QSettings>
#include <QDebug>
#include <windows.h>
#include <action.h>
#include <QQmlContext.h>
QTranslator *trans = NULL;
QString readSetting()
{
QString organization = "WWB-Qt";
QString appName = "testMultLanguage";
QSettings settings(organization,appName);
QString Language=settings.value("Language","CH").toString();
return Language;
}
void oper()
{
QSettings settings("WWB-Qt","testMultLanguage");
settings.setValue("Language","EN");
}
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
trans = new QTranslator();
QString curLanguage = readSetting();
if(curLanguage == "EN")
{
trans->load(":/MultLanguage_en.qm");
}
else {
trans->load(":/MultLanguage_cn.qm");
}
app.installTranslator(trans);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
// 第39行,将qm文件添加进资源文件,就可以使用相对路径加载qm文件;
posted @   郭好好GH  阅读(458)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示