struts2的i18n国际化资源文件及动态语言切换

总结: 

  如果在同一个package下同时存在action级别的资源文件和package级别的资源文件, 那么优先找的是action级别的资源文件,

如果找不到, 再找package级别的资源文件.

 

一, action级别的i18n(麻烦, 不常用)

*.properties资源文件要和action在同一个package下, 然后在页面中使用<s:property value="getText('资源文件的key')" />取值

 

二, package级别的i18n(麻烦, 不常用)

*.properties资源文件要和action在同一个package下, 并且资源文件的命名前缀固定是package

范例: package级别的资源文件

public class HelloAction extends ActionSupport {

  private String msg; +getter/setter 

  @Override
  public String execute() throws Exception {
    this.setMsg(super.getText("hello.msg"));
    return ActionSupport.SUCCESS;
  }

}

同一个包下创建package.properties

hello.msg =Hello World \!\!\!\!

访问: 

 

 

三, 全局级别的i18n(要用就用这种)

1. 在src目录下新建xxx_en_US.properties和xxx_zh_CN.properties资源文件, xxx一般设置为项目名

2. 在struts.xml中配置资源文件

<!-- i18n国际化资源文件, bbs2009是资源文件的前缀 -->
<constant name="struts.custom.i18n.resources" value="bbs2009" />

3. 在页面中使用<s:property value="getText('资源文件的key')" />取值

-------------------------------------------

  对于全局级别的资源文件, 还有另外一种配置方法(前提要保证在action的同级package下不存在action级别的资源文件

和package级别的资源文件):

在src下创建: Message.properties

hello.msg =mldn World \!\!\!\!

同时创建: struts.properties 

struts.custom.i18n.resources = Message

注意: struts.custom.i18n.resources在struts2-core-2.1.8.1.jar中的default.properties中, 

用于找资源文件, 其值写成Message.properties资源文件的前缀, 这样才能找到该资源文件

 

 

四, 动态语言切换

方法1: 在浏览器中输入http://localhost:8080/struts2_3000_BBS2009_07/admin/Login_input?request_locale=zh_CN

  回车, 页面切换成中文, 后面是request_locale=en_US的时候是英文, 而且这样切换之后整个session会话窗口中都保持着

方法2: 当点击中文, 登录界面切换成中文, 但点击English, 登录界面切换成英文

     

实现:

登录界面:

<a href="admin/language?request_locale=en_US">English</a> |
<a href="admin/language?request_locale=zh_CN">中文</a>

struts.xml: namespace="/admin"

<!-- 中英文切换 -->
<action name="language" class="com.bjsxt.bbs2009.action.LanguageAction">
  <result>/admin/Login_input.jsp</result>
</action>

LanguageAction.java:

@SuppressWarnings("serial")
public class LanguageAction extends ActionSupport {
  @Override
  public String execute() throws Exception {
    return super.execute();
  }
}

 

posted @ 2017-03-05 15:14  半生戎马,共话桑麻、  阅读(339)  评论(0)    收藏  举报
levels of contents