




已阅读5页,还剩61页未读, 继续免费阅读
(计算机应用技术专业论文)大型遗留系统全球化的自动化方法研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学硕十学位论文摘要 摘要 由于历史原因,大多数应用于各行业的成熟软件系统都是基于英语语言文化 环境而开发的,随着经济全球化的深入发展,对这些遗留软件系统进行基于再工 程的全球化,实现其针对其他语言文化环境的本地化版本,具有巨大的现实意义。 对大型遗留软件系统进行基于再工程的国际化和本地化,需要解决两个问 题:对旧代码进行转换以使其支持国际化,常见的做法是使代码提供对l j n i c o d e 编码的支持;对本地化信息进行处理,主要是系统中文本的翻译。 目前业界实现代码转换的技术主要是手工式的,对大型系统而占,往往拥有 百万行甚至上千万行的代码量,如果对代码逐行进行手动分析和转换,不仅效率 低,而且出错率也是很高的。本文通过对代码空间按照是否能基于词法分析进行 自动化转换进行划分,提出了可疑代码的概念,通过对可疑代码进行预先处理, 实现了一种基于词法分析的自动化技术,对代码进行可疑识别、分析和自动转换。 该技术对系统代码进行两次扫描:第一次扫描解析出所有可疑代码并进行分析、 转换;第二次扫描进行基于词法分析的自动化转换以实现系统代码的u n i c o d e 化。 在本地化方面,本文采用了独立本地化资源的方法,将系统中的本地化信息 提取出来创建纯资源d l l ,实现了系统的多语言用户界面,并开发了一套自动化 工具用于实现本地化信息如硬编码字符串的自动化提取。同时,按照对质量的不 同需求将需翻译的资源进行划分:对数量庞大、翻译质量要求较低的用户文档等 采用机器翻译技术直接实现翻译;对数量相对较少、翻译质量要求严格的资源文 件,定义了一套自己的翻译流程,实现了专门针对用户界面、硬编码字符串等的 自动化翻译工具。 通过在一个拥有1 0 0 0 万行c c + + 代码的超大型金融软件系统上的实现和成功 应用,本文验证了这套技术的可行性和高效性。这些技术具有良好的应用价值, 可应用于各种大型系统以实现其国际化和本地化。 关键词:软件全球化,词法分析,可疑代码,硬编码字符串,机器翻译 浙江大学硕士学位论文a b s t r a c t a b s t r a c t t h ed e m a n df o ri n t e r n a t i o n a l i z e ds o f t w a r ep r o d u c t sa n dp r o d u c t sl o c a l i z e dt oa p a r t i c u l a rl a n g u a g ea n dc u l t u r a le n v i r o n m e n th a s a t t r a c t e dm o r ea n dm o r ea t t e n t i o n b e c a u s eo fb u s i n e s sg l o b a l i z a t i o n h i s t o r i c a l l y , s o f t w a r es y s t e m sh a v e b e e nd e v e l o p e d f o rt h e e n g l i s h s p e a k i n gc o m m u n i t y t h ei n t e r n a t i o n a l i z a t i o nf o rt h e s ee x i s t i n g s y s t e m sw h i c hw i l lp r o d u c en e ws y s t e m sc a t e rf o ro t h e re n v i r o n m e n t ,h a sg r e a t c o m m e r c i a lv a l u e t h ei n t e r n a t i o n a l i z a t i o na n dl o c a l i z a t i o nb a s e do nr e - e n g i n e e r i n g m a i n l yi n c l u d e st w os t e p s ,f i r s t ,m i g r a t i n gt h eo r i g i n a la n s is o u r c ec o d et ou n i c o d e , a n ds e c o n d ,t om i g r a t et h el o c a l e s e n s i t i v em o d u l e sa sl o c a l o n eo ft h eb e s tm e t h o d sf o rt h ec o d em i g r a t i o no f e x i s t i n gs o f t w a r es y s t e m si st o p o r tt h ec o d et os u p p o r tu n i c o d es t a n d a r dw h i c hi sac o m m o n l yu s e dc o d i n gs t a n d a r d u n t i ln o w , t h e r ei sn o t a n ya u t o m a t i ca p p r o a c hw h i c hc a l li m p l e m e n tt h ec o d e c o n v e r s i o ne f f i c i e n t l y i nt h i st h e s i s ,at e c h n i q u eb a s e do nl e x i c a ia n a l y s i si sp r o p o s e d t o m i g r a t et h ep r o g r a ma u t o m a t i c a l l yt ou n i c o d e t h es u s p i c i o u sc o d ec o n c e p t d i s t i n g u i s h e sb e t w e e nt h ec o d et h a tn e e d sa n a l y s i sb yc o n t e x ta n dt h ec o d et h a tc a nb e c o n v e a e dd i r e c t l yi nt h el e x i c a ll e v e l p a r s i n ga n dp r e - p r o c e s s i n gt h es u s p i c i o u sc o d e f i r s te n s u r e st h ec o r r e c t n e s so fa u t o m a t i cc o d ec o n v e r s i o nb yc o d ec o n v e r t e ri nt h e l e x i c a il e v e l t h em a i ni s s u ei st h ec o n s t r u c t i n go ft h es u s p i c i o u sr u l es e tw h i c hs h o u l d i n v o l v ea l lt h es u s p i c i o u sc o d ei nt h es y s t e m t h i st e c h n i q u es c a n st h ep r o g r a mc o d e t w i c e :d e t e c t i n g ,a n a l y z i n ga n dm a n u a l l yc o n v e r t i n gt h es u s p i c i o u sc o d ei nt h ef i r s t s c a n n i n g ,a n da u t o c o n v e r t i n gt h er e m a i n i n gc o d ei nt h es e c o n ds c a n n i n g t h i st h e s i su s e st h es a t e l l i t ed l l t e c h n i q u et oe x t r a c ta n do r g a n i z et h el o c a l i z e d r e s o u r c e sf o rt h el o c a l i z a t i o n ,i m p l e m e n t st h em u l t i l i n g u a lu s e ri n t e r f a c e ,a n dd e v e l o p s at o o l k i tf o rt h ee x t r a c t i n go fl o c a l i z e dr e s o u r c e ss u c ha sh a r d c o d i n gs t r i n g s o nt h e o t h e rh a n d ,a c c o r d i n gt ot h ed i f f e r e n tq u a l i t yr e q u i r e m e n t , w ed i v i d et h ed o c u m e n t s n e e dt ob et r a n s l a t e di n t ot w og r o u p s :t h eg r o u pi n c l u d i n gd o c u m e n t ss u c ha su s e r g u i d e l i n ew h i c h h a sl o wt r a n s l a t i o nq u a l i t yr e q u i r e m e n t , a n dt h eg r o u pr e q u i r e st ob e t r a n s l a t e dc a r e f u l l y t h ef i r s tr e s o u r c eg r o u pc a nb et r a n s l a t e db ya p p l y i n gm a c h i n e 浙江大学硕士学位论文 a b s t r a c t t r a n s l a t i o nw h i c hi sw i t hh i g he f f i c i e n c y a n df o rt h es e c o n dr e s o u r c eg r o u p ,t h i st h e s i s p r o p o s e sa t r a n s l a t i o np r o c e s s ,d e v e l o p sa na u t o m a t i ct r a n s l a t i o nt o o lt oi m p l e m e n tt h e a c c u r a t et r a n s l a t i o no fu s e ri n t e r f a c e s ,e x t r a c t e dh a r d - c o d i n gs t r i n g sa n ds oo n s e c u r i t y g mi sal a r g ef i n a n c i a la n a l y s i ss y s t e mw h i c hh a s10m i l l i o nl i n e so f c c + + c o d e a p p li e dt os e c u f i t y g m ,t h e s ek i n d so ft e c h n i q u e sw e r ep r o v e dt ob e a v a i l a b l ea n dh i g h l ye 币c i e n t w ef i n i s h e dt h ei n t e m a t i o n a l i z a t i o na n dl o c a l i z a t i o no f s e c u r i t y g ms u c c e s s f u l l y ,a n di m p l e m e n t e dac h i n e s ev e r s i o no ft h i ss y s t e m t h e s e t e c h n i q u e sc a nb ea p p l i e dc o m m o n l yt oc c + + s y s t e m sd i r e c t l y s o f t w a r eg l o b a l i z a t i o n ,l e x i c a la n a l y s i s ,s u s p i c i o u sc o d e , h a r d - c o d i n gs t r i n g ,m a c h i n et r a n s l a t i o n 浙江大学硕j :学位论文 图l 录 图目录 图2 1 基于再工程的软件同际化7 图3 1 第三方控件封装方式17 图3 2 自动代码转换器d f a 18 图3 3 自动代码转换器算法2 0 图3 4 可疑规则集g 的构造过程2 2 图3 5 基于词法分析的自动化代码转换过程。2 4 图4 1s e c u r i t y g m 系统代码转换流程图2 7 图4 2d e t e c t o r 源代码文件选择界面2 9 图4 3r e p l a c e r 代码转换器控制面板2 9 图4 4d e t e c t o r 查找规则配置文件3 6 图4 5r e p l a c e r 替换规则配置文件3 6 图4 6p r o j e c t s e t t e rt 程属性配置文件3 7 图5 1 多语言用户界面模型4 0 图5 2 纯资源d l l 加载类c m u l t i l a n g u a g e 代码4 3 图5 3 本地化工程流程图4 7 图5 4 机器翻译实现过程4 8 图5 5 本地化资源翻译的分类实现方法4 9 图5 6 自动化翻译_ t 具的翻译结果审查主界面5 2 图5 7 自动化翻译工具的翻译结果审查子界面一5 2 i v 浙江大学硕- 1 :学位论文表l j 录 表目录 表3 1 代码转换中对各种库的处理方法1 4 表3 2 摹本数据类型的通用文本映射1 5 表3 3 常用字符串数据转换函数1 5 表3 4 程序设计语言字母表的字符类划分。18 表3 5 基于语义分析和词法分析的方法比较2 2 表3 6 可疑代码识别器m 2 的性能分析2 4 表3 7 自动化代码转换技术整体性能分析2 5 表4 1 自动代码转换工具精确度分析3 8 表4 2 自动代码转换工具准确性分析3 8 表4 3 自动代码转换工具与手动转换方式效率对比3 9 表5 1 多语言用户界血各解决方案对比分析4 1 表5 2 两类翻译资源的特征分析4 8 v 浙江大学硕士学位论文第1 章绪论 第1 章绪论 1 1 研究动机 由于历史的原因,大部分软件系统都是针对英语语言文化环境特别是美国的 语言文化环境而开发的,通过实现基于软件再工程的国际化和本地化,只需花费 少量的工作就可以实现这些系统支持其他语言文化环境的新版本n 1 。随着商业和 技术的全球化,软件产品本地化的需求已经越来越强烈,对这些现存系统进行高 效可靠的国际化本地化,可大大降低软件开发的周期和成本,具有非常重要的经 济意义。a l v i ny e o 指出了推动软件国际化和本地化的诸多凶素以及深层次的原因 【2 】 发达国家早在六、七十年代开始,就有许多领域应用了计算机软件系统,到 八、九十年代开始达到顶峰,计算机软件系统在各个行业、各个领域的应用达到 很大的规模以至得到普及,这些系统大多采用传统编程语言进行开发。虽然现代 流行的高级编程语言如j a v a 、c j 6 等从语言本身上就支持u n i c o d e ,基于这些语言 的开发平台、各种组件、库等等也都支持进行国际化的开发,但是在八、九十年 代开发应用的软件系统大多是使用c 、c + + 等并不支持国际化的编程语言开发的。 因此,这些在八、九十年代或者之前应用的大量软件系统都不支持或不能很好地 支持国际化,对这些系统进行基于再工程的改造以直接实现其在其他语言文化环 境下的应用版本,可以大大缩小重新研发新的系统的软件开发周期,具有非常大 的经济意义。 我国软件的大量出现和应用始于9 0 年代,在通用领域方面的应用目前已非 常全面。但是在一些专业领域,随着一些跨国企业在国内设立分公司和办事处, 针对其业务的应用软件系统也需要其针对中文环境的版本。 现阶段对于软件国际化和本地化的研究已经很多并且很成熟了,但是大部分 研究都主要集中在首次开发的国际化上阳3 ,对现存的系统进行再工程以支持国际 化并实现本地化的研究并不多。而对于后者,大多数研究实现的方法都是基于手 浙江大学硕1 :学位论文第1 章绪论 动式的,对于实现通用的、自动化的、高效的方法的研究并不多。 本文针对以上需求的存在,通过对一个具有1 0 0 0 万行c c h 代码的大型金 融软件系统的分析和研究,定义了一个对遗留软件系统进行基于再工程的国际化 和本地化的基本流程,归纳出了一套对a n s i 代码进行转换以支持u n i c o d e 的自 动化方法,研究了其中的一些关键技术,还实现了一些进行软件本地化的技术。 给出了基于再工程的软件国际化和本地化的自动化方法“做什么”、“如何做”、“结 果如何”的研究内容。 1 2 研究要点 基于再工程的软件国际化和本地化主要包括两个方面的内容:对原始代码的 转换,使之可以支持国际化的应用,转换以后的代码不再需要修改、重新编译、 重新链接就能获得一个符合本地语言和地域习惯的本地化的软件版本,南于 u n i c o d e 编码的广泛应用,将旧代码直接转换成支持u n i c o d e 的代码是一个很好 的选择;本地化信息的处理,主要是代码中硬编码字符串的提取以及翻译、用户 界面的翻译、日期格式等的处理。 对于以上的两个主要问题,国内外已有不少研究的项目,研究成果已经比较 成熟。睁川中的这些研究分析了一些进行代码转换的原则和技术问题,提出了解 决方案,亦即是代码应该要转换成怎么样;而并没有提出怎么进行转换。对大型 系统来说,几十万行、上百万行甚至上千万行的代码,如果对代码逐行地进行手 动修改和转换以使其支持对u n i c o d e 字符串的处理,不仅效率低下令人难以接收, 而且手动转换的出错率显然也是非常高的,这利- 方式显然并不可取。本文通过对 大型软件系统s e c u r i t y g m 进行分析,研究了对遗留系统进行国际化、本地化的自 动化方法的关键技术,认为以下几点是技术研究的重点: 1 1 代码转换自动化的问题:实现一种自动化技术,解析出与字符数据处理、 编码格式相关的代码,并对其进行自动转换,以期实现高效率的代码转 换。 2 1 代码转换准确性的问题:基于形式化方法开发出的软件系统的代码可以 2 浙江大学硕j 二学位论文第1 亭绪论 基于严格的数学模型进行分析,但是目前的软件系统的代码并没有严格 的数学范式。因此任何对代码进行自动化分析的方法都不可能建立出严 格的数学范式,从而也不能保证分析的完全正确性,如何保证自动化代 码转换的准确性决定研究的成败。 3 1 本地化资源提取、翻译的问题:本地化过程也是一个复杂的过程,研发 一种自动化的本地化技术,自动实现本地化资源的提取和资源文件的翻 译,十分必要。 4 ) 工程化流程的定义:流程是软件工程最重要的3 p 之一,给出一个能直接 应用于所有系统的具有普适性的自动化流程,具有很大意义。 1 3 主要工作和创新点 在代码转换方面,本文实现了一种基于词法分析的自动化技术,对代码进行 可疑识别、分析和自动转换,以实现代码的自动转换。在软件本地化方面,实现 了进行自动化本地化信息处理的技术,包括本地化信息的自动化抽取、资源文件 的自动翻译两个主要方面。总结起来有以下创新点: 1 ) 在代码空间划分出可疑代码,将需要进行上下文语义分析的代码预先进 行处理,保证自动代码转换器对代码进行词法层面的转换的正确性。通 过保证可疑规则集对可疑代码覆盖的完整性,维护自动化代码转换的准 确性。 2 ) 根据对翻译质量的不同需求,将需翻译的本地化资源进行了划分:对数 量庞大、翻译质量要求较低的用户文档、用户手册等采用机器翻译技术 直接实现翻译;对数量相对较少、翻译质量要求严格的用户界面、硬编 码字符串等,实现了专门针对本地化信息处理的自动化翻译工具以保证 翻译的准确、合理。 3 ) 实现了包含从代码转换到本地化资源处理中各个环节的一整套自动化工 具和流程,保证了软件国际化、本地化的高效进行。 4 ) 本文提出的技术、方法具有一定的普适性,可直接应用于大型遗留系统 3 浙江大学硕1 :学位论文第1 章绪论 的国际化和本地化。 1 4 本文结构 本文共分六个章节。第一章是绪论,介绍了本文的研究动机、研究要点、主 要贡献和文章结构。第二章首先介绍了软件国际化和本地化的背景和基本概念, 综述了代码转换和本地化信息处理两个主要问题的各种相关技术,为之后的研究 和分析奠定基础。 第三章是本文的核心部分,主要在理论层面介绍基于词法分析的自动化代码 转换技术。首先阐述了对各种类型的代码进行转换的方法和原则,然后提出了改 造编译领域的词法分析技术的方法并实现了自动化代码转换器的算法,接着提出 了可疑代码的概念并给出了可疑代码规则集构造的原理,最后结合实验验证了该 自动化技术的可行性和有效性。 第四章在应用层面介绍自动化代码转换技术在大型金融软件系统中的应用。 结合具体的项目,给出了详细的代码转换的流程,介绍了自动化工具的实现细节, 并且分析了对各种形式的可疑代码的处理思想和处理流程。 第五章主要介绍本地化信息处理方面的工作。先介绍了多语言用户界面技 术,然后给出了在对s e c u r i t y g m 系统进行研究的过程中创建纯资源d l l 的实现 细节,接着介绍了自动化提取硬编码字符串的方法,最后研究了机器翻译技术并 提出了专门针对本地化信息处理的分类翻译方法,实现了自动化翻译工具。 第六章是对本文的总结以及对未来工作的探索。 4 浙江大学硕七学位论文第2 章软件国际化本地化技术概述 第2 章软件国际化本地化技术概述 2 1 软件国际化本地化介绍 2 1 1 软件全球化的基本概念 随着经济全球化进程的积极推动,在计算机软件设计技术口新月异、全球化 市场需求高速增长、软件项日在各大跨国公司大量应用的背景下,促生了全球化 软件开发行业的产生和高速发展,软件的全球化越来越引起人们的注意3 。 软件全球化包括两个基本内容:软件国际化和软件本地化。软件的国际化是 指将系统中的所有元素按照是否依赖于本地语言环境进行划分,使程序能轻易地 适应于不同的语言文化环境的软件开发或者软件再工程的过程,软件的国际化产 生可适应于多种语言环境的国际化软件n 1 。软件本地化是为一个或多个本地环境 开发一个程序的本地版本的过程。 乜1 介绍了软件国际化本地化需要解决的一些重要问题。n 2 3 根据程序的设计、 编译、链接以及运行时等四个维度提出了软件国际化和本地化的7 个模型,构建 在软件生命周期的不同阶段对软件进行国际化和本地化的方式。对软件国际化、 本地化的综合性的研究,可以参考专著酗刊。 具体地讲,软件国际化的目标是通过对系统、软件、服务和流程等的正确设 计和实现,使得用户能自如地与来自全球各地、不同的语言环境下、具有小同的 文化习俗的人们进行交流,需要考虑多语言、多国家或地区及多文化等方面的因 素。软件本地化的目的是使得软件能适应于特定的某个国家或者地区,包括翻译、 显示的本地格式化如时间日期的显示、符合本地化习惯的排序、大小写转换、数 字显示、货币符号的处理、人名地名的处理等等。 国际化侧重于提供同时服务于不同地区、不同语言和不同文化的产品,而本 地化则侧重于提供符合某种特定文化、语言的产品。 2 1 2 基于再工程的软件全球化 根据n 1 中的定义,软件的全球化可以分为两种:首次开发的全球化、对现存 浙江大学硕i :学位论文 第2 窜软件田际化本地化技术概述 系统基于再工程的全球化。首次开发的全球化是指软件系统本身具有全球可用 性,在开发的过程中就按照符合伞球化国际化的标准进行,程序的核心代码的设 计和开发不依赖于特定的某一种语言或者区域,不含有与特定语言文化环境相关 的因素,可以并且很容易实现本地化。基于再工程的全球化足指软件系统本身并 不具备全球可用性,通过对系统的代码进行分析、修改,将依赖于特定语言文化 环境的因素剥离出来,一般来说最好的办法是使其输入输出的数据支持u n i c o d e 编码标准,从而彻底实现全球可用性。 由于历史的原因,大部分软件系统都足基于英语环境而开发的,伴之以现今 全球化经济的发展,国际巨头加强了拓展国际化市场的力度,在国外大量设立跨 国分公司。以前应用于这些公司和行业的各种软件系统都是基于本地化环境开发 的,不具备全球可用性。对这些系统进行基于再工程的全球化,产生适用于别的 语言文化环境下的新系统,具有巨大的商业价值。 个人计算机在卜世纪9 0 年代末开始进入中国,软件行业也随之兴起并蓬勃 发展。在国外特别是美国,专业软件系统在上世纪8 0 年代就开始大量生产应用, 对这些系统进行再工程以实现一个中文版本,比基于中文环境重新设计、开发新 的系统所需要的工作量要小得多。针对中文环境的汉化从9 0 年代在中国开始出 现,现在已经有很多专门从事这项工作的企业,产生了巨大的经济价值哺1 。 这种基于再工程的软件国际化主要需要解决两个问题,如图2 1 所示:( 1 ) 对旧代码进行转换以使其支持国际化,主要是使代码的数据处理逻辑提供对 u n i c o d e 编码的直接支持:( 2 ) 对本地化信息进行处理,主要是系统中文本的翻 译。对于前者,晦3 提出了一个将c 语言代码从a n s i 转换到u n i c o d e 的方法,口3 分析了对特定的e r p 应用系统进行国际化转换的过程;对后者,本地化信息的处 理、文本的翻译等,可以参考文献例。 6 浙江大学硕1 :学位论文第2 章软件罔际化本地化技术概述 筠次开发的 全球化 l 软件嗣际心 软翻:本缝化 门飘行团 | 的全球化l | 代鹚转换 奉地化信息j 。处嫒 l 图2 1 基于再工程的软件国际化 2 1 3u n i c o d e 和独立本地化资源技术 在软件全球化的过程中,有两项技术起着重大作用,这两项技术分别对国际 化和本地化予以支持隋】: 1 1u n i c o d e 标准:u n i c o d e 编码技术主要解决了全球主要文字、符号的计算 机编码的技术问题。目前工业界存在着无数种针对不同的语言文化环境 的字符系统的编码标准,从编码长度来看,可以分作单字节编码、双字 节编码、多字节编码等,单就汉字而言就有g b 2 3 1 2 、g b k 、g b l8 0 3 0 、 b i 9 5 等多种实现。u n i c o d e 旨在实现统一表示和操作世界上所有书写系 统中的文字和符号,其最终目标在于逐步取代现有的各种编码标准。 u n i c o d e 标准以及其相关的研究可以参考n 1 7 3 。 2 1 独立本地化资源技术:将针对不同语言文化环境的本地化资源文件与源 代码分离,单独进行处理,便于产品的本地化。基于该技术,软件的国 际化实际上可以定义成足将语言文化相关的元素从软件系统中分离出来 的过程。 在工业界,微软和i b m 是最早开展软件国际化、本地化工作的公司,在国内, 这阿位软件业巨头几乎同时在上世纪9 0 年代初开始着手实现其软件产品的中文 版本,微软在9 0 年代初本地化产品的销售占整个公司利润的5 0 。微软针对自 己的w i n d o w s 、n e t 等平台提出了c o d e p a g e 、区域文化等概念,并提供国家语言 支持烈l s ) a p i 。针对w i n d o w s 平台下的软件国际化、本地化开发可以参考3 ,针 浙江大学硕i j 学位论文第2 章软件阳际化奉地化技术概述 对非w i n d o w s 平台如l i n u x 、j 2 e e 等平台的国际化、本地化软件开发可以参考1 。 2 2 代码转换技术 对只支持a s c i i 编码的软件系统进行基于再工程的国际化,首先需要对代码 进行转换以使其支持u n i e o d e 。j a v a 、c # 等新兴程序设计语言本身就提供对 u n i c o d e 的支持,因此代码转换问题主要涉及的是采用c c + + 等语言进行开发的 系统。目前业界在这方面的研究已经非常深入和详细,这里仅对本文所涉及到的 技术进行一些总结。 2 2 1 维护通用代码 在采用单字节编码字符的软件系统中,通常采用c h a r 数据类型表示字符,这 样一个字符一般占用一个字节的存储空间,然而如果采用u n i c o d e 或者宽字节编 码,情况则会不同。c 语言中的宽字符基于w c h a rt 数据型态,它在头文件中采 用t y p e d e f 定义,其数据型态与无符号短整数型态相同,是两个字节。 c 语言以大写字母l 打头的方式来表示宽字节字符数据,这将告诉编译器该 字符数据的每个字符占用2 个字节。常用的带有字符串参数的c 语言运行时库函 数一般都有对应的宽字符版本实现。例如计算字符串长度的函数s t r l e n 是用来处 理a s c i i 单字节编码字符串的函数,而w c s l e n 则是该函数的双字节版本,分别在 s t r i n g h 和w c h a r h 头文件中定义。 使用u n i c o d e 有两个主要缺点:( 1 ) 程序中的每个字符串都将占用两倍的储 存空间;( 2 ) 运行时库中的函数的宽字节版本比常规的函数大。 为了解决这两个问题,最好的解决办法是维护既能按a s c i i 编译又能按 u n i c o d e 编译的单一源代码文件n 纠9 1 。在w i n d o w s 平台下,可以使用m i c r o s o f t v i s u a lc h 包含的t c h a r h 头文件,该头文件不是a n s ic 标准的一部分,那里 定义的每个函数和宏的前面都有一个下划线。t c h a r h 为需要字符串参数的标 准运行时库函数提供了一系列的替代名称( 例如,t p r i n t f 和t c s l e n ) ,有时这些 名称也称为通用函数名称,因为它们既可以指向函数的u n i c o d e 版也可以指向非 8 浙江大学硕士学位论文第2 章软件陶际化本地化技术概述 u n i c o d e 版。 以t c s l e n 函数为例,如果定义了名为u n i c o d e 的标识符,并且程序中包含 了t c h a r h 头文件,那么t c s l e n 就将会被编译器解析成w c s l e n ,否则t c s l e n 将 会被解析成s t r l e n ,其定义如下: 群i f d e fu n i c o d e # d e f i n et c s l e nw c s l e n # e l s e # d e f i n et c s l e ns t r l e n # e n d i f 2 2 2 代码转换的实现步骤 对a n s ic c + + 代码进行u n i c o d e 化的主要难点在于字符数据类型、字符串 处理相关函数、字符串指针运算等方面。最直观的方法就是将字符数据类型全部 替换成其对应的通用数据类型,将所有函数调用替换成调用对应的通用函数版 本,参考哺 1 。针对w i n d o w s 平台的特点,主要需要从以下几个方面考虑: 1 1 将旧代码中的字符数据类型转换为通用字符数据类型。如将c h a r 替换为 t c h a r ,将l p s t r 、l p c h 替换为l p t s t r 、l p t c h ; 2 1 将旧代码中的字符处理相关函数转化为其通用类型。例如将s t r l e n 转化为 t c s l e n ,将s e t w i n d o w t e x t a 转化为s e t w i n d o w t e x t ; 3 1 将旧代码中的字符或字符串常量放到t e x t 宏中; 4 ) 将i 代码中的数据结构转化为通用版本。如果编写自己的宁符串处理函 数,或者带字符串参数的函数,就需要实现这些函数的u n i c o d e 版本, 并为它们创建一个通用版本; 5 1 调整指针算法。在计算字节数时( 例如,在为字符串分配内存时) ,把字 符串的长度乘以s i z e o f ( t c h a r ) ,而在计算字符数时,用字符串的大小除 以s i z e o f ( t c h a r ) ; 6 ) 修改所有假设一个字符的长度为一个字节的代码; 9 浙江大学硕士学位论文第2 章软件田际化本地化技术概述 7 ) 封装输入输出函数,以使其支持直接读写u n i e o d e 字符; 8 ) 修改原有编译过程,使得可以分别按照a n s i 、u n i c o d e 模式编译代码。 2 3 本地化信息处理 2 3 1 软件本地化过程 软件本地化目前已经形成一个发展成熟的行业。当前大约8 0 的软件产品是 在美国开发的英文产品,因此大多数情况下的本地化都是基于英文产品而产生其 对应的其他语言版本。一般来说软件本地化主要包括以下几个方面的内容陆3 : 1 1 分离本地化资源:把需要本地化的元素从系统程序的源代码中提取出来, 放在单独的资源文件中,包括硬编码在程序代码中的字符串、菜单、对 话框、工具栏、图像等等。 2 1 对资源文件的翻译:翻译的对象包括从代码中提取出来的字符串、用户 界面、帮助文档、使用手册等等,这里不仅包括简单的将内容从一种语 言转换到另一种语言,还经常需要转换文件格式类型。为了提高翻译的 质量和效率,经常需要采用翻译工具软件,另外还要遵循统一的专业术 语表翻译专业术语。 3 1 本地化桌面排版:各个国家和地区在出版方面的规范不尽相同,例如英 文按照字母排序,而中文则可依照拼音或者比划排序等,桌面排版的目 的是保证各种文档、界面符合当地人的阅读习惯。 4 、本地化工程:原系统的某些功能可能在特定的语言文化环境并不适用, 或者针对当地语言文化习俗需要新的功能,这需要对系统进行一定程度 的重建。 2 3 2 纯资源d l l 技术 纯资源d l l 技术是w i n d o w s 平台下的一种根据本地语言环境处理、加载本 地化资源的方法。资源d l l ( 通常也叫卫星d l l ) 用来存储翻译好的各种资源代 1 0 浙江大学硕士学位论文第2 章软件网际化本地化技术概述 码,可以根据操作系统的设置自动选择对应语言的资源d l l 版本,并且在应用程 序中自动生成一个菜单来,这个菜单包括了所有可供选择的语言并且允许用户改 变所选择的语言。这种多语言支持库只需对源代码进行很少量的修改,非常易于 使用n 饥2 。需要本地化的文字如字符串和数字等,被保存在r c 资源文件的s t r i n g t a b l e 中,包括了针对每一个本地化环境翻译后的版本。程序运行时采用l o a d s t r i n g 等函数将字符串加载到内存中,加载的字符串的值依赖于本地化模块进程。 在第一次运行的时候,多语言运行库会在应用程序的相关目录下寻找可用的 纯资源d l l ,产生一个可用语言的列表并且根据操作系统的设置默认选择一个, 然后加载对应语言的u l 资源,并且应用到应用程序中去。工具包将语言设置属 性保存到注册表中,用户就可以在程序自动生成的菜单中选择一种u l 显示语言。 这种纯资源d l l 技术有一个缺点:为了从一种语言环境切换的另一种语言环 境,应用程序必须重新加载d l l 文件,因此用户有可能需要重新启动软件系统。 2 3 3 软件本地化涉及的问题 软件本地化还涉及到很多方面的问题,这里简单列举其中一般情况下都需要 仔细考虑的几条: 1 1 排序:不同的语言会有不同的排序,有时候两种语言有相同的字符集, 但是其中的字符在语言中的排序位置却不同。在不同的国家、地区、文 化环境中会有不同的排序方法,如汉字就存在按比划、拼音排序的方式。 2 1 界面宽度:将文字从英文翻译到其他语言,通常会将其显示所需的长度 增加3 0 至u10 0 ,界面的大小可能需要作适当的调整。 3 1 时间日期格式:各国的时间、日期、数字、货币的格式都不尽相同,甚 至一个国家各地都存在几种不同的使用习惯。w i n d o w s 平台下的 g e t d a t e f o r m a t a p i 函数可以用于在c c + + 系统中将时间、日期根据本地 化信息进行格式化。 4 ) 文本方向:在大部分语言中,书写方向是自左向右的,但是在希伯来文 和阿拉伯文中却是自右向左的,这类语言称为双向语言。一般来说,针 浙江大学硕i 二学位论文第2 章软件同际化本地化技术概述 对这些地区进行本地化的软件界面是一般界面的镜像。 2 4 本章小结 对现存遗留系统进行基于再工程的软件国际化、本地化,产生适用于别的语 言文化环境下的新系统,具有巨大的商业价值。本章介绍了基于再工程的软件全 球化的两个主要方面的相关技术,介绍了代码转换的过程和维护通用代码的方 法,同时给出了实现软件本地化的流程、以及实现独立本地化资源的纯资源d l l 技术。 1 2 浙江大学硕j 二学位论文第3 章自动化代码转换技术的研究 第3 章自动化代码转换技术的研究 前面一章介绍了基于再工程的软件国际化的代码转换的原则和技术,解决了 代码应该要转换成怎么样的问题,但是并没有提到怎么进行转换。目前的代码转 换技术主要是手工式的,对大型系统而言,往往拥有几十万行、上百万行甚至上 千万行的代码量,如果对代码逐行地进行手动分析和转换,不仅效率低下难以令 人接受,而且手动转换的出错率显然是很高的。本章将介绍种基于词法分析的 自动化技术,对代码进行自动分析和转换,提供了一种实现软件国际化的高效可 行的方法。 3 1 代码转换原则 一般来说,对英文环境下的单字节版本的系统进行u n i c o d e 化以实现国际化 和本地化,需要转换的代码主要是与字符、字符串处理相关的。这些代码有些不 区分c h a r 和b y t e ,有些不区分字符串的长度和字节数,有些进行字符、字符串指 针运算等等。对于处理这些代码需要遵循的原则可以参考文献阳l8 1 0 3 ,本节将结 合对s e c u r i t y g m 系统的研究,介绍对该系统实现代码转换的整体过程中所应用的 技巧和方法。 3 1 1 对各种库的转换方法 s e c u r i t y g m 系统在7 0 年代首次使用c 语言开发,随着工业界和软件行业的 发展,在其后的很多年内逐步使用过如c o m 、a t l 、m f c 、s t l 等等诸多技术 进行升级换代。其内部使用和实现了相当多的技术,内部结构也异常的复杂。 对系统中使用的库和第三方控件,可以按照是否直接提供对u n i c o d e 的支持 分为两类:一类如标准c r t 、m f c 等,直接提供对u n i c o d e 的支持;另一类如s t l 中的一些类、第三方控件等,并不直接提供对u n i c o d e 的支持,而只支持对m b c s 字符串的处理。对使用这些库和第三方控件的代码的处理方法如表3 1 所示: 浙江大学硕i :学位论文第3 章自动化代码转换技术的研究 表3 1 代码转换中对各种库的处理方法 库类型处理方法 c r t 、m f c 使用通用版本,因为它们提供对o n i c o d e 的支持 s t l 封装,并且提供一个通用接口 w i n d o w sa p i 使用通用版本 输入输入函数、类 封装,使其支持输入输出o n i c o d e 字符 第三方控件 使用w r a p p e r 进行封装 3 1 2 通用数据类型、函数映射 标准的c 语言运行时库、m f c 库以及大部分常用的w i n d o w sa p i 函数现在都 有单字节和宽字节的两个版本,一般来说,对应的宽字节版本就提供对u n i c o d e 的支持。为了利用m f c 、c r t 等对u n i c o d e 的支持,需要:( 1 ) 在程序中定义编 译常量u n i c o d e 、u n i c o d e :( 2 ) 为w i n d o w s 程序指定程序入口为 w w i n m a i n c r t s t a r t u p ;( 3 ) 将所有数据类型和函数都转换为调用其通用版本。 通用文本映射( g e n e r i ct e x tm a p p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质量检验标准手册
- 德语甄别考试题及答案
- 老人护理考试题库及答案大全及答案
- 智能制造领域承诺书(7篇)
- 企业人力资源规划与招聘标准化流程
- 售后服务维修流程标准化作业手册
- 周末日记记录生活点滴11篇范文
- 环境保护工作承诺保证承诺书9篇
- 工业品质量控制标准及检测模板
- 不锈钢板材采购协议
- 研究生新生入学教育课件
- 2024年国家电投集团黄河公司招聘笔试参考题库含答案解析
- 航海英语会话(一)
- 道路工程安全技术交底
- 高三数学备课组高考数学经验总结
- 鼎捷T100-V1.0-票据资金用户手册-简体
- 城乡规划管理与法规系列讲座城乡规划的监督检查
- 第一单元知识盘点(含字词、佳句、感知、考点) 四年级语文上册 (部编版有答案)
- 钻井工程钻柱课件
- 小学硬笔书法课教案(1-30节)
- 周口市医疗保障门诊特定药品保险申请表
评论
0/150
提交评论