`

转:Struts2引用国际化资源文件

 
阅读更多

 

每种框架都会有国际化的支持,struts2的国际化大致上分为页面的国际化,Action的国际化以及xml的国际化

 

首先在struts.properties文件中加入以下内容:
struts.custom.i18n.resources=messageResource
或在struts.xml中加入
<constant name="struts.custom.i18n.resources" value="messageResource"></constant>

 

资源文件的命名格式: 名称_语言代码_国家代码. Properties
如果创建中文和英语国际化,那么资源文件名称为
messageResource_zh_CN.properties和messageResource_en_US.properties

 

1. jsp页面的国际化 
通过使用标签<s:text name="label.helloWorld"/>输出国际化
label.helloWorld为资源文件中定义的key

 


在messageResource_en_US.properties加入以下内容
label.hello=hello {0}
label.helloWorld=hello,world

在messageResource_zh_CN.properties加入以下内容
label.hello=你好 {0}
label.helloWorld=你好,世界

 

(1). <s:text name="label.helloWorld"/>
<s:property value="%{getText('label.helloWorld')}"/>
上面两个都为输出一个hello word的两种表示

 

<s:textfield name="name" key="label.helloWorld"/>
<s:textfield name="name" label="%{getText('label.helloWorld')}"/>
显示一个文本框,文本框的标题进行国际化

 

(2). 使用<s:i18n>标签指定从某个特定的资源文件中取数据
<s:i18n name="messageResource">
   <s:text name="label.helloWorld"></s:text>
</s:i18n>
指定在从messageResource取资源

 

(3).
<s:text name="label.hello">
   <s:param>callan</s:param>
</s:text>
使用带参数的资源.<s:param>可以替换label.hello=hello {0}中的{0}

 

2. Action的国际化
Action的国际化主要是通过getText(String key)方法实现的

Java代码 
  1. public String execute() throws Exception {   
  2.   
  3.            
  4.   
  5.         // getText(String) string为key   
  6.   
  7.          String str1 = getText("label.helloWorld");   
  8.   
  9.          System.out.println(str1);   
  10.   
  11.            
  12.   
  13.         // 带参数的   
  14.   
  15.          String str2 = getText("label.hello",new String[]{"fjf"});   
  16.   
  17.          System.out.println(str2);   
  18.   
  19.        
  20.   
  21.         // 与上一种实现一样   
  22.   
  23.          List l = new ArrayList();   
  24.   
  25.          l.add("callan");   
  26.   
  27.          String str3 = getText("label.hello",l);   
  28.   
  29.          System.out.println(str3);   
  30.   
  31.            
  32.   
  33.         return SUCCESS;   
  34.   
  35.      }  
[java] view plaincopy
  1. public String execute() throws Exception {  
  2.   
  3.     
  4.   
  5.   // getText(String) string为key  
  6.   
  7.   String str1 = getText("label.helloWorld");  
  8.   
  9.   System.out.println(str1);  
  10.   
  11.     
  12.   
  13.   // 带参数的  
  14.   
  15.   String str2 = getText("label.hello",new String[]{"fjf"});  
  16.   
  17.   System.out.println(str2);  
  18.   
  19.    
  20.   
  21.   // 与上一种实现一样  
  22.   
  23.   List l = new ArrayList();  
  24.   
  25.   l.add("callan");  
  26.   
  27.   String str3 = getText("label.hello",l);  
  28.   
  29.   System.out.println(str3);  
  30.   
  31.     
  32.   
  33.   return SUCCESS;  
  34.   
  35.  }  

 

3. 参数化国际化
在messageResource_en_US.properties加入以下内容
userName=userName
userName.required=${getText('userName')} is required

 

在messageResource_zh_CN.properties加入以下内容
userName=用户名
userName.required=${getText('userName')} 不能为空

 

在Action中
String str4 = getText("userName.required");
System.out.println(str4);

 

userName.required=${getText('userName')}会取国际化的用户名

 

4. 使用校验框价时,提示信息可以国际化
   <field name="userName">
   <field-validator type="requiredstring">
    <message key=”userName.required”> </message>
   </field-validator>
</field>

 


国际化资源文件分为三种级别
(1) 全局资源文件,可以被整个应该程序引用,也就是struts.custom.i18n.resources=messageResource指定的文件
(2) 包级资源文件,每个包的根目录下可以新建资源文件,仅被当前包中的类访问.文件名格式为:package_语言代码_国家代码.
(3) Action级资源文件,仅被当前Action引用,名称为action名_语言代码_国家代码
查找顺序为从小范围到大范围, Action级优先级最大

<filter>
   <filter-name>struts2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
   <init-param>
            <param-name>struts.custom.i18n.resources</param-name>
            <param-value>globalMessages</param-value>
        </init-param>
</filter>

<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

 

分享到:
评论

相关推荐

    资源国际化 struts2资源国际化

    在JSP页面中,可以通过`&lt;s:property value="getText('login.username')"`这样的标签来引用资源文件中的属性,实现页面内容的国际化。 为了测试不同语言的显示效果,开发者可以调整浏览器的语言环境设置,比如在Fire...

    Struts中的国际化(资源文件的应用)

    Struts框架的国际化支持允许开发者创建多语言的应用程序,以满足全球不同地区用户的语言需求。国际化(I18N)是软件设计的一个重要方面,它确保程序可以根据用户的地域设置显示相应的语言内容。在Struts中,这一功能...

    Struts2实例 国际化 类型转换 struts标签

    这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...

    国际化与struts2

    1. **创建资源文件**:为每种支持的语言创建一个.properties文件,如前所述,键是文本标识符,值是本地化的文本。 2. **配置Struts2**:在Struts2的配置文件(通常为`struts.xml`)中,我们需要指定默认的资源包和...

    struts2框架国际化

    在Action类、JSP页面或FreeMarker模板中,使用`ResourceBundle`或Struts2提供的`@Text`标签来引用资源文件中的键。例如,`@Text("greeting")`会根据用户浏览器的locale加载相应的问候语。 6. **处理请求的locale**...

    struts2国际化 标签 页面 处理类

    Struts2是一个流行的Java web框架,它提供了强大的国际化支持,帮助开发者创建多语言的应用程序。在Struts2中实现国际化...开发者可以根据项目需求,灵活地定义和引用资源文件,以便在不同的语言环境中显示适当的文本。

    在struts2里实现国际化,完成登录页面的国际化(英文和中文)

    在JSP页面中,使用`&lt;s:text&gt;`标签来引用资源文件中的字符串,如: ```jsp &lt;s:text name="username.label"/&gt; ``` Struts2会自动根据当前语言环境加载对应的字符串。 5. **处理动态内容**: 如果需要在国际化...

    struts2官方例子8-资源配置文件的使用(包括国际化)

    3. **国际化支持**:为了实现国际化,你需要为每种语言创建一个对应的资源文件,如`ActionMessages_en.properties`(英语)、`ActionMessages_fr.properties`(法语)等。Struts2会根据用户的浏览器设置自动选择正确...

    畅所欲言struts2的国际化

    - **表单字段的国际化**:Struts2的`s:textfield`标签可以与资源文件结合,自动处理表单字段的国际化。通过`key`属性指定资源文件中的键,例如`username`,并在对应的资源文件中定义相应的值。 2. **Action类的...

    struts2+freemarker 国际化

    在Freemarker模板文件中,我们可以通过`#nested`和`#trans`指令来引用资源文件中的消息。`#nested`指令用于继续渲染模板,而`#trans`指令用于翻译文本。例如: ```html ${'welcomeMessage'} ${'greeting'} ${...

    struts2 国际化(中英文切换 占位符)

    在Struts2中实现国际化,可以提供多语言支持,比如中英文切换,这对于全球用户来说非常关键。 首先,我们需要理解国际化的基本概念。国际化不是简单地翻译文本,而是设计一个可扩展的系统,以便能够轻松添加新的...

    STRUTS2国际化

    - 在视图层(如JSP)中,使用`&lt;s:text&gt;`标签引用资源文件中的键,Struts2会自动根据`Locale`找到对应的语言版本。 例如,假设我们有一个键`username`,在资源文件中定义为`username=用户名`,在JSP页面中可以这样...

    struts2语言国际化

    1. 使用`&lt;s:text&gt;`标签:在JSP页面中,使用Struts2的`&lt;s:text&gt;`标签来引用资源文件中的文本。例如: ```jsp &lt;s:text name="save"/&gt; ``` 2. 切换语言:提供一个链接或按钮让用户选择语言,例如: ```jsp &lt;a href="&lt;s:...

    struts2的国际化

    可以在校验规则配置文件(如`validation.xml`或`struts-plugin.xml`)中引用资源文件中的消息代码。 6. **示例代码**: ```java // 在Action类中设置locale ActionContext.getContext().setLocale(new Locale(...

    Struts2国际化文档

    在Struts2中,国际化(i18n)是一项重要功能,它允许开发者为不同地区的用户提供本地化的界面和信息。这篇文档"Struts2国际化文档"针对初学者提供了深入的指导,旨在帮助他们轻松掌握这一技术。 首先,了解Struts2...

    struts1国际化小实例

    要在表单中使用国际化,可以直接在ActionForm的属性注释中引用资源文件中的键: ```java public class MyForm extends ActionForm { private static final long serialVersionUID = 1L; @ResourceBundle(key=...

    Struts国际化(定义资源)

    对于页面的国际化,Struts2提供了`s:textfield`和`s:password`等标签,它们可以通过`key`属性引用资源文件中的键。在`login.jsp`页面中,我们使用这些标签并指定对应的键,例如`key="netrobot.login.username"`,...

    struts2 国际化

    4. 页面显示:在JSP页面中,使用`&lt;s:text&gt;`标签来引用资源文件中的字符串,如`&lt;s:text name="helloMessage"&gt;`,Struts2会自动根据用户的浏览器设置或程序设定加载正确的翻译。 5. 动态切换语言:为了允许用户在应用...

    struts2国际化语言切换

    Struts2的国际化功能主要依赖于资源包(Resource Bundle),这是一个包含特定语言版本字符串的文件。通过使用这些资源包,开发者可以轻松地在不同语言之间切换,为用户提供本地化的界面。 以下是实现Struts2国际化...

Global site tag (gtag.js) - Google Analytics