通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> C#语言 >> 基础教程 >> 文章正文

C++ Builder 国际化应用程序(1)
责任编辑:admin   更新日期:2005-8-6
第11章 创建国际化的应用程序
本章讨论如何编写计划发布到国际市场的应用程序。通过预先计划,能减少大量时间和代码开销,而使应用程序能如同在国内市场一样在国外市场工作。

11.1 国际化和本地化
要创建能发布到国外市场的应用程序,需要施行两个主要的步骤:
· 国际化。
· 本地化。
若你的C++Builder的版本包括综合的翻译环境(IntegratedTranslationEnvironment,ITE),就可使用ITE管理本地化。参见ITE的联机帮助(ITE.hlp)可获得更多的信息。

11.1.1 国际化
国际化是使程序能够在多个国别工作的进程。国别是指用户的环境,包括目标国家的文化习惯和语言。Windows支持一个国别的集合,它们通过语言和国家两个信息说明。

11.1.2 本地化
本地化是翻译应用程序以使其可在特定国别工作的进程。除了翻译用户外,本地化还包括功能的定制。例如,金融方面的应用程序应根据不同国家不同的税法而修改。

11.2 国际化应用程序
创建国际化应用程序并不困难。需要完成下列步骤:
1) 必须使代码能够处理国际字符集的字符串。
2) 需要设计用户界面以便能够适应本地化的改变。
3) 应把所有需要本地化的资源独立出来。

11.2.1应用程序代码
必须保证应用程序的代码能处理各个目标国别的字符串。
1.字符集
美国版的Windows使用ANSILatin-1(1252)字符集。然而,其他版本的Windows使用不同字符集。例如,日本版的Windows使用Shift-Jis字符集,它使用1或2字节字符编码来代表日文字符。

2.OEM和ANSI字符集
有时有必要在Windows字符集(ANSI)与由用户的机器编码页确定的字符集(称为OEM字符集)之间变换。

3.双字节字符集
亚洲使用的表意文字字符集不能使用语言字符和一个字节(8bit)的char类型之间简单的1:1映射。这些语言有太多无法使用1字节char类型表示的字符。所以,字符以1和2字节混合编码来表示。每个双字节字符编码的第一个字节都来自特定的字符集的保留的范围中。

第二字节有时会和单独的1字节的字符编码一样,或者会落在为双字节字符的第一字节保留的范围中。这样,要区别一个字符串中的一个特定的字节是代表单个的字符或一个双字节字符的一部分,唯一的方法是读字符串,从头开始分析,当遇见保留范围中的字节时,把它作为双字节字符的一部分。

当为亚洲国别编写代码时,必须确定使用可分析字符串为1或双字节字符的函数来处理所有的字符串操作。参见联机帮助中的“国际化API”可获得一张可处理多字节字符的RTL函数列表。

记住字符串的字节长度不一定对应于字符串的字符数。截断字符串小心不要把一个双字节字符切成两半。不要把字符作为一个参数传递到函数或过程,因为字符的大小事先并不能知道。应总是传递字符或字符串的指针。

4.宽字符
处理表意文字的字符集的另一种方法是把所有的字符转换为宽字符,如Unicode编码方式。宽字符用两个字节替代一个字节,以便字符集能表示更多不同的字符。使用宽字符编码方式有不少优点,如可以使用MBCS系统不能处理的对字符串的许多通常假设。在字符串的字符数和字符串的字节数之间有直接的关系。不需要担心把字符切成一半或错将一个字符的一半当成另一个字符的开始。使用宽字符的最大的不利条件是Windows95仅支持很少的宽字符API函数调用。

所以,VCL组件使用单字节或MBCS字符串表示所有的字符串值。若每次设置字符串属性或读它的值时要在宽字符系统和MBCS系统之间转换,这会需要数量惊人的额外代码开销,并会使应用程序变慢。然而,处理一些特殊的
字符串算法时会需要利用在字符和宽字符之间1:1映射的优势,而将字符转换为宽字符。参见联机帮助种的“国际化API”获得可用于处理Unicode字符的RTL函数列表。

5.在应用程序中包括双向功能
有些语言不像西方语言通常按从左到右顺序阅读,而是文字从右读到左,数字从左读到右。这些语言因为这种分别而被称为是双向的(BiDi)。最普通的双向语言是阿拉伯语和希伯来语,其他的中东语言也是双向的。

TApplication有两个属性:BiDiKeyboard和NonBiDiKeyboard,它们允许指定键盘布局。另外,VCL通过BiDiMode和ParentBiDiMode属性支持双向的本地化。表11-1列出了有这些属性的VCL对象:



注意 THintWindow获取激活提示的控件的BiDiMode。

双向属性
表11-1列出的一些对象有BiDiMode和ParentBiDiMode属性,这些属性与Tapplication的BiDiKeyboard和NonBiDiKeyboard属性一起,支持双向的本地化。


6.BiDiMode属性
BiDiMode属性是新的枚举类型,TBiDiMode包含4个状态:bdLeftToRight、bdRightToLeft、bdRightToLeftNoAlign及bdRightToLeftReadingOnly。

(1)bdLeftToRight
bdLeftToRight使用从左到右的顺序写文本,并且排列和滚动条不改变。例如,见图11-1,当输入从右到左的文本时,如阿拉伯语或希伯来语,光标变为压下模式且文本从右到左输入。拉丁文,如英语或法语,从左到右输入。bdLeftToRight是缺省值。
(2)bdRightToLeft
bdRightToLeft使用从右到左的顺序写文本,同时排列被改变并且滚动条被移动。正常时文本输入为从右到左以适应right-to-left语言,如阿拉伯语或希伯来语。当键盘被改为拉丁语时,光标变为压下模式,并且文本从左到右输入,见图11-2。


(3)bdRightToLeftNoAlign
bdRightToLeftNoAlign使用从右到左的顺序写文本,排列没被改变但滚动条被移动,见图11-3。


(4)bdRightToLeftReadingOnly
bdRightToLeftReadingOnly使用从右到左的顺序写文本,排列和滚动条都不改变,见图11-4。

 
  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程