Qt学习笔记之国际化
国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),一个应用程序的国际化就是使该应用程序可以让其他国家的用户使用的过程。
1. 相关的Qt类和API
这些类支持Qt应用程序的国际化。
根据本地整理算法比较字符串 |
|
可用于加速字符串整理 |
|
在数字及其各种语言的字符串表示形式之间转换 |
|
文本编码之间的转换,详见《Qt学习笔记之QTextCodec》 |
|
基于状态的解码器 |
|
基于状态的编码器 |
|
国际化支持文本输出,详见《Qt学习笔记之QTranslator》 |
2. 语言和写作系统
在某些情况下,国际化很简单,例如,使澳大利亚或英国用户可以访问美国应用程序,则可能需要进行一些拼写更正。但是,要使日本用户可以使用美国应用程序,或者德国用户可以使用韩国应用程序,则不仅需要软件以不同的语言运行,而且还需要使用不同的输入技术,字符编码和表示约定。
Qt试图使国际化对开发人员来说尽可能的轻松。Qt中的所有输入控件和文本绘制方法都为所有受支持的语言提供内置支持。内置的字体引擎能够正确,吸引人地同时渲染包含来自各种不同书写系统的字符的文本。
Qt支持当今使用的大多数语言,尤其是:
- 所有东亚语言(中文,日文和韩文)
- 所有西方语言(使用拉丁文字)
- 阿拉伯
- 西里尔语言(俄语,乌克兰语等)
- 希腊语
- 希伯来语
- 泰语和老挝语
- Unicode 6.2中所有不需要特殊处理的脚本
- 孟加拉
- 缅甸语(缅甸)
- 梵文
- 古吉拉特语
- 古尔穆基
- 卡纳达语
- 高棉语
- 马拉雅拉姆语
- 泰米尔语
- 泰卢固语
- 藏
支持上面的列表,只要系统具有用于渲染这些书写系统的字体,该列表就可以在所有平台上工作。
在具有FontConfig(客户端字体支持)的Windows,Linux和Unix上,还支持以下语言:
- 迪维(塔纳)
- 叙利亚语
- 恩科
在macOS上,还支持以下语言:
- 奥里亚
- 僧伽罗语
3. 使用Qt Linguist翻译应用程序
3.1 新建一个项目,myGui
3.2 添加翻译源
在myGui.pro,添加在工程的pro文件中,添加一行
TRANSLATIONS = zh.ts
3.3 添加源文件
- 增加globallanguage类
- 在mainwindow中增加控件
- main中安装translate
3.4 使用lupdate生成.ts文件
3.5 翻译及发布翻译文件
参考资料:
1. http://blog.****.net/liang19890820/article/details/50276673