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文件;
分类:
Qt/QML
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用