一、国际化的概念

国际化是指web程序在运行时,根据客户端请求的国家、语言的不同而显示不同的界面。 
例如,如果请求来自中文客户端,则页面的显示,提示信息等都是中文,如果是英文客户端,则显示英文信息。 
国际化的英文单词是Internationalization,但因为单词太长,简称I18N,I是第一个字母,18表示中间的字母个数,N是最后一个字母。

二、java中国际化的思路

1.必须先提供程序需要的资源文件,资源文件是很多键值对组成,键是程序使用的部分,值是页面显示的部分。  资源文件的命名规则:Name_language_country.properties  name是资源文件的基本名,可以自由定义。language和country都必须使用java给我们提供的名称。  2.通过类加载资源文件,然后显示在页面上,java程序国际化的关键类是ResourceBundle 它有一个静态方法:-getBundle(String baseName,Locale locale):baseName是资源文件的基本名,我们自己定义的那个,locale代表国家/语言

  

三、java国际化案例

(1)创建两个国际化资源文件

              第一个文件:message_zh_CN.properties 内容:hello=您好第二个文件:message_en_US.properties 内容:hello=hello,world

(2)在类中实现国际化

        public class I18NDemo {public static void main(String[] args) { //根据locale加载国际化资源文件ResourceBundle bundle=ResourceBundle.getBundle("com.cad.struts2.resource.message",Locale.CHINA);//加载中文资源文件,输出您好//ResourceBundle bundle=ResourceBundle.getBundle("com.cad.struts2.resource.message",Locale.US);//加载英文资源文件,输出hello,worldString mess=bundle.getString("hello");System.out.println(mess);}} 完成java国际化主要是提供不同语言的资源文件,然后使用ResourceBundle来根据不同的Locale加载语言资源文件,再根据指定Key来获取对应的字符串即可。至于在jsp页面中显示国际化信息,可以使用jstl标签来完成。具体的可以百度。

四、struts2的国际化支持

struts2的国际化建立在java国际化之上。一样也是通过提供不同国家的资源文件,然后通过ResourceBundle加载指定Locale对应的资源文件,再通过指定key获取对应的信息。 整个过程完成相同,只是struts2进行了进一步封装,简化了操作。

五、struts2的国际化步骤

1.让系统加载国际化资源文件,有两种方式-自动加载:Action范围、包范围的国际化资源文件由系统自动加载-手动加载:JSP范围、全局范围的国际化资源文件,分别使用标签,配置常量的方式来手动加载。2.输出国际化,有两种方式-在视图页面输出国际化信息,需要使用struts2标签库-在Action类中输出国际化信息,需要使用ActionSupport的getText()方法

六、struts2中Action的国际化

(1)配置全局的国际化资源

                    1.创建国际化资源,和上面的一样2.在struts.xml中配置struts.xml中配置方法:<constant name="struts.custom.i18n.resources" value="com.cad.struts2.resource.message"></constant>3.在action中通过getText方法获取值public class I18NDemo2 extends ActionSupport {public String execute(){ String value=getText("hello");  System.out.println(value);return SUCCESS;}}

(2)配置包范围的国际化资源

                    包范围的国际化资源可以被该包下的所有Action使用。包范围的国际化资源文件的名称为:package_language_country.properties 例如 package_zh_CN.properties 文件放在包的根路径下。 包范围的国际化资源不用在配置文件中配置。

(3)配置Action范围的国际化资源

                    Action范围的国际化资源只能被该Action使用在Action类所在的路径创建文件:ActionName_language_country.properties 例如:ActionDemo_zh_CN.properties

  

七、Action类中国际化资源的加载顺序

    1.优先加载Action范围,当前Action类路径下的并且名字为ActionName的国际化资源文件 2.如果上一步未找到,并且Action有父类,则加载名字为Action父类的国际化资源文件 3.如果上一步未找到,并且Action有实现的接口,则加载名字为Action接口的国际化资源文件 4.如果上一步未找到,并且该Action实现接口ModelDriven,则对于getModel()方法返回的Model对象,重新执行第一步。 5.如果上一步未找到,则查找当前包范围的国际化资源文件 6.如果上一步未找到,则沿着当前包上溯,直到最顶层包中查找包范围的国际化资源文件 7.如果上一步未找到,则找全局的国际化资源文件。 8.如果上述所有步骤都没找到,则直接输出Key。

 

八、struts2视图资源的国际化

        需要用到<s:text>标签,这个标签如果不经过action,直接访问页面,则显示全局的国际化资源如果经过action,通过结果视图返回到页面,则按照国际化资源的加载顺序显示,从Action类路径下开始<body> <s:text name="hello"></s:text></body> 如果经过action,还想显示全局的国际化资源 ,可以用以下方式 显示指定名称的国际化资源     //指定全局国际化资源名称<s:i18n name="com.cad.struts2.resource.message"><s:text name="hello"></s:text></s:i18n>  如果<s:i18n> 标签当成表单标签的父标签,则表单标签的key属性会从国际化资源文件中加载信息

  

 

  

  

  

  

  

  

转载于:https://www.cnblogs.com/yuexiaoyun/p/9450255.html

(十四)struts2的国际化相关推荐

  1. 二十四、Struts2中的UI标签

    二十四.Struts2中的UI标签 Struts2中UI标签的优势: 数据回显 页面布局和排版(Freemark),struts2提供了一些常用的排版(主题:xhtml默认 simple ajax) ...

  2. java短除法获取二进制_Java十四天零基础入门-Java的数据类型介绍

    不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货 本章节目标: 理解数据类型的作用.Java中包括哪些数据类型?常见的八种基本数据类型都有哪些?会用八种基本数据类型声明变量?什么是二进制?原 ...

  3. 开发者论坛一周精粹(第十四期):CVE-2017-7529:Nginx敏感信息泄露

    摘要: 2017年7月11日,Nginx官方发布最新的安全公告,漏洞CVE编号为CVE-2017-7529,该在nginx范围过滤器中发现了一个安全问题,通过精心构造的恶意请求可能会导致整数溢出并且不 ...

  4. 读后感: 懈寄生---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十四)

    懈寄生---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十四) http://blog.csdn.net/david_lv/archive/2008/06/11/2535650.aspx 读后 ...

  5. 模块开发之时间/日期组件moment.js使用(十四)

    文章目录 前言 基本使用 moment与字符串想到转换 当前时间 语法 创建moment实例的方式 时间字符串+指定格式 时间字符串+多定格式 moment完全支持iso-8601格式字符串 以对象形 ...

  6. 轰动众多国际电影节的著名电影短片《车四十四》

    查看地址:http://www.ku6.com/show/RFcjaMtajp-9OfLe.html 近两年,在网上的很多论坛都出现了"女司机被强奸"和"漂亮女司机&qu ...

  7. 汇川工业互联网邀您莅临第十四届南京软博会

    中国(南京)国际软件产品和信息服务博览会(简称南京软博会)是中国规模最大.国际化程度最高.最具有影响力的软件产品和信息服务展会之一,多次被评为"中国十大知名品牌展会"." ...

  8. 2021年大数据HBase(十四):HBase的原理及其相关的工作机制

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase的原理及其相关的工作机制 一.HBase的flus ...

  9. 2021年大数据Hadoop(十四):HDFS的高可用机制

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 HDFS的高可用机制 HDFS高可用介绍 组件介绍 Nam ...

最新文章

  1. 对比React Native、dcloud、LuaView三个框架技术(内部)
  2. map平均准确率_MAP(Mean Average Precision)
  3. 【转载】自然语言推理介绍
  4. 杂项题的基本解题思路——4、流量取证技术
  5. 如何评价Python3.8新出的“:=”表达式?
  6. 封装JDBC事务操作,执行存储过程测试
  7. Oracle SQL Parsing Flow Diagram(SQL 解析流程图)
  8. 重学java基础第五课:博客的重要性
  9. linux vi 编辑器用法
  10. oracle 视图权限 oracle 创建视图权限不足( ORA-01031: 权限不足)
  11. 研究生怎么看 ,怎么写论文
  12. Pytorch使用tensorboardX可视化
  13. 天猫精灵通过私有云控制WiFi设备
  14. diy nas配置推荐2020_廉价NAS方案,手把手教你用淘汰主机安装黑群NAS
  15. linux如何添加打印机,ubuntu系统添加打印机
  16. 将Python Pandas DataFrame写入docx文档指定位置
  17. tortoise-orm连接多个数据库
  18. 给Ubuntu系统清理垃圾
  19. 经常调试笔记本服务器显示器,瞎折腾!闲置损坏笔记本电脑改造的DIY液晶显示屏!蜗牛星际附件。...
  20. 微信备份到云服务器失败是怎么回事,电脑微信备份连接失败的原因(解决利用电脑版微信备份的方法)...

热门文章

  1. APP元素获取信息操作API
  2. python作业网站_python大作业
  3. 如何取回服务器上的文件网页设计,毕业设计(论文)-基于内容中心网络开发平台的文件分享精选.docx...
  4. 电视盒子root_电视盒子 免root 去广告换桌面,20分钟还原干净清爽的桌面
  5. python绘图函数m_python绘图数据m
  6. 【Linux】安装CUDA和cudnn
  7. 空间滤波器是怎么来的
  8. 【CV秋季划】人脸算法那么多,如何循序渐进地学习好?
  9. 史丹利谋定跨国合作-万祥军:对话国际农民丰收节贸易会
  10. 性能测试四十八:Jenkins+Ant+Jmeter系统部署