Struts 2 之资源国际化

首先在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) 全局资源文件,可以被整个应该程序引用,也就是struts.custom.i18n.resources=messageResource指定的文件

(2) 包级资源文件,每个包的根目录下可以新建资源文件,仅被当前包中的类访问.文件名格式为:package_语言代码_国家代码.

(3) Action级资源文件,仅被当前Action引用,名称为action名_语言代码_国家代码

查找顺序为从小范围到大范围, Action级优先级最大

jsp页面的国际化

通过使用标签<s:textname="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>clf</s:param>
 </s:text> 

使用带参数的资源.<s:param>可以替换label.hello=hello{0}中的{0}

Action的国际化

Action的国际化主要是通过getText(Stringkey)方法实现的

Java代码

public String execute() throws Exception {
//getText(String) string为key
String str1 =getText("label.helloWorld");
System.out.println(str1);

// 带参数的
String str2 =getText("label.hello",new String[]{"clf"});
System.out.println(str2); 

// 与上一种实现一样
List l = newArrayList();
l.add("callan");
String str3 =getText("label.hello",l);
System.out.println(str3);
return SUCCESS;
}  

action错误的国际化

在message_en_US.properties中增加以下内容

username.invalid=usernameinvalid...

在message_zh_CN.properties中增加以下内容

username.invalid=\u7528\u6237\u540d\u4e0d\u5408\u6cd5...

修改RegisterAction中的validate方法,将错误加到ActionError中,在这里将使用到ActionSupport中的getText方法获得和国际化资源文件相关的信息。

以username验证为例:

if (null ==username || username.length() < 5 || username.length() > 10) {  

    this.addActionError(this.getText("username.invalid"));  

}  

这样就从资源文件中读取username.invalid的值,增加到ActionError中。

验证框架的国际化(field级别错误)

在message_en_US.properties文件中增加以下内容

username.xml.invalid=validateinformation

在message_zh_CN.properties文件中增加以下内容

username.xml.invalid=\u9a8c\u8bc1\u6846\u67b6\u4fe1\u606f

然后修改验证框架,需要将在properties文件中的内容增加到框架中。

以username为例

<field name="username">
    <field-validator type="requiredstring">
        <param name="trim">true</param>
        <message key="username.xml.invalid"></message>
    </field-validator>
</field>  

在message标签中增加属性key,值为properties文件中的key

标签中key大多是和国际化相关的

时间: 2024-10-11 06:34:59

Struts 2 之资源国际化的相关文章

struts2 资源国际化

web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schem

资源国际化

在一个普通的project项目中资源国际化 public class I18n { public static void main(String[] args) { //默认读取src下以app开头的配置文件 //ResourceBundle rb = ResourceBundle.getBundle("app",Locale.US); ResourceBundle rb = ResourceBundle.getBundle("app",Locale.CHINA);

SpringBoot资源国际化

Springboot根据浏览器实现网站资源国际化 1.创建资源化文件 resource目录下创建messages目录 创建messages_en_US.properties.messages_zh_CN.properties文件.分别是英文.中文资源. messages.properties文件为默认文件. messages_en_US.properties写入内容:welcome = welcome to login in soa-watch systerm(english) messages

游戏UI框架设计(7): 资源国际化技术

游戏UI框架设计(7) --资源国际化技术 说起"资源国际化"技术,个人认为可以追述到微软Window2000 PC操作系统的发布,在这之前windows98操作系统的开发都是先由美国总部出一个英文版本,然后在发布windows 版本之后的大约一年后,全世界其他语言版本的操作系统才能面世. 在这一年中,就是微软驻各个国家分公司的多语言版本的翻译工作,需要从操作系统的核心到外围软件,全部翻译为所在国家语言,不留死角.       这种情况对于微软来说需要为多语言版本付出额外非常大的经济负

SpringMVC 资源国际化实现以及常见问题

资源国际化可以很方便的实现web项目语言的切换,解决了web项目按需显示不同语言界面的问题. SpringMVC 的资源国际化基于JDK的java.util.ResourceBundle实现,经过SpringMVC的封装实现起来非常简单: 简单实现具体步骤如下: 1.在SpringMVC的配置文件中配置ResourceBundleMessageSource(该类的作用是绑定资源文件,根据Locale值不同,显示不同的语言) 1 <!-- 资源国际化相关配置 --> 2 <bean id=

Java语言资源国际化步骤

语言资源国际化步骤: ??1. 定义资源文件(如:language),需要使用命令native2ascii命令进行转码:(native2ascii是jdk中的转码工具,在jdk的bin目录下) ??2. 定义工具类(LangusgeUtils)读取资源文件: ??3. 定义调用资源文件类(TestResourceBundle) 注意:native2ascii 命令必须进入到工程下面的资源文件夹发使用,例如: D:\Adobe\eclipse\JavaObject\jdbc_pool_dao_sh

struts中如何实现国际化,涉及哪些文件?

解答:"国际化"是指一个应用程序在运行时能够根据客户端请求所来自的国家/地区.语言的不同而显示不同的用户界面.Struts框架通过使用<bean:message>标记,以及使用java.util数据包中定义的Locale和ResourceBundle类来支持国际化.java.text.MessageFormat类定义的技术可以支持消息的格式.利用此功能,开发人员不需了解这些类的细节就可进行国际化和设置消息的格式.会涉及到资源文件,不需了解这些类的细节就可进行国际化和设置消息

springmvc 资源国际化

<!-- 关于国际化: 1. 在页面上能够根据浏览器语言设置的情况对文本(不是内容), 时间, 数值进行本地化处理 2. 可以在 bean 中获取国际化资源文件 Locale 对应的消息 3. 可以通过超链接切换 Locale, 而不再依赖于浏览器的语言设置情况 解决: 1. 使用 JSTL 的 fmt 标签 2. 在 bean 中注入 ResourceBundleMessageSource 的示例, 使用其对应的 getMessage 方法即可 3. 配置 LocalResolver 和 Lo

&lt;fmt:bundle/&gt;、&lt;fmt:message/&gt;、&lt;fmt:param/&gt;资源国际化

<%@ page language="java" contentType="text/html; charset=UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="