国际化(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使用tcpdump命令抓包并使用wireshark分析

    Linux使用tcpdump命令抓包并使用wireshark分析 介绍 有时分析客户端和服务器网络交互的问题时,为了查找问题,需要分别在客户端和服务器上抓包,我们的客户端一般是windows上的,抓包 ...

  2. codeforces-1111

    https://www.cnblogs.com/31415926535x/p/10397007.html codeforces 537 div2 A 题意就是给你两个字符串,然后如果s,t的对应位上的 ...

  3. [Web安全] XXE漏洞攻防学习(上)

    0x00.XXE漏洞 XXE漏洞全称XML External Entity Injection 即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶 ...

  4. BZOJ.2160.拉拉队排练(Manacher)

    题目链接 \(Description\) 求给定字符串中 最长的k个回文串长度的乘积(要求回文串长度为奇数):若奇数长度回文串不足k个则输出-1.(len<=10^6,k<=10^12) ...

  5. 数值分析之Neville's Algorithm

        Neville插值方法详解 牛顿的插值方法涉及两个步骤:计算系数,随后评估多项式. 如果插值运作良好使用相同的多项式在x的不同值处重复执行. 要是一点是内插,一种单步计算插值的方法,如Nevi ...

  6. python——append与extend

    编者注:本文主要参考了<Python核心编程(第二版)> 网上有很多对这两个函数的区别讲解,但我觉得都讲的不是很清楚,记忆不深刻.这样解释清楚且容易记住. list.append(obje ...

  7. 给你的网站添加 console.js

    本文仅先给使用console调试的FE同学,如果你还不知道console是什么,或者还停留在alert阶段,那就不要浪费时间了,say bay bay! 你是否试程序的过程中用过console.log ...

  8. Ubuntu16.04基于Anaconda(py3.6)安装TensorFlow(CPU)的方法

    安装tensorflow(cpu版) 对anaconda命令的熟悉,可以参考http://www.jianshu.com/p/d2e15200ee9b 官方的建议是即时你有gpu,但也可以先装一个cp ...

  9. spring源码分析系列 (3) spring拓展接口InstantiationAwareBeanPostProcessor

    更多文章点击--spring源码分析系列 主要分析内容: 一.InstantiationAwareBeanPostProcessor简述与demo示例 二.InstantiationAwareBean ...

  10. apache hbase 发布1.0.0版本

    今天apache发布了最新的hbase 1.0.0,下图是版本变迁历史: 详情参考: https://blogs.apache.org/hbase/entry/start_of_a_new_era