怎么查网站死链,免费申请靓号,霍山做网站,一个网站的建设步骤一、简介
当软件有国际化的需求时#xff0c;就需要多语言翻译功能#xff0c;最常见的语言就是支持中文和英语#xff0c;本文介绍在vs2015QT环境下#xff0c;进行国际化翻译的具体流程。
二、多语言翻译实现流程
1.底层实现原理介绍
QT写的客户端软件#xff0c;能…一、简介
当软件有国际化的需求时就需要多语言翻译功能最常见的语言就是支持中文和英语本文介绍在vs2015QT环境下进行国际化翻译的具体流程。
二、多语言翻译实现流程
1.底层实现原理介绍
QT写的客户端软件能够将文字显示为不同的语言底层实现就是为每一个单词或者标识准备多个翻译分别存储在不同的二进制文件中需要切换语言时加载对应语言的二进制文件该文件以.qm后缀结尾在程序运行时根据该文件中的翻译内容进行显示。
QT提供了专门的类和接口来读取.qm文件中的翻译QTranslator类和installTranslator()接口.举例如下
QApplication a(argc, argv);
strPath QCoreApplication::applicationDirPath() /translations/ZH/tetool_zh.qm;
QTranslator* m_pTranslator new QTranslator(a);
m_pTranslator-load(strPath); //strPath是.qm文件的路径
qApp-installTranslator(m_pTranslator);QTranslator类对象负责读取翻译文件中的具体内容 load(strPath)就是.qm文件所在路径
installTranslator(m_pTranslator) 负责将翻译后的内容装载到程序界面中。
所以要实现语言切换只需要控制QTranslator类对象去读取不同的qm文件即可。
2.qm文件的来源和ts文件的创建步骤介绍
2.1 qm二进制文件是由.ts文件生成的qm存储的是二进制格式的翻译内容.ts文件则以xml的形式进行展现存储的是人可以看懂的翻译内容大致内容如下
contextnameCMyClass/namemessagelocation filename../../MyClass.cpp line45/sourcehello/sourcetranslation你好/translation/message
/context其中nameCWaitingPopup/name 表示的是类名; 一个message节点代表了一个要翻译的字符相关内容 location节点显示的内容是该字符在MyClass.cpp文件中的45行 source节点表示的是需要翻译的字符是 hello; translation 节点表示hello对应的翻译是你好 QT提供了工具可以根据ts文件中的翻译内容生成二进制格式qm文件而且生成的文件和ts在同级目录下在vs2015QT的环境下在编辑器中找到一个.ts文件右键弹出菜单栏点击lrelease即根据ts文件生成一个qm文件。所以我们只需要创建一个ts文件并在ts文件中添加对应的翻译即可。
2.2ts文件的创建步骤 在vs2015环境中要创建QT项目必须要安装的插件就是Qt VS Tools,安装好之后会在vs2015菜单栏中有对应选项; 点击Qt VS Tools选项弹出列表点击Create New translation file列表项 弹出弹框选择一种语言并输入一个文件名该文件就是以.ts结尾的。 例如选择中文并输入MyClass_zh.ts,点击确认按钮之后就会在项目结构中多出一个MyClass_zh.ts的文件如下图
2.3ts文件相关操作
当项目中已经有一个ts文件之后可以右键选择lupdate和lrelease, 执行lupdate指令会自动更新ts文件中的所有需要翻译的单词或标识这些标识是需要在代码中标记出来的使用QString自带的tr()方法进行标记. 例如新增代码 tr(hello)执行lupdate指令使用Qt Lingusit工具打开ts文件(双击ts文件默认使用Qt Lingusit打开)在Qt Lingusit工具中进行手动翻译翻译好之后执行lrelease程序再次运行时加载新生成的qm文件界面上显示最新的翻译后的内容。
三、总结
进行多语言翻译基本步骤如下 1.代码中使用tr()包含需要标识的源符号(一般用英文)。
2.创建ts文件并更新到最新并对源符号进行翻译。
3.执行lrelease命令生成对应的qm二进制文件
4.在程序中使用QTranslator类对象读取qm文件获取翻译内容
5.使用installTranslator()函数将翻译内容装载到应用程序中
如果需要翻译成其他语言的内容只需要新建ts文件时选择其他的语言在调用installTranslator()函数时入参换成新语言对应的QTranslator类对象即可。