26.3.2 使用libglade多语言支持
Linux系统本身具备完善的多语言支持体系,可使同一个可执行文件拥有不同地方语言的图形界面。这其中涉及到两个重要概念:国际化与本地化。
国际化是指将开发者原先使用的母语翻译成多种其他的语言。由于实现翻译的途径、翻译的工作效率、翻译的可重用性等因素各不相同,使翻译工作面临很大困境,也阻碍了软件的推广和应用。为了方便地将软件翻译成不同语言的版本,就需要一套翻译规范和通用工具,于是就诞生了i18n工具集。i18n即“internationalization”的缩写形式,主要使用gettext软件包实现国际化支持。
本地化是指可执行文件能够根据当前的语言环境选择图形界面上使用的语言。除语言以外,字符编码、语法、度量单位、日期时间格式、阅读习惯、使用习惯等也是需要考虑的问题,因此设计了l10n工具集。l10n是localization的缩写形式,主要使用locale软件包实现本地化支持。
在概念中,本地化包含国际化,两者相辅相成。本节假设开发者的母语为英语,本地应用为简体中文,演示libglade对多语言的支持。下面是具体操作步骤:
1.为Glade项目创建po和mo文件
po文件意为可移植对象;mo文件意为机器对象。po文件是面向翻译人员、提取于Glade项目的一种资源文件。当软件升级的时候,通过使用gettext软件包处理po文件,可以在一定程度上使翻译成果得以继承,减轻翻译人员的负担。mo文件是面向计算机的、由po文件通过gettext软件包编译而成的二进制文件。程序通过读取mo文件使自身的界面转换成用户使用的语言。
假设已建立了一个Glade项目文件ui.glade,其中包含一个主窗体window,窗体标题为User Information。窗体中放置着一个表格容器,然后在容器中装入一组标签构件,构件的标签分别是Name、Gender和Age。再将标签为Male和Female的单选按钮装入表格。最后装入一个文本框、一个微调按钮和一组按钮库按钮,如图26.46