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

访问方式:

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

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

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

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

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

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

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

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

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

下面实现国际化处理

结构目录:

配置文件Struts.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5.  
  6. <struts>
  7. <constant name="struts.devMode" value="true" />
  8. <!-- 扫描资源目录下以global开头的文件 -->
  9. <constant name="struts.custom.i18n.resources" value="global" />
  10.  
  11. <package name="helloworld" extends="struts-default" namespace="/">
  12. <action name="empinfo"
  13. class="com.oumyye.action.Employee"
  14. method="execute">
  15. <result name="input">/index.jsp</result>
  16. <result name="success">/success.jsp</result>
  17. </action>
  18.  
  19. <action name="locale"
  20. class="com.oumyye.action.Locale"
  21. method="execute">
  22. <result name="success">/index.jsp</result>
  23. </action>
  24. </package>
  25.  
  26. </struts>

处理类 Employee .java

  1. package com.oumyye.action;
  2. import com.opensymphony.xwork2.ActionSupport;
  3.  
  4. public class Employee extends ActionSupport{
  5. private String name;
  6. private int age;
  7.  
  8. public String execute()
  9. {
  10. return SUCCESS;
  11. }
  12.  
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public int getAge() {
  20. return age;
  21. }
  22. public void setAge(int age) {
  23. this.age = age;
  24. }
  25. }

处理类Locale.java

  1. package com.oumyye.action;
  2.  
  3. import com.opensymphony.xwork2.ActionSupport;
  4.  
  5. public class Locale extends ActionSupport{
  6. public String execute()
  7. {
  8. return SUCCESS;
  9. }
  10. }

视图index.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="s" uri="/struts-tags"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  5. "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <title>Employee Form with Multilingual Support</title>
  9. </head>
  10.  
  11. <body>
  12. <h1><s:text name="global.heading"/></h1>
  13.  
  14. <s:url id="indexUS" namespace="/" action="locale" >
  15. <s:param name="request_locale" >us</s:param>
  16. </s:url>
  17. <s:url id="indexZH" namespace="/" action="locale" >
  18. <s:param name="request_locale" >zh</s:param>
  19. </s:url>
  20. <s:url id="indexFR" namespace="/" action="locale" >
  21. <s:param name="request_locale" >fr</s:param>
  22. </s:url>
  23.  
  24. <s:a href="%{indexUS}" >English</s:a>
  25. <s:a href="%{indexZH}" >中文</s:a>
  26. <s:a href="%{indexFR}" >France</s:a>
  27.  
  28. <s:form action="empinfo" method="post" namespace="/">
  29. <s:textfield name="name" key="global.name" size="20" />
  30. <s:textfield name="age" key="global.age" size="20" />
  31. <s:submit name="submit" key="global.submit" />
  32. </s:form>
  33.  
  34. </body>
  35. </html>

跳转成功页Success.jsp

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

global_fr.properties

  1. global.name = Nom d'utilisateur
  2. global.age = l'âge
  3. global.submit = Soumettre des
  4. global.heading = Sé lectionnez Local
  5. global.success =Authentifi\t\u00E9 avec succ\u00E8s

global_us.properties

  1. global.name = Name
  2. global.age = Age
  3. global.submit = Submit
  4. global.heading = Select Locale
  5. global.success =Successfully authenticated

global_zh.properties

  1. global.name = \u59D3\u540D
  2. global.age = \u5E74\u9F84
  3. global.submit = \u63D0\u4EA4
  4. global.heading = \u9009\u62E9\u4E00\u79CD\u8BED\u8A00
  5. 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. 微信小程序:一起玩连线,一个算法来搞定

    微信小程序:一起玩连线 游戏玩法 将相同颜色的结点连接在一起,连线之间不能交叉. 算法思想 转换为多个源点到达对应终点的路径问题,且路径之间不相交.按照dfs方式寻找两个结点路径,一条路径探索完之后, ...

  2. CentOS 6.4在运行XFS时系统crash的bug分析

    最近有一台CentOS 6.4的服务器发生多次crash,kernel version 是Linux 2.6.32-431.29.2.el6.x86_64.从vmcore-dmesg日志内容及cras ...

  3. ruby那些事儿

    为了学习sass,客串一下ruby,这是一个破案的过程,探索的过程. Ruby是日本人发明的一种类似于Python和Perl的服务器端脚本语言,它完全面向对象,适合于快速开发,一般开发效率是java的 ...

  4. 2016年3月12日Android学习笔记

    1. //此句不能忘,否则onFling左右滑动不起作用 mLlExamView.setLongClickable(true); mLlExamView.setOnTouchListener(new ...

  5. 异步处理XML异步数据——以原生的JavaScript与jQuery中的$.ajax()为例

    此文档解决以下问题: 一.原生的JavaScript从服务器端输出XML格式数据 1.XMLHttpRequest对象的运用 XMLHttpRequest对象的open()方法 XMLHttpRequ ...

  6. oracle 列相减——(Oracle分析函数Lead(),Lag())

    lag和lead函数,用于取出数据的前n行的数据和后n行的数据,当然要和over(order by)一起组合 其实这2个函数的作用非常好理解,Lead()就是取当前顺序的下一条记录,相对Lag()就是 ...

  7. vscode调试C/C++时支持查看定义查看引用

    貌似老版支持现在不支持了,需要自己加第三方工具,方法如下: 确保你安装了c/c++,此文写作时版本为0.20.1 从GTAGS官网下载Win32程序,解压,将其放在合适的位置,并把其目录下/bin文件 ...

  8. 对比 PHP 中 new static() 与 new self()

    通过new static()与new self()都能产生实例对象,new static()是在PHP5.3版本中引入的新特性,本文对二者稍作对比. 一.当直接通过本类创建实例时 class Test ...

  9. Hessian学习总结(二)——使用hessian上传文件

    hessian较早版本通过 byte[] 进行文件传输:4.0之后支持 InputStream 作为参数或返回值进行传输. 注意:hessian会读取整个文件,如果文件过大,会导致JVM内存溢出.可以 ...

  10. What is a UINavigationTransitionView

    **AFAIK UINavigationTransitionView is a class used to animate UINavigationController child views aro ...