多语言应用程序的开发课件_第1页
多语言应用程序的开发课件_第2页
多语言应用程序的开发课件_第3页
多语言应用程序的开发课件_第4页
多语言应用程序的开发课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多语言应用程序的开发,计算机应用系钟芸龙2009年11月13日,DevelopmentofMultilingualApplication,1,PPT学习交流,背景,随着计算机技术的快速发展,软件的交流越来越频繁,软件界面并不仅仅局限于同一种语言让软件界面支持多种语言已成为软件开发人员不可回避的一个问题本次seminar将介绍开发多语言应用程序时的一些基本概念,工作焦点,相关标准以及解决方案,并演示一个开源的多语言化解决方案GNUGettext,2,PPT学习交流,基本概念:i18n,internationalization之略,一般译作国际化将软件与特定语言及地区脱钩的过程与程序开发人员关系紧密对一个产品只需做一次i18n意味着软件有适用于任何地区的“潜力”,3,PPT学习交流,基本概念:l10n,localization之略,一般译作本地化将软件与特定语言及地区挂钩的过程与翻译人员联系紧密需要对特定语言都要做一次,所以有可能不止一次本地化则是为了更适合于特定地方的使用,而另外增添的特色,4,PPT学习交流,i18n+l10n=?,5,PPT学习交流,答案1,i18n+l10n=g11n,i.e.globalization两者合起来称为“全球化”是IBM和微软等商业公司的叫法,6,PPT学习交流,答案2,i18n+l10n=nls,nativelanguagesupport两者合起来称为“本地语言支持”是开源项目的叫法,7,PPT学习交流,本地化的工作焦点,界面文字(工作量最大的部分)时间日期、货币和度量衡等书写排版习惯更高文化内容层次前二者可通过下面介绍的gettext来完成,而第三项可通过pango完成,第四项则需要对软件本身进行特定的修改,8,PPT学习交流,相关语言标准:ISO639-1,是ISO639标准的第一部分使用两位小写字母表示世界上的主要语言一共规定了136个示例:汉语:zh英语:en德语:de法语:fr日语:ja俄语:ru阿拉伯语:ar葡萄牙语:pt西班牙语:es意大利语:it,9,PPT学习交流,相关地区标准:ISO3166-1,是国际标准ISO3166的第一部分为每个国家和地区各分配一个二位大写字母代码、一个三位大写字母代码和一个三位数字代码(联合国统计局建立)共有244个二位大写代码示例:中国大陆:CN中国台湾:TW中国香港:HK中国澳门:MO新加坡:SG美国:US英国:GB加拿大:CA澳大利亚:AU,10,PPT学习交流,ISO639-1与ISO3166-1联合表示,通常用来表示计算机区域设置ISO639-1中的二位小写字母与ISO3166-1中的二位大写字母中间用下划线连起来如:中国大陆的简体中文:zh_CN中国台湾的繁体中文:zh_TW中国香港的繁体中文:zh_HK美国英语:en_US英国英语:en_GB另外可加上编码,如zh_CN.GB18030,11,PPT学习交流,国际字符集标准:Unicode,由Unicode协会制定,Unicode协会的成员包含IBM,微软,苹果,惠普,Adobe和施乐等IT巨头与ISO/IEC10646(UCS)互相补充主要使用的是其BMP部分BMP=BasicMultilingualPlane即基本多文种平面,其它罕见的字符则位于辅助平面中在BMP中的Unicode字符一般表示方法:U+XXXX(XXXX是对应的十六进制表示)Unicode的在计算机中的编码方案称为UTFUTF=UnicodeTranslationFormat或者UnicodeTranformationFormat,12,PPT学习交流,国际编码标准之一:UTF-16,Unicode的默认编码标准,通常所说的Unicode编码即是UTF-16编码根据高位在前或在后的区别,可分为UTF-16BigEndian与UTF-16LittleEndian大多数机器使用UTF-16LittleEndian为了确定Unicode编码的文本文件的字节顺序,可在文件最前面加上两个字节的字节序标记,这个标记称为BOM,BOM=ByteOrderMark两种字节序对应的BOM如下BigEndian:0 xFEFFLittleEndian:0 xFFFE,13,PPT学习交流,国际编码标准之二:UTF-8,UTF-8是Unicode的一种变长编码标准比UTF-16使用更广泛主要由UNIX兼C语言兼著名弈棋机Belle的作者,贝尔实验室大牛人KenThompson所设计,14,PPT学习交流,国际编码标准之二:UTF-8,最初源于1992年X/Open对Unicode的更佳编码系统的追求当时正在贝尔实验室开发Plan9操作系统的KenThompson和RobPike两人对此很感兴趣,他俩在NewJersey的一个餐车的餐桌垫上设计了UTF-8的设计要点对X/Open的最初设计做了重大修改,并回馈给X/Open已标准化为RFC3629,15,PPT学习交流,国际编码标准之二:UTF-8,一般英文字母用一个字节拉丁文、阿拉伯文、希腊文等用两个字节汉字等BMP中的字符用三个字节Unicode中辅助平面中的字符则用四个字节甚至六个字节优点与缺点(与UTF-16相比)优点:节省了存储空间缺点:变长编码,处理不便在多语言应用程序中,UTF-8通常是首选是XML等标准格式的默认编码,16,PPT学习交流,补充:中国大陆的本地编码,最早的标准是1980年公布的GB2132,或称之为GB2312-1980,包含了六千多个常用汉字和日文中的平假名与片假名等符号,但不包含繁体中文1995年,GBK标准加入了繁体汉字的支持,共有两万多个汉字,17,PPT学习交流,补充:中国大陆的本地编码,2000年,国家质监局公布了最新的汉字本地编码标准GB18030是目前包含汉字最多的(达七万多个)编码在GBK基础上增加了少数民族文字和罕见汉字变长字节编码,字符可能由1,2,4个字节表示是纯中文应用的首选GB2312,GBK,GB18030统称GB系列基本向上兼容,GB是“国标”的拼音缩写另外新加坡也是使用GB编码,18,PPT学习交流,补充:中国其它地区的本地编码,港台地区主要使用Big5码,其得名于台湾13家厂商推出的“五大中文处理套件”产生于1984年,共收录一万三千多个汉字产生之初只是业界标准而不是官方标准,但由于影响深远,所以目前已成台湾地区的官方标准,称为Big5-2003由于编码与ASCII编码中的控制字符有冲突,故有所谓的“许功盖”问题,19,PPT学习交流,补充:西欧国家标准Latin1,学名ISO8859-1,Latin1是其俗称涵盖了许多西欧国家的字母,如德语中的变元音字母、等,低位部分与ASCII相一致使用八位(一个字节)来表示一个字母被许多软件产品默认使用,如Qt,SDL_ttf,Tomcat等并没有涵盖全部的欧洲国家文字,所以还有Latin2(中欧语言),Latin3(南欧语言)、Latin4(北欧语言),Latin5等等,20,PPT学习交流,多语言的解决方案:硬编码,将翻译信息放到程序代码中,灵活性差一旦需要修改翻译,需要重写代码完全没有使用任何国际化机制强烈不推荐,21,PPT学习交流,多语言的解决方案:资源文件,将可翻译的文本信息放在资源文件中可翻译文本作为字符串资源程序从资源里提取信息修改翻译需要重新链接资源徐晓涛同学参与翻译的HOI游戏就是使用的这种方法,这也是很多Windows平台程序常使用的方法,22,PPT学习交流,多语言的解决方案:编译翻译文件,提供编译好的翻译文件,程序运行时根据计算机的区域设置加载对应的翻译文件,下面介绍的gettext解决方案就属此类这是开源软件里普遍使用的方案,被GNU的大部分软件和KDE、Gnome和XFCE等桌面程序所使用,23,PPT学习交流,多语言的解决方案:纯文本翻译文件,直接使用纯文本的翻译文件,Maxthon、Opera还有Safari就是使用的这种方法,但是性能上有一定的损失纯文本的文件有可能是如Maxthon使用的ini格式,也可能是与应用软件本身直接支持的语言所包含的数据表,如Safari就是用的JavaScript脚本最灵活的一种方案,文本文件的格式也是五花八门,24,PPT学习交流,GNUGettext简介,在开源软件中广泛使用,是开源软件中最主流的多语言解决方案本身使用C语言实现,但提供了相当多的语言绑定,如Perl,Ruby,PHP等,因此可以用于其它语言写的程序,甚至是网站提供了一系列命令行工具辅助工作其开放的PO格式已有大量图形界面编辑软件的支持,如KDE下的KBabel,Gnome下的Gtranslator和跨平台的POEdit等总结:成熟、稳定、强大,使用也不复杂,25,PPT学习交流,具体实例:kdbg,kdbg:在KDE环境中的gdb的GUI前端作者为JohannesSixt,我的翻译文件已并入最新版的源码中,26,PPT学习交流,具体实例:klatexformula,klatexformula:KDE环境中通过LaTeX表达式直接生成高质量数学公式图片的工具,27,PPT学习交流,具体实例:Qucifer,Qucifer:基于QtforEmbeddedLinux的嵌入式音频播放器,使用的是Qt提供的翻译机制,纯文本翻译文件是用基于XML的TS格式,二进制是使用QM格式,翻译工具为QtLinguist,28,PPT学习交流,使用gettext为软件提供多语言支持,在源文件中使用gettext函数动态获取可翻译文本用xgettext工具从源文件中将需要翻译的文本提取生成纯文本翻译文件(po格式)用po格式的编辑器(任意文本编辑器皆可,我通常使用KBabel)翻译对应文本用msgfmt工具将纯文本的翻译文件编译成二进制格式(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论