`

struts2 国际化

阅读更多
引用

相关类
ResourceBundle
Locale
MessageFormat

一、底层是如何运作的
1、如何获得当前JDK系统已经提供的国家语言的支持
Locale[] locales = Locale.getAvailableLocales();
for(Locale locale : locales)
{
    //System.out.println(locale.getDisplayCountry() + " " + locale.getCountry());
    System.out.println(locale.getDisplayLanguage() + " " + locale.getLanguage());
}

2、属性配置文件
命名规则:baseName_language_country.properties
如:hellofile_en_US.properties
    hellofile_zh_CN.properties
例子:
hellofile_zh_CN.properties中内容:
hello=\u4F60\u597D
hellofile_en_US.properties中内容:
hello=world

例:
Locale locale = Locale.getDefault();    //获得当前默认Locale

ResourceBundle bundle = ResourceBundle.getBundle("hellofile",locale);       
String value = bundle.getString("hello");
System.out.println(value);

bundle = ResourceBundle.getBundle("hellofile",Locale.US);
value = bundle.getString("hello");
System.out.println(value);

结果:
你好
world

3、
hellofile_en_US.properties中内容:
hello = world : {0}
hellofile_zh_CN.properties中内容:
hello = \u4F60\u597D : {0}

例:
Locale locale = Locale.getDefault();

ResourceBundle bundle = ResourceBundle.getBundle("hellofile",locale);       
String value = bundle.getString("hello");
System.out.println(value);
String result = MessageFormat.format(value, new Object[]{"上海"});    //用上海填充{0}
System.out.println(result);
   
bundle = ResourceBundle.getBundle("hellofile",Locale.US);
value = bundle.getString("hello");
System.out.println(value);
result = MessageFormat.format(value, new Object[]{"北京"});    //用北京填充{0}

System.out.println(result);

二、struts2的国际化

1、页面中的国际化
(1)
<s:text name=""></s:text>
name中的值对应配置文件中的key

例:
message_zh_CN.properties中内容:
addUser = \u589e\u52a0\u7528\u6237
页面中使用:
<s:text name="addUser"></s:text>

(2)form表单中内容国际化theme属性不能为simple
例:
<s:textfield key=""></s:textfield>

(3)临时国际化
<center>
    <s:i18n name="temp">
        <s:text name="hello"></s:text>
    </s:i18n>
</center>
配置文件:temp_zh_CN.properties
hello = \u4f60\u597d

(4)传参
<s:i18n name="temp">
    <s:text name="hello">
        <s:param>didi</s:param>
    </s:text>
</s:i18n>
配置文件:temp_zh_CN.properties
hello =\u4F60\u597D,{0}



2、validate中的国际化
通过getText方法获得Key对应的值
例:
message_zh_CN.properties中内容:
username.invalid = \u7528\u6237\u540d\u586b\u5199\u4e0d\u6b63\u786e
validate中使用方法:
this.addActionError(this.getText("username.invalid"));

例:
message_zh_CN.properties中内容:
username.invalid = \u7528\u6237\u540d "{0}" \u586b\u5199\u4e0d\u6b63\u786e
validate中使用方法:
List list = new ArrayList();
list.add(username);
this.addActionError(this.getText("username.invalid",list));

this.addActionError(this.getText("username.invalid",new String[]{username}));

3、校验框架XML中的国际化
<message key=""></message>
key对应配置文件中的key

例:
校验XML中
<message key="username.xml.invalid"></message>
message_zh_CN.properties中内容:
username.xml.invalid = \u6821\u9a8c\u6846\u67b6\u63d0\u793a\u7528\u6237\u540d\u4e0d\u6b63\u786e

4、国际化资源文件的存活范围
struts2提供的各个级别的文件名命名规则
包级别:package_en_US.properties    package_zh_CN.properties
类级别:class_en_US.properties    (class用具体类名(action类))
全局:globalMessages_en_US.proterties(需要在struts.properties 配置
struts.custom.i18n.resources=globalMessages)

优先级:类级别>包级别>全局

原文来自:http://blog.csdn.net/dyc87112/archive/2009/02/17/3899026.aspx

转载请著名出处。


分享到:
评论

相关推荐

    struts2国际化例子源码

    在Struts2中实现国际化,可以帮助开发者创建对多语言环境友好的应用。 本示例主要围绕Struts2框架如何实现国际化进行深入探讨。源码中包含两个关键部分:WebRoot目录和src目录。 1. **WebRoot** 目录: - `WEB-...

    Struts2国际化Demo

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

    STRUTS2国际化的问题

    ### STRUTS2国际化的问题 #### 一、Struts2国际化的概述 Struts2作为一个流行的Web应用框架,为了满足全球用户的使用需求,提供了一系列国际化(Internationalization, 简称I18N)的支持。这包括了如何在配置文件...

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

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

    Struts2国际化的实现原理

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

    Struts2国际化

    ### Struts2国际化详解 #### 一、引言 随着全球化的不断推进,软件系统越来越多地需要支持多种语言和地区设置,以满足不同国家和地区用户的使用习惯。因此,国际化(Internationalization,简称i18n)成为了现代...

    STRUTS2国际化

    Struts2的国际化功能,简称i18n,允许应用程序根据用户的语言和地区提供相应的界面和信息,无需修改核心代码。这一特性使得软件更具有全球化的适应性,满足不同文化和语言背景的用户需求。 **5.1 Struts2国际化原理...

    struts2国际化

    Struts2提供了一个默认的国际化资源文件`struts2-i18n.properties`,其中包含了框架自身的提示信息。开发者可以根据需要覆盖这些默认值,或者为特定的语言创建自定义的资源文件。 4. **Action中的国际化** 在...

    Struts1 和 Struts 2 国际化全局资源

    Struts1 和 Struts 2 是两种非常流行的Java Web开发框架,它们都提供了对国际化(i18n)的支持,使得应用能够根据用户的语言和地区显示相应的本地化内容。国际化是软件设计的一个重要方面,它允许应用程序在全球范围...

    struts2国际化 标签 页面 处理类

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

    struts2国际化测试

    在“struts2国际化测试”这个主题中,我们将探讨如何在Struts2框架下实现应用程序的国际化功能。 首先,国际化(i18n,i代表第9个字母n,18是n到i的字母数,表示国际化)是使软件能够适应不同语言和文化背景的重要...

    struts2国际化MyEclipse开发

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

Global site tag (gtag.js) - Google Analytics