Qt多国语言的实现与切换(国际化)_qt怎么实现多语言切换-程序员宅基地

技术标签: Qt知识点  

1、创建语言文件

  打开.pro文件,加入以下:

TRANSLATIONS+=cn.ts

  工具->外部->Qt语言家->更新翻译,将生成翻译文件cn.ts

2、编辑翻译文件

  启动Linguist(Qt语言家),打开cn.ts,然后进行编辑,主要是将源文对应的译文填写上,最后保存

3、部署翻译文件

  工具->外部->Qt语言家->部署翻译,将生成语言文件qm

4、加载翻译文件

QTranslator translator;
bool  b = false ;
b = translator.load( "cn.qm" );
a.installTranslator(&translator);

注:随时可以重复“2”~“3”步骤以便更新翻译

5、切换不同多国语言

void  MainWindow::Refresh()
{
     ui->listWidget->addItem(tr( "item1" ));
     ui->listWidget->addItem(tr( "item2" ));
     ui->listWidget->addItem(tr( "item3" ));
}
 
void  MainWindow::on_pushButton_clicked()
{
 
    QTranslator *translator = new QTranslator(qApp);
    bool b = false;
    b = translator->load(QString(":/res/%1.qm").arg("en"));
    qApp->installTranslator(translator);
     this ->Refresh();
}
 
void  MainWindow::on_pushButton_2_clicked()
{
 
    QTranslator *translator = new QTranslator(qApp);
    bool b = false;
    b = translator->load(QString(":/res/%1.qm").arg("cn"));
    qApp->installTranslator(translator);
     this ->Refresh();
}

在帮助文档中,关于 QTranslator::load有这样一句话。

The data is not copied. The caller must be able to guarantee that data will not be deleted or modifiled.

这段话明确的说明了,QTranslator在load以后,并没有把qm文件中的数据拷贝一份,而是在需要的时候去查询字符串。如果qm在这期间被删除或修改,对程序都是有影响的。扩展开来,QTranslator必须保证要一直有效,如果在函数中定义的局部变量,函数结束后就自动释放掉了,那么翻译工作就不能正常进行。所以建议在private中定义个成员变量 QTranslator* app_translator;来确保整个翻译工作的正确性。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/senkkes/article/details/50898551

智能推荐

enq: TX - row lock contention_tx-transaction (row lock contention)-程序员宅基地

文章浏览阅读918次。enq: TX - row lock contention_tx-transaction (row lock contention)

FCPX:快速时尚视频转场Stupid Raisins Fast Pop下载-程序员宅基地

文章浏览阅读2.1k次。今天小编带你了解一款 Stupid Raisins Fast Pop是一个fcpx效果插件,它允许您在Final Cut Pro,Motion,Premiere Pro和After Effects中使用。Fast Pop是快速,时尚的视频过渡,为您的视频项目增添了活力,在几秒钟内为您的视频添加专业的转换。欢迎需要的朋友前来下载体验!!FCPX插件:Stupid Raisins Fast Pop安装方法 (点击️上方链接看详细安装教程)需要搭配final cut pro x视频制作软件一起使用效_fast pop下载

psql: error: connection to server on socket “/opt/postgresgl/pgdata/.s.PGSQL.5432“ failed_psql: error: connection to server on socket "/var/-程序员宅基地

文章浏览阅读3.1k次。psql: error: connection to server on socket "/opt/postgresql/pgdata/.s.PGSQL.5432" failed: 没有那个文件或目录。PostgreSQL数据库psql连接报错connections on Unix domain socket “/opt/postgresgl/pgdata/.s.PGSQL.5432“?1.查看查看参数unix_socket_directories。重新postgreSQL服务,问题解决。_psql: error: connection to server on socket "/var/run/postgresql/.s.pgsql.54

树莓派3 ROS语音包开发之音频采集_树莓派收集声音-程序员宅基地

文章浏览阅读9.8k次。树莓派3 ROS语音包开发之音频采集谈到语音交互,简单步骤你我都能想到,无非就是以下几个步骤:1、语音采集 2、语音识别 3、语义理解 4、语音合成之前移植了ROS代码包,很多语音交互方面只有英文,对于中文识别来说,想要找到恰当的包比较困难,其中的难点接下来会一一来探究并找出相应的办法。该博客先不讨论后续内容,现在只着重介绍步骤一,即音频采集。音频采集首先要了解_树莓派收集声音

Noip DP 总结 1_noi dp-程序员宅基地

文章浏览阅读461次。对各位学NOI的大佬对于DP的总结的总结。———-DP数据范围:———1} 15,20 -> 状压/暴搜2} 30 -> 折半搜索-二分搜索3} 50 -> N^4 DP4} 100~200 -> Floyed,图论等5} 1000~2000 -> N^2 DP6} 1e5 -> ……可能不是DP7} 1e6_noi dp

JS数组中 reduce() 方法 数组对象去重_js使用reduce去重-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏8次。参考引用:数组里面对象去重的3种方法: https://blog.csdn.net/l284969634/article/details/91397332js数组去重的多种方法: https://blog.csdn.net/linglingzi001/article/details/107772411JS中reduce方法: https://blog.csdn.net/hope93/article/details/86528183Array.reduce()方法解析: https://blog.cs_js使用reduce去重

随便推点

C语言中32个关键字详解_ansi c32个关键字的意思-程序员宅基地

文章浏览阅读2.1w次,点赞147次,收藏1.1k次。标准C语言的32个关键字_ansi c32个关键字的意思

Windows程序设计第五版源代码---BEEPER2_vc程序设计 第5版-程序员宅基地

文章浏览阅读171次。源代码如下:#include <windows.h>#define ID_TIMER 1 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);VOID CALLBACK TimerProc(HWND, UINT, UINT, DWORD);int WINAPI WinMain(HINSTANCE hInstance..._vc程序设计 第5版

深度相机工作原理_深度相机原理-程序员宅基地

文章浏览阅读4.1k次。转自:https://blog.csdn.net/electech6/article/details/78707839结构光法:为解决双目匹配问题而生深度图效果:结构光vs.双目投射图案的编码方式 直接编码 ..._深度相机原理

斐讯 N1 降级、刷机及 Armbian 安装 [2019.7.23]_斐讯n1官方降级工具-程序员宅基地

文章浏览阅读1.4w次,点赞2次,收藏19次。最前最近捡垃圾不断,之前购买了斐讯遗产 K2P(真香,最近刷了 OpenWrt)、T1(刷了电视盒子)和蜗牛星际(刷了黑群晖),最近又捡了台斐讯 N1,主要用于做一些简单的爬虫和 Adguard Home 服务。其实原先有过一台树莓派 3B,但是 emmmm 吃灰了一年,然后二手卖了。虽然近期树莓派 4 发布了,性能有较大提升,但由于价格的原因,还是 N1 香。刷机过程由于已有的几篇文章有些内容..._斐讯n1官方降级工具

Linux服务器移动文件命令_linux移动文件命令-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏7次。Linux服务器移动文件命令_linux移动文件命令

123-程序员宅基地

文章浏览阅读163次。阵容:4冰川(狂战士4、背叛者1、绝命巫师2、占卜师3) 占4人口3战士(船长4+随便一个战士,有钱就买末日审判官4) 占2人口2术士甚至4术士(灵魂收割4、暗之灵5、不免预言家5) 占1\3人口2刺客(光羽刺客4、幽影刺客3)刺客是有冰川加攻速也很厉害 占2人口阵容核心就是狂战士,2星是基本,3星就无敌。配合暗之灵可以融化对面。曾经的骑士的抗性持续3秒,6骑3龙+暗之灵...