先上效果图:


然后说说注意项吧:

1、想实现Qt多语言动态切换,如果通过Qt语言家(Qt Linguist)实现的话(我这里也只说这种方式),最好用Qt Creator5.10版本及以上。不然,qml里面的字体是不支持动态翻译的,必须在加载qml之前就加载好翻译文件(*.qm)。或者说,你每次切换语言后,需要再重新加载一下qml界面。可以通过Loader加载方式实现。我这里用Qt Creator5.9.0和5.12.5版本测试过的。widget界面不影响。

2、如果用VS+QT方式。在VS里编译出来的也不支持qml界面的动态翻译,无关版本问题。这个时候也可以向上面说的,在每次切换语言后,再重新加载一下qml界面就可以了。我这里用VS2015和2017都测过的。widget界面不影响。

3、翻译文件(.ts)和发布文件(.qm)最好放别放在qrc里,放在可执行文件目录下即可。这样方便修改和维护。

4、需要翻译的文本需要用tr或qsTr标记。


再来说说步骤:

1、新建工程,拉个简单点的控件先试试水;
2、如果是用的Qt Creator,则需要在pro文件中添加,例如:

TRANSLATIONS += resources/tr_zh.ts \
resources/tr_en.ts

3、生成翻译文件 (.ts)
(1)如果是用的QC,就点击工具-》外部-》Qt语言家-》更新翻译

然后就会在你的工程文件路径下 resources文件夹中生成 tr_zh.ts 和 tr_en.ts 两个文件。
(2)如果用的VS,点击 Qt VS Tools-》Create New Translation File,

然后选择语言,修改文件名就可以了。翻译文件就自动生成到工程文件路径下了。

4、生成发布文件(
.qm)
(1)这里可以用notepad++打开翻译文件。然后做翻译修改。如:

<message><location filename="../MainWindow.cpp" line="15"/><source>QT动态翻译</source><translatorcomment></translatorcomment><translation type="unfinished"></translation>
</message>

改为

<message><location filename="../MainWindow.cpp" line="15"/><source>QT动态翻译</source><translatorcomment>QT dynamic translation</translatorcomment><translation type="unfinished">QT dynamic translation</translation>
</message>

修改完后,保存。然后在QC中点击工具-》外部-》Qt语言家-》发布翻译。就可以在相应文件夹下看到生成好的发布文件了。
(2)或者用Qt Linguist打开翻译文件。然后做翻译修改。修改完后,保存。点击文件-》发布,即可。

5、编写接口函数,便于语言包的动态切换。如:

void MainWindow::on_pushButton_clicked()
{m_bChangeToEn = !m_bChangeToEn;if(!qApp->removeTranslator(&m_Translator)){qDebug()<<"remove  error....";}if(m_bChangeToEn){if(m_Translator.load(":/resources/tr_en.qm")){qApp->installTranslator(&m_Translator);ui->retranslateUi(this);qDebug()<<"load  English  file succed";}else{qDebug()<<"load  English  file error";}}else{if(m_Translator.load(":/resources/tr_zh.qm")){qApp->installTranslator(&m_Translator);ui->retranslateUi(this);qDebug()<<"load  Chinese  file succed";}else{qDebug()<<"load  Chinese  file error";}}
}

||

||

Demo详见-》猛戳


参考:
https://blog.csdn.net/D759378563/article/details/79297971

https://blog.csdn.net/lwwl12/article/details/80485123?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

QT实现多语言动态切换相关推荐

  1. APP,实现多国语言动态切换

    网上一个辅助类,找不到原博主文章链接,这里就直接贴出辅助类代码(自己再优化了一下).公司项目APP要支持13种语言,如下: 1.工具类 import android.content.Context; ...

  2. Qt多语言实现和动态切换(国际化)

    Qt 界面实现多国语言的切换实例是本文要介绍的内容,一直认为Qt界面相对于还是很好实现的一种开发.多国语界面的实现,在MFC中是很别扭的.以前在作MFC时,实现多国语言的界面,只有把资源文件做成各个语 ...

  3. QT实现多国语言的动态切换

    摘要:本文论述了如何使用QT实现程序的多语系支持以及多语系的动态切换. 前沿 我们生活中用到的程序大多都是支持单一语言的,比如在中国我们用到的软件大多是汉语的,也有很少部分使用的是英语的,但是很少有软 ...

  4. 【大话QT之十四】QT实现多语言切换

    功能需求: 网盘客户端要能够实现多国语言的切换,第一版要支持中.英文的切换.在实现过程中感觉QT对多国语言的支持还是很不错的,制作多语言包很方便,切换的逻辑也很简单.下面就来看一下QT中如何制作多语言 ...

  5. QML程序实现动态切换多语言

    原文地址::https://zhuanlan.zhihu.com/p/40815590 Qt程序中实现多语言有Qt自己的一套机制,然而目前在5.9版本下该机制无法在程序运行期间动态切换语言.本文向大家 ...

  6. R语言plotly包可视化线图(line plot)、使用restyle参数自定义设置可视化结果中线条的颜色、使用按钮动态切换线条的颜色(change line color with button)

    R语言plotly包可视化线图(line plot).使用restyle参数自定义设置可视化结果中线条的颜色.使用按钮动态切换线条的颜色(change line color with button i ...

  7. Qt 多国语言国际化

    简述:Qt 提供了一种国际化方案,在程序使用过程中,不需要重启应用程序就可以实现语言的动态切换 1.实现语言国际化步骤 要实现语言国际化,需要执行以下步骤: A.  对用户可见的文本信息全部使用 tr ...

  8. C++ Builder运行时在FireMonkey里使用TLang动态切换界面语言

    C++ Builder的FireMonkey框架支持在运行时使用TLang动态切换界面的语言 // 以下Text将动态切换语言 Button1->Text = "Button" ...

  9. QML进阶--Loader实现组件的动态切换

    在QML学习和开发过程中,看到Loader的官方介绍之后,发现Loader就是用来动态加载一个qml或者component的容器. 有一个问题在我脑海里冒了出来:loader加载一个qml或者一个组件 ...

  10. QT 多国语言详细步骤

    在网上看了很多qt多国语言的实现,总感觉不够详细,因此写一篇记录下,希望对新手有用 在.Pro文档中加入需要国际化转化的语言 TRANSLATIONS += English.ts\ Chinese.t ...

最新文章

  1. GridView中超链接HyperLinkField标签的使用方法
  2. Caffe学习系列(11):图像数据转换成db(leveldb/lmdb)文件
  3. iOS之深入探究CADisplayLink和NSTimer的对比和内存溢出问题
  4. Linux系统:centos7下搭建Nginx和FastDFS文件管理中间件
  5. easyui学习笔记一:主要结构
  6. Koa2 洋葱模型 —— compose 串联中间件的四种实现
  7. 会贤固定资产管理软件方案
  8. 2020 中兴java面试笔试题 (含面试题解析)
  9. 字体:等宽字体与比例字体 - Monospaced font Proportional font
  10. [转]Windows服务“允许服务与桌面交互”的使用和修改方法
  11. 三菱FX5U系列PLC内置高速计数器的使用方法示例
  12. Linpack测试环境的搭建
  13. 高防服务器防御中“清洗”是什么意思
  14. 新一代图片编解码技术在淘宝的应用及落地
  15. JavaScript 获取一元素的所有子元素
  16. 数据库读写分离(单主单从+双主双从)
  17. A. Alternative Architecture
  18. hpy计算机维护系统,HPY计算机维护系统2013(W8PE+03PE+DOS,ISO量产版)
  19. 第161天学习打卡(谷粒商城 3 安装powerDesigner软件 下载nodejs)
  20. COBOL语言初级教程(1)--COBOL简介

热门文章

  1. 曼昆《经济学原理微观》读书笔记
  2. [转载]GRADS画图
  3. 大学计算机系最努力的同学都是如何学习的?
  4. SSH 只能用于远程 Linux 主机?那说明你见识太小了!
  5. CenterOs操作
  6. 人人商城删除后台菜单“小程序”
  7. 为PDF批量添加书签
  8. tftpd64-SE使用
  9. 正好股票开户指数大跌分解比较严重
  10. Go语言学习之go环境搭建