`
wanglihu
  • 浏览: 915444 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类

struts2国际化i18n(internationalization)

阅读更多
i18n 就是internationalization这18个字母的简写,中文译为国际化
一.struts2国际化i18n测试1
1.I18nTest.java
package com.hitsoft.i18n;
import java.util.Locale;
public class I18nTest {

	public static void main(String[] args) {
		Locale[] locales = Locale.getAvailableLocales();
		for(Locale locale:locales){
			System.out.println(locale.getDisplayCountry()+":"+locale.getCountry());
		}
	}

}

2.运行结果:
马来西亚:MY
卡塔尔:QA
冰岛:IS
芬兰:FI
马耳他:MT
瑞士:CH
比利时:BE
沙特阿拉伯:SA
伊拉克:IQ
波多黎哥:PR
智利:CL
奥地利:AT
英国:GB
巴拿马:PA
也门:YE
马其顿王国:MK
加拿大:CA
越南:VN
荷兰:NL
美国:US
中国:CN
洪都拉斯:HN
美国:US
摩洛哥:MA
印度尼西亚:ID
南非:ZA
韩国:KR
突尼斯:TN
塞尔维亚:RS
白俄罗斯:BY
台湾地区:TW
苏丹:SD
日本:JP
玻利维亚:BO
阿尔及利亚:DZ
阿根廷:AR
阿拉伯联合酋长国:AE
加拿大:CA
立陶宛:LT
黑山:ME
叙利亚:SY
俄罗斯:RU
比利时:BE
西班牙:ES
以色列:IL
丹麦:DK
哥斯达黎加:CR
香港:HK
西班牙:ES
泰国:TH
乌克兰:UA
多米尼加共和国:DO
委内瑞拉:VE
波兰:PL
利比亚:LY
约旦:JO
匈牙利:HU
危地马拉:GT
巴拉圭:PY
保加利亚:BG
克罗地亚:HR
波斯尼亚和黑山共和国:BA
罗马尼亚:RO
卢森堡:LU
新加坡:SG
厄瓜多尔:EC
波斯尼亚和黑山共和国:BA
尼加拉瓜:NI
萨尔瓦多:SV
印度:IN
希腊:GR
斯洛文尼亚:SI
意大利:IT
日本:JP
卢森堡:LU
瑞士:CH
马耳他:MT
巴林:BH
:
:
黑山:ME
巴西:BR
挪威:NO
瑞士:CH
新加坡:SG
科威特:KW
埃及:EG
爱尔兰:IE
秘鲁:PE
捷克共和国:CZ
土耳其:TR
乌拉圭:UY
爱尔兰:IE
印度:IN
阿曼:OM
塞尔维亚及黑山:CS
阿尔巴尼亚:AL
葡萄牙:PT
拉脱维亚:LV
塞尔维亚:RS
斯洛伐克:SK
墨西哥:MX
澳大利亚:AU
挪威:NO
新西兰:NZ
瑞典:SE
黎巴嫩:LB
德国:DE
泰国:TH
哥伦比亚:CO
菲律宾:PH
爱沙尼亚:EE
塞浦路斯:CY
法国:FR


二.struts2国际化i18n测试2
1.hellofile_en_US.properties文件(位于src根目录下,也就是与struts.xml文件同目录下)
hello-value=how are you?
world-value=how are you,{0}?

2.hellofile_zh_CN.properties(位于src根目录下,也就是与struts.xml文件同目录下)
hello-value=你好吗?
world-value=你好吗,{0}?

3.I18nTest2.java
package com.hitsoft.i18n;

import java.util.Locale;
import java.util.ResourceBundle;

public class I18nTest2 {

	public static void main(String[] args) {
		Locale locale = Locale.US;
		System.out.println(locale.getDisplayCountry()+":"+locale.getCountry());
		ResourceBundle bundle = ResourceBundle.getBundle("hellofile",locale);
		String value = bundle.getString("hello-value");
		System.out.println(value);
		
		locale = Locale.CHINA;
		System.out.println(locale.getDisplayCountry()+":"+locale.getCountry());
		bundle = ResourceBundle.getBundle("hellofile",locale);
		value = bundle.getString("hello-value");
		System.out.println(value);
	}

}

4.运行结果:
美国:US
how are you?
中国:CN
你好吗?


三.struts2国际化i18n测试3:
1.I18nTest3.java
package com.hitsoft.i18n;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
public class I18nTest3 {
	public static void main(String[] args) {
		Locale locale = Locale.US;
		System.out.println(locale.getDisplayCountry()+":"+locale.getCountry());
		ResourceBundle bundle = ResourceBundle.getBundle("hellofile",locale);
		String value = bundle.getString("world-value");
		String message = MessageFormat.format(value, new Object[]{"wanglihu"});
		System.out.println(message);
		
		locale = Locale.CHINA;
		System.out.println(locale.getDisplayCountry()+":"+locale.getCountry());
		bundle = ResourceBundle.getBundle("hellofile",locale);
		value = bundle.getString("world-value");
		message = MessageFormat.format(value, new Object[]{"王利虎"});
		System.out.println(message);
	}
}

2.运行结果:
美国:US
how are you,wanglihu?
中国:CN
你好吗,王利虎?


四.struts2国际化i18n测试4
1.register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>国际化i18n测试页面</title>
  </head>
  
  <body>
   <table align="center" width="50%">
    	<tr>
    		<td>
    			<s:actionerror cssStyle="color:red"/>
    			<hr>
    			<s:fielderror cssStyle="color:blue"></s:fielderror>
    		</td>
    	</tr>
  </table>
  <form action="register.action" method="post">
    	<table align="center" border=1 width="50%">
    		<tr>
    			<td>username</td>
    			<td><input name="username" type="text" size=20></td>
    		</tr>
    		
    		<tr>
    			<td>operation</td>
    			<td><input value="submit" type="submit" ><input value="reset" type="reset" ></td>
    		</tr>
    	</table>
  </body>
</html>

2.success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>i18n国际化结果页面</title>
  </head>
  
  <body>
	<table align="center" border=1 width="50%">
    		<tr>
    			<td>username</td>
    			<td>${requestScope.username }</td>
    		</tr>
    </table>
  </body>
</html>


3.RegisterAction.java
package com.hitsoft.action;
import java.util.Calendar;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
//1.首先执行类型转换
//2.执行对应的校验框架
//3.执行特定方法对应的validate验证(test,validateTest)
//4.执行validate()方法
//如果在以上所有过程当中,发现了任何错误,都不会再去执行execute方法或指定的特定方法(test),页面转向了struts.xml
//中这个result所对应的页面
public class RegisterAction extends ActionSupport {
	private String username;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String execute(){
		System.out.println("execute invoked!");
		return SUCCESS;
	}
	public String test(){
		System.out.println("test invoked!");
		return SUCCESS;
	}
	public void validateTest(){
		System.out.println("validateTest invoked!");
	}
	@Override
	public void validate() {
		System.out.println("validate invoked!");
		if(null == username||username.length()<6||username.length()>10){
			//this.addActionError("username invalid");
			//国际化
			this.addActionError(this.getText("username.invalid",new String[]{username}));
			this.addFieldError("username", "field error:username is invalid!");
		}
	}
	
}


4.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>
    <package name="struts2"  extends="struts-default">
	<action name="register" class="com.hitsoft.action.RegisterAction" method="test">
		<result name="success">/success.jsp</result>
		<result name="input">/register.jsp</result>
	</action>
    </package>
</struts>


5.RegisterAction_en_US.properties(必须与RegisterAction.java同目录下)

username.invalid=username\:{0} is invalid\!


6.RegisterAction_zh_CN.properties(必须与RegisterAction.java同目录下)

username.invalid=用户名 {0} 是不合法的!


7.访问地址:
http://localhost:8080/struts2/register.jsp
输入:
输出:
分享到:
评论

相关推荐

    struts2-i18n实现国际化例子

    Struts2-i18n是Apache Struts框架中用于实现应用程序国际化的功能模块。这个例子主要是为了帮助初学者理解如何在Struts2框架下进行国际化设置。以下将详细讲解Struts2-i18n的基本概念、实现步骤以及相关知识点。 **...

    (三)Struts2国际化(i18n) :简单语言包的实现

    在Struts2中,国际化(i18n)是处理多语言环境的重要特性,使得同一个应用可以适应不同地区用户的需求。本篇文章将深入探讨如何在Struts2中实现简单语言包的国际化。 首先,我们需要了解什么是i18n。这里的数字"18...

    struts2中的国际化(i18n)项目实例.(MyEclipse工具)

    这个"struts2中的国际化(i18n)项目实例"是为了帮助初学者理解如何在Struts2中实现在MyEclipse集成开发环境中配置和使用国际化功能。 首先,我们要知道i18n代表的是“国际化”,这里的18个字符代表了英文单词...

    Struts2 I18N国际化最简单例子

    在这个“Struts2 I18N国际化最简单例子”中,我们将探讨如何在Struts2框架下实现国际化功能。 1. **Struts2的I18N支持** Struts2提供了内置的支持来处理多语言环境。它通过资源包(Resource Bundle)来管理不同的...

    国际化 struts2i18n demo

    总之,"struts2i18n"演示了如何在Struts2框架下进行国际化,这对于开发面向全球用户的Web应用至关重要。通过学习和实践这个示例,开发者可以掌握Struts2的国际化机制,提高其Web应用的全球化适应性。

    struts2-i18n

    Struts2-i18n是一个专门针对Struts2框架实现的国际化(i18n)解决方案。在Web开发中,国际化是一项重要的功能,它允许应用为不同地区的用户提供本地化的界面和内容。Struts2作为流行的Java Web MVC框架,提供了一套...

    struts_I18N国际化

    Struts I18N 国际化是一种技术,它允许应用程序根据用户所在的地理位置或首选语言环境来显示相应的本地化内容。在Struts框架中,I18N(Internationalization)是一个关键特性,使得开发者能够轻松地创建支持多语言的...

    struts_I18N

    I18N(Internationalization,国际化)是软件开发中的一个重要概念,它允许应用程序根据用户所在地区提供本地化的用户体验。在Struts框架中,I18N支持是通过资源包(Resource Bundle)实现的,这些资源包包含了不同...

    struts_i18n_login.rar_i18n

    国际化(i18n)这个名字来源于 "internationalization" 的首字母缩写,数字 "18" 是因为 "n" 之后到 "i" 之间有18个字母。这个过程主要涉及资源文件的创建和使用,以便根据用户的选择或浏览器设置显示相应的语言内容...

    i18n的一些源码

    Struts2_i18n压缩包文件可能包含用于实现国际化功能的资源文件和相关代码。资源文件通常是.properties格式,例如`messages.properties`,它是默认的语言版本(通常为英文),而`messages_zh_CN.properties`则对应...

    struts2国际化例子源码

    国际化(Internationalization,简称i18n)是使软件能够适应不同语言和地区需求的过程。在Struts2中实现国际化,可以帮助开发者创建对多语言环境友好的应用。 本示例主要围绕Struts2框架如何实现国际化进行深入探讨...

    Struts2国际化

    因此,国际化(Internationalization,简称i18n)成为了现代软件开发中不可或缺的一部分。在Java Web应用开发领域,Struts框架因其强大的功能和灵活的架构受到了广泛的关注与应用。本文将重点介绍如何在Struts 2.0中...

    Struts2国际化(可选择语言)

    在Struts2中实现国际化(I18n,Internationalization)是常见的需求,目的是使应用程序能够根据用户的语言和地区提供相应的本地化内容。本示例将详细介绍如何在Struts2框架下实现国际化,并通过myEclipse开发环境...

    struts1.2 国际化

    在软件开发过程中,为了满足不同地域和语言环境下的用户需求,软件国际化(Internationalization, 简称 I18N)和本地化(Localization, 简称 L10N)成为了一项重要的技术挑战。Struts 1.2 框架作为 Java Web 开发的...

    struts2框架国际化

    国际化(i18n)是Struts2的一个重要特性,使得应用能够支持多种语言环境,以满足全球用户的语言需求。以下是对Struts2框架国际化实现的详细讲解。 1. **国际化的基本概念** 国际化(Internationalization,简称i18...

    STRUTS2国际化的问题

    Struts2作为一个流行的Web应用框架,为了满足全球用户的使用需求,提供了一系列国际化(Internationalization, 简称I18N)的支持。这包括了如何在配置文件中进行国际化设置,以及在后端或前端实现国际化的过程。 ##...

    struts2国际化处理全解

    2. **配置Struts2**:在`struts.xml`配置文件中,添加`&lt;constant&gt;`标签,设置`struts.i18n.encoding`(字符编码)和`struts.i18n.reload`(是否在开发阶段动态重载资源文件)。 3. **在Action中使用**:在Action类...

    struts2 国际化(中英文切换 占位符)

    国际化(Internationalization,通常简写为i18n)是软件开发中的一个重要特性,它允许应用程序根据用户的语言和地区偏好显示相应的本地化内容。在Struts2中实现国际化,可以提供多语言支持,比如中英文切换,这对于...

    struts2国际化语言切换

    在Struts2中实现国际化(i18n)是开发者为了支持多语言环境而进行的一项重要工作。"i18n"是“internationalization”的缩写,18代表字母数,n代表最后的“ation”,它是指使软件能够适应不同地区的语言和文化习俗的...

    struts2国际化

    Struts2提供了一个默认的国际化资源文件`struts2-i18n.properties`,其中包含了框架自身的提示信息。开发者可以根据需要覆盖这些默认值,或者为特定的语言创建自定义的资源文件。 4. **Action中的国际化** 在...

Global site tag (gtag.js) - Google Analytics