Fhas应用开发平台用户手册.pdf

上传人:韩长文 文档编号:5014601 上传时间:2020-01-28 格式:PDF 页数:29 大小:280.01KB
返回 下载 相关 举报
Fhas应用开发平台用户手册.pdf_第1页
第1页 / 共29页
Fhas应用开发平台用户手册.pdf_第2页
第2页 / 共29页
Fhas应用开发平台用户手册.pdf_第3页
第3页 / 共29页
Fhas应用开发平台用户手册.pdf_第4页
第4页 / 共29页
Fhas应用开发平台用户手册.pdf_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《Fhas应用开发平台用户手册.pdf》由会员分享,可在线阅读,更多相关《Fhas应用开发平台用户手册.pdf(29页珍藏版)》请在三一文库上搜索。

1、Fhas 应用开发平台用户手册 适用于Fhas2lib Ver 1.5.x 北京飞漫软件技术有限公司 26 December, 2005 ii 版权所有 c ? 2004,2005 ,北京飞漫软件技术有限公司,保留所有权利。 无无无论论论您您您以以以何何何种种种方方方式式式获获获得得得该该该手手手册册册的的的全全全部部部或或或部部部分分分文文文字字字或或或图图图片片片资资资料料料,无无无论论论是是是普普普通通通印印印 刷刷刷品品品还还还是是是电电电子子子文文文档档档,北北北京京京飞飞飞漫漫漫软软软件件件技技技术术术有有有限限限公公公司司司仅仅仅仅仅仅授授授权权权您您您阅阅阅读读读的的的权权权利

2、利利,任任任何何何 形形形式式式的的的格格格式式式转转转换换换、再再再次次次发发发布布布、传传传播播播以以以及及及复复复制制制其其其内内内容容容的的的全全全部部部或或或部部部分分分,或或或将将将其其其中中中的的的 文文文字字字和和和图图图片片片未未未经经经书书书面面面许许许可可可而而而用用用于于于商商商业业业目目目的的的,均均均被被被视视视为为为侵侵侵权权权行行行为为为,并并并可可可能能能导导导致致致严严严 重重重的的的民民民事事事或或或刑刑刑事事事处处处罚罚罚。 目录 1Fhas2lib 介绍1 1.1Fhas2lib 简介 . . . . . . . . . . . . . . . . .

3、 . . . . . . . . . .1 1.2Fhas2lib 主要应用程序框架. . . . . . . . . . . . . . . . . . .2 1.3Fhas2lib 特性 . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2在 Linux-PC 上安装和使用 Fhas2lib4 2.1mobile 版本的编译、安装和使用 . . . . . . . . . . . . . . . .4 2.1.1mobile 版本的编译、安装 . . . . . . . . . . . . . . . .4 2.1.2mobile

4、 版本 Fhas 系统的编译、运行 . . . . . . . . . .5 2.2PDA 版本的编译、安装和使用 . . . . . . . . . . . . . . . . .6 2.2.1PDA 版本的编译、安装 . . . . . . . . . . . . . . . . .6 2.2.2PDA 版本 Fhas 系统的编译、运行 . . . . . . . . . . .7 3Fhas2lib的配置选项9 3.1Fhas2lib编译配置选项 . . . . . . . . . . . . . . . . . . . . . .9 3.2Fhas2lib配置文件fhas2.cfg .

5、 . . . . . . . . . . . . . . . . . . .12 4在 Windows 环境安装和使用 Fhas2lib14 4.1编译、安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 5移植 Fhas2lib 到 VxWorks16 5.1原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 5.2在 cygwin 环境中编译 Fhas2lib. . . . . . . . . . . . . . . . .16 5.3

6、在 Tornado 环境中编译 Fhas 系统 . . . . . . . . . . . . . . . .17 6嵌入式开发工具的使用18 6.1位图转换工具 . . . . . . . . . . . . . . . . . . . . . . . . . . .18 6.1.1单个图片的转换. . . . . . . . . . . . . . . . . . . . .18 6.1.2转换整个工程的图片资源. . . . . . . . . . . . . . . .19 iv目录 6.2国际化工具 . . . . . . . . . . . . . . . . . . . . .

7、. . . . . . .22 6.2.1代码实现. . . . . . . . . . . . . . . . . . . . . . . . .22 6.2.2字符串提取和转换. . . . . . . . . . . . . . . . . . . .22 第一章 Fhas2lib 介绍 1.1Fhas2lib 简介 Fhas2lib 是由北京飞漫软件技术有限公司在 MiniGUI 基础上开发和维 护的一个应用支持库和应用框架。在其基础上用户可以轻松方便的开发出 适用于手持终端( phone , pda 或 pmp )等多种应用领域所需要的应用图 形界面和相关应用功能。 Fhas2lib

8、 基于成熟和稳定的 MiniGUI ,充分的利 用了 MiniGUI 强大的控件支持、消息和窗口管理机制,最大限度的发挥了 MiniGUI 产品的功能,同时也进一步的丰富和完善了 MiniGUI 的如下功 能:事件管理,国际化、 Toolbar 控件、任务栏和菜单栏等。针对当前的 各种应用领域,现 Fhas2lib 主要实现了两种应用库框架的支持: Mobile 版 和 PDA ( PMP )版。 Mobile 版本支持通用的 menu 菜单管理、 toolbar 和 menubar 提示栏功能。 PDA 版本支持标题栏( captionbar )和任务栏( taskbar )功能。 Fhas

9、2lib 支持 Threads 和 Processes 两种模式,具体采用何种配置模式 由 MiniGUI 图形库的配置方式决定。在两种模式下 Fhas2lib 提供给上层应 用的是同一套标准的框架接口,使得用户在使用其提供的接口时不用顾虑 其不同模式下的执行方式。 Fhas2lib-Threads 。基于 MiniGUI-Threads 模式。运行在 Fhas2lib- Threads 中的程序同通常意义的线程方式类似,可以在不同的线程中 建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。此种 运行模式是比较适合于大多数传统意义上的嵌入式操作系统,比如 uC/OS-II 、 eCos

10、、 pSOS 等等。 Fhas2lib-Processes。基于MiniGUI-Lite或MiniGUI-Processes模式。 此种模式下, Fhas2lib 上层的应用程序可以是一单独的进程,每一进 程可以建立多个窗口。该模式适合于具有完整 UNIX 特性的嵌入式操 作系统,如嵌入式 Linux 。 2Fhas2lib 介绍 1.2Fhas2lib 主要应用程序框架 Fhas2lib 在 MiniGUI 的基础上,实现了如下几个应用程序框架: 任务管理。Fhas2lib 中所声明的任务,在 Processes 版本中表示一个进 程,而在 Thread 中则表示一线程实体。它通过简单的任务

11、名方式开 启和关闭一任务,当任务已经启动时启动接口仅完成将其置于最顶层 显示功能。还提供有任务枚举和查询等简单实用的接口。 事件通知。事件通知提高了应用程序间或系统间的事件处理效率。它 支持普通和离线两种事件通知机制。应用是通过启动最初注册消息的 方式来达到事件通知的目的。 定时和提醒。该框架适用于与时间有关的应用程序中。如闹钟、日程 等应用。 UI。为不同的应用程序界面构建提供了完善的支持,保证了应用界面 与基础配置环境的一致性。主要有 phone 和 pda 两种默认 UI 框架支 持。在 phone 框架中可以有 phonebar 和 menubar 的支持。而在 pda 中则可以有 t

12、askbar 和 captionbar 的支持。 Toolbar 控件。Toolbar 控件是窗口菜单栏和标题栏的模板控件,基于 Toolbar 可以方便地实现多种外观和行为风格的工具栏。这里所说的 菜单栏是显示应用程序菜单项命令、输入法指示器或其他指示信息的 一块屏幕区域。 输入法。Fhas2lib 针对 phone 版本实现了适用于手机上的拼音输入法 相关界面和功能的支持;针对 pda 等手持终端产品则实现了通用的具 有软键盘功能支持的拼音输入法和手写输入法。用户仅需要在配置时 指定所要使用的框架,默认情况下即已经将输入法功能打开。 具体框架介绍请参见 Fhas 应用开发平台编程指南。 1

13、.3Fhas2lib 特性 支持 Threads 和 Processes 两种模式。在两种模式下,对用户提供的 接口保持着良好的一致性。 可移植性。基于 MiniGUI 的实现使 Fhas2lib 具有很好的可移植性。 只要是可以运行 MiniGUI 的操作系统,就可以很方便的将 Fhas2lib 移植上去。 1.3 Fhas2lib 特性3 可配置。通过编译前配置选项和运行时配置文件两种方式很好的达到 了配置的灵活性。 不同 UI 框架的基本功能支持。 国际化功能支持。通过简单的操作达到强大的国际化功能的支持。 完善的主题支持。在手机版本上有着完善的 UI 主题引擎支持,用户 可以根据自己的

14、需要定制用户界面,更改颜色配选方案等。 多种输入法支持。有适用于不同手持终端设备的输入法功能支持,如 拼音、手写等。 第二章 在 Linux-PC 上安装和使用 Fhas2lib 用户在使用 Fhas2lib 前需要确保其已经参照 MiniGUI 用户手册配 置好了 MiniGUI 的 PC 运行环境。同时因 Fhas2lib 提供两种不同的库框架 支持,因此,下面将分 mobile 和 pda 两个版本来讲解如何搭建运行环境。 2.1mobile 版本的编译、安装和使用 2.1.1mobile 版本的编译、安装 首先需要编译和安装 MiniGUI 库。其中 MiniGUI 库需要将扩展库支

15、持打开。如果需要日文字符集支持,还需要打开 shiftjissupport 选项,如 下(假设 MiniGUI 源码文件夹为 libminigui ): $ cd libminigui $ ./autogen.sh $ ./confi gure enableshiftjissupport $ make $ sudo make install 在使用 MiniGUI 库前需要修改 MiniGUI.cfg 配置文件,设置所使用的 字体为相应的日文字体。MiniGUI 的配置和安装可参考 MiniGUI 用户手 册。 然后安装 Fhas2lib 库(假设 Fhas2lib 源码文件夹为 Fhas2l

16、ib ),步骤如 下所述。 如果要使用日文输入法采用如下配置方式: $ cd fhas2lib $ ./autogen.sh $ ./confi gure enablemobile enableatok enabletiming $ make $ sudo make install 2.1 mobile 版本的编译、安装和使用5 否则请使用下面的配置方式: $ cd fhas2lib $ ./autogen.sh $ ./confi gure enablemobile disableatok enabletiming $ make $ sudo make install 两个支持库都编译安装好

17、后,下面讲解如何编写与编译 mobile 版本的 Fhas 系统, 这里主要讨论 threads 下 Fhas 系统的实现方式。 2.1.2mobile 版本 Fhas 系统的编译、运行 该 Fhas 系统主要是利用了 Fhas2lib 应用框架库的相关 mobile 版本功 能,在程序启动最初生成一 idle 界面,当前界面布局分为三部分,最上方 的为 phonebar , 在其上可以显示信号,电量和提示小图标等内容,也相 当于是一状态栏。中间为桌面,设置了背景图,用于显示系统时间和日期 等。最下方是 menubar 区域,此处是按键提示区域。根据 mobile 的特性, 该系统所有的操作都

18、已支持相应的按键操作。作为一个简单的应用系统主 要是提供了九宫格界面和菜单选项设置的参考。 其中对 menubar 的设计为同时可最大支持三个按钮(此值可根据需要 通过程序按键映射部分进行修改),最左端的映射为 F2 键,中间为方向导 航键,起引导作用。最右端的映射为 F3 ,通常起退出当前窗口,返回到上 一层功能。如在 idle 界面通过键盘 F2 键可以进入标准的 mobile 九宫格界 面。 为了确保该系统的正常运行,请参照如下方式操作。 首先需要把程序中用到的图片文件转换为 c 源代码,此步工作通过 dumpbmp 工具来完成。如果已经转换过了可以略去该步骤。 $ cd fhasmob

19、ile/resources/res $ dumpbmp i main/ apps/ 然后按照如下步骤编译 fhas-mobile : $ cd fhasmobile $ ./autogen.sh $ ./confi gure $ make $ sudo make install 在编译完成后,需要先运行 qvfb 模拟器,执行如下命令: $qvfb width 640 hight 480 depth 16 6在 Linux-PC 上安装和使用 Fhas2lib 或 $qvfb fh pcmode= 0; fh desktop lx= 0; fh desktop ty= 0; fh deskto

20、p rx= 240; fh desktop by= 320; fh captionbar w = 240; fh captionbar h = 31; fh startbar w= 240; fh startbar h= 31; fh mainwindow lx = 0; fh mainwindow rx = 240; fh mainwindow ty = 31; fh mainwindow by = 289; fh mainwindow yy = 320; fh mainwindow w = 240; fh mainwindow h = 289; 各变量值亦可通过宏定义方式传送。 第四章 在

21、 Windows 环境安装和使用 Fhas2lib 4.1编译、安装 在 Windows 环境下编译和运行首先需要编译和安装 MiniGUI 库。关 于 MiniGUI 在 Windows 环境的编译和安装,请参看minigui-guide-for- windows一文。 另外编译和运行基于 Fhas2lib 的应用,还需要编译和安装 Fhas2lib 。 我们以 VC 环境下的编译方式为例。在 VC 中打开 Fhas2lib 源码目录中的 build 子目录下的 fhas2lib-win32.dsw 工程,在 VC 中要对 Fhas2lib 工程作 如下配置: 1)执行菜单 projects

22、etting, 打开工程设置对话框,在 setting for 中选择 All Confi guration 选项;选择属性页 C/C+:在 Category 设置 中,选择 Preprocessor, 修改 Addtional include directories 项,在其中添加 pthread 以及 MiniGUI 的头文件所在的路径,如 c:mydllinclude; 2)接第一步,选择属性页Link: 在 Category 设置中,选择 Input 选 项,修改 Additional Library path 项,在其中添加 pthreadVC1.lib 以及 libminigui.

23、lib 所在的路径,如 c:mydlllib; 3)“确定”后,执行 BuildRebuild All, 执行编译;编译后在 build 目录下生成 fhas2lib 动态库。 由于 VC 环境中没有安装程序,可手工将 Fhas2lib 的头文件拷贝到某 个目录下,如c:mydllinclude。将生成的 Fhas2lib 的库文件拷贝到某个目录 下,如c:mydlllib。 之后就可以编译和运行基于 Fhas2lib 的应用了。首先需要把图片文件 转换为 C 源代码,如果已经转换过了可以略去该步骤(假定应用源码路径 为fhas)。 cd fhas/resources/res dumpbmp

24、i main/ apps/ addr/ phone/ 4.1 编译、安装15 然后在 VC 中新建一Win32 Console Application应用,将应用C文件添 加至工程中。进行如下配置: 1)执行菜单 projectsetting, 打开工程设置对话框,在 setting for 中选择 All Confi guration 选项;选择属性页 C/C+:在 Category 设置 中,选择 Preprocessor, 修改 Addtional include directories 项,在其中添加 pthread,Fhas2lib以及MiniGUI的头文件所在的路径,如c:mydl

25、linclude; 2)接第一步,选择属性页Link: 在 Category 设置中,选择 Input 选 项,修改Additional Library path项,在其中添加pthreadVC1.lib, fhas2lib.lib 以及 libminigui.lib 所在的路径,如 c:mydlllib; 3)“确定”后,执行 BuildRebuild All, 执行编译;编译后生成 exe 可执行程序。 在 Windows 环境下,运行基于 Fhas2lib 的应用,需要 wvfb 的支持。 先把 wvfb 模拟器运行起来,wvfb的配置方式与qvfb类似。然后运行 exe 执 行文件。

26、第五章 移植 Fhas2lib 到 VxWorks 5.1原理 Fhas2lib 的软件架构建立在 MiniGUI API 的基础之上,通过 MiniGUI 屏蔽了底层操作系统和硬件的细节,因此把 Fhas2lib 移植到 VxWorks 基本 上没太多的工作和困难。 5.2在 cygwin 环境中编译 Fhas2lib 编译 Fhas2lib 的方法和 MiniGUI 类似。我们可以在 cygwin 环境下把 Fhas2lib 库交叉编译为相应的静态库 libfhas2.a ,然后在 Tornado 工程中编 译链接生成一个包括 VxWorks、MiniGUI 、 Fhas2lib 库在内的

27、可执行文件 (映像)。 Fhas2lib主要提供了基于vxWorks的x86、arm和simulator的移植编译脚 本。下面以vxWorks的x86版本为例讲解如何fhas2lib在cygwin上或linux的 交叉编译,步骤如下: 1. 进入源码目录,输入如下命令: cp build/fhas2confi gvxworks.h /fhas2confi g.h vxWorks的arm和simulator版本也可使用此配置头文件。此配置头文件 是支持mobile版本的。 2. 修改rules.make文件中的TARGET RULES值为 TARGET RULES=build/rulespc.。

28、vxworks 注:源码 build 路径下的 rules-arm.vxworks 和 rules-simnt.vxworks* 分 别对应 vxWorks 的 arm 和 simulator 版本。 3. 编译:make -f makefi le.ng 4.安装:make -f makefi le.ng install 默认安装路径为”c:cross”。生 成libfhas2.a库文件。 5.3 在 Tornado 环境中编译 Fhas 系统17 5.3在 Tornado 环境中编译 Fhas 系统 当 fhas 系统源文件较少时,可以直接在 vxWorks 的 IDE 环境下建立一 可下载

29、的应用映象工程,将源文件添加至工程中。在工程的 Builds 页中修 改默认属性设置。主要是 C/C+ compiler 中添加需要搜索的库头文件路 径,在 Macros 中 LIBS 或 PRO LIBS 中设置用户库文件所在的位置和相应 的库名。 当 fhas 系统源文件较多时,可以参照 fhas2lib 中编写 rules.make 的方 式,编写相应的 makefi le.ng ,然后在 cygwin 下编译 fhas 系统。最后在 Tornado 的环境中编写入口程序链接相应的几个库文件即可。 具体的 Tornado 开发环境和 cygwin 环境的配置请参考 MiniGUI for

30、 VxWorks 移植指南。 第六章 嵌入式开发工具的使用 6.1位图转换工具 位图转换工具 dumpbmp 用于把 MiniGUI 支持的图片文件(bmp, gif, png, jpeg 等格式)转换为 C 代码文件,这样,上层应用程序在运行时就不 需要装载这些图片文件,可以直接使用 C 代码文件中的图片数据。如果没 有文件系统支持的话,位图转换是必需的。 dumpbmp 是 MiniGUI 程序,所以在 Linux、cygwin 或者 Windows 上 运行时,需要相应的 MiniGUI 运行环境的支持。 6.1.1单个图片的转换 在命令行下可以使用如下命令转换一个图片: $ dumpb

31、mp yourbmp.bmp 运行后将在当前目录下生成一个名为 yourbmp.c 的文件,这就是转换 后的 C 代码文件。该文件的内容如下: / This fi le is generated by dumpbmp, do not edit manually. / #include #include static unsigned char yourbmp bits = 0 x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0 x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x

32、1f, 0x00, 0x1f, 0 x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0 x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, . 0 x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0 x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0 x00, 0x1f, 0x00, 0x00, 0x00, ; 6.1 位

33、图转换工具19 static BITMAP yourbmp bmp = 0 x00, 0x10, 0x02, 0x00, 0 x00000000, 0 x00000101, 0x0000012f, 0x00000204, yourbmp bits ; 从上面的代码可以看到,dumpbmp 工具把图片转换为一个 MiniGUI 的 BITMAP 结构,位图的相关象素数据存放在一个指定的数组中。在上面 的例子中,yourbmp bmp 结构代表了装载后的 yourbmp.bmp 图片,程序 中可以直接使用该 BITMAP 结构。 6.1.2转换整个工程的图片资源 一般来说,在上层应用中我们不直接转

34、换单个的图片文件,而是把工 程里所有的图片统一来转换、管理和使用。这样无论是图片的转换还是程 序中的使用都更加方便和统一。 在命令行下转换整个上层应用的图片文件为 C 代码,并生成相关的头 文件定义的方法如下(假设应用工程路径为fhas): $ cd fhas/resources/res $ dumpbmp i main/ apps/ 工程中的图片文件资源将统一放在源代码目录的resources/res目录 下,其中不同应用的图片分别存放在相应的各个应用子目录中,包括 main、apps 等。所以我们首先要进入 res 目录,然后进行转换,转换后生 成的相应代码文件位于该目录下。 转换后生成的

35、 .c 和 .h 文件包括:fh bitmaps defs.h、fh bitmaps inc.c 和 fh bitmaps struct.c 工程资源描述文件和其它的图片数据 C 文件。其中 fh bitmaps defs.h 文件中定义了相关图片的 BITMAP 指针,可直接在程序 中使用该 BITMAP 结构指针来引用图片,fh bitmaps inc.c 是需要包含到 工程里编译的 C 文件。 fh bitmaps inc.c 文件包括了所有的图片数据 C 文件,内容如下: / FHAS phone edition bitmap include fi les This fi leis g

36、enerated automatically by dumpbmp tool, do not edit. / #include ”addr Copy.c” #include ”addr Delet cancele.c” 20嵌入式开发工具的使用 . /此处代码略去/ #include ”phone trans jp.c” #include ”phone unhold.c” fh bitmaps struct.c 文件包括了 fh bitmaps inc.c 文件,而且定义了相 关的图片 BITMAP 结构数组,内容如下: / FHAS phone edition bitmap resource

37、 This fi leis generated automatically by dumpbmp tool, do not edit. / #include ”fh bitmaps inc.c” BITMAP fhas bitmaps = 0 x10, 0x10, 0x02, 0x00, 0 x0000f87e, 0 x00000014, 0x00000014, 0x00000028, addr Copy bits , 0 x10, 0x10, 0x02, 0x00, 0 x0000f87e, 0 x00000014, 0x00000014, 0x00000028, addr Delet ca

38、ncele bits , . /此处代码略去/ 0 x10, 0x10, 0x02, 0x00, 0 x0000f87e, 0 x00000023, 0x0000000e, 0x00000048, phone unhold bits , ; BITMAP fhbmps = fhas bitmaps; 6.1 位图转换工具21 fhas bitmaps 是一个全局的 BITMAP 类型静态结构数组,其中每个结 构分别对应于一个 fh bitmaps inc.c 文件中包括的图片数据。 fh bitmaps defs.h 文件中使用宏来定义了相关图片的 BITMAP 指针, 每一个宏代表一个 fh

39、as bitmaps 数组中的结构地址,这样就可直接在程序 中使用该名称引用图片了。 / FHAS phone edition bitmap resource ID defi nitions This fi leis generated automatically by dumpbmp tool, do not edit. / extern BITMAP fhas bitmaps; #defi ne ADDR COPY0 #defi nebmp addr Copy( fhas bitmaps+ADDR COPY) #defi ne ADDR DELET CANCELE1 #defi nebmp

40、 addr Delet cancele(fhas bitmaps+ADDR DELET CANCELE) . /此处代码略去/ #defi ne PHONE UNHOLD75 #defi nebmp phone unhold(fhas bitmaps+PHONE UNHOLD) #defi ne fhbmp number76 我们可以注意到, fh bitmaps defs.h 文件中对图片相应宏的命名方式 为:bmp 目录名 去掉后缀的图片文件名。如 addr目录下的 Copy.bmp 文件 转换后对应的宏为 bmp addr copy。 在 Fhas/main 目录下的 resource.

41、c 文件中包括了 fh bitmaps struct.c 文 件,在 Fhas/include 目录下的 internal.h 文件中包括了 fh bitmaps defs.h 文 件,这样就可以在 Fhas 工程中编译和使用这些转换后的图片了。 #include #include #include #include #include ”internal.h” #include ”/resources/res/fh bitmaps struct.c” 22嵌入式开发工具的使用 6.2国际化工具 一般来说,国际化是指把原来英文设计的计算机系统或应用软件改写 为同时支持多种语言和文件习俗的过程。在

42、软件创建的初期,一般的编程 语言,编译,开发都是只支持英文的,为了适应更广的语言和文化习俗, 软件有必要在设计结构和机制上支持多语言的扩展特性,这一过程称为 国际化,简单来说国际化仅仅是在软件设计上提供了使用多语言的可能。 在Fhas 中使用为嵌入式系统而修改的 GNU gettext 软件包来支持国际化 编程,基本概念和所使用的工具和原 gettext 软件是基本一致的。一般的 Linux 系统都安装有这一软件包,所以除了 msgfmt 以外的 gettext 工具都 可以使用 Linux 系统自带的版本。 6.2.1代码实现 首先 Fhas 工程中需要定义如下的宏: #defi ne (S

43、tring) fh gettext (String) #defi ne gettext noop(String) String #defi ne N (String) gettext noop (String) 然后代码中需要国际化转换的字符串使用 ()包含起来,如: (”Ok”); 非立即转换的情况如静态数组中可以使用N ()宏。 6.2.2字符串提取和转换 使用 Fhas 工程中的 build-message 脚本可以生成提取需要翻译的字符 串到一个 .pot 文件中: #!/bin/sh echo ”Begin to make message pot fi le for FHAS str

44、ing” xgettext o fh messages.pot keyword= keyword=N ime/.c profi le/.c menu/. c phone/.c wifi addrnew/.c main/.c m il /.c echo ”The pot fi le created for you is fh messages.pot ” echo ”Next, you should use fhmsgfmt tool to generated your mo fi le for FHAS” echo ”usage: fhmsgfmt fh message jp.pot mojp

45、.c” 该脚本首先使用 xgettext 工具,通过指定关键字为“ ”和“N ”,指 定输出文件名和需要提取字符串的文件名,最后生成待翻译的字符串模板 文件 fh messages.pot 。该文件的内容如下: 6.2 国际化工具23 # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGES COPYRIGHT HOLDER # This fi le is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fu

46、zzy msgid ” msgstr ” ”ProjectIdVersion: PACKAGE VERSIONn” ”POTCreationDate: 20040819 17:43+0800n” ”PORevisionDate: YEARMODA HO:MI+ZONEn” ”LastTranslator: FULL NAME n” ”LanguageTeam: LANGUAGE n” ”MIMEVersion: 1.0n” ”ContentType: text/plain; charset=GB2312n” ”ContentTransferEncoding: 8bitn” #: ime/ime

47、.c:236 msgid ”Input Menu” msgstr ” #: ime/ime.c:237 msgid ”Exit input” msgstr ” . msgid 是需要翻译的英文字符串,msgstr 是某语言的翻译后的字符串, 翻译人员需要把翻译后的字符串填入对应的 msgstr 中。注意,输入字符串 的编码必须为指定的编码格式。 Fhas 中对应于中文和日文的字符串 po 文件分别为 fh message zh.po 和 fh message jp.po 。 下一步需要把翻译后的字符串 po 文件格式化为编译时需要的 C 代码文 件,Fhas 中分别是 mo-zh.c 和 mo

48、-jp.c 。 $ fhmsgfmt fh message zh.pot mozh.c $ fhmsgfmt fh message jp.pot mojp.c mo-zh.c 的内容如下: static unsigned int zh hash table = 0, 99, 24嵌入式开发工具的使用 ., 12, 0, ; static char zh original strings = ”Address”, ”Address book”, . ”zero”, ; static char zh translated strings = ”通讯录”, ”通讯录” . ”GMT”, ; stru

49、ct msg domain Zh domain = ”zh”, 137, zh original strings , zh translated strings , 191, zh hash table ; zh original strings 和 zh translated strings 分别是英文原始字符串数组 和翻译后的中文字符串数组,zh hash table 数组定义了转换所需的哈希 表。 Zh domain 是一个 struct msg domain 类型的语言域结构,该结构定义 某种语言、该语言相关的字符串资源和转换所需的相关数据。 Fhas 工程中 intl 目录下的 mo.c 文件包括了所有语言的对应 mo 文件, 内容如下: #include #include #include #include #in

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1