`
icekiller110
  • 浏览: 69304 次
  • 性别: 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开发RESTful服务

    本文内容包括:REST简介资源和标识符操作资源的方式Struts2的REST支持RestActionMapper简介为Struts2应用安装REST插件实现支持REST的Action类实现视图层参考资料从V2.1开始,Struts2开始提供Convention插件,它允许...

    rails2-sample

    rails2-sample good book

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    RestFul整合struts所需包

    Struts 2 依然是一个 MVC 框架,最初设计 Struts 2 时并没有按 REST 架构进行设计,因此 Struts 2 本质上并不是一个 REST 框架。由于 Struts 2 提供了良好的可扩展性,因此允许通过 REST 插件将其扩展成支持 REST 的...

    Rails之道,完整扫描版

    《Rails之道》按照Rails的各个子系统进行组织编排,分别介绍了Rails的环境、初始过程、配置和日志记录,Rails的分配器、控制器、页面生成和路由,REST、资源和Rails,ActiveRecord的基础、关联、验证和高级技巧,...

    Ruby-Knock为RailsAPI实现无缝JWT身份验证

    Knock - 为Rails API实现无缝JWT身份验证

    rails实现验证码实例

    字体配制文件 博文链接:https://babo.iteye.com/blog/72298

    Rails.Angular.Postgres.and.Bootstrap.2nd.Edition

    Embrace the full stack of web development, from styling with Bootstrap, building an interactive user interface with Angular 2, to storing data quickly and reliably in PostgreSQL. With this fully ...

    sublime-text-i18n-rails:用于Rails国际化的Sublime Text 23软件包

    该软件包旨在帮助您创建Rails国际化密钥。 Sublime Text 2版本不再使用新功能进行更新; 您仍然可以从Package Control下载它,也可以在找到它。 可用命令 1.检查按键 如果要检查*.yml文件中存在哪些键,则可以打开...

    jquery-rails, 一个 gem,用于自动使用jQuery和 Rails 3.zip

    jquery-rails, 一个 gem,用于自动使用jQuery和 Rails 3 railsjQuery 面向 Rails 如此伟大。这里 gem 提供:jQuery 1.7.2jQuery UI 1.8.18 ( 仅适用于 javascript )jQuery UJS适配器assert_select_j

    chef-rails, 厨房设置一个可以与 Nginx 和 Rails 一起滚动的Ubuntu服务器.zip

    chef-rails, 厨房设置一个可以与 Nginx 和 Rails 一起滚动的Ubuntu服务器 主厨 rails安装一个准备为 Ruby on Rails 栈准备的Ubuntu服务器:NginxPostgreSQLRedisMemcached带RVM的rubyPhusion乘客独立要求Ubuntu ...

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

    Ruby on Rails Tutorial

    《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...

Global site tag (gtag.js) - Google Analytics