Struts2和Rails的国际化实现

本文档介绍了Struts2和Rails框架中的国际化实现方法。Struts2通过为所有Action添加前置拦截器并利用ActionContext的setLocale()方法来设置语言环境。Rails则通过在所有Action中添加前置过滤器来实现。两种框架都支持动态指定语言环境,并提供多种方式调用国际化资源。
[size=medium][b][color=darkblue]Struts2的实现方式:[/color][/b][/size]
对所有的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"));
}
}

[color=red][i][b]动态指定国际化语言,只要设置session中的lang的值即可。[/b][/i][/color]

[size=medium]调用方式:[/size]
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

[size=medium][b][color=darkblue]Rails的实现方式:[/color][/b][/size]

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的值即可。
[size=medium]调用方式:[/size]

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' %>

[color=indigo][b][size=small]以上是我总结的国际化文档中的摘要,详细内容可以参考附件中的《Struts2项目的国际化实现方式.docx》和《Rails国际化实现方式.docx》[/size][/b][/color]
基于遗传算法的微电网调度(风、光、蓄电池、微型燃气轮机)(Matlab代码实现)内容概要:本文档介绍了基于遗传算法的微电网调度模型,涵盖风能、太阳能、蓄电池微型燃气轮机等多种能源形式,并通过Matlab代码实现系统优化调度。该模型旨在解决微电网中多能源协调运行的问题,优化能源分配,降低运行成本,提高可再生能源利用率,同时考虑系统稳定性与经济性。文中详细阐述了遗传算法在求解微电网多目标优化问题中的应用,包括编码方式、适应度函数设计、约束处理及算法流程,并提供了完整的仿真代码供复现与学习。此外,文档还列举了大量相关电力系统优化案例,如负荷预测、储能配置、潮流计算等,展示了广泛的应用背景技术支撑。; 适合人群:具备一定电力系统基础知识Matlab编程能力的研究生、科研人员及从事微电网、智能电网优化研究的工程技术人员。; 使用场景及目标:①学习遗传算法在微电网调度中的具体实现方法;②掌握多能源系统建模与优化调度的技术路线;③为科研项目、毕业设计或实际工程提供可复用的代码框架与算法参考; 阅读建议:建议结合Matlab代码逐段理解算法实现细节,重点关注目标函数构建与约束条件处理,同时可参考文档中提供的其他优化案例进行拓展学习,以提升综合应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值