VS中使用QT,多国语言翻译问题
来源:互联网 发布:淘宝店铺导航条背景色 编辑:程序博客网 时间:2024/05/01 21:05
VS版本:VS2010
Qt版本:Qt5.5.1
例 子:英译汉
以下介绍是我站在巨人们的肩膀上,并结合自己在工作中所遇到的问题作出的总结。
在VS中使用Qt编程,VS是不支持中文格式的,所以遇到了语言翻译的问题。例如,一个按钮的名字你是在UI界面上使用中文命名的,现在你要通过代码将该按钮的名字用另一个名字替换,pushButton->setText(“按钮”),这样是不可行的,显示出来的是乱码。这就需要用Qt语言家来翻译文本信息。
翻译的过程主要分为以下三步:
1、lupdate:提取待翻译元素,生成.ts中间文件。
选中.ts文件->右键->lupdate;
2、写翻译内容。
写翻译内容的方法有两种,任选其一即可
① 将.ts文件中所有提取出来的待翻译元素进行翻译。
双击打开.ts文件->找到待翻译元素->在translation标签中填写翻译内容->保存;
② 打开Launch Linguist进行翻译。
Qt5 -> Launch Linguist -> 文件 -> 打开.ts文件 -> 找到待翻译元素进行翻译 -> 保存;
3、lrelease:将翻译好的文件生成qm文件。
选中.ts文件->右键->lrelease;
新建翻译文件
如果当前项目没有翻译文件,需要新增翻译文件则新建.ts文件。
工程右键 -> Create New Translation File -> 英译汉如下图
选择目标语言,这里是英译汉,所以选择中文
点击OK,.ts文件就生成了
选中.ts文件->右键->打开方式,设置默认打开方式为该项
文件打开之后是这样的
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE TS><TS version="2.1" language="zh_CN"><context> <name>Human</name> <message> <location filename="human.ui" line="14"/> <source>Human</source> <translation type="unfinished"></translation> </message> <message> <location filename="human.cpp" line="10"/> <source>man</source> <translation type="unfinished"></translation> </message> <message> <location filename="human.cpp" line="14"/> <source>woman</source> <translation type="unfinished"></translation> </message></context></TS>
在translation标签项中填写翻译,保存
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE TS><TS version="2.1" language="zh_CN"><context> <name>Human</name> <message> <location filename="human.ui" line="14"/> <source>Human</source> <translation type="unfinished">人类</translation> </message> <message> <location filename="human.cpp" line="10"/> <source>man</source> <translation type="unfinished">男人</translation> </message> <message> <location filename="human.cpp" line="14"/> <source>woman</source> <translation type="unfinished">女人</translation> </message></context></TS>
选中.ts文件->右键->lrelease,这样就生成了.qm文件
下面在main.cpp中为程序安装翻译文件
#include "test.h"#include <QtWidgets/QApplication>#include <QTranslator>int main(int argc, char *argv[]){ QApplication a(argc, argv); QTranslator translator; translator.load("test_zh.qm"); a.installTranslator(&translator); Test w; w.show(); return a.exec();}
无法提取到待翻译元素的问题:
(1)首先,确保在工程代码中所有需要翻译的字符串已用 tr 标示出来。这一点非常重要,没有用 tr 标志的文本将不会翻译,也提取不出来。
(2)lupdate提取待翻译元素时,需要将 待翻译元素所在的.cpp文件保存之后才能提取出来;
(3)如果你是使用Launch Linguist 来进行翻译,请确保你打开的.ts文件的路径正确(如果有多个相似版本的项目,有可能将路径混淆);
翻译未成功的问题
如果项目之前就已经有翻译文件,将项目重新生成一遍,步骤为:生成->重新生成;
点击下载测试程序
- VS中使用QT,多国语言翻译问题
- Qt 翻译 多国语言 本地化。。。Step by Step
- Qt 多国语言
- Qt多国语言国际化
- Qt 多国语言国际化
- Qt实现多国语言(即界面翻译)可实时进行切换
- Android翻译多国语言字符串注意事项
- Qt多国语言QT_TR_NOOP和QT_TRANSLATE_NOOP
- QT多国语言测试程序
- 2.4 Qt多国语言切换
- Qt实现多国语言切换
- Qt实现多国语言动态切换
- GTK 中多国语言
- GTK 中多国语言
- android多国语言使用
- android多国语言使用
- android多国语言使用
- android多国语言使用
- 嵌入式每日学习心得 守护进程
- 基础校验
- leetcode problem3解题报告
- java 总结几种线程异步转同步的方法
- linux学习命令 一
- VS中使用QT,多国语言翻译问题
- JAVA基础知识二
- 上Google 最简单的办法 更改hosts 见laod
- 深入理解Java虚拟机——JVM、DVM(dalvik)和ART之间的区别
- 嵌入式每日学习心得 线程
- Java中Volatile关键字详解
- Spring Boot插件spring tool suite安装及使用
- Spring Mvc 防御CSRF攻击
- 数据结构