国际化(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'âgeglobal.submit = Soumettre desglobal.heading = Sé lectionnez Localglobal.success =Authentifi\t\u00E9 avec succ\u00E8s
global_us.properties
global.name = Nameglobal.age = Ageglobal.submit = Submitglobal.heading = Select Localeglobal.success =Successfully authenticated
global_zh.properties
global.name = \u59D3\u540Dglobal.age = \u5E74\u9F84global.submit = \u63D0\u4EA4global.heading = \u9009\u62E9\u4E00\u79CD\u8BED\u8A00global.success =\u6210\u529F
效果界面
注意访问时的url地址。。
借鉴于:http://www.yiibai.com/struts_2/struts_localization.html