首先来讲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提供的这种机制上提供的国际化。
分享到:
相关推荐
之前网上下的,没有标签或标签不对,于是我自己重新整理了一下目录书签。
在深入探讨Struts底层代码之前,我们需要先理解XML和反射在Java编程中的作用。 XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。在Struts中,XML配置文件(如struts-config.xml或struts2...
Struts2是一个非常流行的Java Web框架...综上所述,这个"Struts2国际化转码小工具"通过提供友好的界面,简化了Struts2应用的国际化过程,让开发者可以更加专注于业务逻辑的开发,而不是在底层编码细节上花费过多时间。
此外,Struts还支持国际化和本地化,可以根据用户的选择显示不同语言的界面。 然而,尽管Struts框架在过去的Web开发中占据了重要地位,但随着Spring MVC和Play Framework等其他框架的崛起,Struts的市场份额逐渐被...
在Struts2中,我们可以使用JSON插件来方便地序列化和反序列化Java对象为JSON格式,从而实现在Ajax请求中发送和接收数据。 **3. jQuery库** jQuery是一个高效、简洁的JavaScript库,它简化了HTML文档遍历、事件处理...
接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate简介 #### Struts2 Struts2是一个开源的Web应用程序框架,基于MVC设计模式构建而成。它简化了Java Web应用的开发过程,提供了...
它的设计目标是简化开发过程,提供强大的验证和国际化功能,以及灵活的插件架构。Struts2的核心是基于拦截器的Action体系,这使得它能够处理用户的请求并调用相应的业务逻辑。 **核心控制器:FilterDispatcher** ...
通过详细解析MVC模式的基本原理以及Struts框架的核心组成部分,本文旨在帮助开发者更好地理解和应用这一框架。 #### MVC设计模式详解 MVC设计模式最初由Xerox PARC在上世纪80年代为编程语言Smalltalk-80所发明,其...
Struts还提供了强大的国际化、异常处理、数据校验等功能,大大提高了开发效率。 在实际应用中,Servlet常常与Struts一起使用,Servlet作为基础处理HTTP请求,Struts则负责更高的业务逻辑抽象和控制流管理。例如,...
- 如何利用Struts 2的插件系统扩展功能,如国际化、验证等。 理解Struts 2的架构和工作流程,对于任何Java Web开发者来说都至关重要,无论是为了优化现有项目,还是开发新的应用。而通过实践自定义框架,我们可以更...
7. **国际化与本地化**:Struts2支持多语言环境,通过资源文件可以轻松实现应用的国际化。 8. **异常处理**:Struts2提供了一套强大的异常处理机制,允许开发者自定义错误页面和异常处理策略。 9. **...
Struts和Hibernate是两种在Java Web开发中广泛使用的开源框架,...此外,还可以深入学习关于请求处理、表单验证、国际化、异常处理等方面的知识。对于想要提升Java Web开发技能的初学者而言,这是一个很好的实践平台。
将`struts2-jar包`导入到`WEB-INF/lib`目录中,意味着将Struts2框架的实现类和接口添加到项目中,使得开发人员能够利用Struts2提供的功能,如动作调度、拦截器、结果映射、国际化、插件扩展等。 Struts2的jar包通常...
Hibernate通过映射Java类到数据库表,实现了对象与数据的自动转换,提供了持久化服务。在添删改查(CRUD)操作中,Hibernate提供了Session接口,它是与数据库交互的主要入口,包括打开、提交和回滚事务,以及保存、...
根据提供的文件信息,“Struts...同时,Struts框架还提供了一系列强大的工具和API,如表单验证、国际化支持等,大大提高了开发效率。对于希望构建复杂Web应用的开发者来说,深入理解Struts框架的工作原理是非常必要的。
9. **国际化(Internationalization, i18n)**:Struts2支持多语言环境,可以通过资源包轻松实现应用的国际化。 这个"struts2基础jar包"中包含的组件可能有以下部分: - **Struts2核心库**:提供了Action、...
此外,Struts还有其他重要特性,如国际化、异常处理、Tiles组件用于页面布局,以及Struts2的拦截器、OGNL表达式语言等。学习Struts有助于理解MVC设计模式,为后续学习其他Web框架(如Spring MVC)打下坚实基础。 ...
6. **资源文件的支持**:Struts2提供了对国际化资源文件的支持,便于多语言应用的开发。 #### Struts2核心组件详解 - **StrutsPrepareAndExecuteFilter**:作为Struts2框架的核心过滤器,它负责初始化框架并处理...
Struts2.0.11是一个重要的Java Web框架,它基于Apache Struts 2的核心版本,旨在提供一个灵活...通过这些组件的协同工作,开发者可以专注于业务逻辑的实现,而不用过多关注底层的细节处理,提高了开发效率和代码质量。