文章目录

  • 前言
    • 项目效果
  • 一、生成ts文件
  • 二、生成qm文件
  • 三、qm文件使用/代码展示
  • 总结

前言

在使用Qt进行项目的开发,国际化的需求还是比较常见的,这里对Qt中国际化的实现进行总结,并结合相应的示例,以便大家学习,如有错误之处,欢迎大家批评指正。

项目效果


提示:以下是本篇文章正文内容,下面案例可供参考

一、生成ts文件

1.这里以我的测试项目为例,新建一个工程后,点击项目的pro文件,添加如下代码并保存

TRANSLATIONS += lang_Chinese.ts\lang_English.ts\lang_Russian.ts

2.依次点击工具–>外部–>Qt语言家–>更新翻译(lupdate)

3.这时候可以看到项目的pro文件同级目录下有生成对应的ts文件

二、生成qm文件

1.找到你当前项目相同编译环境的语言家(linguist.exe),双击打开

2.将之前生成的ts文件一起选中,拖拽到linguist运行界面上,会依次出现以下界面,对各界面进行相应的修改

3.依次点击ok后出现如下界面,这里进行各国语言的翻译

4.当所有的翻译源完成后,进行保存,再点击文件–>全部发布

5.这时候可以看到项目的pro文件同级目录下有生成对应的qm文件

三、qm文件使用/代码展示

这里将实现选择不同语言时,通过点击按钮修改界面翻译源,完整代码如下
1.widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTranslator>
#include <QDir>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pb_modify_clicked();   //ui界面点击该按钮,右键转到槽自动生成private:Ui::Widget *ui;
};
#endif // WIDGET_H

2.widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pb_modify_clicked()
{//记录下这几种获取路径常用的方法,大家感兴趣可以去掉屏蔽查看打印结果QString applicationDirPath = QCoreApplication::applicationDirPath();   //程序所在路径//QString applicationFilePath = qApp->applicationFilePath();             //程序的完整路径//QString currentPath = QDir::currentPath();                             //当前工作目录//qDebug()<<"applicationDirPath:"<<applicationDirPath<<"   applicationFilePath:"//        <<applicationFilePath<<"   currentPath:"<<currentPath;//对应的qm文件名称//lang_Chinese.qm   lang_English.qm   lang_Russian.qmQTranslator myLanguage;if(ui->cb_language->currentIndex() == 0){//注意路径,这里需要将qm文件放置程序所在路径下//myLanguage.load(applicationDirPath + "/lang_Chinese.qm");   //对应qm文件路径//建议使用资源文件的方式,这样在发布程序时可以防止文件丢失myLanguage.load(":/lang_Chinese.qm");}else if(ui->cb_language->currentIndex() == 1){//myLanguage.load(applicationDirPath + "/lang_English.qm");myLanguage.load(":/lang_English.qm");}else if(ui->cb_language->currentIndex() == 2){//myLanguage.load(applicationDirPath + "/lang_Russian.qm");myLanguage.load(":/lang_Russian.qm");}qApp->installTranslator(&myLanguage);this->ui->retranslateUi(this);
}

3.widget.ui

总结

本文讲述的Qt中使用语言家(linguist)来实现国际化的功能,文中例程也比较简单,实际开发工作中往往会在代码中进行一些控件的文本赋值,这个时候就要考虑到使用tr()函数来对那些文本进行处理,这样才能够让语言家识别到需要修改的文本,当需要更新翻译的时候,重复上述生成ts及qm文件的操作就行了。使用Qt语言家(linguist)生成qm文件的方法都是如文中的一样,实际进行操作下就可以掌握了。


hello:
共同学习,共同进步,如果还有相关问题,可在评论区留言进行讨论。

参考博客:
QT ——添加多国语言
Qt 多国语言详细步骤

文中提到的添加资源文件,可以参考这篇博客:
qt添加资源文件

Qt使用语言家进行国际化,实现多国语言切换相关推荐

  1. android多国语言翻译包命名,android多国语言翻译工具,一键生成28国家翻译6666翻车了...

    最近把软件发到google play苦于多国语言,手动翻译数量太多太蛋疼,因而用百度翻译api进行多国语言翻译.java 很少说直接上代码:json ""; api 匹配的是app ...

  2. php ci 国际化,CI 多国语言

    需求 默认访问与浏览器相同语言的页面 使用便于 SEO 的链接形式 sample.com/ - 默认简体中文 sample.com/sc/ - 简体中文 sample.com/tc/ - 繁体中文 s ...

  3. ASP.NET全球化与本地化 c#多国语言的支持 (项目支持多国语言的开发)

    ASP.NET 2.0及以上的开发平台,为全球化本地化应用程序提供了工具,而且实现起来非常简单.以下内容是使用c#,按照帮助一步步做的,将为初学者提供详细的实现步骤. 一 几个必要概念 (一) 支持全 ...

  4. WIN7 英文 语言包(KB972813)/多国语言包下载(转)

    一般来说英文的系统都要比中文的系统运行起来反应快,我想把这个系统的语言更改为英文.可惜的是专业版的updata不提供语言包升级,因为除了旗舰版提供语言包升级外,别的都是不可以在线升级.现在是英文系统找 ...

  5. qt支持的html5,用 Qt 5 中实现多国语言支持

    Qt5 实现多国语言 引言 目的:自用/笔记 时间:2018-02-13 01:13 平台: Windows 7 项目:将英语界面添加德语和土耳其语翻译 步骤 使用默认语言写出整个工程,这里使用英语作 ...

  6. OEA 中的多国语言实现

    本篇博客主要描述在 OEA 框架中的多国语言框架的原理及应用. 多国语言常见实现及原理分析 管理软件平台,一般来说,都应该支持多国语言,以支持应用程序走向国际化.OEA 最近也提供了多国语言框架,它可 ...

  7. wordpress自动翻译多国语言插件

    什么是wordpress自动翻译,wordpress自动翻译支持WordPress网站发布的文章多语种翻译,wordpress自动翻译多国语言插件支持中英文翻译,互译和翻译伪原创,对接多个谷歌翻译等a ...

  8. Android多国语言文件夹命名

    Android多国语言文件夹命名 android多国语言文件夹文件汇总如下: 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-zh-rH ...

  9. c罗讲什么语言教学,伟大如C罗,高情商+4国语言天赋,你还有什么理由不努力?...

    先学习段西语: C罗在北京:Está CR7 de gira en Beijing,China 7月19日,C罗出现在了北京,开启了为期两天的2018中国行.首先与大家一起回看一下,C罗首日的中国行行 ...

  10. Qt 多国语言国际化

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

最新文章

  1. ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
  2. AngularJS自定义表单验证
  3. java 编译开关_java – 字符串是关于开关的数字类型,并始终编译为lookupswitch?
  4. 一步步学习汇编系列(7)
  5. 使用Bootstrap开发网站首页
  6. jQuery的datatable的destroy属性,和$(#test).dataTable().fnDestroy();区别,两者的区别
  7. python 切片_零基础学python_11_列表(切片+遍历切片+复制)
  8. input默认提示取消
  9. linux c select函数返回值,linux c中select使用技巧
  10. 前端向后端传参报415_ajax往后台传json格式数据报415错误
  11. iPad如何访问共享文件夹
  12. pycharm txt编辑器制表符与代码中\t不匹配
  13. 基于C的VAD实现一
  14. 安卓毕业设计选题基于Uniapp+SSM实现的智能课堂管理APP在线学习网
  15. 学习历程——词法分析器
  16. 游戏中动态设置文字描边颜色
  17. ae制h5文字动画_html5酷炫的文字打字动画特效
  18. 定义一个名为Cylinder类表示圆柱,它继承Circle类
  19. 牛客第八场_E-Enigmatic Partition(神仙差分)
  20. 常见snapper.sql脚本使用方法

热门文章

  1. 网课答题查询助手 内置多个接口
  2. java判断浏览器杂项_杂 项 - HelloJava菜鸟社区
  3. 【AI视野·今日CV 计算机视觉论文速览 第224期】Tue, 22 Jun 2021
  4. php 字符串大写转小写转大写,字符串大小写批量互相转换 - 在线工具
  5. sony android mp3播放器,劲能小钢炮!Sony ZX505 播放器动耳听:云音乐也HiFi
  6. 人人商城小程序getUserProfile登录接口升级
  7. linux安装rz命令
  8. java无头浏览器_Java + Selenium 无头浏览器模式
  9. HTML页面基本结构代码,网页基本代码结构
  10. 大漠插件注册使用方法教程