Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1244|回复: 0

struts1国际化小结

[复制链接]

该用户从未签到

发表于 2011-8-1 10:10:45 | 显示全部楼层 |阅读模式
自己总结:
1)导入strutsstrutsstrutsstrutsstrutsjspjavajavajavajavastrutsstrutsstrutsstrutsHTMLhtmlhtmlhtmlhtmlhtmlhtml包,写资源文件
资源文件的命名形式:
1、 beanName_language_country.properties    MessageResource_zh_CN.properties
2、 beanName_language.properties
3、 beanName.properties

2)配置truts-config.xml
让加载资源文件
<-config>
   <message-resource parameter=”com.gem..MessageResources”/>
</-config>
3)在页面,使用bean标签显示国际化信息,<bean:message key="uname"/>
4)浏览器工具:语言:设置
5)输入地址即可浏览。
一、中的国际化
a)        jave中实现国际化的原理
中通过Locale对象可以指定或得到当前系统的默认国际化配置及语言代码和国家代码,然后通过ResourceBundle类得到对应Lacale对象的国际化配置文件即Properties文件,通过读取键的值实现国际化。
b)        中实现国际化需要的类
locale类:
可以指定所要显示的语言,即对应的国际化文件
Locale类的方法:
//得到当前系统默认的编码
          Localel=Locale.getDefault();
                                //自定义Locale
                                 //参数1:语言编码en(英文) zh(中文)
                                  //参数2;国家编码US(英国) CN(中国)
          Locale l1=new Locale("en","US");
           //得到国家代码
           l.getCountry();
           //得到语言代码
l.getLanguage();
        ResourceBundle类:
                     可以读取相应的Locale对应的property文件
e)        property文件的文件名编写规则
Basename名_ 语言代码_国家代码.properties
说明:BaseName名可以自定义但后面的名称必需按以上规则书写
f)         读取对应的Properties文件
          //读取对应的Properties文件
          //第一个参数对应相应的basename
          //第二个参数对应相应的Locale
ResourceBundle rb=ResourceBundle.getBundle("Message",l);
           rb.getString("key值");
g)     Properties文件的中文乱码题目
在读取Properties文件时键对应的中文键值会泛起乱码应使用jdk的native2ascii.exe工具将中文转换成unicode码再写入Properties文件中
i)      Properties文件的占位符题目
Properties文件中可以使用{0}{1}进行占位符设置留意是从0位开始
使用占位符
            MessageFormat mf =newMessageFormat(rb.getString("键名"));
      String result = mf.format(newObject[]{"a","b"});
j)      国际化文件的路径题目
ResourceBundle rb=ResourceBundle.getBundle("Message",l);
默认读取的是src下的文件,若路径不同应标明路径
方法:msg + . + Properties文件的BaseName名
Eg: msg.Message
k)     留意:
默认情况下ResourceBundle会根据参数Locale的国家代码和语言代码自动匹配相应的Properties文件进行读取(所以properties文件的命名必需正当)。
若没有找到相应文件则加载系统默认的国际化配置文件(读取系统设置的国家代码和语言代码)若系统的设置也没有与之对应的properties文件则加载Basename名.properties文件。若还没有对应文件则报错。
l)      留意2:新建项目进行测试时必需建立源src文件夹否则报错。
二、硬编码国际化
a)     硬编码国际化即对页面中不变的文字进行国际化处理。
b)     使用方法
                i.         在-config.xml:文件中加入
<message-resources parameter="MessageResources" />
第一个参数及Properties文件BaseName的名称
               ii.         在properties文件中配置相关的字段,留意中文要转换成unicode码
              iii.         在页面顶用标签替代需要国际化的内容
<bean:message key=” ”>
c)     留意:加载国际化文件时若没有找得相关文件(IE中的国际化配置)则会根据操纵系统的语言配置进行查找若还没有会加载默认文件即Basename.properties文件。
d)     通过修改session实现手动修改语言
request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
第二个参数为自定义的Locale对象。
或者:
this.setLocale(request, currentLocale);
第二个参数为自定义的Locale对象
三、动态文本国际化
1、 方法
在action中定义普通讯息和错误信息
ActionMessage m=newActionMessage("upass",newObject[]{"pppp"});
第一个参数是该信息的key值,第二个参数是占位符的内容,若仅有一个占位符可以不用object数组
直接写成String类型的参数
ActionMessage m=newActionMessage("upass",”sss”);

2、分别定义普通讯息和错误信息的ActionMessages
ActionMessages messages=newActionMessages();

3、将普通讯息和错误信息分别放入相应的messages中
Messages.add("uu",m3);
第一个参数为信息的名称,第二个参数为定义的ActionMessage
4、将普通讯息存入
this.saveMessages(request,messages);
留意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。
5、将错误信息存入
this.saveErrors(request, messages2);
留意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。
6、读取普通讯息
  <:messagesid="s"message="true">
      <bean:writename="s"/>
  </:messages>

解析:message=”true”信息标识此标签读取的是普通讯息
Id表示从普通讯息的集合中掏出的每一个元素相称于iterator标签的id。
  <hr>
     <:messagesid="s"message="true"property="upass">
      <bean:writename="s"/>
  </:messages>
解析:message=”true”信息标识此标签读取的是普通讯息。
          Property表示从该信息集合中掏出名为此属性值的元素的集合。
Id表示从普通讯息的集合中掏出的每一个元素相称于iterator标签的id。
7、读取错误信息
<:messagesid="s"property="upass">
  <bean:writename="s"/>
  </:messages>
解析:message标签默认读取的是错误信息。
  <:errorsproperty="uu"/><br>
解析:该标签可以读取所有错误信息也可根据property读出所有是该属性名的错误信息的集合。


8、错误信息的格局定义
定义在国际化的Properties文件中
Eg:
errors.header=<UL>信息的头部代码
errors.prefix=<LI><font color="red">每条信息的开头代码
errors.suffix=</font></LI>每条信息的结尾代码
errors.footer=</UL>信息的尾部代码
回复

使用道具 举报

  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2011-8-1 10:28:28 | 显示全部楼层
    谢谢楼主分享。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-20 09:26 , Processed in 0.375375 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表