`
kencheng
  • 浏览: 1896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts2国际化支持引导(初)

阅读更多

本文系KenCheng制作DEMO过程记录,欢迎转载,转载请注明出处。

文中涉及截图的部分暂无法上传上来,附件为本文的WORD版本(较全),如方便还请下载WORD版本以备不时之需。

国际化支持方案分析
概述
大到ERP群集系统、门户网站,小到公司网站、办公系统等面对的受众也渐渐变得更加多元化。因受众可能来自于各个地方,提供多语言版本的程序是十分必要的。JAVA语言的灵活性更便于人为的实现国际化相关操作。
同电脑编程有关的国际化是设计和编写应用程式以便能够在全球或多国环境中使用的过程。国际化程式能够支持不同的语言连同不同格式的日期、时间、货币和其他值,而无须软件修改。这通常涉及“软编码”或将文本组件同程式代码分离并且可能涉及可插入代码模块。
从业者通常将国际化(internationalization)简写为 I18N。原因是 internationalization 一词开始的 I 和最后的 N 之间有 18 个字母。试着多说、多写“internationalization”一词几次,您就会欣赏这个较短版本的价值。此外,您可能会看到“I18N´ed”作为“国际化的(internationalized)”的缩写形式。
本文将说明如何使用struts2的国际化支持,选择struts2是因为其是一个非常流行的WEB流程控制框架,并为国际化做了相关支持。JSTL等其他技术也可以用于实现国际化要求,但在WEB项目中使用便利程度和支持远不如struts2。
利弊分析
1. 因JAVA程序尤其是WEB方面,几乎所有的框架及相关可维护信息越来越多的以配置文件的形式出现。不仅为项目上线维护期间修改程序提供便利,也为多语言译制提供方便。
2. 基于配置的文本国际化,将描述性的文字抽离页面,形成统一的文本规格例如:“姓名”在两个以上的页面均有使用,修改描述字眼为“名字”时难免会有遗漏,将文字描述用键值的方式统一配置从该方面来将即减少了不必要的繁琐。
3. 根据用户的LOCAL或者选择不同,程序页面可以根据外界条件选择特定的国际化语言配置文本,保证了用户的操作顺畅。
4. 为翻译人员提供便利,增加同样键值的配置文件即可,无需逐个页面翻译。
国际化实现方式
Struts2实现方式
Struts1/2提供了视图层与控制层的servlet封装,通过对于WEB请求的拦截实现国际化的相关处理。并提供相关文本标签和国际化标签方便使用。采用国际化资源文件配置的方式为更换国际化资源提供方便的支持。
因struts2为struts的新版本,在诸多特性上优于struts1趋于WEBWORK的使用方式更加便利故以struts2作为例。说明国际化实现过程。
1. 新建WEB工程并配置struts2
1) 新建WEB工程并引入struts2的支持包。

2) 在web.xml中添加struts2的拦截器和标签库支持

拦截器FilterDispatcher是struts提供的请求拦截器处理请求分发,根据配置文件的相关配置,分流制定请求到指定的Action。
ActionContextCleanUp并不是必要配置,该拦截器负责在执行某些特殊操作时执行清理、释放资源等工作。

Struts2提供了相关的标签库便于应用,此处为标签库引用配置。该文件位于原包struts2-core-2.0.11.jar的META-INF目录下,如果出现配置标签无法使用的情况。请将该包下的文件拷贝到WEB-INF下,即可使用。
3) 请在根目录下(SRC源包)添加struts.xml文件和struts.properties
struts.xml:是struts2中Action的相关配置文件,用于指明请求的处理流向。具体配置请参见相关struts2的学习资料,因本文只关注国际化实现故此处带过。因struts2通过拦截器实现国际化,所以访问页面前必须要通过FilterDispatcher拦截并获取国际化资源的种类和相关国际化资源配置,此处配置通用JSP访问Action即要求配置的Action与JSP页面命名不能重复。

例:如首页为index.jsp但为了现行通过拦截器后访问页面,浏览器地址栏需要的是http://localhost:8080/工程名/index.action。这里的“index”会当做参数赋值给*也会赋值给{1}。关于通配符的使用请参见附录1。
struts.properties:指明了struts2的运行时配置,包括国际化的引用。

4) 添加相关的资源文件。因页面中的文本表现形式需要根据用户浏览器语言以及用户选择的语言种类变更。故需要提供对应的语言资源文件供系统调用更换。暂且以简体中文、英文、繁体中文为例增加相关配置文件至SRC源包跟目录下。相关命名规则请参见附录2。

资源文件中,对于中文等非西欧字符需要进行转码操作,使用MYECLIPSE的“MYECLIPSE PROPERTIES EDITOR”界面方式编辑可直接进行编码转换。


配置繁体中文与英文的过程类似。
5) JSP页面可以通过两种方式来引用配置好的国际化资源。
引入struts2标签库并设置字符集为UTF-8

获取资源文件中指定文本

运行结果:中文—英文
      
6) 仅仅根据浏览器语言环境来判定使用何种资源配置是不够全面的。需要根据需要满足用户主要选择语言的意愿。则有提供选择指定资源的必要。Struts2的国家化资源选择方式是通过在session中设置request_locale变量的值来实现。故认为干预该变量则会影响资源文件的选取从而达到预想功能。
提供一个选择器,获取当前的用户语言值(参见附录2 Locale部分描述)、根据该值选取当前的默认环境资源文件为浏览器语言环境,并根据用户选择动态加载指定的资源文件。实现请参见LangSelector.jsp代码以及com.tpc.i18n.


因struts.xml中使用了通配符的方式处理,故此获取到当前URL跳转即可。
附录
附录1:(struts2通配符支持)
无论是struts2的Action还是Mapping都可以使用通配符做相应的表示。
*:表示可以匹配0个或者多个字符,但不包括“/”。
**:表示可以匹配0个或者多个字符,包括“/”。
\ :转义字符。
{N}:N为1-9之间的数字,用于匹配当前指定顺序位置*的内容,在action mapping中如果当前Action匹配了edit*\add*\delete* 则{1}为edit、{2}为add 、{3}为delete。
附录2:(struts2资源文件命名&Local参数相关)
Struts2的资源文件命名可以参考:basename_language_country.properties的格式。
例如:
globalMessages_en_US.properties(英文【美国】)
globalMessages_zh_CN.properties(中文【中国大陆】)
globalMessages_zh_TW.properties(繁体中文【中国台湾】)
等等,根据不同的国家和地区来区分具体的资源配置。
关于国家枚举使用请参见JAVA API (java.util.Locale) 的相关说明,静态枚举字段用于标示各个国家和地区常量参数。
相关引用
附录2相关引用摘自
http://hi.baidu.com/javagarden/blog/item/3099a345e1a77038879473b5.html

 

1
1
分享到:
评论

相关推荐

    struts2国际化例子源码

    总结,这个Struts2国际化例子源码展示了如何在Java web应用中实现多语言支持,通过配置Struts2框架、编写Action类、创建资源文件以及在JSP页面中使用标签,实现了对不同语言环境的适应。这个例子对于理解和实践...

    Struts2国际化的实现原理

    Struts2国际化的实现原理;简单的struts2国际化实现过程的讲解

    struts2国际化 标签 页面 处理类

    Struts2是一个流行的Java web框架,它提供了强大的国际化支持,帮助开发者创建多语言的应用程序。在Struts2中实现国际化,主要包括配置、JSP页面、表单和Action类的处理。 首先,在`struts.xml`配置文件中,我们...

    Struts2国际化Demo

    在“Struts2国际化Demo”中,我们主要探讨的是如何利用Struts2框架实现应用的多语言支持,即国际化(i18n)功能。国际化是一种设计方法,使得软件能够根据不同地区的语言和文化习惯进行调整,使得全球用户都能无障碍...

    STRUTS2国际化的问题

    2. **表单验证的国际化**:Struts2支持在表单验证时显示国际化错误消息。这可以通过在资源文件中配置相应的验证错误消息来实现。 3. **日期和时间的格式化**:使用`<s:textfield>`等标签时,可以通过设置`...

    struts1.2 国际化

    - **动态设置 Locale**:在用户登录或选择语言时,通过 `HttpServletRequest.getSession().setAttribute("org.apache.struts2.i18n.locale", locale)` 动态设置 `Locale`。 - **错误处理**:确保国际化应用在不同...

    struts2国际化源码以及eclipse国际化插件

    在Struts2中实现国际化(i18n)是一项重要功能,它允许应用程序支持多种语言,以满足全球用户的需求。国际化不仅仅是翻译文本,而是设计应用程序以适应不同地区的文化习惯和语言需求。 首先,让我们来探讨一下...

    struts2国际化MyEclipse开发

    struts2国际化MyEclipse开发struts2国际化MyEclipse开发童叟无欺

    struts2国际化测试

    接下来,让我们看看如何配置Struts2以支持国际化。在Struts2的配置文件`struts.xml`中,我们需要定义一个全局结果类型`i18n`,这样当用户请求改变语言时,框架知道如何处理。以下是一个示例配置: ```xml ...

    Struts1 和 Struts 2 国际化全局资源

    Struts2的国际化处理更加灵活,它支持动态资源加载和更丰富的配置选项。 1. **资源文件**:与Struts1类似,也需要创建多个`.properties`文件,但Struts2可以使用Spring的`MessageSource`接口,这允许更高级的配置和...

    struts2国际化处理全解

    在国际化处理方面,Struts2提供了全面的支持,使得开发者能够轻松地为多语言环境的应用程序创建接口。 首先,我们需要了解什么是国际化(Internationalization)和本地化(Localization)。国际化是指设计和开发...

    struts2标签库及国际化的使用例子

    Struts2 框架提供了强大的国际化功能,用于支持多语言显示。在本实验中,我们将使用 Struts2 的国际化功能来实现用户注册页面的国际化显示。 首先,我们需要创建国际化资源文件,例如 `messages_en_US.properties` ...

    struts2国际化+简单的标签+用户注册和登录

    总的来说,这个项目提供了一个基础的Struts2应用实例,展示了如何实现国际化、使用Struts2标签库,以及创建简单的用户注册和登录功能,尽管它并不涉及实际的数据存储。对于学习和理解Struts2框架的运作机制,这是一...

    struts2 国际化使用

    在`struts.xml`配置文件中,确保已经启用Struts2的国际化支持。你可以通过`<constant>`元素设置`struts.i18n.enabled`为`true`,如下: ```xml <constant name="struts.i18n.enabled" value="true"/> ``` 6. **...

    struts2国际化demo

    总结来说,"Struts2国际化demo"是一个教育性的实例,旨在教授开发者如何利用Struts2框架提供多语言支持。通过创建和配置资源文件,结合拦截器和视图层的标签,我们可以轻松地使应用具备国际化的特性,从而为全球用户...

    Struts2 使用 Struts2 实现国际化

    在Struts2中实现国际化是一项关键功能,它允许应用程序为不同的语言和地区提供本地化的用户体验。下面将详细介绍如何使用Struts2来实现国际化,并探讨相关的源码和工具。 **一、国际化基础** 国际化(i18n)是软件...

    struts2框架国际化

    国际化(i18n)是Struts2的一个重要特性,使得应用能够支持多种语言环境,以满足全球用户的语言需求。以下是对Struts2框架国际化实现的详细讲解。 1. **国际化的基本概念** 国际化(Internationalization,简称i18...

    资源国际化 struts2资源国际化

    总的来说,Struts2的资源国际化机制使得开发者可以轻松地为Web应用程序添加多语言支持,提高用户体验,而无需深入修改程序的内部结构。只需维护好各个语言版本的资源文件,系统就能根据用户的语言环境自动显示相应的...

    struts2国际化多语言支持源码(拷过去即可运行)

    在这个"Struts2国际化多语言支持源码"中,我们可以深入理解如何在Struts2应用中实现多语言支持,这对于创建面向全球用户的Web应用至关重要。 国际化(i18n,18代表字母n到i之间的字母数量)是指使软件能够在不同...

Global site tag (gtag.js) - Google Analytics