struts2 的国际化支持
文章分类:Java编程 关键字: struts2 国际化 i18n
每种框价都会有国际化的支持,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. }
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[]{"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级优先级最大
struts2 国际化的介绍
1、应用基础
(国际化Internationalization-I18N,本地化Localization-L10N。)
Java程序国际化主要通过3个类完成:
iava.util.ResourceBundle:用于加载一个资源包。
java.util.Locale:对应一个特定的国家/区域、语言环境。
java.util.ResourceBundle:用于将消息格式化。
2、准备资源
为了实现国际化,必须先提供程序所需的资源文件(key-value对)。资源文件的命名可以有一下三种形式:
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName是资源文件的基本名,用户可以自由定义。而language和country都不是可以随便定义的,必须是Java所支持的语言和国家。
3、Struts2加载全局资源文件
加载全局资源文件的方式是通过配置常量来实现的。(struts.custom.i18n.resources)
4、访问国际化资源
JSP页面输出:<s:text name=”username” /> 用name属性来加载资源文件的key值。
Action中访问:可以使用ActionSupport类的getText方法。该方法可以接受一个name参数,既资源文件的key值。
表单元素的Label里输出:直接用对应表单的key属性。
5、输出带占位符号的国际化信息
JSP页面输出:在<s:text name=”username” />标签中使用多个<s:param …/>
Action中访问:使用getText(String aTextName,List args)或者getText(String key,String[] args)。
分享到:
相关推荐
这篇指南将深入探讨Struts2如何实现国际化支持,并提供一个初步的引导。 首先,理解国际化的基本概念是至关重要的。国际化不仅仅是翻译文本,它还涉及到日期、时间、货币等格式的本地化。在Java中,这一过程通常...
总结来说,实现Struts2的国际化支持涉及到创建和管理资源文件,配置Struts2框架以加载这些文件,以及在Action和视图层正确使用国际化消息。这个过程有助于提高应用的用户体验,让不同地区和语言背景的用户都能舒适地...
总结,这个Struts2国际化例子源码展示了如何在Java web应用中实现多语言支持,通过配置Struts2框架、编写Action类、创建资源文件以及在JSP页面中使用标签,实现了对不同语言环境的适应。这个例子对于理解和实践...
Struts2是一个流行的Java web框架,它提供了强大的国际化支持,帮助开发者创建多语言的应用程序。在Struts2中实现国际化,主要包括配置、JSP页面、表单和Action类的处理。 首先,在`struts.xml`配置文件中,我们...
在“Struts2国际化Demo”中,我们主要探讨的是如何利用Struts2框架实现应用的多语言支持,即国际化(i18n)功能。国际化是一种设计方法,使得软件能够根据不同地区的语言和文化习惯进行调整,使得全球用户都能无障碍...
综上所述,Struts2框架提供了丰富的国际化支持,通过对配置文件、后端处理逻辑以及前端展示的合理设置,可以轻松实现多语言应用的开发。开发者需要关注字符编码的处理,以确保不同语言环境下数据的一致性和准确性。
Struts 1.2 框架作为 Java Web 开发的经典框架之一,提供了强大的国际化支持。本文将详细介绍 Struts 1.2 如何实现国际化,以及如何利用该框架创建国际化应用。 #### 二、本地化与国际化基础 ##### 1. 本地化 ...
对于国际化支持,Eclipse有一个名为PropEdit的插件(jp.gr.java_conf.ussiy.app.propedit_5.3.3.zip),可以帮助开发者更方便地管理和编辑这些.properties资源文件。PropEdit提供了一个图形化的界面,可以同时查看和...
接下来,让我们看看如何配置Struts2以支持国际化。在Struts2的配置文件`struts.xml`中,我们需要定义一个全局结果类型`i18n`,这样当用户请求改变语言时,框架知道如何处理。以下是一个示例配置: ```xml ...
Struts1 和 Struts 2 是两种非常流行的Java Web开发框架,它们都提供了对国际化(i18n)的支持,使得应用能够根据用户的语言和地区显示相应的本地化内容。国际化是软件设计的一个重要方面,它允许应用程序在全球范围...
在国际化处理方面,Struts2提供了全面的支持,使得开发者能够轻松地为多语言环境的应用程序创建接口。 首先,我们需要了解什么是国际化(Internationalization)和本地化(Localization)。国际化是指设计和开发...
Struts2 框架提供了强大的国际化功能,用于支持多语言显示。在本实验中,我们将使用 Struts2 的国际化功能来实现用户注册页面的国际化显示。 首先,我们需要创建国际化资源文件,例如 `messages_en_US.properties` ...
总的来说,这个项目提供了一个基础的Struts2应用实例,展示了如何实现国际化、使用Struts2标签库,以及创建简单的用户注册和登录功能,尽管它并不涉及实际的数据存储。对于学习和理解Struts2框架的运作机制,这是一...
在`struts.xml`配置文件中,确保已经启用Struts2的国际化支持。你可以通过`<constant>`元素设置`struts.i18n.enabled`为`true`,如下: ```xml <constant name="struts.i18n.enabled" value="true"/> ``` 6. **...
总结来说,"Struts2国际化demo"是一个教育性的实例,旨在教授开发者如何利用Struts2框架提供多语言支持。通过创建和配置资源文件,结合拦截器和视图层的标签,我们可以轻松地使应用具备国际化的特性,从而为全球用户...
首先,需要在Struts2的配置文件`struts.xml`中启用国际化支持。通过添加`<constant>`标签设置`struts.i18n.enabled`为`true`,并指定资源文件的默认路径。 ```xml <constant name="struts.i18n.enabled" value=...
总结,实现Struts2的国际化涉及资源文件的创建、配置Struts2的`struts.xml`、设置locale以及在JSP页面中使用国际化标签库。理解和掌握这些步骤对于开发全球化应用程序至关重要。通过阅读源码和利用相关工具,开发者...
总的来说,Struts2的资源国际化机制使得开发者可以轻松地为Web应用程序添加多语言支持,提高用户体验,而无需深入修改程序的内部结构。只需维护好各个语言版本的资源文件,系统就能根据用户的语言环境自动显示相应的...
在这个"Struts2国际化多语言支持源码"中,我们可以深入理解如何在Struts2应用中实现多语言支持,这对于创建面向全球用户的Web应用至关重要。 国际化(i18n,18代表字母n到i之间的字母数量)是指使软件能够在不同...