链接:【Java:国际化

src下有国际化资源文件:
lan.properties
lan_zh_CN.properties

中文系统系统默认使用zh_CN文件,没有的话使用基本文件lan.properties

lan.properties

label.ahtitle=wuhan diff veryday
label.username=user name ah001=i need input
m01={0}is already registed
e01=call admin please

lan_zh_CN.properties

label.ahtitle=\u5149\u7070\u57CE\u5E02
label.username=\u7528\u6237\u540D ah001=\u9700\u8981\u4F60\u7684\u8F93\u5165
m01={0}\u5DF2\u6CE8\u518C
e01=\u627E\u7BA1\u7406\u5458

inputMsg.jsp 无关大局,略了

index.jsp(JSP页面国际化)

<title><s:text name="label.ahtitle" /></title>
...
<%
// 改一下国家,火狐浏览器可以改,360,Chrome没发现
ActionContext.getContext().setLocale(new Locale("","")); %>
<s:form action="m1Action" method="post">
<s:textfield name="uname" key="label.username" />
<s:actionmessage/>
<s:submit value="%{getText('label.ahtitle')}"></s:submit>
<s:actionerror/>
</s:form>

#Ognl中的%,类似js的eval功能,用于强制返回Ognl结果

title中的内容,测试没啥效果(火狐浏览器修改语言后有效果)

struts.xml

<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.custom.i18n.resources" value="lan" />
<package name="p1" namespace="/" extends="struts-default">
<action name="*Action" class="org.ah.s2.C1" method="{1}">
<result name="success" type="dispatcher">
/inputMsg.jsp
</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>

Action:(编程式 验证错误消息国际化)

package org.ah.s2;

import java.util.Collection;

import com.opensymphony.xwork2.ActionSupport;

public class C1 extends ActionSupport {
private String uname; public String getUname() {
return uname;
} public void setUname(String uname) {
this.uname = uname;
} public String m1() {
Collection<String> actionMessages = getActionMessages();
System.out.println("actionMessages:" + actionMessages);
if (actionMessages.size() > 0) {
return "input";
}
return "success";
} @Override
public void validate() {
if ("admin".equals(uname)) {
// 继续走(被效验)方法
addActionMessage(getText("m01", new String[] { uname }));
} else if ("sa".equals(uname)) {
// 直接input,不走(被效验)方法
addActionError(getText("e01"
));
}
}

}

C1-validation.xml(声明式 验证错误消息国际化)

<validators>
<field name="uname">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="ah001"></message>
</field-validator>
</field>
</validators>


(引入日文资源后,发现错误提示还是中文,用火狐改浏览器语言应该可解决之)

lan_ja_JP.properties

label.ahtitle=\u6B66\u6F22
label.username=\u540D\u524D
ah001=\u5165\u529B\u3057\u3067\u304F\u3060\u3055\u3044
m01={0}\u3082\u3046
e01=\u7BA1\u7406\u54E1\u306B

Struts2:国际化的更多相关文章

  1. struts2国际化

    struts2国际化 1:什么是国际化? 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式.它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素 ...

  2. 【转】Struts2国际化

    原文章:http://www.cnblogs.com/hellokitty1/p/5083663.html 简单理解     国际化简称i18n,其来源是英文单词 internationalizati ...

  3. (六)Struts2 国际化

    所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:国际化简介 国际化(Internationlization),通俗地讲, ...

  4. struts2系列(四):struts2国际化的多种方式

    一.struts2国际化原理 根据不同的Locale读取不同的文本. 例如有两个资源文件: 第一个:message_zh_CN.properties 第二个:message_en_US.propert ...

  5. 菜鸟学SSH(三)——Struts2国际化自动检测浏览器语言版

    前几天发了一篇Struts国际化的博客——<菜鸟学习SSH(二)——Struts2国际化手动切换版>,有网友提了一个意见,见下图: 于是就有了下面修改的版本: web.xml <?x ...

  6. struts2学习(10)struts2国际化

    一.国际化简介: 二.struts2国际化设置: struts.xml: <?xml version="1.0" encoding="UTF-8" ?&g ...

  7. Struts2国际化-getText()方法

    转自https://blog.csdn.net/qq_43560838/article/details/83747604 一:简单理解 国际化简称i18n,其来源是英文单词 international ...

  8. [JavaWeb基础] 016.Struts2 国际化配置

    如果一个软件想要让其受众是全球或者是几个国家的人,那么这个软件就需要支持多种语言,那么我们就需要软件的国际化去对一些文字信息进行国际化处理.web也一样,当外国人打开我们的网站,要是看到满屏幕的中文, ...

  9. struts2 国际化

    国际化概述: 软件国际化:一个软件根据来访者地区不同,显示不同语言. 国际化: * 必须有一组资源包: * 一组属性文件命名: 基本名称_语言(小写)_国家(大写).properties * 如:me ...

  10. java学习笔记 (9) —— Struts2 国际化

    1.Test.java package com.i18n; import java.util.Locale; public class Test1 { public static void main( ...

随机推荐

  1. js中属性和方法的类型和区别

    对象的属性:私有属性(var).类属性(静态属性).对象属性(this).原型属性(prototype). 对象的方法: 私有方法(funtion).类方法(静态方法).对象方法(this).原型方法 ...

  2. 转:仿QQ长按弹出功能菜单

    android app普遍常用的弹出上下文菜单是列表式的.QQ列表,在上方弹出冒泡效果菜单,如图 这里讲解一下如何写出这个效果: 图片资源:两张图片,可以拼接成如上效果. 首先,我们需要写布局文件:  ...

  3. nodejs--模块

    在客户端可以将所有的javascript代码分割成几个JS文件,然后在浏览器中将这些JS文件合并.但是在nodejs中是通过以模块为单位来划分所有功能的.每一个模块为一个JS文件,每一个模块中定义的全 ...

  4. Linux上搭建Elasticsearch服务器并同步数据库

    1.准备工作         下载Elasticsearch版本号2.3.4 https://www.elastic.co/downloads/past-releases/elasticsearch- ...

  5. PetaPoco 批量插入数据

    网上找的代码,还没经过验证 /// <summary> /// Bulk inserts multiple rows to SQL /// </summary> /// < ...

  6. 欢迎你,phpWeChat 开发者

    感谢您使用 phpWeChat 来作为自己网站或者微信公共号的开发工具.phpWeChat 是一款高效.稳定的网站+微信公共号内容管理系统(CMS),也可称之为一个PHP开发框架. phpWeChat ...

  7. ISO20000

    ISO20000IT运维服务标准流程: 策划 建立 实施 运行 监控 回顾 维护 改进 方法论PDCA: Plan Do Check Act

  8. 得到APP【每天听本书】微信交流群(每天更新)

    得到APP[每天听本书]微信交流群,每天更新下载学习资料 添加个人微信号:zhidu10000 进入微信群. “坚持每天读一本书,每天进步1.01,每年进步37.8倍” 2016年书单合辑点此链接,查 ...

  9. centos安装mongodb 3.2.9

    centos 6.5 x64 1.下载地址:用迅雷下载,直接下载下不动 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2 ...

  10. Oracle 11.2.0.1的一个Bug,客户端报ORA-03113: 通信通道的文件结尾

    半小时前,一个项目反馈应用系统部分功能报错,ORA-03113: 通信通道的文件结尾.好像是个常见的错误. 异常信息:ORA-03113: 通信通道的文件结尾 进程 ID: 2392 会话 ID: 2 ...