zoukankan      html  css  js  c++  java
  • Struts2入门---国际化

    1. 国际化目标

    1). 如何配置国际化资源文件

    I. Action 范围资源文件: 在 Action 类文件所在的路径建立名为 ActionName_language_country.properties 的文件
    II. 包范围资源文件: 在包的根路径下建立名为 package_language_country.properties 的属性文件 , 一旦建立处于该包下的所有Action 都可以访问
    该资源文件. 注意: 包范围文件的 baseName 就是 package, 不是 Action所在的包名.
    III. 全局资源文件
    > 命名方式: baseName_language_country.properties
    > struts.xml: <constant name="struts.custom.i18n.resources" value="baseName" />

    IV. 国际化资源文件加载的顺序如何呢 ? 离当前 Action 较近的将被优先加载.
    2). 如何在页面上 和 Action 类中访问国际化资源文件中的 value 值

    I. 在 Action 类中. 若 Action实现了 TextProvider 接口, 则可以调用 其getText() 方法获取 value 值
    > 通过继承 ActionSupport 的方式.

    II. 页面上可以使用 s:text 标签; 对于表单标签可以使用表单标签 的 key 属性值
    > 若有占位符, 则可以使用s:text 标签的 s:param 子标签来填充占位符.
    > 可以利用标签和 OGNL 表达式 直接访问值栈中的属性值(对象栈,Map栈)

    time=Time:{0}

    <s:text name="time">
    <s:param value="date"></s:param>
    </s:text>

    -------------------------------------------

    time2=Time:${date}

    <s:text name="time2"></s:text>

    3). 实现通过超链接切换语言.

    I. 关键在于知道 Struts2 框架是如何确定 Locale 对象的?
    II. 通过阅读 I18N 拦截器可以知道:
    III.具体确定 Locale 对象的过程:

    > Struts2 使用i18n 拦截器处理国际化, 并且将其注册在默认的拦截器栈中.
    > i18n拦截器在执行 Action 方法前, 会自动查找一个 名为 request_locale 的请求参数.
    如果该参数存在, 拦截器就将其作为参数, 转换为 locale对象, 并将其设为用户默认的 Locale(代表国家/语言环境).
    并把其设置为 session 的 WW_TRANS_I18N_LOCALE 属性.
    > 若request 没有名为 request_locale 的参数, 则i18n会从 session中去获取 WW_TRANS_I18N_LOCALE 的属性值.
    若该值不为空, 则将其属性值设为浏览器默认的 Locale
    > 若 session 中的 WW_TRANS_I18N_LOCALE 的属性值为空, 则从 ActionContext 中获取 Locale 对象.(浏览器中语言首选项)

    IV. 具体实现: 只需要在超链接后面 加上 request_locale 的请求参数, 值是语言国家代码.
    <a href="testI18n.action?request_locale=en_US">English</a>
    <a href="testI18n.action?request_locale=zh_CN">中文</a>

    > 注意: 超链接必须是 Struts2 的一个请求, 也就是必须经过 i18n 拦截器.

    文章未经版主同意不可任意转载,如有需要请标明文章出处。
  • 相关阅读:
    flask 文件上传(单文件上传、多文件上传)--
    flask 自定义验证器(行内验证器、全局验证器) --
    flask 使用宏渲染表单(包含错误信息) --
    flask 在模板中渲染错误消息 --
    flask 在视图函数中验证表单 --
    flask 处理表单数据 --
    flask 在模板中渲染表单 --
    flask 使用Flask-WTF处理表单 --
    flask 表单
    iPad适合写作吗
  • 原文地址:https://www.cnblogs.com/qihangzj/p/7337269.html
Copyright © 2011-2022 走看看