基于Qt的软件汉化界面技术的研究王家华,程顺顺(西安石油大学计算机学院,陕西西安710065)摘要:随着国内用户群的增长,专业软件的汉化问题受到关注。针对此问题,探讨了基于Qt的图形用户界面软件汉化方法及问题。并通过具体的项目实践,详细论述了软件汉化使用的方法及问题。提出了应用Qt设计器对GUI界面进行说明,本地用户对软件进行汉化,运用QtLinguistg国际化工具进行软件汉化三种方法。介绍了动态语言切换功能,实现用户界面不同语言之间的转换。对汉化过程中出现的问题,提出不同的解决方法。实践表明,使用上述方法可以解决软件的汉化问题,使软件界面实现中文化。关键词:Qt;GUI;字符串;汉化中图分类号:TP311文献标识码:A文章编号:1673-629X(2011)03-0146-04ResearchonQt-BasedSoftwareInterfaceTechnologyofChineseLocalizatWANGJia-hua,CHENGShun-shun(SchoolofComputerScience,Xi’anShiyouUniversityXi’an710065,CAbstract:Withtheincreasingofusergroupsofdomestic,professionalsoftwarelocalizationissueshavemoreconcern.Forthisproblem,studymethodsandissuesbasedontheQtgraphicaluserinterfacesoftwarelocalization.Throughthespecificpracticeprojects,discussedthemethodsandproblemswhichuselocalizationsoftwareindetail.ProposedforapplyingtheQtdesignerexplainGUIinterface,alocaluserusethemethodsaboutthesoftwareChinseslocalization,useQtLinguistginternationaltooltocarryonthesoftwareChineselocation2al.Andintroducesthedynamicswitchlanguagefunction,implementbetweendifferentlanguage’sswitchwithuserinterface.Itispro2posedsomedifferentsolutionwhentheChineselocalization’sprocessappearproblems.Practiceshowsthatusingtheabovemethodcansolvetheproblemofsoftwarelocalization,makethesoftwareinterfacetoachievetheChineselocalization.0引言Qt是Trolltech公司开发的给予标准框架的图形应用程序,它使用“一次编写,随处编译”的方式为开发跨平台的应用程序提供了一个标准的C++应用程序开发框架[1]。Qt支持的平台有微软操作系统、苹果机OS以及Linux操作系统[2]。它以其作为一个跨平台框架著称,拥有强大的应用程序编程接口[3],提供给应用开发者大部分的功能,来完成建立合适的、高效的图形界面程序和后台执行的应用程序,并提供了一种面向对象的可扩展性能和基于组件的编程移植性相对较差。在对使用Qt编写的应用程序图形界面进行汉化时,相对就比较容易,并且Qt为世界上其它文字系统都提供了广泛的支持,可以实现在不同语种之间进行切换。1汉化技术使用的方法目前,使用的大多数专业软件都是来源于国外,在操作过程中总是会出现一些不可避免的问题,而存在这些问题的大部分原因是语言问题。而随着国内用户群的增长,应用软件的汉化问题就引起了广泛的关注[5]。1.1Qt设计器Qt设计器是Qt自有的设计GUI界面的工具,它提供一种可视化的设计方法,方便程序员的应用[6]使用可视化的设计方法比手工编码显得更自然、更快收稿日期:2010-07-09;修回日期:2010-10-24基金项目:国家自然科学基金项目(50874091)作者简介:王家华(1945-),男,教授,从事油藏描述、储层建模、地使用Qt设计器绘制好GUI界面后,就可以利用Qt提供的qmake工具和uic编译工具将ui文件编译生成C++源文件,并会提取需要汉化的字符串[8]。根据ui文件的特性,每次程序编译都生成新的界面.h文件,uic会自动为那些发生了改变的窗体重新生成源代码。在修改程序内部的同时将界面进行汉化。1.2使用Qt识别中文在无任何标识的情况下,如果程序中出现中文字符,那么在编译后,这些字符将会以乱码的形式出现在生成的页面中。在Qt应用程序中,窗口直接加载一个QLabel窗口部件以显示一些文本信息。然而,在相对较复杂的GUI界面上,仅仅通过指定窗口部件的父子关系以期达到加载和排列窗口部件的方法是行不通的,最好的办法是使用Qt提供的布局管理器来设计页面[4]。在界面中存在部分需要转换成中文的字符串,而这些字符串又不包含在GUI界面中,那么只有选择单纯地在程序内部进行本地汉化。1.2.1识别汉字的预编译指令在程序中加入识别...