zoukankan      html  css  js  c++  java
  • java框架篇---Struts2 本地化/国际化(i18n)

    国际化(i18n)是规划和实施的产品和服务,使他们能很容易地适应特定的本地语言和文化的过程中,这个过程被称为本地化。国际化的过程有时也被称为翻译或本地化启用。国际化是缩写i18n,因为我和两端用n字打头,并有18个字符之间的第i个和最后n。

    访问方式:

    有几种方法可以访问的信息资源,包括gettext的,文本标签,UI标签的关键属性,国际化标签。让我们来看看他们简单:

    要显示i18n的文本,使用的调用属性标记gettext,或其他任何标记,例如UI标签如下:

    <s:property value="getText('some.key')" />

    文本标记检索从默认的资源包,即一个消息 struts.properties

    <s:text name="some.key" />

    i18n标签推值栈上的任意资源束。 i18n标签范围内的其他标签可以显示该资源包的消息:

    <s:i18n name="some.package.bundle">
         <s:text name="some.key" />
    </s:i18n>

    大多数UI标签的键属性,可以用来检索的消息,从一个资源包:

    <s:textfield key="some.key" name="textfieldName"/>

    下面实现国际化处理

    结构目录:

    配置文件Struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
       "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
       "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
       <constant name="struts.devMode" value="true" />
       <!-- 扫描资源目录下以global开头的文件 -->
       <constant name="struts.custom.i18n.resources" value="global" />
    
       <package name="helloworld" extends="struts-default" namespace="/">
          <action name="empinfo" 
             class="com.oumyye.action.Employee"
             method="execute">
             <result name="input">/index.jsp</result>
             <result name="success">/success.jsp</result>
          </action>
          
          <action name="locale" 
             class="com.oumyye.action.Locale"
             method="execute">
             <result name="success">/index.jsp</result>
          </action>
       </package>
    
    </struts>

    处理类 Employee .java

    package com.oumyye.action;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class Employee extends ActionSupport{
       private String name;
       private int age;
       
       public String execute() 
       {
           return SUCCESS;
       }
       
       public String getName() {
           return name;
       }
       public void setName(String name) {
           this.name = name;
       }
       public int getAge() {
           return age;
       }
       public void setAge(int age) {
           this.age = age;
       }
    }

    处理类Locale.java

    package com.oumyye.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class Locale extends ActionSupport{
       public String execute() 
       {
           return SUCCESS;
       }
    }

    视图index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Employee Form with Multilingual Support</title>
    </head>
    
    <body>
      <h1><s:text name="global.heading"/></h1>
    
       <s:url id="indexUS" namespace="/" action="locale" >
            <s:param name="request_locale" >us</s:param>
       </s:url>
       <s:url id="indexZH" namespace="/" action="locale" >
          <s:param name="request_locale" >zh</s:param>
       </s:url>
       <s:url id="indexFR" namespace="/" action="locale" >
          <s:param name="request_locale" >fr</s:param>
       </s:url>
    
       <s:a href="%{indexUS}" >English</s:a>
       <s:a href="%{indexZH}" >中文</s:a>
       <s:a href="%{indexFR}" >France</s:a>
    
       <s:form action="empinfo" method="post" namespace="/">
          <s:textfield name="name" key="global.name" size="20" />
          <s:textfield name="age" key="global.age" size="20" />
          <s:submit name="submit" key="global.submit" />
       </s:form>
    
    </body>
    </html>

    跳转成功页Success.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Success</title>
    </head>
    <body>
       <s:property value="getText('global.success')" />
    </body>
    </html>

    global_fr.properties

    global.name = Nom d'utilisateur 
    global.age = l'âge
    global.submit = Soumettre des
    global.heading = Sé lectionnez Local
    global.success =Authentifi	u00E9  avec succu00E8s

    global_us.properties

    global.name = Name
    global.age = Age
    global.submit = Submit
    global.heading = Select Locale
    global.success =Successfully authenticated

    global_zh.properties

    global.name = u59D3u540D
    global.age = u5E74u9F84
    global.submit = u63D0u4EA4
    global.heading = u9009u62E9u4E00u79CDu8BEDu8A00
    global.success =u6210u529F

    效果界面

    注意访问时的url地址。。

    借鉴于:http://www.yiibai.com/struts_2/struts_localization.html

  • 相关阅读:
    [ZZ]C++中,引用和指针的区别
    面试总结之JAVA
    LeetCode 347. Top K Frequent Elements
    LeetCode 342. Power of Four
    腾讯//删除链表中的节点
    腾讯//删除链表中的节点
    腾讯//相交链表
    腾讯//相交链表
    腾讯//环形链表 II
    腾讯//环形链表 II
  • 原文地址:https://www.cnblogs.com/oumyye/p/4368453.html
Copyright © 2011-2022 走看看