⑥Struts2深入浅出-国际化.ppt

上传人:sh****n 文档编号:6592378 上传时间:2020-02-29 格式:PPT 页数:28 大小:4.51MB
返回 下载 相关 举报
⑥Struts2深入浅出-国际化.ppt_第1页
第1页 / 共28页
⑥Struts2深入浅出-国际化.ppt_第2页
第2页 / 共28页
⑥Struts2深入浅出-国际化.ppt_第3页
第3页 / 共28页
点击查看更多>>
资源描述
第六节 国际化 韩冰cris forever 2 本章学习任务 国际化概述Java内置的国际化 自学了解 Struts2中的国际化入门资源文件读取顺序Struts2访问国际化信息的不同方式指定语言信息的不同方式 2020 2 29 概述 国际化 Internationalization 通俗点讲就是让软件实现对多种语言的支持 可以通过简单的设置让软件支持的语言从一种切换到另一种 当然 最直观的就是界面显示了 比如一个实现了国际化的软件 可以很容易的从英文界面切换成中文界面 在日常工作中也常见到国际化的软件 比如Eclipse就是多语言的 只要安装了相应的语言包 在启动的时候指定语言参数就可以实现软件界面的快速转换 在设计多语言实现的时候 要注意两点 不能给软件开发带来过多的额外负担 在改变语言或者添加一种语言的时候 不能修改已经写好的软件 Struts2作为一款成熟的web框架 自然也支持国际化 使用Struts2的时候 只要把对应的资源文件放在指定的地方 不用修改程序的主体 就可以对应新的语言要求 具体如何实现 后面再详细描述 先来看看Java内置的国际化 2020 2 29 Java内置的国际化 Struts2的国际化也不是无本之木 它依赖于Java内置的国际化机制 只是在Java内置的国际化机制的基础上增加了跟Struts2其他组件的融合 使得其他组件也可以非常方便的使用国际化 2020 2 29 Java内置的国际化 准备国际化信息文件 Java内置的国际化 以java util ResourceBundle和java util Locale两个类为中心 其中 java util Locale负责选择合适的语言 而java util ResourceBundle负责根据注入的java util Locale对象来选择国际化信息的来源 返回国际化信息 如果我们的软件支持中文和英文两种语言 而以中文作为默认的语言 则会出现三种语言 默认的语言 中文 中文和英文 当然 其实只有两种语言中文和英文 但是 以中文为默认的语言是非常必要的 有时候 软件需要应对的语言不一定只有中文和英文 如果法国的朋友想要使用软件呢 由于不存在法文的信息 这时候只能返回默认的语言 那就是中文了 在这种情况下准备国际化资源文件 一般准备三个文件 分别是默认语言 中文与英文的文件 每个文件都以properties为扩展名 内容以key value对的形式存在 其中key是如何引用这条信息 而value就是这条信息真正要显示的内容了 综上所述 可以准备如下三个文件作为国际化信息的文件 2020 2 29 Java内置的国际化 准备国际化信息文件 1 默认语言文件 message properties注意 在这个文件中 本应该在 后面写上中文 但是 我们没有这样做 这是因为Java内置的国际化在处理中文的时候还需要一步特殊处理 这在后面有专门的章节处理 因此这里就没有使用中文了 2020 2 29 Java内置的国际化 准备国际化信息文件 2 中文语言文件 message zh CN properties注意 故意在两行之前都加了一个 这在properties文件中代表注释的意思 也就是说这个message zh CN properties实际上是空的 2020 2 29 Java内置的国际化 准备国际化信息文件 3 英文语言文件 message en US properties先不去考虑客户端怎么写 观察一下这三个文件的命名 它们拥有共通的前缀message 代表了它们是同一组国际化信息的不同语言 它们各自的后缀代表了自己的语言 其中没有后缀 message properties 的文件 代表这是默认语言文件 2020 2 29 Java内置的国际化 准备国际化信息文件 2 使用ResouceBundler和Locale选择多语言信息将上面的三个文件拷贝到工程的src目录下备用 然后就可以在Java程序中引用这些多语言信息了 在引用多语言信息的时候 要做三件事情 引用哪种语言 引用哪组多语言文件 引用这种语言的这组文件里的哪条信息 2020 2 29 Java内置的国际化 准备国际化信息文件 测试代码看备注 Locale类里预置了许多语种 上面代码中引用的Locale SIMPLIFIED CHINESE对应zh CN Locale US对应en US Locale FRANCE对应fr FR 也就确定了前面所说的文件名后缀 ResouceBundle getBundle方法传入的第一个参数就是要引用哪组文件 也就确定了前面所说的文件名前缀 由前缀和后缀共同作用取得的ResourceBundle对象就代表了一个文件中的所有多语言信息 它的getString方法传入的参数就是前面所说的key 而且返回值就是实际需要的value 2020 2 29 Java内置的国际化 准备国际化信息文件 对中文的支持 Locale类里预置了许多语种 上面代码中引用的Locale SIMPLIFIED CHINESE对应zh CN Locale US对应en US Locale FRANCE对应fr FR 也就确定了前面所说的文件名后缀 ResouceBundle getBundle方法传入的第一个参数就是要引用哪组文件 也就确定了前面所说的文件名前缀 由前缀和后缀共同作用取得的ResourceBundle对象就代表了一个文件中的所有多语言信息 它的getString方法传入的参数就是前面所说的key 而且返回值就是实际需要的value 2020 2 29 Struts2中的国际化入门 引用国际化信息资源文件默认语言文件 message properties中文语言文件 message zh CN properties英文语言文件 message en US properties 2020 2 29 Struts2中的国际化入门 在JSP中访问国际化信息 在jsp中 可以直接选用Struts2的text标签来访问国际化信息 其中text标签的name属性就是要引用哪个key 示例如下 2020 2 29 Java内置的国际化 指定浏览器使用的语种 首先 要去掉stuts xml中的对中文支持所设置的常量 以防止对运行结果的干扰 注意 这一点非常重要 否则你将观察不到语言的变化 然后 可以在浏览器中设置选用的语言 以笔者的浏览器为例 打开浏览器的属性页 如下图所示 2020 2 29 2020 2 29 2020 2 29 2020 2 29 2020 2 29 Struts2访问国际化信息的不同方式 只保留全局级国际化信息资源文件 并在message properteis中增加一个带有参数的国际化信息 2020 2 29 Struts2访问国际化信息的不同方式 Struts2的常量设置还可以使用Struts2的常量设置来覆盖浏览器的语言设置 比如前面的示例 在struts xml中加上struts locale这个常量 值为需要使用的语言 示例如下 这时候 会发现无论怎么修改浏览器的语言设置 Struts2都会去访问中文信息了 2020 2 29 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 29 Struts2访问国际化信息的不同方式 由用户选择语言 由于当前的struts xml设置常量struts locale的值为zh CN 所以 第一次访问将会使用常量设置的中文 而且session中也没有WW TRANS I18N LOCALE这个属性 运行结果如下 2020 2 29 2020 2 29 三种方式的覆盖关系 对于这三种指定语言种类的方式 其优先级为 用户指定参数 struts xml中配置常量 浏览器设置而且 用户参数指定的方式 只需要设置一次就可以了 在整个session生命周期内 都不用再次设置 2020 2 29 Struts2国际化的运行机制 Struts2中 通过ActionContext getContext setLocale Localearg 设置用户的默认语言 不过这种方式完全是一种手动方式 而且需要编程实现 为了简化设置用户默认语言环境 Struts2提供了一个名为i18n的拦截器 Interceptor 并将其注册在默认的拦截器栈中 defaultStack 2020 2 29 Struts2国际化的运行机制 2020 2 29 创建下拉列表框 选择程序语言 实现用户自行选择程序语言功能 只需提供一个下拉框列表 并且当用户选择下拉框中某一项时 系统将该下拉项的值作为request locale参数提交给Struts2 学习是不断的提问和总结 请对本章节中所遇到的问题 进行提问和讨论 让大家一起进步
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!