Qt多国语言国际化.ppt_第1页
Qt多国语言国际化.ppt_第2页
Qt多国语言国际化.ppt_第3页
Qt多国语言国际化.ppt_第4页
Qt多国语言国际化.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第15章Qt多国语言国际化 15 1概念 15 2实例 15 1概念 15 1 1QString QTranslator等类和tr 函数的作用在支持国际化的过程中 一般在Qt中利用QString QTranslator等类和tr 函数能够很方便的完成加入国际化的支持 具体工作如下 1 使用QString对象来表示所有用户可见的文本 2 使用tr 函数来取得所有需要翻译的文本 3 使用QString arg 来组织动态文本 比如下面的字符串用来表示任务的完成情况 QStringm tr Missionstatus x tr of y tr arecompleted 4 利用QTranslator load 和QCoreApplication installTranslator 来读取对应的翻译之后的资源文件 15 1 2 qm文件的生成 对于翻译工作者 主要是利用Qt提供的工具lupdate linguist和lrelease来协助翻译工作并生成最后需要的 qm文件 它包括以下内容 1 利用lupdate工具从源代码中扫描并提取需要翻译的字符串 生成 ts文件 类似编译时用到的qmake 运行lupdate时我们也需要指定一个 pro的文件 这个 pro文件可以单独创建 也可以利用编译时用到的 pro文件 2 利用linguist工具来协助完成翻译工作 即打开前面用lupdate生成的 ts文件 对其中的字符串逐条进行翻译并保存 3 利用lrelease工具处理翻译好的 ts文件 生成格式更为紧凑的 qm文件 这便是翻译工作者最终需要提供的资源文件 它所占的空间比 ts文件小 但基本不具有可读性 只有QTranslator能正确的识别它 15 2实例 5 2 1实例1 1 新建一个GUI工程TestHello pro 然后在UI文件上添加两个按钮 并分别把文本修改为hello china 如图15 1所示 5 2 1实例1 2 修改TestHello pro文件 添加 TRANSLATIONS TestHello ts 3 编译 假如没有编译而进行下面的步骤 生成的ts文件只是一个只有标题栏的框架 4 编译完成后 假如是windows下就cmd 假如是linux就开终端 单击 开始 所有程序 QtSDKbyNokiaV2010 03 OpenSource QtCommondPrompt 命令打开 QtCommondPrompt 窗口 cd进入TestHello pro工程目录 执行命令 lupdateTestHello pro 5 2 1实例1 在工程下生成一个ts文件 假如没有编译的话 会提示Found1sourcetext 假如编译后 会提示Found3sourcetext 如图15 2所示 5 2 1实例1 5 单击 开始 所有程序 QtSDKbyNokiaV2010 03 OpenSource Tools QtLinguist 命令 运行Qt自带工具QtLinguist 单击菜单 文件 打开 命令 选择 TestHello ts 文件 单击 打开 按钮 然后根据需要设置源语言和目标语言 此处为默认状态 源语言为任意国家语言 目标语言为china国家的chinese 6 在第二栏选择要翻译的字符串 在下面两行中输入对应的翻译文字 然后单击上面的按钮 5 2 1实例1 7 单击 File release 或者在命令行输入 lreleaseTestHello pro 生成TestHello qm文件 如图15 3所示 5 2 1实例1 8 修改源代码 添加前 具体代码如下 intmain intargc char argv QApplicationa argc argv MainWindoww w show returna exec 5 2 1实例1 添加后 具体代码如下 includeintmain intargc char argv QApplicationa argc argv QTranslator translator newQTranslator translator load TestHello qm a installTranslator translator MainWindoww w show returna exec 15 2 2实例2 此实例是用一个下拉菜单来选择语言 然后下面有一个需要翻译文字的标签 1 在头文件LangSwitch h中定义了类LangSwitch 创建用户界面 include include includeclassLangSwitch publicQWidget Q OBJECTpublic LangSwitch QWidget parent 0 LangSwitch privateslots voidchangeLang intindex private voidcreateScreen voidchangeTr constQString 15 2 2实例2 2 源文件LangSwitch cpp中的具体实现 include langswitch h include include includeLangSwitch LangSwitch QWidget parent QWidget parent createScreen LangSwitch LangSwitch 15 2 2实例2 createScreen 函数用来创建基本的界面 其具体实现代码如下 voidLangSwitch createScreen combo newQComboBox combo addItem English en combo addItem Chinese zh combo addItem Latin la label newQLabel refreshLabel QVBoxLayout layout newQVBoxLayout layout addWidget combo 1 layout addWidget label 5 setLayout layout connect combo SIGNAL currentIndexChanged int this SLOT changeLang int 15 2 2实例2 refreshLabel 函数具体实现如下 voidLangSwitch refreshLabel label setText tr TXT HELLO WORLD HelloWorld changeLang 函数改变语言的具体代码如下 voidLangSwitch changeLang intindex QStringlangCode combo itemData index toString changeTr langCode refreshLabel 15 2 2实例2 函数changeTr 读取对应的 qm文件 并调用installTranslator 方法来安装QTranslator对象 其具体实现代码如下 voidLangSwitch changeTr constQString 15 2 2实例2 3 提取需要翻译的字符串并翻译然后生成 qm文件 这工作一般有专门的工作组去负责 具体操作如下 修改langswitch pro文件 即在后面加上TRANSLATIONS的定义 修改完的langswitch pro文件的具体内容如下 TARGET LangSwitchTEMPLATE appSOURC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论