java框架篇---Struts2 本地化/国际化(i18n)
国际化(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)的更多相关文章
- java框架篇---Struts2 本地化/国际化(i18n)(转)
源地址:https://www.cnblogs.com/oumyye/p/4368453.html 国际化(i18n)是规划和实施的产品和服务,使他们能很容易地适应特定的本地语言和文化的过程中,这个过 ...
- java框架篇---Struts2的处理流程
一.Struts2的处理流程: 客户端产生一个HttpServletRequest的请求,该请求被提交到一系列的标准过滤器(Filter)组建链中(如ActionContextCleanUp:它主要是 ...
- 浅谈struts2的国际化----i18n
可能大家在使用struts框架的时候,偶尔会看到这个词: i18n.也就是 Internationalization i 开头,n 结尾. 总共18个字母,今天的主要内容就是环绕这 四个字母. ...
- Java框架之Struts2(一)
在学习Struts2之前,我们要知道Java为什么要有反射机制呢?反射机制可以说是填补Java不能动态访问某一个类的空白.利用反射机制,动态的创建一个对象.动态的访问类的某个属性,而且访问哪一个属性自 ...
- java框架之Struts2(4)-拦截器&标签库
拦截器 概述 Interceptor (拦截器):起到拦截客户端对 Action 请求的作用. Filter:过滤器,过滤客户端向服务器发送的请求. Interceptor:拦截器,拦截的是客户端对 ...
- Java框架之Struts2(六)
一.OGNL表达式语言 Ognl Object Graphic Navigation Language(对象图导航语言),它是一种功能强大的表达式语言(Expression Language,简称为E ...
- java框架之Struts2(1)-简介及入门
简介 Struts2 是一个基于 MVC 设计模式的 Web 应用框架,它本质上相当于一个 servlet,在 MVC 设计模式中,Struts2 作为控制器 (Controller) 来建立模型与视 ...
- java框架之Struts2(2)-访问Servlet API及请求数据封装
准备 为后面测试示例编写代码及配置如下: package com.zze.bean; import java.util.Date; public class User { private String ...
- Java框架之Struts2(二)
一.Action 配置说明 //请求的直接转发 <package name="packageUser" namespace="" extends=&quo ...
随机推荐
- 微信小程序:一起玩连线,一个算法来搞定
微信小程序:一起玩连线 游戏玩法 将相同颜色的结点连接在一起,连线之间不能交叉. 算法思想 转换为多个源点到达对应终点的路径问题,且路径之间不相交.按照dfs方式寻找两个结点路径,一条路径探索完之后, ...
- 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 ...
- ruby那些事儿
为了学习sass,客串一下ruby,这是一个破案的过程,探索的过程. Ruby是日本人发明的一种类似于Python和Perl的服务器端脚本语言,它完全面向对象,适合于快速开发,一般开发效率是java的 ...
- 2016年3月12日Android学习笔记
1. //此句不能忘,否则onFling左右滑动不起作用 mLlExamView.setLongClickable(true); mLlExamView.setOnTouchListener(new ...
- 异步处理XML异步数据——以原生的JavaScript与jQuery中的$.ajax()为例
此文档解决以下问题: 一.原生的JavaScript从服务器端输出XML格式数据 1.XMLHttpRequest对象的运用 XMLHttpRequest对象的open()方法 XMLHttpRequ ...
- oracle 列相减——(Oracle分析函数Lead(),Lag())
lag和lead函数,用于取出数据的前n行的数据和后n行的数据,当然要和over(order by)一起组合 其实这2个函数的作用非常好理解,Lead()就是取当前顺序的下一条记录,相对Lag()就是 ...
- vscode调试C/C++时支持查看定义查看引用
貌似老版支持现在不支持了,需要自己加第三方工具,方法如下: 确保你安装了c/c++,此文写作时版本为0.20.1 从GTAGS官网下载Win32程序,解压,将其放在合适的位置,并把其目录下/bin文件 ...
- 对比 PHP 中 new static() 与 new self()
通过new static()与new self()都能产生实例对象,new static()是在PHP5.3版本中引入的新特性,本文对二者稍作对比. 一.当直接通过本类创建实例时 class Test ...
- Hessian学习总结(二)——使用hessian上传文件
hessian较早版本通过 byte[] 进行文件传输:4.0之后支持 InputStream 作为参数或返回值进行传输. 注意:hessian会读取整个文件,如果文件过大,会导致JVM内存溢出.可以 ...
- What is a UINavigationTransitionView
**AFAIK UINavigationTransitionView is a class used to animate UINavigationController child views aro ...