每种框架都会有国际化的支持,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)方法实现的
- public String execute() throws Exception {
-
-
-
-
-
-
String str1 = getText("label.helloWorld");
-
- System.out.println(str1);
-
-
-
-
-
-
String str2 = getText("label.hello",new String[]{"fjf"});
-
- System.out.println(str2);
-
-
-
-
-
-
List l = new ArrayList();
-
-
l.add("callan");
-
-
String str3 = getText("label.hello",l);
-
- System.out.println(str3);
-
-
-
-
return SUCCESS;
-
- }
- public String execute() throws Exception {
-
-
-
-
-
- String str1 = getText("label.helloWorld");
-
- System.out.println(str1);
-
-
-
-
-
- String str2 = getText("label.hello",new String[]{"fjf"});
-
- System.out.println(str2);
-
-
-
-
-
- List l = new ArrayList();
-
- l.add("callan");
-
- String str3 = getText("label.hello",l);
-
- System.out.println(str3);
-
-
-
- return SUCCESS;
-
- }
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>
分享到:
相关推荐
在JSP页面中,可以通过`<s:property value="getText('login.username')"`这样的标签来引用资源文件中的属性,实现页面内容的国际化。 为了测试不同语言的显示效果,开发者可以调整浏览器的语言环境设置,比如在Fire...
Struts框架的国际化支持允许开发者创建多语言的应用程序,以满足全球不同地区用户的语言需求。国际化(I18N)是软件设计的一个重要方面,它确保程序可以根据用户的地域设置显示相应的语言内容。在Struts中,这一功能...
这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...
1. **创建资源文件**:为每种支持的语言创建一个.properties文件,如前所述,键是文本标识符,值是本地化的文本。 2. **配置Struts2**:在Struts2的配置文件(通常为`struts.xml`)中,我们需要指定默认的资源包和...
在Action类、JSP页面或FreeMarker模板中,使用`ResourceBundle`或Struts2提供的`@Text`标签来引用资源文件中的键。例如,`@Text("greeting")`会根据用户浏览器的locale加载相应的问候语。 6. **处理请求的locale**...
Struts2是一个流行的Java web框架,它提供了强大的国际化支持,帮助开发者创建多语言的应用程序。在Struts2中实现国际化...开发者可以根据项目需求,灵活地定义和引用资源文件,以便在不同的语言环境中显示适当的文本。
在JSP页面中,使用`<s:text>`标签来引用资源文件中的字符串,如: ```jsp <s:text name="username.label"/> ``` Struts2会自动根据当前语言环境加载对应的字符串。 5. **处理动态内容**: 如果需要在国际化...
3. **国际化支持**:为了实现国际化,你需要为每种语言创建一个对应的资源文件,如`ActionMessages_en.properties`(英语)、`ActionMessages_fr.properties`(法语)等。Struts2会根据用户的浏览器设置自动选择正确...
- **表单字段的国际化**:Struts2的`s:textfield`标签可以与资源文件结合,自动处理表单字段的国际化。通过`key`属性指定资源文件中的键,例如`username`,并在对应的资源文件中定义相应的值。 2. **Action类的...
在Freemarker模板文件中,我们可以通过`#nested`和`#trans`指令来引用资源文件中的消息。`#nested`指令用于继续渲染模板,而`#trans`指令用于翻译文本。例如: ```html ${'welcomeMessage'} ${'greeting'} ${...
在Struts2中实现国际化,可以提供多语言支持,比如中英文切换,这对于全球用户来说非常关键。 首先,我们需要理解国际化的基本概念。国际化不是简单地翻译文本,而是设计一个可扩展的系统,以便能够轻松添加新的...
- 在视图层(如JSP)中,使用`<s:text>`标签引用资源文件中的键,Struts2会自动根据`Locale`找到对应的语言版本。 例如,假设我们有一个键`username`,在资源文件中定义为`username=用户名`,在JSP页面中可以这样...
1. 使用`<s:text>`标签:在JSP页面中,使用Struts2的`<s:text>`标签来引用资源文件中的文本。例如: ```jsp <s:text name="save"/> ``` 2. 切换语言:提供一个链接或按钮让用户选择语言,例如: ```jsp <a href="<s:...
可以在校验规则配置文件(如`validation.xml`或`struts-plugin.xml`)中引用资源文件中的消息代码。 6. **示例代码**: ```java // 在Action类中设置locale ActionContext.getContext().setLocale(new Locale(...
在Struts2中,国际化(i18n)是一项重要功能,它允许开发者为不同地区的用户提供本地化的界面和信息。这篇文档"Struts2国际化文档"针对初学者提供了深入的指导,旨在帮助他们轻松掌握这一技术。 首先,了解Struts2...
要在表单中使用国际化,可以直接在ActionForm的属性注释中引用资源文件中的键: ```java public class MyForm extends ActionForm { private static final long serialVersionUID = 1L; @ResourceBundle(key=...
对于页面的国际化,Struts2提供了`s:textfield`和`s:password`等标签,它们可以通过`key`属性引用资源文件中的键。在`login.jsp`页面中,我们使用这些标签并指定对应的键,例如`key="netrobot.login.username"`,...
4. 页面显示:在JSP页面中,使用`<s:text>`标签来引用资源文件中的字符串,如`<s:text name="helloMessage">`,Struts2会自动根据用户的浏览器设置或程序设定加载正确的翻译。 5. 动态切换语言:为了允许用户在应用...
Struts2的国际化功能主要依赖于资源包(Resource Bundle),这是一个包含特定语言版本字符串的文件。通过使用这些资源包,开发者可以轻松地在不同语言之间切换,为用户提供本地化的界面。 以下是实现Struts2国际化...