Qtopia是Trollteeh面向嵌入式Linux的综合应用平台,它是基于Qt的嵌入式版本Qt/Embedded库的基础上,专门针对PDA,SmartPhone这类运行嵌入式Linux的移动计算设备和手持设备所开发的一套开放源码的应用程序包和开发库。Qtopia目前成功应用在包括无线电话、PDA、媒体播放器以及其他消费型电子产品,汽车,医疗与工业电子设备中。
本文主要介绍基于Qtopia的嵌入式Linux俄文环境解决方案。
1 Qtopia移植
将Qtopia移植到嵌入式设备中,要在安装有Linux操作系统的PC机中交叉编译Qtopia所需要的资源文件和环境,交叉编译Qtopia源代码,然后把生成的Qtopia系统下载到设备中。要先建立一个开发环境,其中必须要有提供qte的库qt-embedded-2.3.10。提供相应的qtdesigner和虚拟qvfb的qt-x11-2.3.2。qte的桌面环境程序qtopia-free-2.1.1以及tmake-1.13的关系如表1所示。
在编译并下载后,可以看到一个英文的虚拟PDA界面。Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序、启动程序以及开发框架。
2 构建嵌入式Linux俄文环境
由于Qtopia的界面使用Unicode作为内部编码,可以同时支持多种编码,对国际化标准支持的非常完备,这就为英文的Qtopia进行俄文本地化提供了可能。
本地化是将国际化的资源(信息、产品等)进行翻译、注解、融合、交汇等延伸,赋予其本土特质。本地化是针对应用程序支持的每一个区域性将应用程序的资源翻译为本地化版本的过程。在Qtopia中,应用程序分为2个概念块:一个是包含所有用户界面元素的块,另一个包含可执行代码的块。用户界面块仅包含非特定区域性的可本地化用户界面元素,如字符串、错误信息、对话框、菜单、嵌入的对象资源等。代码块仅包含由所有支持的区域性使用的应用程序代码。对所有用户可见的文本使用tr()将文本标识出来,这样利用Qt提供的翻译工具将很容易把这些文本转化成所需要的语言。这里的本地化操作只要在用户界面块操作就可以,而不需要修改代码块。
Qtopia默认的语言是英语。要将Qtopia本地化成俄文,必须重新配置qtopia。
第一步,在终端中输入命令:configure-languages“ru”,这会告诉编译系统,它也需要建立档案,翻译俄文。
第二步,输入命令make lupdate。lupdate的功能是读取一个Qt.pro项目文件并且产生或者更新项目文件中列出的.ts翻译源文件。ts文件是Qt源代码中的可翻译文本,是一个给翻译者手工编译的信息文件。ts文件是XML格式,可以用记事本打开,也可以用QT语言学家(QT Linguist)打开。
翻译人员可以用Qt语言学家(QT Linguist)来读取这个翻译文件并且插入翻译。在Qtopia的i18n文件夹中创建ru文件夹和服务器具体翻译文件(例如qtopiaapplications.ts),其中TS文件就是待翻译的文件。启动Qt Linguist将topiaapplieations.ts文件导入,将需要翻译的内容翻译成俄文,翻译完成之后,点击File→Release,将文件保存为topiaapplications_ru.qm。QM文件是Qtopia程序能够识别的文件,TS必须要转换成QM文件才能被系统识别。换句话说TS文件是给我们看的,QM文件是给系统看的。除了这些自动生成的文件,还要手动在ru文件夹中创建一个.direetory文件。
然后重新运行make lupdate命令,重新更新一下系统。如果仔细地分析研究Qtopia的源文件夹,就可以发现解压后的Qtopia2.1.1里面有src文件夹。其中的每一个应用程序的文件里面都有几个TS文件,比如在\src\game\snake文件夹里面可以发现有snake-de.ts,snake-ja.ts,snake-no.ts,snake-en_GB.ts等4个TS文件,在每个应用程序文件夹里面复制一个TS文件放到RU文件夹中就可以。接下来把每个TS文件翻译成俄文。运行语言学家的工具Linguist,就可以很轻松地把所有的英文翻译成俄文。之后,通过Linguist把翻译好的TS文件转换成QM文件放到i18n/ru文件夹里面。
现在在Qtopia语言栏中选Russian,可以发现Qtopia桌面还是英文的,但是打开每个应用程序,所有的英文已经由俄文取代。这是因为没有配置*.desktop桌面配置文件,也就是没有在桌面应用程序启动器文件里面增加俄文。比如游戏贪食蛇的桌面程序启动器文件为snake. desktop,在里面增加一句话:Name[ru]=3MeиKa,其中3Meиga的中文意思就是贪食蛇。