Qt 5.x 中文翻译缺失的一种解决办法

众所周知,Qt进入5.x时代后,Qt自带的翻译还停留在4.x时代,貌似中文的翻译文件完全没变,用MD5值对比都是一样的,导致加载了Qt的翻译后,某些自带控件上的文字仍然是英文。没办法,自食其力,丰衣足食,自己翻译吧。

为了补全(当然不是全部,只翻译自己用到了的)那些翻译,可以在代码中加入如下代码

static const char *Translation[] =
{
  QT_TRANSLATE_NOOP("QPlatformTheme", "OK"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Save"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Save All"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Open"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "&Yes"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Yes to &All"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "&No"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "N&o to All"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Abort"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Retry"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Ignore"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Close"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Cancel"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Discard"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Help"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Apply"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Reset"),
  QT_TRANSLATE_NOOP("QPlatformTheme", "Restore Defaults"),

  QT_TRANSLATE_NOOP("QColorDialog", "Pick Screen Color")
};

以上例子可以翻译QMessageBox和QDialogButtonBox之类的按钮文本(最后一个如你所见是QColorDialog中的)。加入以上代码后就如平常为自己的程序翻译那样操作即可。

QT_TRANSLATE_NOOP

例子中用到的这个宏是Qt自带的用来标记动态翻译文本的,第一个参数是类名,第二个翻译的文本,详细请自行查阅Qt文档。

需要注意的一点是,Qt的缺失的翻译有时并不是直接出现的我们所见的控件类里,如之前的例子,这些文本出现在不止一个类中,但用的都是完全相同的文本,这时就要看源码(好麻烦),找出文本的归属类。

时间: 2024-10-17 03:25:51

Qt 5.x 中文翻译缺失的一种解决办法的相关文章

FlowPaper中文PDF乱码的一种解决办法

[关键词]FlowPaper.PDF.js.乱码 [结论]先给出解决办法,后面的大段内容只是为了记录当时的排查过程. PDF.js有全局变量对象PDFJS(1.8以上版本在pdf.js最后,1.5.x的版本没找到,在代码取值地方设置也可,下有说明),可以设置字体资源路径和方式(关于字体资源的说明可看此贴https://stackoverflow.com/questions/32764773/what-is-a-pdf-bcmap-file),如果采用默认不设置就可能会出现找不到资源文件乱码的情况

MYSQL导入中文数据乱码的四种解决办法

方法一:通过增加参数 --default-character-set = utf8 解决乱码问题 方法一:通过增加参数 --default-character-set = utf8 解决乱码问题 mysql -u root -p password < path_to_import_file --default-character-set = utf8 方法二:在命令行导入乱码解决 use database_name; set names utf8; (或其他需要的编码) source examp

spring mvc ajax中文乱码的几种解决办法

使用spingmvc,在JS里面通过ajax发送请求,并返回json格式的数据,从数据库拿出来是正确的中文格式,展示在页面上就是错误的 ,研究了一下,有几种解决办法. 方法一: 在@RequestMapping里面加入produces = "text/html;charset=UTF-8" Java代码 @RequestMapping(value = "/configrole", method = RequestMethod.GET, produces = &quo

Asp.Net 使用System.Data.OracleClient 连接oralce中文乱码以及sql含中文别名出现ORA-00911:Invalid character解决办法

不需要去修改oracle以及client的字符集,只需要在web.config中连接字符串上加上 Unicode=True 问题解决. <add key="connstring" value="Data Source=orcl;user id=username;password=password;Unicode=True"/> <add name="ConnectionString" connectionString="

eclipse中的js文件出现中文乱码的三种解决办法

这里记录一下Eclipse中打开/编辑JS文件,出现中文乱码的解决办法. 出现中文乱码的原因 在Eclipse中,js文件的默认编码是ISO-8859-1,这种编码和中文不兼容,导致了解码失败,继而出现了中文乱码. 解决中文乱码的方法 解决的方法就是将js文件的编码修改为对应的中文编码就可以了. 1.依次点击Windows->Preferences->General->Content Types->Text->JavaScript Source File,将编码格式改为UTF

libssl.so.10缺失库文件的解决办法

在RHEL6.5中对openssl进行了升级,如果老版本是OpenSSL 1.0.1e-fips,那直接安装最新的openssl-1.0.1g-1.x86_64.rpm就行了,但是如果老版本低于1.0.1e,那直接安装1.0.1g版本就会出缺失libssl.so.10和libcrypto.so.10库文件的问题,在启动某服务或者直接yum安装等命令都会出现下面问题:而且会造成一个最严重的问题就是SSH连接不上了···问题: [[email protected] test]# yum instal

Python 中添加中文注释以及中文输出解释器报错的解决办法

终于知道如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明.把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明. 在代码的第一行 或者 第二行添加指定文件的编码类型 #-*- coding:utf-8 -*-           //添加代码类型1 #coding=utf-8         //添加代码类型2 上面两种方法随便哪一种都可以,别忘记了前面的 # . 这样代码中就可以添加中文注释 和 中文输出了. 另外提醒一句:vim 查看文件的编码类型是在命令模

SQL Server 插入含有中文字符串出现乱码现象的解决办法

ELECT  COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')       --查询SQLServer编码格式的语句 下面是查询结果对照: 936 简体中文GBK 950 繁体中文BIG5 437 美国/加拿大英语 932 日文 949 韩文 866 俄文 65001 unicode UFT-8 插入一条带中文字符串的数据, 我们可以通过修改数据库的Collation 来修改数据库的编码方式: 点击确定就可以啦! 我们

cmd模式下,mysql输入和显示中文乱码或者不显示的解决办法

查资料说明cmd客户端的字符集是gb2312,结果集也要设置为gb2312. 使用语句 set character_set_client=gb2312; set character_set_results=gb2312; 就可以解决问题.