strut2 国际化

struts2 国际化分为:前台 页面国际化,Action类国际化,配置文件国际化。

  1. 首先制定全局国际化资源文件,在struts2.xml中加入一个常量配置:<constant name="struts.custom.i18n.resources" value="message"></constant>
  2. 国际化资源文件的名字规则:

xxx_语言_国家.properties
           message_zh_CN.properties(简体中文资源文件)
           message_en_US.properties(美国英语资源文件)

(1)前台页面国际化

(1).JSP页面上的国际化(使用struts2的<s:text .../>):

Html代码:

<s:i18n name="message">
<s:text name="hello">
<s:param>${username}</s:param>
</s:text>
</s:i18n> 

message_en_US.properties文件配置:
hello=hello world,{0}

message_zh_CN.properties文件配置:
hello=你好,{0}

(2)表单元素的Label国际化:

未国际化:

Html代码

    <s:textfield name="username" label="username"></s:textfield>
    <s:textfield name="password" label="password"></s:textfield>  

国际化后:

Html代码

    <s:textfield name="username" key="uname"></s:textfield>
    <s:textfield name="password" key="pword"></s:textfield>   

message_en_US.properties文件,配置:
uname=username
pword=password

message_zh_CN.properties文件,配置:
uname=用户名
pword=密码

(3).Action中的国际化:

未国际化:
this.addFieldError("username", "the username error!");
this.addFieldError("password", "the password error!");

国际化后:
this.addFieldError("username", "username.error");
this.addFieldError("password", "password.error");

message_en_US.properties文件配置:
username.error = the username error !
password.error = the password error!

message_zh_CN.properties文件配置:
username.error=用户名错误!
username.error=密码错误!

(4).配置文件中的国际化:

以输入校验的LoginAction-validation.xml为例:

未国际化:

Xml代码  

    <field name="username">
    <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message>username should not be empty!</message>
    </field-validator>  

    <field-validator type="stringlength">
    <param name="minLength">6</param>
    <param name="maxLength">12</param>
    <message>username should be between ${minLength} and ${maxLength}!</message>
    </field-validator>
    </field>   

国际化后:

Xml代码  

    <field name="username">
    <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message key="username.empty !"></message>
    </field-validator>  

    <field-validator type="stringlength">
    <param name="minLength">6</param>
    <param name="maxLength">12</param>
    <message key="username.size"></message>
    </field-validator>
    </field>  

message_en_US.properties文件配置:
username.empty = the username should not be empty !
username.size = the size of username shoule be between 6 and 12 !

message_zh_CN.properties文件配置:
username.empty =用户名不能为空 !
username.size = 用户名长度在6到12 !

时间: 2024-08-07 21:20:50

strut2 国际化的相关文章

[原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

【Java EE 学习第35天】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】

一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 1 package com.kdyzm.convert; 2 3 4 import com.opensymphony.xwork2.ActionSupport; 5 6 public class TypeConvertAction extends ActionSupport{ 7 private static final long

strut2 自己定义文件上传错误信息

在文件上传过程中我们能够指定拦截器对文件类型.后缀名.大小进行设定,action中的配置: <interceptor-ref name="fileUpload"> <param name="maximumSize">500000</param> <param name="allowedTypes">application/vnd.ms-excel</param> <param na

iOS10权限声明国际化

1.xCode8权限 xCode8.0开始苹果对隐私权限的控制更加严格,并且在隐私权限对应的描述不能为空,否则提交时在活动里面并看不到你提交的二进制文件,并给开发者邮箱发送以下邮件 2.权限描述国际化 解决办法是在Info.plist中添加Privacy - Camera Usage Description和Privacy - Photo Library Usage Description. 如果直接写在Info.plist中,则不能多语言显示提示,想要多语言提示,可以选中Info.plist文

Django1.9开发博客(12)- i18n国际化

国际化与本地化的目的为了能为各个不同的用户以他们最熟悉的语言和格式来显示网页. Django能完美支持文本翻译.日期时间和数字的格式化.时区. 另外,Django还有两点优势: 允许开发者和模板作者指定他们哪些app应该被翻译或被格式化为本地形式. 允许用户根据自己的偏好来实现本地化显示.翻译依据语言,格式化依据国家, 这些信息由浏览器中的Accept-Language头来决定.不过目前为止时区还未能实现. 参考官方文档:https://docs.djangoproject.com/en/1.9

AngularJS 国际化——Angular-translate

对于一个用户群面向全球的的应用来说,不得不考虑国际化的问题.当然,即便是刚刚起步的小应用,如果有心搞大,也应该提前设计国际化的方案. 本篇讲述使用AngularJS构建的应用的简单国际化方案,准确的说,是国际化服务.... i18n与l10n i18n是Internationalization得缩写,取第一个字母和最后一个字母,以及中间省略的字母数目,即i18n,类似的l10n是Localization得意思. 通常i18n是国际化的意思,就是在不改变源码的情况下,通过某些简单的配置就能适应不同

JAVA国际化

大家好,我是成都[LD],今天给大家带来的是JAVA国际化.如果您用过Struts,那您对国际化应该并不陌生. 通常来说,在代码中我们会夹杂一些字符串,这样其实并不好看,维护起来也不是特别方便.举个例子:假设你开发系统是中文版本,突然来了个需求,需要英文版本,如果你将字符串写在代码里面,这样你又不得不将所有的中文字符替换成英文字符.为了减少这种需求下重复劳动,我们通常会自己去写一个配置文件,然后将所有字符串放在配置文件里面,然后去读这个配置文件等等一系列的操作.当然这属于我们自己的一种解决问题的

Spring boot 国际化自动加载资源文件问题

Spring boot 国际化自动加载资源文件问题 最近在做基于Spring boot配置的项目.中间遇到一个国际化资源加载的问题,正常来说只要在application.properties文件中定义正确的资源文件路径,Spring boot就启动时就会自动加载资源. spring.messages.basename=i18n/message 但是我的项目修改后获取消息时系统报错,找不到对应语言的资源配置.于是试图找到原因.Google好久都没找到,简直好像就我一个人遇到这鬼问题一样??.只好自

JSTLView快速国际化(SpringMVC)

JSTLView:快速国际化:只要导入了jstl的jar包,以前默认创建的InternalResouceView都会被使用jstlView替代: 国际化的新步骤: 1).写好国际化资源文件 il118_en_US.properties il118_zh_CN.properties 2).在SpringMVC配置文件中配置管理国际化资源文件的消息管理器组件 <!-- 注册一个国际化资源管理器:id必须是messageSource --> <bean id="messageSour