`
hehebendan
  • 浏览: 81742 次
  • 性别: Icon_minigender_1
  • 来自: 伊拉克
社区版块
存档分类
最新评论

解析struts国际化的底层实现

阅读更多

首先来讲java已经对国际化提供了很好的支持了,struts也正是对java的底层进行一些封装、在java的基础上构建起来的。首先看看下面的例子:

1)

package com.test.i18n;

import java.util.Locale;

public class I18NTest1 {
	/**
	 * @author: wh;
	 * date: 2011-3-15
	 */
	public static void main(String[] args) {

		/**
		 * Locale类说明:Locale 对象表示了特定的地理、政治和文化地区。
		 * 
		 * 需要 Locale 来执行其任务的操作称为语言环境敏感的 操作,
		 * 
		 * 它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,
		 * 
		 * 应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。 
         * */

		/** 
		 * 
		 *  Locale这个类提供了静态方法getAvailableLocales(),该方法返回所有已安装语言环境的数组
		 *  
		 *  getDisplayCountry(),返回适合向用户显示的语言环境国家名。
		 *  
		 *  getCountry(),返回此语言环境的国家/地区代码,将为空字符串或大写的 ISO 3166 两字母代码。
		 * 
		 * */
		
		Locale [] locales = Locale.getAvailableLocales();
		
		for(Locale locale: locales){
            System.out.println(locale.getDisplayCountry()+"-->"+locale.getCountry());			
		}
	}
}

 
  上面的结果输出了: java国家名称以及国家对应的编码,当然不是所有的国家,只是世界上的一些大的国家,一些很小的国家没有提供支持。

    输出:

日本 : JP
秘鲁 : PE
 :
日本 : JP
巴拿马 : PA
波斯尼亚和黑山共和国 : BA
 :
危地马拉 : GT
阿拉伯联合酋长国 : AE
挪威 : NO
阿尔巴尼亚 : AL
 :
伊拉克 : IQ
也门 : YE
 :
葡萄牙 : PT
塞浦路斯 : CY
卡塔尔 : QA
马其顿王国 : MK

 ……

2)

package com.test.i18n;

import java.util.Locale;

public class I18NTest2 {
	/**
	 * @author: wh;
	 * date: 2011-3-15
	 */
	public static void main(String[] args) {
		
		Locale [] locales = Locale.getAvailableLocales();
		
		for(Locale locale: locales){
			
            System.out.println(locale.getDisplayLanguage()+" : "+locale.getLanguage());			
		}
	}
}

  
上例输出了当前JDK的安装环境所支持的语言以及语言编码。

输出为:

日文 : ja
西班牙文 : es
英文 : en
日文 : ja
西班牙文 : es
塞尔维亚文 : sr
马其顿文 : mk
西班牙文 : es
阿拉伯文 : ar
挪威文 : no
阿尔巴尼亚文 : sq
保加利亚文 : bg
阿拉伯文 : ar
阿拉伯文 : ar
匈牙利文 : hu
葡萄牙文 : pt
希腊文 : el
阿拉伯文 : ar
马其顿文 : mk
瑞典文 : sv
德文 : de
英文 : en
芬兰文 : fi
冰岛文 : is
捷克文 : cs
英文 : en
斯洛文尼亚文 : sl

3) 下面我们看这个例子,本例说明了java如何实现国际化:  首先在src目录下新建两个文件: 文件名的书写是有规范的只能是baseName_language_country.properties.  创建2个文件。如下:

i18nfile_en_US.properties 内容为:who=I am American!

i18nfile_zh_CN.properties 内容为:who=\u6211\u662f\u4e2d\u56fd\u4eba

package com.test.i18n;
import java.util.Locale;
import java.util.ResourceBundle;
public class I18NTest3 {
	/**
	 * @author: wh;
	 * date: 2011-3-15
	 */
	public static void main(String[] args) {
     
		Locale locale = Locale.getDefault();
      
		ResourceBundle bundle = ResourceBundle.getBundle("i18nfile", locale);
		
		String value  = bundle.getString("who");
		
		System.out.println(value);
        
	}
}

 

   上面例子输出:我是中国人 ,getDefault(),获得此Java 虚拟机实例的当前默认语言环境值。因此是中文的。

    如果要返回一个美国的locale实例只需将locale.getDefault()改变成为Locale.US.

  那样会输出:I am American!

  另外我们有的时候并不是把配置文件给写死的,比如像struts这样的配置:

  struts.messages.current.file=Arquivo {0} {1} {2} {3}

  我们也可以这样做到下面我们把刚刚上面的两个配置文件改为:

  who=\u6211\u662f\u4e2d\u56fd\u4eba {0}

  who=I am American {0}!

  要完成这个功能需要java.text.MessageFormat这个类,这个类提供了一个静态的format方法。

  4)

package com.test.i18n;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
public class I18NTest4 {
	/**
	 * @author: wh;
	 * date: 2011-3-15
	 */
	public static void main(String[] args) {
     
		Locale locale = Locale.getDefault();
      
		ResourceBundle bundle = ResourceBundle.getBundle("i18nfile", locale);
		
		String value  = bundle.getString("who");
		
		String format = MessageFormat.format(value, new Object[]{",我自豪!"});
		
		System.out.println(format);
        
	}
}

 上例输出:我是中国人 ,我自豪!,通过上面我们将参数动态设置进去了,完成。struts也就是在java提供的这种机制上提供的国际化。

 

分享到:
评论

相关推荐

    Struts2+技术内幕_深入解析Struts2架构设计与实现原理(alin书签).pdf

    之前网上下的,没有标签或标签不对,于是我自己重新整理了一下目录书签。

    struts底层代码

    在深入探讨Struts底层代码之前,我们需要先理解XML和反射在Java编程中的作用。 XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。在Struts中,XML配置文件(如struts-config.xml或struts2...

    Struts2国际化转码小工具

    Struts2是一个非常流行的Java Web框架...综上所述,这个"Struts2国际化转码小工具"通过提供友好的界面,简化了Struts2应用的国际化过程,让开发者可以更加专注于业务逻辑的开发,而不是在底层编码细节上花费过多时间。

    Struts框架的原理的实现

    此外,Struts还支持国际化和本地化,可以根据用户的选择显示不同语言的界面。 然而,尽管Struts框架在过去的Web开发中占据了重要地位,但随着Spring MVC和Play Framework等其他框架的崛起,Struts的市场份额逐渐被...

    struts2+json+jquery实现ajax数据的存取

    在Struts2中,我们可以使用JSON插件来方便地序列化和反序列化Java对象为JSON格式,从而实现在Ajax请求中发送和接收数据。 **3. jQuery库** jQuery是一个高效、简洁的JavaScript库,它简化了HTML文档遍历、事件处理...

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate简介 #### Struts2 Struts2是一个开源的Web应用程序框架,基于MVC设计模式构建而成。它简化了Java Web应用的开发过程,提供了...

    struts2重要知识点原理

    它的设计目标是简化开发过程,提供强大的验证和国际化功能,以及灵活的插件架构。Struts2的核心是基于拦截器的Action体系,这使得它能够处理用户的请求并调用相应的业务逻辑。 **核心控制器:FilterDispatcher** ...

    基于struts框架mvc模式应用的实现

    通过详细解析MVC模式的基本原理以及Struts框架的核心组成部分,本文旨在帮助开发者更好地理解和应用这一框架。 #### MVC设计模式详解 MVC设计模式最初由Xerox PARC在上世纪80年代为编程语言Smalltalk-80所发明,其...

    关于struts和servlet同时用

    Struts还提供了强大的国际化、异常处理、数据校验等功能,大大提高了开发效率。 在实际应用中,Servlet常常与Struts一起使用,Servlet作为基础处理HTTP请求,Struts则负责更高的业务逻辑抽象和控制流管理。例如,...

    Struts 2 自定义MVC 框架

    - 如何利用Struts 2的插件系统扩展功能,如国际化、验证等。 理解Struts 2的架构和工作流程,对于任何Java Web开发者来说都至关重要,无论是为了优化现有项目,还是开发新的应用。而通过实践自定义框架,我们可以更...

    struts2(2)PDF

    7. **国际化与本地化**:Struts2支持多语言环境,通过资源文件可以轻松实现应用的国际化。 8. **异常处理**:Struts2提供了一套强大的异常处理机制,允许开发者自定义错误页面和异常处理策略。 9. **...

    struts+hibernate简单的学生管理信息系统的源码

    Struts和Hibernate是两种在Java Web开发中广泛使用的开源框架,...此外,还可以深入学习关于请求处理、表单验证、国际化、异常处理等方面的知识。对于想要提升Java Web开发技能的初学者而言,这是一个很好的实践平台。

    struts2-jar包

    将`struts2-jar包`导入到`WEB-INF/lib`目录中,意味着将Struts2框架的实现类和接口添加到项目中,使得开发人员能够利用Struts2提供的功能,如动作调度、拦截器、结果映射、国际化、插件扩展等。 Struts2的jar包通常...

    hibernate+struts1实现添删改查

    Hibernate通过映射Java类到数据库表,实现了对象与数据的自动转换,提供了持久化服务。在添删改查(CRUD)操作中,Hibernate提供了Session接口,它是与数据库交互的主要入口,包括打开、提交和回滚事务,以及保存、...

    struts框架原理图

    根据提供的文件信息,“Struts...同时,Struts框架还提供了一系列强大的工具和API,如表单验证、国际化支持等,大大提高了开发效率。对于希望构建复杂Web应用的开发者来说,深入理解Struts框架的工作原理是非常必要的。

    Struts-jar包

    9. **国际化(Internationalization, i18n)**:Struts2支持多语言环境,可以通过资源包轻松实现应用的国际化。 这个"struts2基础jar包"中包含的组件可能有以下部分: - **Struts2核心库**:提供了Action、...

    struts的一个例子

    此外,Struts还有其他重要特性,如国际化、异常处理、Tiles组件用于页面布局,以及Struts2的拦截器、OGNL表达式语言等。学习Struts有助于理解MVC设计模式,为后续学习其他Web框架(如Spring MVC)打下坚实基础。 ...

    struts2面试题

    6. **资源文件的支持**:Struts2提供了对国际化资源文件的支持,便于多语言应用的开发。 #### Struts2核心组件详解 - **StrutsPrepareAndExecuteFilter**:作为Struts2框架的核心过滤器,它负责初始化框架并处理...

    struts2.0.11 jar 包

    Struts2.0.11是一个重要的Java Web框架,它基于Apache Struts 2的核心版本,旨在提供一个灵活...通过这些组件的协同工作,开发者可以专注于业务逻辑的实现,而不用过多关注底层的细节处理,提高了开发效率和代码质量。

Global site tag (gtag.js) - Google Analytics