struts2信息国际化

国际化,必须要有一组信息文件 (统称为一个资源包,这组文件具有共同 basename  基本名称)

         struts-messages.properties

         struts-messages_de.properties

         struts-messages_pt.properties

         具有共同基本名称struts-messages

         资源文件命名规则basename_语言_国家.properties 

例如 :messages_zh_CN.properties  messages_en_US.properties 

        

Java实现国际化原理,ResourceBundle 根据当前系统国家语言、指定国家区域 去读取不同 资源文件

 

properties文件不能直接写入中文 ,只能写unicode -------- 通过native2ascii命令 转换中文 为 unicode

 

struts2内部已经编写好了 读取国际化文件的代码,只需要配置信息文件

 

四种

1、 全局资源 对于 所有Action 都可以使用 ,该资源文件需要在struts.xml中进行配置

例如 :

在src创建messages_zh_CN.properties (这个文件方到哪里都行,不一定要放到src下,但是必须得在struts.xml中配置)

         <constant name="struts.custom.i18n.resources"value="messages(基名)"></constant>

                   struts.custom.i18n.resourcesdefault.xml文件中找到

在src/cn/itcast/action  创建messages_zh_CN.properties 按照如下配置

         <constantname="struts.custom.i18n.resources"value="cn.itcast.action.messages"></constant>

        

ActionSupport类 提供 getText 用于读取国际化信息文件

 

国际化文件,支持动态消息文本,java底层MessageFormat 

例:

publicclass MessageFormatTest {

         public static void main(String[] args){

                   String pattern = "今天天气{0},微风{1}级";

                   // 动态消息文本,支持将参数传入 消息,替换占位符 {0} {1}

                   String msg =MessageFormat.format(pattern, "晴","2-3");

 

                   System.out.println(msg);

         }

}

如果在配置文件中写上:username=用户名必须在{0}到{1}位

那么可以这样获取this.getText("username",new String[] { "6", "12" }))这样就变成6到12位了。

2、 Action范围资源文件, 该文件配置信息,只能某个Action内部使用 (无需配置)

在Action所在目录 : Action类名_语言_国家.properties

 

3、 Package范围资源文件, 在Action所在包 及其 父包, 创建包范围信息文件 (无需配置)

文件名 : package_语言_国家.properties

 

4、 临时信息文件,在JSP中使用 

<s:i18nname="cn.itcast.action.package">

         <s:textname="city"></s:text>

</s:i18n>

如果不使用 <s:i18n>  默认读取 全局信息文件的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值