zoukankan      html  css  js  c++  java
  • 【Struts2】 国际化

    一、概述

    • 同一款软件 可以为不同用户,提供不同语言界面 ---- 国际化软件
    • 需要一个语言资源包(很多properties文件,每个properties文件 针对一个国家或者语言,通过java程序根据来访者国家语言,自动读取不同properties文件 )
    • 资源包编写
    • properties文件命名: 基本名称_语言(小写)_国家(大写).properties
    • 例如
    • messages_zh_CN.properties 中国中文
    • messages_en_US.properties 美国英文
    • ResourceBundle 根据不同Locale(地域信息),读取不同国家 properties文件
    • ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.US);

    二、Struts2中国际化:

    2.1 问题1

    struts2中对国际化进行了封装,我们只需要根据其提供的API进行访问就可以。
    【问题1】:在struts2中国际化时properties文件怎样定义?(怎样定义properties)

    全局

    • 需要通过一个常量来声明.
    • struts.custom.i18n.resources=testmessages,testmessages2
    • 对于properties配置文件可以放置在任意位置
    <!-- value中的值 代表message.properties在src下-->
    <constant name="struts.custom.i18n.resources" value="message"> 
    
    <!-- value中的值加上的包名,代表message.properties在com.hao.i18n.resource包下.-->
    <constant name="struts.custom.i18n.resources" value="com.hao.i18n.resource.message"> 
    
    

    局部

    • 1.针对于action类
      • 位置:与action类在同一个包下.
      • 名称:ActionClassName.properties.
      • 这个配置文件只对当前action有效。
    • 2.针对于package下所有action
      • 位置:在指定的包下
      • 名称:package.properties
    • 3.jsp页面临时使用某一个properties文件.
      • <s:i18n name="com.hao.action.package"></s:i18n>

    2.2 问题2

    【问题2】在struts2中国际化操作可以在哪些位置使用?(在哪此位置上使用)

    • 1.action类中使用
    • 2.配置文件中使用
    • 3.在jsp页面上使用

    2.3 问题3

    【问题3】怎样在struts2中操作国际化?(怎样使用)

    • 1.在action类中使用,前提:action类要继承ActionSupport类。使用getText(String name)就可以获取配置文件中对应名称的值。
    • 2.在validation.xml文件中使用,<message key="名称"/>
    • 3.在jsp页面上使用 ,<s:text name="名称"> 如果没有使用<s:i18n name="">来指定,会从全局配置文件中获取。如果要从某一个配置文件中获取,通过name属性来指定,包名.配置文件名称

    2.4 问题4

    【问题4】在struts2中国际化配置文件中使用动态文本

    在Action中怎样使用

    • 配置文件中msg=hello world {0}
    • 通过这种方式获取 this.getText("msg",new String[]{"tom"})
    • 结果就是 hello world tom

    在JSP页面上怎样使用

    • 配置文件中 msg=hello world {0}
    • Jsp中
    <s:i18n name="com.hao.action.I18nDemo1Action">
    <s:text name="msg">
    <s:param>张三</s:param>
    </s:text>
    </s:i18n>
    
    
    • 结果就是 hello world 张三.
  • 相关阅读:
    HDU4507 吉哥系列故事――恨7不成妻(数位dp)
    UCF Local Programming Contest 2017 G题(dp)
    ICPC Latin American Regional Contests 2019 I题
    UCF Local Programming Contest 2017 H题(区间dp)
    HDU2089 不要62
    AcWing1084 数字游戏II(数位dp)
    UCF Local Programming Contest 2017 F题(最短路)
    Google Code Jam 2019 Round 1A Pylons(爆搜+贪心)
    AcWing1083 Windy数(数位dp)
    Vue
  • 原文地址:https://www.cnblogs.com/haoworld/p/struts2-guo-ji-hua.html
Copyright © 2011-2022 走看看