首先让我们看一下简单的struts2的国际化应用时如何实现的。
测试项目工程的结构图如下:
globalMessage.properties为默认配置资源文件
globalMessage_zh_CN.properties为中文配置资源文件
globalMessage_en_US.properties为英文配置资源文件
首先 为了让资源文件发挥作用,我们需要改变struts2的默认设置
<constant name="struts.custom.i18n.resources" value="globalMessage"></constant>
接着 在资源文件中添加我们index.jsp界面中需要国际化效果的键值对信息
globalMessage.properties,globalMessage_zh_CN.properties的内容为:
globalMessage_en_US.properties的内容为:
完成了资源文件的基本配置 就要设计index.jsp struts2中为了获取国际化资源信息同样是采用struts标签
<s:text> 或者 form表单中可通过标签中的key属性来获取
index.jsp
<s:form action="userAction" method="post">
<s:textfield key="username" name="name"></s:textfield><s:fielderror fieldName="name"></s:fielderror>
<s:password key="password" name="password"></s:password><s:fielderror fieldName="password"></s:fielderror>
<s:submit key="submit"></s:submit>
</s:form>
<s:url action="localeAction" id="url">
<s:param name="lan" value="1"></s:param>
</s:url>
<s:url action="localeAction" id="url1">
<s:param name="lan" value="2"></s:param>
</s:url>
<a href="<s:property value="#url"/>"><s:text name="china"></s:text></a>
<a href="<s:property value="#url1"/>"><s:text name="us"></s:text></a>
完成了以上基本步骤 我们看看如何实现自动切换环境语言
首先 我们知道 在action(继承了ActionSupport)中 如果要实现 错误信息的提示国际化得时候 我们这样:
this.addFieldError("", getText("key"));
这里的key 就为我们上面资源文件配置中的key
从api我们看出 getText方法 是类ActionSupport实现了接口TextProvider
在我们查看 TextProvider 的api中 我们可以看到这么一段话:
You can override LocaleProvider.getLocale() to change the behaviour of how to choose locale for the bundles that are returned.
Typically you would use the LocaleProvider interface to get the users configured locale.
大意也就是 我们如果想改变系统的locale 可以通过重写LocaleProvider的 getLocale()方法 从而来实现
那么我们就可以自定义action让其实现接口LocaleProvider 重写getLocale()方法。让其返回我们设置的locale
本次我们是通过链接 访问我们自定义的action 通过参数 来设置不同环境的locale 具体代码如下:
public class ChangeLocale implements LocaleProvider {
private String lan;
public String getLan() {
return lan;
}
public void setLan(String lan) {
this.lan = lan;
}
public Locale getLocale() {
System.out.println("changelocale-------1");
Locale locale=null;
if(lan.equals("1")){
locale=new Locale("zh", "cn");
}else if(lan.equals("2")){
locale=new Locale("en", "US");
}
return locale;
}
}
从以上代码可以看出 当链接过来的参数为1时 我们设置为中文环境 若为2并设置为英文环境
以上我们只是 实现了设置当前系统的语言环境 但是如何让系统采用我们当前设置 的locale呢 我们可以看一下 Struts2默认的i18n拦截器中有这么方法:
/**
* Save the given locale to the ActionInvocation.
*
* @param invocation The ActionInvocation.
* @param locale The locale to save.
*/
protected void saveLocale(ActionInvocation invocation, Locale locale) {
invocation.getInvocationContext().setLocale(locale);
}
也就是通过setLocale()方法为当前action设置locale
那么我们就可以在我们自定义的action中这样实现了
public String execute(){
System.out.println(lan);
System.out.println("changelocale-------2");
ActionContext ac=ActionContext.getContext();
ac.setLocale(getLocale());
return "success";
}
完成了以上 我们这样就可以测试一下了
看看效果吧
点击英文后 效果如下:
- 大小: 7.5 KB
- 大小: 1.7 KB
- 大小: 1.8 KB
- 大小: 1.8 KB
- 大小: 3.3 KB
分享到:
相关推荐
以下将详细阐述实现Struts2国际化自动切换语言的过程。 1. **资源配置文件**: - `globalMessage.properties`:这是默认的资源配置文件,存放通用的国际化信息。 - `globalMessage_zh_CN.properties`:中文资源...
下面将详细解释如何在Struts2中进行国际化设置,并实现自动语言切换。 首先,我们需要理解国际化的基本概念。国际化是一种设计方法,使软件能够在多种语言和文化环境下运行,而无需进行大量的代码修改。在Java中,...
以下是实现Struts2国际化语言切换的详细步骤: 1. **创建资源包**: 首先,你需要为每种支持的语言创建一个资源包。资源包通常是以.properties为后缀的文本文件,例如`message_zh_CN.properties`(中文)和`...
下面我们将深入探讨如何在Struts2中实现国际化和多语言切换。 **一、国际化(i18n)基础** 国际化是指软件设计时考虑到不同地区的文化差异,使得软件可以通过简单的配置和扩展就能适应各种语言环境。在Java中,我们...
总的来说,这个例子展示了如何在Struts2框架下实现国际化功能,包括创建资源文件、在Action中获取本地化信息、在JSP中展示以及提供语言切换的界面。通过这样的实现,开发者可以轻松地为不同地区的用户提供定制化的...
总结,这个Struts2国际化例子源码展示了如何在Java web应用中实现多语言支持,通过配置Struts2框架、编写Action类、创建资源文件以及在JSP页面中使用标签,实现了对不同语言环境的适应。这个例子对于理解和实践...
在“Struts2国际化Demo”中,我们主要探讨的是如何利用Struts2框架实现应用的多语言支持,即国际化(i18n)功能。国际化是一种设计方法,使得软件能够根据不同地区的语言和文化习惯进行调整,使得全球用户都能无障碍...
在Struts2中实现国际化(i18n)是一项重要功能,它允许应用程序支持多种语言,以满足全球用户的需求。国际化不仅仅是翻译文本,而是设计应用程序以适应不同地区的文化习惯和语言需求。 首先,让我们来探讨一下...
在Struts2中实现国际化,可以提供多语言支持,比如中英文切换,这对于全球用户来说非常关键。 首先,我们需要理解国际化的基本概念。国际化不是简单地翻译文本,而是设计一个可扩展的系统,以便能够轻松添加新的...
Struts2提供了拦截器来处理这个参数,自动切换并保存到Session中。 6. **处理日期和数字**: 国际化不仅涉及字符串,还包括日期和数字的格式。可以使用`<fmt:formatNumber/>`和`<fmt:formatDate/>` JSTL标签,或者...
总的来说,这个项目提供了一个基础的Struts2应用实例,展示了如何实现国际化、使用Struts2标签库,以及创建简单的用户注册和登录功能,尽管它并不涉及实际的数据存储。对于学习和理解Struts2框架的运作机制,这是一...
Struts2的国际化主要依赖于Java的ResourceBundle类,该类用于管理应用程序中的多语言资源。以下是如何在Struts2中进行国际化设置的详细步骤: 1. **创建资源文件**: 在项目的`src/main/resources`目录下,创建一...
国际化(i18n)是Struts2的一个重要特性,使得应用能够支持多种语言环境,以满足全球用户的语言需求。以下是对Struts2框架国际化实现的详细讲解。 1. **国际化的基本概念** 国际化(Internationalization,简称i18...
总之,Struts2的国际化功能强大且灵活,通过合理的配置和编程,可以让我们的Web应用轻松应对多语言环境。在实际开发中,一定要注意资源文件的组织结构,以及正确配置拦截器和Action,以确保国际化功能的顺畅运行。
5. 动态切换语言:为了允许用户在应用中动态切换语言,可以在页面上提供一个选择语言的选项,通过提交表单或点击链接来改变`session`或`cookie`中的Locale信息,然后重定向到当前页面,Struts2会自动应用新的语言...
在这个"Struts2国际化源代码"资源中,我们可以深入理解如何在Struts2应用中实现国际化功能。 首先,国际化的核心在于资源文件,通常命名为`Messages.properties`,其中包含了应用程序中的所有可本地化的字符串。...
2. **动态加载资源文件**:Struts 2.0能够根据用户的请求动态加载相应的资源文件,这意味着无需手动切换语言,系统会自动根据用户的浏览器设置来加载对应的资源文件。 3. **国际化标签**:Struts 2.0提供了丰富的...
Struts2提供了一个默认的国际化资源文件`struts2-i18n.properties`,其中包含了框架自身的提示信息。开发者可以根据需要覆盖这些默认值,或者为特定的语言创建自定义的资源文件。 4. **Action中的国际化** 在...
在Struts2应用中,可以通过`<s:text>`标签或Action上下文来访问这些资源包中的字符串,实现动态切换语言。用户可以根据自己的浏览器设置或手动选择语言,系统会自动加载相应语言的资源包。 总结起来,Struts2的数据...