20.struts2_国际化

1.国际化的目标


1)如何配置国际化资源文件

  ①Action 范围资源文件

在Action类文件所在的路径建立命名规则ActionName_language_country.properties 的文件

包范围资源文件:

在包的根路径下建立文件名为package_language_country.properties 的属性文件,一旦建立,

处于该包下的所有 Action 都可以访问该资源文件。注意:包范围资源文件的 baseName 就是package,

不是Action所在的包名。

全局资源文件命名方式: basename_language_country.properties

struts.xml

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

临时指定资源文件:<s:i18n.../> 标签的 name 属性指定临时的国际化资源文件

⑤各种国际化资源加载顺序:距离当前Aciton较近的配置优先被加载。Action>package>全局

2)如果在页面上和Aciton类中访问国际化资源

① 在Action类中,若Action实现了TextProvider接口,则可以调用getText()获得value值。

②页面上可以使用<s:text 标签;对于表单标签可以使用表单标签的Key属性值

-->若有占位符,则可以使用s:text的s:param 子标签来填充占位符

-->若页面来自Action,则可直接访问Aciton的值栈中的属性值

3)实现通过超链接切换语言


下面是实例


一、配置全局国际化文件,使用 表单标签的key属性。

index.jsp 加载后可根据语言自动选择,实现国际化

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<s:form action="" >
		<!-- %{}强制OGNL解析,从资源文件中获取文件值
			因为此时在对象栈中,有DefaultTextProvider的一个实例
			,该类提供getText方法可以访问
		 -->
		<s:textfield name="username" label="%{getText('username')}"></s:textfield>
		<!-- 这个是key值对应的是国际化文件中的key -->
		<s:textfield name="username" key="username"></s:textfield>
		<s:password name="password" key="password"></s:password>
		<s:submit key="submit"></s:submit>
	</s:form>
	
</body>
</html>

src下的struts.xml 和国际化文件

<struts>
	<!-- 配置国际化资源文件 -->
	<constant name="struts.custom.i18n.resources" value="i18n"></constant>

    <package name="default" namespace="/" extends="struts-default">
    </package>
</struts>
i18n_en_US.properties 英文(对应中文/i18n_zh_CN.properties不贴了)
username=UserName
password=Password
time=Time:{0}
submit=submit


二,如果页面的 使用的simple主题,则key属性失效,需要单独是用s:text标签,如下

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<s:form action=""  theme="simple">
		<!-- %{}强制OGNL解析,从资源文件中获取文件值
			因为此时在对象栈中,有DefaultTextProvider的一个实例
			,该类提供getText方法可以访问
		 -->
		<s:text name="username"/><s:textfield name="username" label="%{getText('username')}"></s:textfield>
		<!-- 这个是key值对应的是国际化文件中的key -->
		<s:text name="username"/><s:textfield name="username" key="username"></s:textfield>
		<s:text name="password"/><s:password name="password" key="password"></s:password>
		<s:submit key="submit" value="%{getText('submit')}"></s:submit>
	</s:form>
	
</body>
</html>




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值