`
wing123
  • 浏览: 799773 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过页面设置国际化语言

阅读更多

Struts1.X 中通过页面设置国际化语言:http://wing123.iteye.com/admin/blogs/384112

 

  <body>
  <s:a href="/Struts2/changeLang.action?lang=en">English</s:a>
  <s:a href="/Struts2/changeLang.action?lang=zh">中文</s:a>
    <center>    	    	
    	<s:text name="addUser"/>
    </center>
  </body>

 

struts.xml

<struts>
	<!-- 设置全局配置文件 -->
	<constant name="struts.custom.i18n.resources" value="message"/>
	<!-- 解决中文乱码 -->
	<constant name="struts.i18n.encoding" value="gbk"/>
	
	<package name="Struts2" extends="struts-default">
		
		<action name="changeLang" class="com.bjsxt.action.ChangeLangAction">
			<result name="success">/register2/register.jsp</result>
		</action>	
		
	</package>
</struts>

 

message_en_US.properties

addUser=Add User

 

message_ zh _CN.properties

addUser=\u6DFB\u52A0\u7528\u6237

 

 

ChangeLangAction

public class ChangeLangAction extends ActionSupport{
	private String lang;

	public String getLang() {
		return lang;
	}

	public void setLang(String lang) {
		this.lang = lang;
	}
	
	@Override
	public String execute() throws Exception {
		changeLang();
		return SUCCESS;
	}
	
	/**
	 * 手动改变Locale
	 */
	private void changeLang() {
		Locale currentLocale = Locale.getDefault();
		//1、根据页面请求,创建下同的Locale对象
		if("en".equals(getLang().trim())) {
			currentLocale = new Locale("en","US");
		}else if("zh".equals(getLang().trim())) {
			currentLocale = new Locale("zh","CN");
		}
		/*
		 * 2、设置Action中的Locale
		 *    前台页面的Locale和后台session中的Locale范围是不一样的
		 *    a)只改页面Locale当前页面信息会改变但提交后Locale又会改回到默认的
		 *    b)改变了后台Locale,当前线程中的页面Locale并不会改变,但会随下一次提交
		 *      Action一同改变,所以可能要刷新页面两次,第一次只变后台Locale,第二次
		 *      前台和后台同时改变
		 *      
		 *    为避免上述情况,需要前台和后台的Locale一起改变
		 */
		
		ActionContext.getContext().setLocale(currentLocale);
		ServletActionContext.getRequest().getSession().setAttribute(
				"WW_TRANS_I18N_LOCALE", currentLocale);
	}
}

 

 

看提供的例子很重要:

运行例子struts2-blank-2.0.9
http://localhost:8080/struts2-blank-2.0.9/example/HelloWorld.action?request_locale=en有效。

原来在Struts 2.0中,通过ActionContext.getContext().setLocale(Locale arg)可以设置用户的默认语言。
Struts 2.0为您提供了一个名i18n的拦截器(Interceptor),并在默认情况下将其注册到拦截器链(Interceptor chain)中。
它的原理为在执行Action方法前,i18n拦截器查找请求中的一个名为"request_locale"的参数。
如果其存在,拦截器就将其作为参数实例化Locale对象,并将其设为用户默认的区域(Locale),最后,将此Locale对象保存在session的名为“WW_TRANS_I18N_LOCALE”的属性中。

 

除此之外,i18n拦截器还会将上面生成的Locale对象保存在用户Session的名为WW_TRANS_I18N_LOCALE的属性中。一旦用户Session中存在一个名为

WW_TRANS_I18N_LOCALE的属性,则该属性指定的Locale将会作为浏览者的默认Locale。

 

Struts1.X 与 Struts2.X 的区别

 

1、Struts1.X 通过在HttpSession中设置固定的变量实现

 

2、Struts2.X 比较方便,只需设置Action中的Locale

 

 

分享到:
评论

相关推荐

    ssm框架上实现国际化/多语言

    通过以上步骤,SSM框架即可实现国际化和多语言支持。在实际项目中,还需要考虑如何优雅地处理未找到对应语言资源的情况,以及如何在数据库中存储用户首选语言等细节问题。多语言功能的实现能够使应用具有更广泛的...

    java 实现国际化 中英文语言切换

    Java 实现国际化是一种重要的软件开发技术,特别是在构建多语言支持的应用程序时。国际化(i18n)使得软件能够适应不同国家和地区的语言环境,包括中文和英文。在这个主题中,我们将深入探讨如何使用Java和JSP进行...

    asp.net多语言国际化与winform多语言国际化心得

    通过设置页面或应用程序的 `UICulture` 和 `Culture` 属性,ASP.NET可以自动选择相应的资源文件,实现动态显示多语言内容。 在ASP.NET中,还可以使用 globalization 元素在Web.config中配置默认语言和可选的语言。...

    gulpi18ncombine国际化语言包合并

    "gulpi18ncombine国际化语言包合并"是一个专门为JavaScript开发设计的打包工具,它解决了在语言包管理中的一项重要问题:如何有效地合并分散的语言文件。 首先,我们来了解一下国际化(i18n)的概念。国际化是指使...

    h5国际化demo[i18n实现]

    本项目是一个H5的国际化demo,通过i18n技术,可以轻松地支持多种语言,并且兼容非H5的浏览器。 首先,`index.html`是项目的主入口文件,通常包含了整个应用的结构和引用的资源。在这个项目中,`index.html`会包含...

    PHP 国际化 多语言

    PHP的国际化(i18n)和多语言支持是为网站或应用程序提供跨语言体验的关键功能。"PHP 国际化 多语言"这个主题涉及到如何使PHP项目能够适应不同地区的用户,包括中文和日文在内的多种语言切换。 一、PHP的国际化...

    国际化语言版本应用

    国际化语言版本应用是一种让软件或网站能够适应不同国家和地区用户需求的技术。在现代软件开发中,随着全球化进程的加速,应用程序需要支持多种语言,以便更好地服务全球用户。Spring MVC 是一个广泛使用的Java Web...

    struts2国际化语言切换

    以下是实现Struts2国际化语言切换的详细步骤: 1. **创建资源包**: 首先,你需要为每种支持的语言创建一个资源包。资源包通常是以.properties为后缀的文本文件,例如`message_zh_CN.properties`(中文)和`...

    js使用i18n实现页面国际化的方法

    总结以上内容,要实现一个页面的国际化,首先需要确定一个国际化策略,选择合适的库(如jQuery.i18n.properties),准备多语言的资源文件,然后在页面加载时根据用户的语言偏好动态加载对应的资源文件,并替换页面中...

    WEB多语言 国际化 本地化

    在开发Web应用时,"WEB多语言 国际化 本地化"是一个关键的领域,它使得网站能够适应全球不同地区的用户,提供多种语言的界面和内容。这涉及到.NET框架中的全球化(Globalization)和本地化(Localization)概念。 ...

    Vue或UniApp 前端语言国际化 i18n lang.js包

    在开发Web应用时,语言国际化(i18n)是一个重要的功能,允许应用程序根据用户的地域设置展示相应的语言内容。Vue.js和UniApp都是常见的前端框架,它们提供了方便的国际化插件来实现这一功能。本篇将详细介绍Vue和...

    jquery 实现语言国际化

    在Web开发中,实现语言国际化是一项重要的功能,它允许网站的内容根据用户的选择或浏览器设置自动切换为不同的语言。"jQuery实现语言国际化"是这个主题的核心,它利用jQuery库的灵活性和广泛的应用来创建一个可适应...

    struts2国际化 标签 页面 处理类

    - 在JSP页面的表单中,使用`&lt;s:textfield&gt;`标签,并通过`key`属性指定国际化键,例如 `&lt;s:textfield name="name" key="wintys.i18n.name" /&gt;`。注意,使用国际化时,表单的theme不应设置为`simple`。 3. 国际化...

    Struts2国际化(可选择语言)

    在Struts2中实现国际化(I18n,Internationalization)是常见的需求,目的是使应用程序能够根据用户的语言和地区提供相应的本地化内容。本示例将详细介绍如何在Struts2框架下实现国际化,并通过myEclipse开发环境...

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

    国际化(i18n,即internationalization)是让应用能够支持多种语言和地域的重要特性,使得全球用户都能获得良好的用户体验。在Struts2中实现国际化,主要涉及以下几个关键步骤: 1. **创建资源文件**: 国际化的...

    Asp.net 国际化多语言(更换皮肤也有)

    通过以上步骤,我们可以为Asp.NET应用实现完整的国际化和多语言支持,同时结合皮肤更换,提供更加贴近用户文化的用户体验。记住,始终考虑可维护性和扩展性,以便在项目后期添加更多语言或调整样式时能轻松进行。

    jquery国际化demo

    总之,“jquery国际化demo”是一个很好的学习资源,通过它,开发者可以快速掌握如何在jQuery项目中实现多语言支持,提升用户体验,使应用更具全球化视野。这个小案例不仅展示了技术的运用,还强调了良好的注释习惯,...

    多语言国际化1

    总结来说,Struts 1.3通过Resource Bundle、Action Messages、Locale和Filter等机制,为多语言国际化提供了强大的支持。在实际开发中,理解和熟练掌握这些组件,能够帮助我们构建出适应全球化需求的高质量Web应用。

    struts2语言国际化

    Struts2语言国际化提供了便捷的方式,通过配置拦截器、资源文件、Action以及页面元素,使得Web应用可以支持多种语言。这不仅提升了用户体验,也为全球化部署提供了基础。在实际开发中,根据项目需求,可能还需要考虑...

    用Struts1实现的国际化语言切换

    通过以上步骤,我们可以实现Struts1框架下的国际化语言切换功能。这不仅提高了用户体验,也为网站全球化提供了基础。然而,国际化不仅仅是语言的切换,还包括日期、时间、数字格式等本地化内容的适配,这需要我们在...

Global site tag (gtag.js) - Google Analytics