qt国际化步骤

一.代码编写注意:

将需要翻译的字符串用 QObject::tr("Hello world!").  

或者QApplication::translate("Dialog", "Hello world!", 0); 包含

例如:

第一种:

lab = new QLabel(tr("trans_text","text"), this);

tr参数第一个表示翻译字符(标识),第二个为翻译提示

第二种(一般为UI编辑器方式):

pushButton->setText(QApplication::translate("Widget", "click", 0));

二.生成翻译文件

1.在pro文件中加入关键字,例如:

TRANSLATIONS += XXX/en.ts \XXX/zh.ts

表示要在XXX目录生成相应的翻译文件。

2.保存项目后运行:

菜单栏->工具->外部->Qt语言家->lupdate

相当于执行了lupdate *.pro 

会自动在目录生成两个文件:en.ts  zh.ts 

3.运行linguist工具加载en.ts  zh.ts两个文件并分别进行相应的翻译。

每一个翻译完了按ctrl+ENTER确认下即可。

4.翻译完成后运行:

菜单栏->工具->外部->Qt语言家->release

相当于执行了 lrelease *.pro

会自动在相应目录生成两个文件:en.qm  zh.qm

 

三、语言切换

1.在程序启动时候已经确定,不需要动态切换

//可定义成静态

QTranslator translator;

translator.load(Global::rootPath+Global::langPath+"zh.qm");

qApp->installTranslator(&translator);  //qApp是全局的变量

注意上面语句一定要在页面实例化之前。

2.动态语言切换:每个类重写LanguageChange事件

void XXX::changeEvent(QEvent *e)

{

if(e->type()==QEvent::LanguageChange){  //如果是语言事件

label->setText(tr("trans_we"));  //定义所有需要自动改变的部件

}else{

QWidget::changeEvent(e);

}

}

相应的触发槽中重新加载语言文件即可,会自动触发所有对象的changeEvent事件

translator->load("XXX/zh.qm");

qApp->installTranslator(translator);  //qApp是全局的变量

戳原文:若这50道题过了 嵌入式开发学习已经赢在跑线上了!

【近期文章推荐】

1.Linux/Android/Java/PHP/简历模板等资料免费领

2.年薪20万程序员曾经做过的C语言试题,你都会吗

3.应届生一天收获4份offer,只因他做到了这4点

4.一周48家招聘单位要人 开发人员需求井喷

5.华为阿里工资高,看看人家的下班时间再抱怨

6.嵌入式9月高薪就业榜6翻天 月薪过万比率超过50%

7.华为校招15道C语言面试题分享

回复“0-71”任一数字,即可查看往期文章精选哦

长按二维码3秒

与10万程序高手做朋友

每天干货享不停

(记得识别二维码哟) 

 qt国际化步骤

或微信搜索华清远见,即可关注我们

免费讲座 | 干货分享 | 程序员生活 | 就业招聘

高端IT就业培训专家

m.embedu.org