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》
分享到:
相关推荐
Struts2支持国际化,通过定义资源文件来实现多语言支持。 **示例资源文件**: ```properties # messages_zh_CN.properties welcome.message=欢迎使用我们的网站! ``` **示例代码**: ```java public String ...
WebWork(后来被整合到Struts 2中)则提供了另一种MVC实现,它在控制层处理动作和视图的交互。 总的来说,JavaWeb开发技术经历了从MVC模式的引入到各种框架的涌现,再到语义Web的探索,始终致力于提高开发效率、...
- **src/main/resources**:存储配置文件和其他资源,如数据库连接字符串、国际化消息文件等。 - **src/main/webapp**:Web应用的根目录,包含JSP页面、静态资源(CSS、JavaScript、图片)和Web应用配置文件(如web....
Seam提供了诸如会话管理、事件处理、国际化的高级功能,使开发者能够快速构建功能丰富的应用。 ### Ruby on Rails Ruby on Rails(简称Rails)是一个全栈的Web应用框架,采用Ruby语言编写。它遵循MVC架构,强调...
Sparkweb MVC 框架介绍 一、什么是 Sparkweb ? Sparkweb 是一个超轻量级的简易高效的 Java WEB 开发框架,其设计思想...Sparkweb框架包括:基础的MVC、国际化、JavaBean验证器、缓存 和 可选的 ORM 实现。 四、Sparkweb