当前位置: 首页 > news >正文

多语言Qt Linguist

Linguist

  • 步骤:
  • 主程序中添加注册表信息
  • action添加语言翻译

步骤:

  1. 在程序设计阶段,代码中所有用户可见的字符串都需要使用 tr() 函数进行封装,以便 Qt 可以提取这些字符串用于生成翻译资源文件。
    2.在项目文件中加入,TRANSLATIONS =samp16_1_cn.ts\
    samp16_1_en.ts
    (多行文件目录用\号隔开,换行)
  2. 在项目配置文件(.pro 文件)中设置需要导出的翻译文件(.ts 文件)名称,并使用 lupdate 工具扫描项目文件中需要翻译的字符串,生成翻译文件。
  3. 使用 Qt 的 Linguist 程序打开生成的翻译文件,将程序中的字符串翻译为需要的语言,例如将中文字符串翻译为英文。
  4. 使用 lrelease 工具编译翻译好的翻译文件,生成 .qm 文件,文件放入项目中。
  5. 在应用程序中使用 QTranslator 调用不同的 .qm 文件来实现不同的语言界面。

主程序中添加注册表信息

#include    <QTranslator>
#include    <QSettings>
QTranslator *trans=NULL;
QString readSetting();
int main(int argc, char *argv[])
{QApplication app(argc, argv);trans=new QTranslator;QString curLang=readSetting(); //读取语言设置if (curLang=="EN")trans->load("samp16_1_en.qm");elsetrans->load("samp16_1_cn.qm");app.installTranslator(trans);MainWindow w;w.show();return app.exec();
}QString readSetting()
{//从注册表读取上次设置的语言QString organization="WWB-Qt";//用于注册表,QString appName="samp16_1"; //HKEY_CURRENT_USER/WWB-Qt/amp13_1QSettings  settings(organization,appName);//创建QString Language=settings.value("Language","EN").toString();//读取 saved键的值return  Language;
}

action添加语言翻译

void MainWindow::on_actLang_CN_triggered()
{//中文界面qApp->removeTranslator(trans);delete trans;trans=new QTranslator;trans->load("samp16_1_cn.qm");qApp->installTranslator(trans);ui->retranslateUi(this);QSettings   settings("WWB-Qt","samp16_1"); //注册表键组settings.setValue("Language","CN"); //界面语言,汉语
}void MainWindow::on_actLang_EN_triggered()
{//英文界面qApp->removeTranslator(trans);delete trans;trans=new QTranslator;trans->load("samp16_1_en.qm");qApp->installTranslator(trans);ui->retranslateUi(this);QSettings   settings("WWB-Qt","samp16_1"); //注册表键组settings.setValue("Language","EN"); //界面语言,英语
}
http://www.xdnf.cn/news/1466101.html

相关文章:

  • 职场礼仪实训室:健康管理专业人才培养的核心支柱与创新实践
  • Springboot实现国际化(MessageSource)
  • AI Compass前沿速览:Kimi K2、InfinityHuman-AI数字人、3D-AI桌面伴侣、叠叠社–AI虚拟陪伴
  • 查询语言的进化:SQL之后,为什么是GQL?数据世界正在改变
  • 生态 | 华院计算与深至科技达成战略合作,携手推动AI+医学影像算法升级迭代
  • 代码随想录70期day3
  • 算法(keep learning)
  • 外包干了3年,技术退步太明显了。。。。。
  • 计算机网络1 第一章 概述——以寄邮件比喻整个流程
  • threeJS 实现开花的效果
  • 概率论第三讲——多维随机变量及其分布
  • 要搞清楚你为什么上班
  • 大型语言模型SEO(LLM SEO)完全手册:驾驭搜索新范式
  • 深入剖析 ThreadLocal 及其生态系统:从基础用法到源码实现,从设计思想到工程实践
  • Android14 init启动Zygote详解
  • 必知!机器人的分类与应用:RPA、人形与工业机器人
  • 大数据毕业设计选题推荐-基于大数据的高级大豆农业数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • solidity函数篇
  • 5分钟征服Linux:20个神级命令+系统架构解密,让命令行恐惧症瞬间治愈!
  • 智能风险评估与欺诈检测系统
  • 普通键盘在MacOS上如何使用快捷键
  • 分布式常见面试题整理
  • k8s 部署 redis
  • springboot redis 缓存入门与实战
  • [bat-cli] 输出处理 | `OutputType` 和 `OutputHandle`
  • 基于华为云平台的STM32F103C8T6工业生产线温湿度监控系统
  • 深度学习书籍推荐
  • LangChain: Models, Prompts 模型和提示词
  • UE4 Mac构建编译报错 no member named “disjunction” in namespace “std”
  • 企业为何仍困在“数据孤岛”?——从iPaaS重构信息流的实践路径