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》
分享到:
相关推荐
博文链接:https://ziyoujiedao.iteye.com/blog/150552
很明显,Struts 2 的 Convention 插件借鉴了 Rails 的创意,甚至连插件的名称都借鉴了“约定优于配置”原则。 由于 Struts 2 的 Convention 插件的主要特点是“约定优于配置”,当我们已经习惯了 Struts 2 的基本...
本文内容包括:REST简介资源和标识符操作资源的方式Struts2的REST支持RestActionMapper简介为Struts2应用安装REST插件实现支持REST的Action类实现视图层参考资料从V2.1开始,Struts2开始提供Convention插件,它允许...
rails2-sample good book
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
Struts 2 依然是一个 MVC 框架,最初设计 Struts 2 时并没有按 REST 架构进行设计,因此 Struts 2 本质上并不是一个 REST 框架。由于 Struts 2 提供了良好的可扩展性,因此允许通过 REST 插件将其扩展成支持 REST 的...
《Rails之道》按照Rails的各个子系统进行组织编排,分别介绍了Rails的环境、初始过程、配置和日志记录,Rails的分配器、控制器、页面生成和路由,REST、资源和Rails,ActiveRecord的基础、关联、验证和高级技巧,...
Knock - 为Rails API实现无缝JWT身份验证
字体配制文件 博文链接:https://babo.iteye.com/blog/72298
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 ...
该软件包旨在帮助您创建Rails国际化密钥。 Sublime Text 2版本不再使用新功能进行更新; 您仍然可以从Package Control下载它,也可以在找到它。 可用命令 1.检查按键 如果要检查*.yml文件中存在哪些键,则可以打开...
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服务器 主厨 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 ...
《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...