`
txyly998
  • 浏览: 111459 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

国际化中让用户快捷的切换语言

阅读更多
开发国际化的应用程序时,有一个功能是必不可少的——让用户快捷地选择或切换语言。在Struts 2.0中,通过ActionContext.getContext().setLocale(Locale arg)可以设置用户的默认语言。不过,由于这是一个比较普遍的应用场景(Scenario),所以Struts 2.0为您提供了一个名i18n的拦截器(Interceptor),并在默认情况下将其注册到拦截器链(Interceptor chain)中。它的原理为在执行Action方法前,i18n拦截器查找请求中的一个名为"request_locale"的参数。如果其存在,拦截器就将其作为参数实例化Locale对象,并将其设为用户默认的区域(Locale),最后,将此Locale对象保存在session的名为“WW_TRANS_I18N_LOCALE”的属性中。

下面,我将提供一完整示例演示它的使用方法。
package tutorial;

import java.util.Hashtable;
import java.util.Locale;
import java.util.Map;

publicclass Locales {
   public Map<String, Locale> getLocales() {
       Map<String, Locale> locales =new Hashtable<String, Locale>(2);
       locales.put("American English", Locale.US);
       locales.put("Simplified Chinese", Locale.CHINA);
       return locales;
   }
}


<%@taglib prefix="s" uri="/struts-tags"%>
<script type="text/javascript">
<!--
    function langSelecter_onChanged() {
        document.langForm.submit();
    }
//-->
</script>
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"/>
<s:bean id="locales" name="tutorial.Locales"/>
<form action="<s:url includeParams="get" encode="true"/>" name="langForm"
    style="background-color: powderblue; padding-top: 4px; padding-bottom: 4px;">
    Language: <s:select label="Language"
        list="#locales.locales" listKey="value"    listValue="key"
        value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"
        name="request_locale" id="langSelecter"
        onchange="langSelecter_onChanged()" theme="simple"/>
</form>


上述代码的原理为,LangSelector.jsp先实例化一个Locales对象,并把对象的Map类型的属性locales赋予下拉列表(select) 。如此一来,下拉列表就获得可用语言的列表。大家看到LangSelector有<s:form>标志和一段Javascript脚本,它们的作用就是在用户在下拉列表中选择了后,提交包含“reqeust_locale”变量的表单到Action。在打开页面时,为了下拉列表的选中的当前区域,我们需要到session取得当前区域(键为“WW_TRANS_I18N_LOCALE”的属性),而该属性在没有设置语言前是为空的,所以通过值栈中locale属性来取得当前区域(用户浏览器所设置的语言)。
你可以把LangSelector.jsp作为一个控件使用,方法是在JSP页面中把它包含进来,代码如下所示: <s:include value="/LangSelector.jsp"/>

在例1中的HellloWorld.jsp中<body>后加入上述代码,并在struts.xml中新建Action,代码如下:
<action name="HelloWorld">
    <result>/HelloWorld.jsp</result>
</action>
分享到:
评论

相关推荐

    ResourceBundleEditor_v0.7.5 eclipes国际化插件

    在Java中,`ResourceBundle`是处理国际化资源的标准方式,它存储了一组特定语言环境下的字符串和其他数据。通过使用`ResourceBundle`,开发者可以在不修改代码的情况下,轻松地切换应用程序的语言界面,满足不同地区...

    PropetiesEditor,编码国际化

    在IT行业中,编码国际化是一个非常重要的议题,尤其是在开发多语言应用时。`PropetiesEditor` 是一个专为Eclipse集成开发环境设计的插件,它专注于处理`.properties`文件,这是Java应用程序中用来存储字符串资源的...

    国际化插件-ResourceBundle Editor

    国际化插件——ResourceBundle Editor是专门用于处理Java应用程序中国际化(i18n)资源管理的工具。在软件开发过程中,为了使应用能够适应不同语言和文化环境,开发者通常会使用ResourceBundle,这是一个Java类库,...

    让世界听见您的声音,让技术跨越国界 立即体验我们的快捷翻译工具,开启您的全球化编程之旅!

    即时翻译:支持多种编程语言环境下的快速文本翻译,让您的代码注释、文档说明更加国际化。 精准高效:专为开发者设计,确保技术术语准确无误,提升工作效率。 跨越语言障碍,共享技术之美 多语言支持:无论您是在...

    OPENCART2.0中文语言包最新版

    中文语言包确保所有菜单、提示和错误消息都被翻译成中文,让中国用户无语言障碍地进行后台管理。 2. **性能提升**:OpenCart 2.0在代码优化和数据库查询上进行了改进,提高了系统的运行速度和响应时间,有助于提高...

    communicator 2007 多语言补丁包

    一旦安装完成,用户就可以在设置中自由切换语言,无需重新安装整个软件。 值得注意的是,此补丁包并非提供实时翻译功能,而是更改软件界面的显示语言,确保用户能理解并操作软件的各项功能。这对于那些需要与不同...

    jinto

    在描述中提到,“jinto”是为了实现快速的国际化处理而设计的,这表明它可能提供了诸如资源文件管理、字符串翻译、语言切换等特性。在软件开发过程中,特别是在面向全球用户的项目中,国际化的支持是非常关键的。这...

    实用的本地化工具库.zip

    Swiftternalization,正如其名,是Swift语言与国际化(Internationalization)的结合体,旨在简化iOS应用的本地化流程。这个开源框架的核心理念是利用JSON文件来存储和管理本地化的文本资源,相比于苹果官方推荐的...

    微软apploc,可以更换语言环境

    这款工具尤其对那些需要在不同语言环境中运行的应用程序非常有用,比如在国际化的公司或者多语言的工作站中。 首先,我们要理解什么是MUI(多语言用户界面)。在Windows操作系统中,MUI是一种功能,它使同一程序能...

    jw joomla快捷图片滚动

    4. 多语言支持:由于包含“language”文件夹,我们可以推断该模块支持多语言环境,这对于国际化的Joomla网站来说非常重要。 安装和配置"jw Joomla快捷图片滚动"的过程相对简单,通常包括以下步骤: 1. 下载模块的...

    2020下半年手机输入法用户研究报告.zip

    3. 国际化:随着全球化的推进,输入法需要支持更多语言,满足跨国交流的需求。 4. 数据安全:如何在提供便利的同时保障用户数据安全,将是输入法开发者面临的重大挑战。 综上所述,《2020下半年手机输入法用户研究...

    unigui右键菜单_一完善

    4. **国际化与本地化**:如果你的应用需要支持多语言,那么菜单项的文本就需要根据用户的语言设置进行改变。Unigui提供了本地化支持,你可以为每种语言定义不同的菜单文本,并在运行时切换。 5. **样式与布局**:...

    行业文档-设计装置-一种应用于国际商务谈判时用的多功能书架.zip

    9. **定制化**:允许用户根据自身需求自定义界面布局、快捷方式等,提升个性化体验。 10. **集成其他工具**:可能与其他常用商务应用(如邮件、日历、视频会议)集成,提供一站式工作平台。 这种多功能书架的设计...

    精美的一款日历控件,好学,易用,简单,快捷!

    6. **国际化支持**:为了满足全球用户的需求,My97DatePicker支持多语言,开发者可以轻松地切换日历的语言设置,以适应不同国家和地区用户的使用习惯。 7. **性能优化**:尽管是一个功能丰富的日历控件,但My97...

    JavaScript_这个插件实现了本地菜单栏的翻译,搜索栏,右键,上下文,菜单节点等.zip

    这个插件可能提供了一种方式,使得开发者能够轻松地将菜单栏的文字内容根据用户的语言环境进行切换,提高了用户体验,尤其是对于国际化的网站和应用来说,这是一项非常实用的功能。 搜索栏是现代网页和应用中不可或...

    输入法调整工具.exe

    想象一下,在国际会议中,能够迅速切换到正确的语言输入法,是何等的流畅与专业。 其次,输入法调整工具在自定义设置方面的表现同样出色。用户可以根据自己的喜好和打字习惯,设定输入法的热键,这意味着用户无需...

    Opera_9.26_International

    安装过程中,系统会自动检测并适应用户的操作系统语言,确保界面语言的本地化。 四、 安装步骤 1. 下载Opera_9.26_International_Setup.exe文件至本地。 2. 双击运行安装程序,按照提示进行操作。 3. 选择安装语言...

    QT4中文输入法源代码-可在任何平台上移植

    9. **国际化与本地化**:考虑到全球用户的需求,输入法可能需要支持多语言界面。 通过深入理解这些知识点,并结合提供的QT程序源代码,开发者可以学习到如何利用Qt4框架构建跨平台的输入法系统,同时掌握数据库操作...

    eoeAndroid特刊05_Android widget

    - **使用国际化框架**:利用Android提供的框架来处理资源的加载和切换。 ### 结论 通过上述介绍,我们可以看到,无论是Widget的开发还是应用的国际化,都需要开发者深入了解Android平台的相关技术和最佳实践。掌握...

Global site tag (gtag.js) - Google Analytics