




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六节 国际化 韩冰cris forever 2 本章学习任务 国际化概述Java内置的国际化 自学了解 Struts2中的国际化入门资源文件读取顺序Struts2访问国际化信息的不同方式指定语言信息的不同方式 2020 2 12 概述 国际化 Internationalization 通俗点讲就是让软件实现对多种语言的支持 可以通过简单的设置让软件支持的语言从一种切换到另一种 当然 最直观的就是界面显示了 比如一个实现了国际化的软件 可以很容易的从英文界面切换成中文界面 在日常工作中也常见到国际化的软件 比如Eclipse就是多语言的 只要安装了相应的语言包 在启动的时候指定语言参数就可以实现软件界面的快速转换 在设计多语言实现的时候 要注意两点 不能给软件开发带来过多的额外负担 在改变语言或者添加一种语言的时候 不能修改已经写好的软件 Struts2作为一款成熟的web框架 自然也支持国际化 使用Struts2的时候 只要把对应的资源文件放在指定的地方 不用修改程序的主体 就可以对应新的语言要求 具体如何实现 后面再详细描述 先来看看Java内置的国际化 2020 2 12 Java内置的国际化 Struts2的国际化也不是无本之木 它依赖于Java内置的国际化机制 只是在Java内置的国际化机制的基础上增加了跟Struts2其他组件的融合 使得其他组件也可以非常方便的使用国际化 2020 2 12 Java内置的国际化 准备国际化信息文件 Java内置的国际化 以java util ResourceBundle和java util Locale两个类为中心 其中 java util Locale负责选择合适的语言 而java util ResourceBundle负责根据注入的java util Locale对象来选择国际化信息的来源 返回国际化信息 如果我们的软件支持中文和英文两种语言 而以中文作为默认的语言 则会出现三种语言 默认的语言 中文 中文和英文 当然 其实只有两种语言中文和英文 但是 以中文为默认的语言是非常必要的 有时候 软件需要应对的语言不一定只有中文和英文 如果法国的朋友想要使用软件呢 由于不存在法文的信息 这时候只能返回默认的语言 那就是中文了 在这种情况下准备国际化资源文件 一般准备三个文件 分别是默认语言 中文与英文的文件 每个文件都以properties为扩展名 内容以key value对的形式存在 其中key是如何引用这条信息 而value就是这条信息真正要显示的内容了 综上所述 可以准备如下三个文件作为国际化信息的文件 2020 2 12 Java内置的国际化 准备国际化信息文件 1 默认语言文件 message properties注意 在这个文件中 本应该在 后面写上中文 但是 我们没有这样做 这是因为Java内置的国际化在处理中文的时候还需要一步特殊处理 这在后面有专门的章节处理 因此这里就没有使用中文了 2020 2 12 Java内置的国际化 准备国际化信息文件 2 中文语言文件 message zh CN properties注意 故意在两行之前都加了一个 这在properties文件中代表注释的意思 也就是说这个message zh CN properties实际上是空的 2020 2 12 Java内置的国际化 准备国际化信息文件 3 英文语言文件 message en US properties先不去考虑客户端怎么写 观察一下这三个文件的命名 它们拥有共通的前缀message 代表了它们是同一组国际化信息的不同语言 它们各自的后缀代表了自己的语言 其中没有后缀 message properties 的文件 代表这是默认语言文件 2020 2 12 Java内置的国际化 准备国际化信息文件 2 使用ResouceBundler和Locale选择多语言信息将上面的三个文件拷贝到工程的src目录下备用 然后就可以在Java程序中引用这些多语言信息了 在引用多语言信息的时候 要做三件事情 引用哪种语言 引用哪组多语言文件 引用这种语言的这组文件里的哪条信息 2020 2 12 Java内置的国际化 准备国际化信息文件 测试代码看备注 Locale类里预置了许多语种 上面代码中引用的Locale SIMPLIFIED CHINESE对应zh CN Locale US对应en US Locale FRANCE对应fr FR 也就确定了前面所说的文件名后缀 ResouceBundle getBundle方法传入的第一个参数就是要引用哪组文件 也就确定了前面所说的文件名前缀 由前缀和后缀共同作用取得的ResourceBundle对象就代表了一个文件中的所有多语言信息 它的getString方法传入的参数就是前面所说的key 而且返回值就是实际需要的value 2020 2 12 Java内置的国际化 准备国际化信息文件 对中文的支持 Locale类里预置了许多语种 上面代码中引用的Locale SIMPLIFIED CHINESE对应zh CN Locale US对应en US Locale FRANCE对应fr FR 也就确定了前面所说的文件名后缀 ResouceBundle getBundle方法传入的第一个参数就是要引用哪组文件 也就确定了前面所说的文件名前缀 由前缀和后缀共同作用取得的ResourceBundle对象就代表了一个文件中的所有多语言信息 它的getString方法传入的参数就是前面所说的key 而且返回值就是实际需要的value 2020 2 12 Struts2中的国际化入门 引用国际化信息资源文件默认语言文件 message properties中文语言文件 message zh CN properties英文语言文件 message en US properties 2020 2 12 Struts2中的国际化入门 在JSP中访问国际化信息 在jsp中 可以直接选用Struts2的text标签来访问国际化信息 其中text标签的name属性就是要引用哪个key 示例如下 2020 2 12 Java内置的国际化 指定浏览器使用的语种 首先 要去掉stuts xml中的对中文支持所设置的常量 以防止对运行结果的干扰 注意 这一点非常重要 否则你将观察不到语言的变化 然后 可以在浏览器中设置选用的语言 以笔者的浏览器为例 打开浏览器的属性页 如下图所示 2020 2 12 2020 2 12 2020 2 12 2020 2 12 2020 2 12 Struts2访问国际化信息的不同方式 只保留全局级国际化信息资源文件 并在message properteis中增加一个带有参数的国际化信息 2020 2 12 Struts2访问国际化信息的不同方式 Struts2的常量设置还可以使用Struts2的常量设置来覆盖浏览器的语言设置 比如前面的示例 在struts xml中加上struts locale这个常量 值为需要使用的语言 示例如下 这时候 会发现无论怎么修改浏览器的语言设置 Struts2都会去访问中文信息了 2020 2 12 Struts2访问国际化信息的不同方式 由用户选择语言 以上的两种设置 还可能满足不了日常需求 常量设置太死板 加上了常量设置 就不方便访问其他语言的信息了 浏览器语言设置太麻烦 用户想修改访问的语言时 必须到浏览器的属性对话框去一顿勾选 对于一般用户来讲 这太繁琐 幸好Struts2提供了最灵活的 也是级别最高的方式 那就是由用户选择语言 用户只要在提交请求的时候加上request locale这个参数 并提供对应的值就可以自由选择语言了 这得力于Struts2的i18n内建拦截器 defaultStack拦截器栈引用了i18n拦截器 因此 能很方便的由用户来选择语言 i18n拦截器在Action运行之前会检查请求中是否包含了一个叫做 request locale 的参数 如果存在此参数 则会用它的值建立一个Locale对象 并用这个Locale对象去覆盖Struts2的常量设置和浏览器的语言设置 除此之外 i18n拦截器还会把这个Locale对象放到名为WW TRANS I18N LOCALE的Session属性中去 而这个属性也会覆盖Struts2的常量设置和浏览器的语言设置 因此 只需要传入一次request locale参数 session就会记住用户的选择 整个网站就会都变成用户选择的语言了 来示例一下 第一次访问结果页面的时候 输出相关的session属性 如下 2020 2 12 Struts2访问国际化信息的不同方式 由用户选择语言 由于当前的struts xml设置常量struts locale的值为zh CN 所以 第一次访问将会使用常量设置的中文 而且session中也没有WW TRANS I18N LOCALE这个属性 运行结果如下 2020 2 12 2020 2 12 三种方式的覆盖关系 对于这三种指定语言种类的方式 其优先级为 用户指定参数 struts xml中配置常量 浏览器设置而且 用户参数指定的方式 只需要设置一次就可以了 在整个session生命周期内 都不用再次设置 2020 2 12 Struts2国际化的运行机制 Struts2中 通过ActionContext getContext setLocale Localearg 设置用户的默认语言 不过这种方式完全是一种手动方式 而且需要编程实现 为了简化设置用户默认语言环境 Struts2提供了一个名为i18n的拦截器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版物流运输合同模板(冷链物流服务)
- 二零二五年度货车司机交通事故责任及赔偿处理合同
- 2025版电动铲车二手买卖合作协议书
- 二零二五年度美团打车夜间服务协议
- 2025版新品上市活动策划服务合同范本
- 二零二五年度租赁型体育场馆运营与管理合同
- 二零二五版出租汽车驾驶员劳动合同书(含劳动争议处理)
- 洗浴中心服务流程管理规章
- 山海经全文阅读课件
- 大面积脑梗塞护理课件
- 2025年山西航空产业集团有限公司招聘考试笔试试题(含答案)
- 电梯安全培训课件内容
- 2025年事业单位招聘职业能力倾向测验考试题库附参考答案满分必刷
- 应聘副研究员汇报
- 2025年中考历史(河南卷)真题评析
- 手术室时间管理课件
- 2025版线上直播场推广服务合同模板
- 高一上学期数学学法指导课件2024.9.14
- GB/T 45845.1-2025智慧城市基础设施整合运营框架第1部分:全生命周期业务协同管理指南
- 呼吸科考试试题及答案
- 2025年生猪屠宰兽医卫生检疫人员考试题(附答案)
评论
0/150
提交评论