国际化(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\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

效果界面

注意访问时的url地址。。

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

java框架篇---Struts2 本地化/国际化(i18n)的更多相关文章

  1. java框架篇---Struts2 本地化/国际化(i18n)(转)

    源地址:https://www.cnblogs.com/oumyye/p/4368453.html 国际化(i18n)是规划和实施的产品和服务,使他们能很容易地适应特定的本地语言和文化的过程中,这个过 ...

  2. java框架篇---Struts2的处理流程

    一.Struts2的处理流程: 客户端产生一个HttpServletRequest的请求,该请求被提交到一系列的标准过滤器(Filter)组建链中(如ActionContextCleanUp:它主要是 ...

  3. 浅谈struts2的国际化----i18n

    可能大家在使用struts框架的时候,偶尔会看到这个词: i18n.也就是 Internationalization    i 开头,n 结尾. 总共18个字母,今天的主要内容就是环绕这 四个字母. ...

  4. Java框架之Struts2(一)

    在学习Struts2之前,我们要知道Java为什么要有反射机制呢?反射机制可以说是填补Java不能动态访问某一个类的空白.利用反射机制,动态的创建一个对象.动态的访问类的某个属性,而且访问哪一个属性自 ...

  5. java框架之Struts2(4)-拦截器&标签库

    拦截器 概述 Interceptor (拦截器):起到拦截客户端对 Action 请求的作用. Filter:过滤器,过滤客户端向服务器发送的请求. Interceptor:拦截器,拦截的是客户端对 ...

  6. Java框架之Struts2(六)

    一.OGNL表达式语言 Ognl Object Graphic Navigation Language(对象图导航语言),它是一种功能强大的表达式语言(Expression Language,简称为E ...

  7. java框架之Struts2(1)-简介及入门

    简介 Struts2 是一个基于 MVC 设计模式的 Web 应用框架,它本质上相当于一个 servlet,在 MVC 设计模式中,Struts2 作为控制器 (Controller) 来建立模型与视 ...

  8. java框架之Struts2(2)-访问Servlet API及请求数据封装

    准备 为后面测试示例编写代码及配置如下: package com.zze.bean; import java.util.Date; public class User { private String ...

  9. Java框架之Struts2(二)

    一.Action 配置说明 //请求的直接转发 <package name="packageUser" namespace="" extends=&quo ...

随机推荐

  1. Linux系统之常用文件搜索命令

    (一)常用文件搜索命令 (1)which命令 (2)find命令 (3)locate (4)updatedb (5)grep (6)man (7)whatis (一)常用文件搜索命令 (1)which ...

  2. P3917 异或序列

    P3917 异或序列暴力前缀异或枚举每一个区间,再求和,60分.正解:按每一位来做对于区间[l,r],如果它对答案有贡献,区间中1的个数一定是奇数,可以按每一位取(1<<i)的前缀和,q[ ...

  3. 一段让自己好好理解reduce的代码

    const pick = (obj, arr) => arr.reduce((acc, curr) => (curr in obj && (acc[curr] = obj[ ...

  4. FutureTask实现超时任务

    最近主要在弄一些c/s的东西,以及对接一些外部的接口. 记下一些感觉有用的东西吧. java在1.5之后有Callable和Future可以获得任务执行完毕后的结果 结合ExecutorService ...

  5. react和vue的异同点

    一.相似处1.使用Virtual DOM,都有jsx,性能好.2.提供了响应式(reactive)和可组合的视图组件(composable view component).3.将注意力集中保持在核心库 ...

  6. mfc调用cmd执行完保留黑框

    mfc调用cmd的方法有很多,本文采用 ShellExecute ShellExecute(AfxGetMainWnd()->m_hWnd,L"open",L"cm ...

  7. ubuntu10.4搭建eclipse for c++环境

    以下操作:经过验证,安装完成后,使用eclipse建立C++工程,直接编译就能运行了:说明:(1)不建议使用下载eclipse for java版本和CDT的方式来搭建环境,因为我没有安装成功:(2) ...

  8. Need help with git commit - Error : "error: cannot run gpg: No such file or directory error: could not run gpg. fatal: failed to write commit object"support (self.git)

    参考:https://www.reddit.com/r/git/comments/4jflp1/need_help_with_git_commit_error_error_cannot_run/ It ...

  9. maven的pom.xml配置文件中常用的配置标签解析(2018-03-13)

    来自:https://www.cnblogs.com/Nick-Hu/p/7288198.html 拿过来记录下 <project xmlns="http://maven.apache ...

  10. map在遍历数据的过程中删除数据不出错

    // Iterator<Map.Entry<String,Long>> entries = Map.entrySet().iterator();                 ...