zoukankan      html  css  js  c++  java
  • struts 国际化

    国际化

    1. 国际化与本地化

    国际化 (Internationalization: I18N): 是程序在不做任何修改的情况下,就可以再不同的国家或地区和不同的语言环境下,按照当地的语言和格式习惯显示字符。
    本地化(Localization : L10N ): 在开发国际化的程序时,创建某种语言相关的文本和格式资源的过程叫做本地化。

    2. Java中国际化的思路

    将程序中的提示信息,错误信息等放在资源文件中,为不同的国家/语言编写对应的资源文件。资源文件由很多 key-value组成,key 保存不变,value 随着国家/语言的不同而不同。这些资源文件属于同一资源系统,使用 
    共同的基名(Base Name)。通过在基名后面添加ISO-639标准的语言代码、ISO-3166标准的国家和地区代码来进行区分。

    例如: 规定基名为 abc , 可以定义 abc_zh_CN.properties 大陆中文; abc_en_US.properties 美国,英文语言......

    3. 使用struts实现国际化

    • 1) 在struts.xml中制定资源文件的基名及存储路径

    <constant name="struts.custom.i18n.resources" value="message"></constant>
    <constant name="struts.i18n.encoding" value="utf-8" ></constant>

    • 2)创建资源文件

    根据需求创建对应的资源文件,这里假设显示中文和英文两种语言。 
    在src目录下创建两个资源文件,名称为 message_zh_CN.properties、 message_en.properties

    • 3) 根据需求在资源中添加对应的内容

    示例: message_en.properties:
    userName=userName
    userPwd=userPassword
    submit=submit

    message_zh_CN.properties:
    userName=u7528u6237u540D
    userPwd=u5BC6u7801
    submit=u63D0u4EA4

    • 4) JSP 页面实现国际化显示

    <form action="login.action">
    <s:text name="userName"></s:text> : <s:textfield name="name" ></s:textfield> <br/>
    <s:text name="userPwd"></s:text>: <s:password name="pwd" ></s:password> <br/>
    <s:text name="submit"></s:text> : <input type="submit" />
    </form>

    4. 测试:
    可以通过浏览器选择 工具 -- Internet -- 常规 -- 语言 单击 “添加”按钮,选择美国选项,并通过“上移”按钮将其移到语言框的最上面,单击“确定”按钮。

    5. 验证信息的国际化显示:
    通过不同的资源文件显示不同的错误信息 

    • 1) 资源文件

    message_en.properties:
    name.null = Name cannot be null
    ......
    message_zh_HK.properties:
    name.null = 用户名不能为空

    • 2) 通过strutes验证框架

    <message key="name.null" />

    • 3) 通过Action文件

    this.addFieldError("user.name",getText("name.null"));

    • 6. 资源文件的范围


    在src 目录下添加的资源文件对全局资源文件,所有包的所有Action都可以访问。

    struts2 提供了包范围资源文件和Action范围的资源文件。

    1) 包资源文件: 在对应保险出添加 package_languate_country.properties 资源文件。 package为固定写法, 只有处在该包以及子包下的Action才可以访问该文件。
    如 org.zm 包下定义资源文件 package_en.properties 、 package_zh_HK.properties ,则 org.zm以及其他子包中的Action可以访问这些资源文件。

    2) Action范围的资源文件: 在Action类的所在 包内添加资源文件,命名规则 ActionClassName_language_country.properties, 其中ActionClassName为Action的名称


    7. 资源文件的查找顺序

    当前报下的Action > package 的资源文件 > ... > 顶级包 > 从常量 "struts.custom.i18n.resources" 指定的全局资源文件中查找

  • 相关阅读:
    软件开发流程实例之四 :编码和测试
    软件开发流程实例之三 :系统设计
    jQuery入门[4]-链式代码
    jQuery入门[1]-构造函数
    jQuery入门[2]-选择器
    自编类库,添加引用,编译运行时显示“未能找到”
    SelectByShape 工具的实现
    TOC控件不显示内容列表
    鹰眼功能的实现(步骤,无代码)
    INumericFormat 接口
  • 原文地址:https://www.cnblogs.com/Theladyflower/p/4624308.html
Copyright © 2011-2022 走看看