struts2国际化

java国际化

资源包

格式:
<包名>_<语言代码>_<国家/地区代码>
<包名>_<语言代码>
属性文件
纯文本文件,保存字符串的键-值对信息,每行一条,
使用ResourceBundle加载获取资源,这是一个抽象类,
提供了绑定资源的静态方法。

资源绑定类
继承抽象类ListResourceBundle
				public class Text_ja_JP extends ListResourceBundle{
				String[][] str = new String[][]{
					{"name","小明"}
				};
				
				@Override
				//重写getContents方法返回一个二维数组
				protected Object[][] getContents() {
					return str;
				}
			}



查找规则
查找包含语言和地区的资源包,如果没有找到就找包含语言的资源包,
再没有找到就直接用默认资源包,如果默认资源包不存在就报错,
默认是在类路径下查找,如果包含在包里,指定资源包名时要加包名。

消息格式化

使用MessageFormate进行消息格式化,指定一个消息模式,"{0}~{9}"进行标识
作为占位符,占位符出现的顺序,和次数不限制,
	public class TextI18N {
		
			public static void main(String[] args) {
				Locale defaultlocale = Locale.getDefault();
				ResourceBundle bundle = ResourceBundle.getBundle("Text");
				String format = bundle.getString("format");
				//format="{0} is a {1}";
				MessageFormat mf = new MessageFormat(format,defaultlocale);
				Object[] obj = {"xiaoming","student"};
				String  str = mf.format(obj);
				System.out.println(str);
				//xiaoming is a student
			}
		}


占位符样式{index,type,style},

Struts2国际化

资源文件的加载

这里和Java国际化不同的是sturts2会自动寻找国际化资源文件

Action范围的资源文件,资源文件名是Action类名,当然资源包和类是在同一路径下的。

这里也是先查找 _语言_地区 后 _语言 最后 直接加载没有地区和语言的资源包

然后是包范围的,注意包范围的资源文件,

资源包名就是package,是在包的根路径下,就是包的.class文件路径

没有再是使用默认设置的资源包。

在红色地方是sturts2配置的一些默认的常量,可以找到配置国际化资源的全局常量,

<constant name="struts.custom.i18n.resources" value=""></constant>


jsp中访问国际化资源文件

<s:i18n/>标签

用于指定是哪个资源文件

<s:text/>标签

可以单独使用,用param标签指定资源文件中的占位符,这里单独使用

访问的资源文件和是否是直接访问的jsp页面还是通过action跳转的有关
注意标签里面的value属性会进行ognl解析,要传String要用''括起来

<s:textfield key=""/>

这里的key访问的资源文件和是否是直接访问的jsp页面还是通过action跳转的有关,

label属性是将标签写死的,但可以进行强制Ognl解析,进行国际化


通过action跳转到jsp页面的<s:text/>标签访问的资源文件和Action一样,

单独访问jsp页面的<s:text>标签访问的是全局的资源文件

jsp中消息格式化

使用<s:param/>标签传入参数替换占位符

Action中访问国际化资源文件

使用getText()函数读取,可以接参数

Action中消息格式化

getText()方法可以传入一个数组类型的参数替换占位符

在国际化资源文件中访问本地化消息

age = 20
name = xiaoming
msg = ${getText("name")} is ${getText("age")} and ${msg}
后面的${msg}是从值栈中去值进行匹配

设置默认的资源文件包

配置常量struts.custom.i18n.resources
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值