http://www.ciotimes.com/export/sites/default/lifecycle2/development/development201003021615.html
开发一个完善的国际化应用程序四个建议
http://www.ciotimes.com 2010-03-03 来源:IT专家网 作者:swing
导读:要开发一个完善的国际化应用程序,具有一定的难度。由于地域因素、语言要求、文化差异等等使得不同的国家对同一个业务也有不同的认识。换句话会说,就是在一个系统中要根据不同国家的需要实现不同的流程与界面。
关键字:开发 程序开发
随着网络的发展,地球是平的这个观念逐渐得到验证。这对于信息化管理软件的开发也提出了新的要求。由于企业业务的跨国发展,使得应用程序也必须满足国际化发展的需要。也就是说应用系统需要在全球范围内访问使用。不过从笔者的亲身经历来看,要开发一个完善的国际化应用程序,具有一定的难度。由于地域因素、语言要求、文化差异等等使得不同的国家对同一个业务也有不同的认识。换句话会说,就是在一个系统中要根据不同国家的需要实现不同的流程与界面。这虽然比较简单,只是工作量增加而已。但是难点在于如何将这些不同的流程与界面统一起来。因为他们毕竟是相同的业务,只是表现的形式不同而已。对此笔者有如下四个建议供大家参考。
建议一:Java环境中越早考虑国际化需求越好。
在其他的一些开发环境中,国际化需求经常是在开发后期才需要考虑的问题。但是笔者认为,对于一个已经接近开发完成的系统进行国际化的过程是一项非常繁琐的工作,需要增加许多额外的二次开发。特别是对于Java开发环境来说,更是如此。
这主要是因为国际化工作会影响到J2EE应用程序的每一个层次,即这是一个体系结构方面的问题。有时候为了满足某个国际化需求,还不得不大动干戈,调整系统的体系架构。而调整体系架构之后,又需要额外的测试等等。周而复始,工作量会增加好几倍。故笔者建议,在实现国际化需求的过程中,开发人员最好是在一开始设计开发应用程序的时候就考虑到国际化的需求。如此的话,会将问题简化许多。笔者在建议二中将谈到语言问题,会对这个进行展开。换句话说,在应用系统需要处理多个局部因素的时候,项目设计阶段也就应该定位并分离局部因素之间的依赖性。
建议二:多语言环境是国际化软件的基础需求。
对于国际化应用系统来说,通常会面对来自不同国家的用户,他们会使用不同的语言。即通常所说的多语言环境。这个说起来简单,但是做起来就比较困难。如系统中涉及到的所用窗口、报表、流程,包括窗口中的内容都需要支持多语言。举一个简单的例子。现在某个企业的应用系统,有三个用户,分别为美国人、日本人与中国人。那么系统就可能需要提供英语、日语、汉语三种语言。为此系统必须要用有不同的界面对应于不同的用户。可是如果为每个语言单独设置界面的话,那么工作量就会随之增加。而且灵活性也不好。如果再增加一个德国用户,难道再为其开发一套界面吗?显然这并不是很好的处理之道。
笔者认为,这比较好的方式就是通过字段元素来完成。无论是窗口还是报表,都是有一个个字段构成的。在系统设计的时候,可以在字段之上再增加一个元素层面。也就是说,元素构成字段、字段再组成窗口或者报表。在元素的时候,就对每个字段进行多语言化。如现在有一个字段ProductValue。在元素层面,就给这个字段进行翻译,如分别使用日语、汉语进行关联。然后用户在系统登陆的时候,可以选择自己需要使用的语言环境。等到打开系统之后,相关的界面就会根据用户选择的语言来显示。如果用户选择中文的话,那么相关窗口的内容都是以中文表示的。这主要的功劳就是归根于元素层面的语言定义。
这么设计有一个好处,如果要多增加一种语言,如需要增加德语。不需要额外的设计一套界面。而只需要在元素层面对每个字段进行翻译即可。翻译完成之后,导入到系统中。然后在登陆时选择德语,那么相关的界面就会自动以德语显示。笔者认为,至少到目前为止,这种设计方式是比较合理的。不但灵活性高,而且工作量也不大。不过这种方式要求在应用程序设计的时候就需要考虑国际化方面的需要。
建议三:根据需要选择合适的字符集。
有过Oracle数据库系统部署经验的用户大概都知道,在其安装过程中会让用户选择合适的字符集。如果字符集选择不合适,如在中国大陆使用,选择的是ASCII字符集,那么显示的中文内容就可能会有乱码。故在开发国际化应用程序的时候,为系统选择合适的字符集至关重要。
如ASCII字符集是最常见的用来表达美式英语的字符集合。ASCII码中包括大写和小写的罗马字符、阿拉伯数字、标点符号、控制字符和其他的一些符号。虽然其对美式英语很友好,但是却不能够很好的支持其他语言,如汉语或者日语等等。在这方面已经有前车之鉴。如许多早期的互联网协议都是基于7位ASCII编码而实现的,这导致了在很长一段时间内,Web应用系统很难支持美式英语之外的其他语言,包括英国英语。一直到现在,不少开发人员还深受其影响。
为了能够让字符集支持尽量多的语言,笔者建议最好采用Unicode字符集。这个字符集采用了21位的代码定义了一个标准化的通用字符集。在Java开发环境中,支持16位的Unicode编码来表示字符和字符串对象。为此使用Java编写的应用程序就可以处理多种语言书写和程序数据,并致词能够一定的基于本地化特性的操作,如进行字符串比较等等。
建议四:本地化与国际化之间的均衡。
与国际化相对而言,还有一个本地化。本地化就是指将一些国外的软件,进行一定的更改,以适合国内使用。其实从大的方面来讲,这也是国际化需求中的一项内容。到目前为止,任何一个国际化的应用软件,包括Oracle ERP等软件巨头,其开发的系统在国内使用,也有一个本地化的过程。任何开发人员都不能够避免这项工作。现在的问题是,如何让这项本地化的工作变得更加的简单?
如对于上面讲到的语言这个例子。如果软件增加了一个德国用户,需要增加德语环境。如果再去设计一套界面显然不合理。而如果只需要对相关的字段进行翻译,然后通过导入工具导入到系统中,就可以完成德语显示的需要。显然这工作量会减少许多。开发人员只需要设计一个语言集的导入工具即可。然后有专业人员对相关元素进行翻译,再导入系统即可。
再如流程控制方面。由于文化背景、经济环境的差异,客户进行交易的方式可能是不同的,如业务流程等等。如对于销售订单的交付方式而言,有强制(不管订单对应的生产订单是否完成或者是否有库存)、完成行(只要订单中有一行完成就可以部分交货)、完成订单(必须订单中所有的行完成才可以交货)、付款以后(客户付款后交货)等等。不过的国家、不同的行业对此有不同的需求。此时如果能够结合工作流模块来进行本土化的工作,显然会很便利。因为本土化过程中,不需要进行源代码的开发调整,而只需要对流程进行重定义即可。这就好像是拼图那么简单。
所以国际化应用程序并不是说其可以不经过任何修改就可以在不同的国家使用。如果确实需要进行本地化的过程,那么这项工作如果能够变得简单,也是可行的。
分享到:
相关推荐
应用程序国际化,特别是针对iOS平台的国际化,是一项至关重要的任务,它允许开发者构建的应用程序能够适应全球用户的不同语言和文化需求。iOS国际化不仅涉及到文本翻译,还包括日期、时间、数字、货币格式以及图像和...
在开发跨地域的应用程序时,实现国际化(Internationalization,简称i18n)是一项重要的任务。Qt库提供了强大的支持,使得Qt应用程序能够轻松地适应多种语言环境。本篇将详细介绍Qt应用程序国际化的步骤,以及如何...
### Android开发指南中文版——应用程序框架 #### 一、应用程序基础(Application Fundamentals) 在Android开发中,应用程序的基础架构包括以下几个核心部分: ##### 关键类 Android应用的核心是几个关键类: 1. *...
本教程将详细介绍如何利用Swift 4.0彻底实现应用的国际化,包括App名称、字符串资源以及图片资源的国际化,并提供一个Demo演示了如何在程序内实现语言切换功能。 一、国际化基础 国际化不仅仅是翻译文本,它涉及到...
### 嵌入式Linux应用程序开发标准教程知识点详解 #### 一、嵌入式Linux基础知识概览 **1.1 嵌入式Linux简介** 嵌入式Linux是一种基于Linux内核的操作系统,广泛应用于嵌入式设备中。随着技术的发展,越来越多的...
我们可以使用 Resources 来加载应用程序的资源,并使用它来实现国际化和本地化。 4. Intent Intent 是 Android 应用程序之间的通信机制,用于请求其他应用程序或系统服务执行某些操作。我们可以使用 Intent 来启动...
1. **可视化开发**:WebSphere Studio 提供了一个可视化的界面,允许开发者通过简单的拖拽操作将JSF组件添加到JSP页面中。这种直观的方式有助于加快开发速度,并降低学习曲线。 2. **快速应用程序开发(RAD)**:...
1. **国际化(Internationalization)**:通常缩写为i18n(取首字母i和末尾字母n之间有18个字符),指的是设计和开发能在不同的语言和文化环境中运行的应用程序的过程。 2. **本地化(Localization)**:通常缩写为l10n...
在iOS应用开发中,国际化(Internationalization)是一个重要的特性,它允许你的应用程序支持多种语言,以便全球用户可以使用他们的首选语言来与应用交互。本文将深入探讨如何在iOS应用中实现国际化,特别是如何实现...
在Android应用开发中,国际化的实现是一个重要的环节,它使得应用程序能够支持多种语言,从而吸引全球范围内的用户。本项目“Android国际化Demo”是基于Android Studio构建的一个实例,旨在展示如何实现在Android...
"react-i18nize"是一个强大的工具,它可以帮助开发者快速、高效地实现React应用的国际化。这个工具的核心理念是通过绑定i18n查找和替换,消除代码中的硬编码字符串,使得应用程序的语言可以根据用户的偏好动态切换。...
标题中的“一个应用程序框架,您可以将它集成到任何.NET/C#应用程序中”指的是Furion框架,这是一款专为.NET开发者设计的高级开发框架。Furion的目标是简化.NET/C#应用的开发流程,提高代码复用性,并促进开发效率。...
在Android应用开发中,国际化的实现是一个重要的环节,它使得应用程序能够支持多种语言,从而吸引全球用户。"Android-Android国际化文档整理xml和excel互转"项目主要关注如何方便地管理和转换Android应用中的本地化...
在Android应用程序设计中,开发者需要掌握一系列技术和工具来创建功能丰富的移动应用。本主题主要聚焦于Android系统的架构、开发环境的搭建以及应用的基本组件。以下是对这个主题的详细阐述: 一、Android系统架构 ...