文档章节

Struts2之国际化i18N配置

一日一博
 一日一博
发布于 2015/11/25 00:36
字数 507
阅读 146
收藏 1

在struts2中需要做国际化的有:
jsp页面的国际化,action错误信息的国际化,转换错误信息的国际化,校验错误信息的国际化

<constant name="struts.locale" value="zh_CN"/>
<!-- 多个文件的话用逗号隔开 -->
<constant name="struts.custom.i18n.resources" value="message"/>

中英文切换功能,只需要在请求的url后面带上参数request_locale=zh_CN或者request_locale=en_US就会被i18N拦截器拦截然后转换成中文环境。

在Struts2.3.4的文档里面是这样介绍i18n的:
1.Messages and Errors from the ValidationAware interface (implemented by ActionSupport and ValidationAwareSupport)
2.Within action classes that extend ActionSupport through the getText() method


所以要想使用国际化功能必须实现ValidationAware接口或者继承ActionSupport

Resource Bundle Search Order(资源包搜索顺序)

    1.ActionClass.properties
    2.Interface.properties (every interface and sub-interface)
    3.BaseClass.properties (all the way to Object.properties)
    4.ModelDriven's model (if implements ModelDriven), for the model object repeat from 1
    5.package.properties (of the directory where class is located and every parent directory all the way to the root directory)
    6.search up the i18n message key hierarchy itself
    7.global resource properties


其顺序是Action类名的资源文件>>>>接口名的资源文件>>>>package.properties>>>>global.properties

资源文件名的命名包括基本名(如Action类名,message),语言代号(如en、zh),国家代号(如US、CN)组成。
例如基本名为message的简体中文资源文件就是message_zh_CN.properties


这是转码后的资源文件:
lable.titile=用户注册
lable.username=用户名
lable.pwd=密码
lable.age=年龄
lable.email=电子邮箱
lable.regbutton=注册按钮

validator.error.required={0}必须填写。
validator.error.maxlength={0}最多允许{1}个字符。
validator.error.range={0}必须介于{1}至{2}之间。
validator.error.regex={0}格式不正确。

在JSP页面中使用 s:text 标签对文本国际化:
<s:text name="lable.username"/>
<s:text name="lable.pwd"/>
<input type="submit" value='<s:text name="lable.regbutton"/>'/>
OGNL表达式读取国际化消息:
<s:set name="age" value="%{getText('lable.age')}"/>


使用带有占位符的国际化信息时:
//从资源文件中读取username.invalid的值,增加到ActionError中。 
addActionError(getText('validator.error.maxlength', {'密码', '20'})));


<s:text name="validator.error.range">
    <s:param>年龄</s:param>
    <s:param>0</s:param>
    <s:param>100</s:param>
</s:text>

本文转载自:http://chouyi.iteye.com/blog/1566489

一日一博
粉丝 1
博文 57
码字总数 0
作品 0
程序员
私信 提问
Java程序员从笨鸟到菜鸟之(六十六)细谈struts2(十二)struts2国际化底层大揭秘

Struts2的博客在前不久已经停止了,但是里面还有很多内容我们都还没接触到,所以现在我们在补充一下struts2的内容。这篇博客我们主要是一块来看一下struts2内对国际化的支持。在了解struts2...

长平狐
2012/11/12
115
0
国际化信息显示 ,自定义拦截器

四、 国际化信息显示 1、 国际化原理 ? 什么是国际化 ? 同一款软件 可以为不同用户,提供不同语言界面 ---- 国际化软件 需要一个语言资源包(很多properties文件,每个properties文件 针对...

day戴
2014/07/23
185
0
Struts2的国际化,中英文切换

几年之前,应用程序开发者能够考虑到仅仅支持他们本国的只使用一种语言(或者有时候是两种)和通常只有一种数量表现方式(例如日期、数字、货币值)的应用。然而,基于web技术的应用程序的爆...

长平狐
2013/01/06
5.5K
1
Struts2 关于i18n国际化的问题,可点击链接实现中英文切换

1.首先把Struts2的环境搭建起来, 2.建立一个action.测试i18n的。 3.下面这个是struts.xml的简单配置,里有2中properties文件的配置,一种是全局的,一种是局部的, <?xml version="1.0" en...

zkool
2012/11/20
1K
0
struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化

  其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框...

别叫小伙
2017/03/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【TencentOS tiny】深度源码分析(4)——消息队列

消息队列 在前一篇文章中【TencentOS tiny学习】源码分析(3)——队列 我们描述了TencentOS tiny的队列实现,同时也点出了TencentOS tiny的队列是依赖于消息队列的,那么我们今天来看看消息...

杰杰1号
15分钟前
4
0
Hive

这就是那个 JAVA 类 package cn.itcast.bigdata;import java.util.HashMap;import org.apache.hadoop.hive.ql.exec.UDF;public class PhoneNbrToArea extends UDF{privat......

Garphy
15分钟前
6
0
Springboot开发,第二天

SpringBoot学习,第二天 目录:1、Springboot整合Listener 2、Springboot访问静态资源 3、异常处理 4、热部署 一、SpringBoot整合Listener 两种方式完成组件的注册 1、通过注解扫描完成组件的...

有一个小阿飞
19分钟前
5
0
BeginnersBook Perl 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...

ApacheCN_飞龙
31分钟前
5
0
我的Java秋招面经大合集

阿里面经 阿里中间件研发面经 蚂蚁金服研发面经 岗位是研发工程师,直接找蚂蚁金服的大佬进行内推。 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。 然后我...

Java技术江湖
36分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部