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

Struts2和Rails的国际化实现

阅读更多
Struts2的实现方式:
对所有的Action添加前置拦截器,其中使用ActionContext实例的setLocale()。

private void setLang(ActionContext actionContext,Map session){
    	if(null != session.get("lang") && !"".equals(session.get("lang"))){
			String[] localeStr = session.get("lang").toString().split("_");
			Locale lang = new Locale(localeStr[0], localeStr[1]);
			actionContext.setLocale(lang);
			System.out.println("---------change language to " + session.get("lang"));
		}
}

动态指定国际化语言,只要设置session中的lang的值即可。

调用方式:
I.应用范围
jsp页面和action层面,至于service和dao或者其他工具类中的信息内容的国际化,可以采取如下方式:例如userDAOImpl中的方法在报错的情况下可能向上抛出错误信息(没有找到用户)。可以把这个错误信息转换成一个key(String),key对应的值写在国际化的资源文件中。这样把这个key抛到action层然后就可以获取到国际化的内容了。
II.使用方法
①. 在jsp中使用国际化内容,通过使用标签<s:text/>如果有国际化信息是动态的可以添加参数使用标签<s:param/>。
Demo:国际化资源文件中有此内容
hello = 你好!
helloParam = {0}你好!{1}
   在jsp中可以使用
<s:text name="hello"/>
<s:text name="helloParam">
	<s:param>china</s:param>
	<s:param>time</s:param>
</s:text>

②. 在Action中使用国际化。ActionSupport类中提供了getText()方法
Demo:国际化资源文件中有此内容
hello = 你好!
helloParam = {0}你好!{1}
   在Action中可以使用
getText(“hello”);
getText(“helloParam”,new String[] {“china”,”time”})

III.项目中的资源文件
① 通过在struts.properties文件中struts.custom.i18n.resources=baseMessages
指定全局的资源文件,文件放在项目中的src包根目录下
② 通过在action对应的包中定义AAction_zh_CN.properties定义对应AAction的国际化资源文件。
③ Jsp的资源文件可以使用全局的文件,也可以通过<s:i18n/>指定。
④ 在资源文件后面添加不同的语言后缀即可定义不同语言的资源文件
例如 baseMessages_en_US.properties
baseMessages_zh_CN.properties

Rails的实现方式:

Rails2.0以上的版本已经自带国际化的功能。
只要对所有的Action添加前置过滤器即可
 
  # 设置本地语言
  before_filter :set_language
  def set_language
    if session[:lang]
      I18n.locale = session[:lang]
    else
      request_language = request.env['HTTP_ACCEPT_LANGUAGE']
      request_language = request_language.nil? ? nil : request_language.split(/[\-\,]/)[0]
      I18n.locale = request_language if request_language && File.exist?("#{RAILS_ROOT}/config/locales/#{request_language}.yml")
    end
  end

项目中的语言通过I18n.locale指定。
动态指定国际化语言,只要设置session中的lang的值即可。
调用方式:

I.erb页面可以使用<%= t('keyn') %>或<%= t 'keyn' %>,
带参数:<%= t('keyn',:params1=>'value1') %>或<%= t 'keyn',:params1=>'value1' %>
II.Action中则可以直接使用t('keyn')或t 'keyn',keyn就是对应的国际化键值。
带参数:t('keyn',:params1=>'value1')或<%= t 'keyn',:params1=>'value1' %>

以上是我总结的国际化文档中的摘要,详细内容可以参考附件中的《Struts2项目的国际化实现方式.docx》和《Rails国际化实现方式.docx》
0
3
分享到:
评论

相关推荐

    rails国际化

    博文链接:https://ziyoujiedao.iteye.com/blog/150552

    Struts2-rest插件(有注释)

    很明显,Struts 2 的 Convention 插件借鉴了 Rails 的创意,甚至连插件的名称都借鉴了“约定优于配置”原则。 由于 Struts 2 的 Convention 插件的主要特点是“约定优于配置”,当我们已经习惯了 Struts 2 的基本...

    Struts2零配置

    这种设计理念源于Ruby on Rails框架的成功实践,并被广泛应用于包括Struts2在内的多个现代Web框架中。 #### 二、Struts2中的零配置实现:Convention插件 **Struts2 Convention插件**是实现零配置的关键组件。它...

    rails2-sample

    从给定的文件信息来看,我们正在探讨的是一本关于Ruby on ...综上所述,《Simply Rails2》不仅为初学者提供了全面的Ruby on Rails入门指南,也为进阶开发者提供了深入的技术细节和实践案例,是一本值得推荐的学习资料。

    ruby和rails简介

    Rails是一款用Ruby编写的全栈Web应用框架,它引入了数据映射、模型-视图-控制器(MVC)模式、Web服务支持和安全特性,且操作简便,比如相比Struts,Rails的MVC实现更加易于使用。Rails还具备根据模板自动生成Web程序...

    component base rails applications

    在掌握了以上知识点后,开发人员能够更加系统地了解如何利用Rails Engine来实现模块化的Rails应用,从而提高代码的复用性、可维护性和扩展性。通过拆分成组件,还能让团队分工更加清晰,提高开发效率,减少代码间的...

    基于Ruby On Rails的在线购书系统-毕业设计基于Struts+Hibernate的人力资源管理信息系统

    Struts是Java平台上的一种MVC框架,常用于构建企业级的Web应用,而Hibernate是一个对象关系映射(ORM)工具,它简化了数据库操作,将Java对象和数据库表之间的映射自动化。结合这两个技术的人力资源管理系统可能包含...

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    Rails 101 入门电子书

    - 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...

    [Rails 常用插件简介]CRUD Generator 2

    CRUD Generator 2就是这样一个工具,它是一个基于Edge Rails(Rails的开发版本)的高级生成器,旨在简化模型和控制器的CRUD操作的创建。 **1. Edge Rails与Rails稳定版的区别** Edge Rails指的是Rails的最新开发...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    JRuby和Rails-让Ruby语言融入于Java项目.rar

    通过学习这本教程,读者将能够熟练地在Java项目中运用JRuby和Rails,实现更高效的开发流程,并充分利用两者的优点。无论是Java开发者希望扩展技能树,还是Ruby开发者寻求进入企业级市场,这本书都将提供宝贵的指导。

Global site tag (gtag.js) - Google Analytics