struts2的国际化标签

1.      java的国际化

Java国际化主要靠三个类实现:

java.util.ResourceBundle加载资源包,

java.util.Local语言环境

java.text.MessageFormat格式化消息

资源文件的三种形式:

baseName_language_contry.properties,

baseName_language.properties,

baseName.properties其中baseName表示资源文件的基本名

Locale local=Locale.getDefault();//获得Locale对象,默认当前国际和语言

ResourceBundle bundle=ResourceBundle.getBundle("test/message",locale);//根据当前环境加载资源文件

System.out.println(bundle.getString("hello"));//在message_zh_CN.properties中找,找不到在message_zh.properties中找,找不到在message.properties中找,再找不到就报错误

如果在资源文件中带了占位符,例如:msg={0},你好,今天是{1}

那么就要使用MessageFormat了,这个类里有个format(String pattern,Object … values)方法

还有一种方式是以实现了ListResourceBundle的类为资源文件,例如baseName_zh_CN.class,这种方式这里不介绍

2.      jsp的国际化实现

参考:http://blog.csdn.net/sqs201/article/details/7204244

 

3.      struts2的国际化

a)        全局范围

配置常量struts.custom.i18n.resources=baseName国际化资源文件的位置,那么在任何地方都可以使用资源文件中的内容,在页面上可使用<s:text name=”msg” ><s:param ...></s:text> 在action中使用getText(msg,newString[]{…})

在struts2中资源文件中可以使用ognl表达式作为占位符,例如welcome_msg=${username},welcome you!,但是这种占位符功能有限,也只能直接取action中的属性的值

b)        包范围

在action所在包的路径下定义资源文件,package_language_country.properties 那么该包下所有的action可使用,这里记住一定是”package”字符串,而不是com.other.xxx.propertis,package_xx_xx.properties和action并行存放

c)        Actioin范围

在action的java文件所在的路径下存放ActionClassName_language_country.properties,则只有类名为ActionClassName的action和转发到的页面可以使用.

d)        临时

把<s:i18n ..> 作为<s:text..>的父标签, 在s:i18n中指定资源文件,那么也只有在这个标签里可以使用

 

如果在UserAction中使用国际化,查找key的顺序如下:

UserAction.properties->UserAction的父接口.properties->package.properties->全局

如果在UserAction转发到的页面上使用国际化,那么顺序就是:临时->类范围->包范围->全局


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值