Java Struts2 本地化/國際化(i18n)淺析

偶my耶的部落格發表於2015-03-31

國際化(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"/>

下面實現國際化處理

結構目錄:

java框架篇---Struts2 本地化/國際化(i18n)

配置檔案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/t/u00E9  avec succ/u00E8s

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 = /u59D3/u540D
global.age = /u5E74/u9F84
global.submit = /u63D0/u4EA4
global.heading = /u9009/u62E9/u4E00/u79CD/u8BED/u8A00
global.success =/u6210/u529F

效果介面

java框架篇---Struts2 本地化/國際化(i18n)

注意訪問時的url地址。

相關文章