`
Luob.
  • 浏览: 1586411 次
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
国际化资源文件的搜索顺序 :action-->package--->parent package--->全局

先说,采用临时文件和 i18n 标签来访问多个范围内的资源文件
要在jsp页面同时应用多个范围的资源文件,就采用 i18n 标签来指定,而且还不需要在struts.xml中配置


1.properties属性配置文件 将下面 三种不同范围的资源文件,放在对应的目录下面
2.jsp页面
<body>
   ====访问全局资源文件
     <!--全局资源文件的 baseName-->
   <s:i18n name="globalMessages">
   	  <h3>
    		<s:text name="loginTitle"/>
    	</h3>
    	<s:form action="checkLogin" method="post">
    		<s:textfield name="loginName" key="loginName" />
    		<s:textfield name="loginPassword" key="loginPassword"/>    	
    		<s:submit key="loginBtn"/>
    		<s:token/>
    	</s:form>
    	<s:text name="loginName"></s:text>
   </s:i18n>
   
   ====访问package范围的资源文件
        <!--包资源文件的 完整路径->
    <s:i18n name="com.sh.action.package">
   	  <h3>
    		<s:text name="loginTitle"/>
    	</h3>
    	<s:form action="checkLogin" method="post">
    		<s:textfield name="loginName" key="loginName" />
    		<s:textfield name="loginPassword" key="loginPassword"/>    	
    		<s:submit key="loginBtn"/>
    		<s:token/>
    	</s:form>
   </s:i18n>
   
   ====访问Action范围的资源文件
       <!--Action范围资源文件的 完整路径->
    <s:i18n name="com.sh.action.LoginAction">
   	  <h3>
    		<s:text name="loginTitle"/>
    	</h3>
    	<s:form action="checkLogin" method="post">
    		<s:textfield name="loginName" key="loginName" />
    		<s:textfield name="loginPassword" key="loginPassword"/>    	
    		<s:submit key="loginBtn"/>
    		<s:token/>
    	</s:form>
   </s:i18n>
   
  </body>



再说全局资源文件 和 package 范围 和 action 范围的文件 有占位符的访问(需要配置)

1.Struts2框架将国际化信息定义在资源文件中,同时还需要在配置文件中对资源文明进行配置,告诉Struts2框架所有需要加载的资源文件。
baseName_language_country.properties

2.使用struts.xml文件
 
 <!--在struts.xml文件中配置国际化资源文件,一般是通过设置常量来实现。-->
  <constant name="struts.custom.i18n.resources" value="globaleMessages"/>

3.使用struts.properties文件
  如果在struts.properties文件中实现,则使用key-value的代码格式,配置代码如下:
   struts.custom.i18n.resources=globalMessages

4.使用web.xml文件
  如果在web.xml文件中实现,则使用<param-name> 和<param-value>元素,配置代码如下:
 
    <init-param>
      <param-name>struts.custom.i18n.resources</param-name>
      <param-value>globaleMessage</param-value>
    </init-param>


5.配置Struts2国际化资源信息需要两个值
  struts.custom.i18n.resources 和 globalMessages;
  struts.custom.i18n.resources 在struts2框架中 表示国际化的常量,是一个固定不变的值,
globalMessage
  表示全局国际化资源文件的basename值,所以对应的全局国际化资源文件,所以对应的全局国际化资源文件,可以是 globalMessage_zh_CN.properties,
globaleMessage_en_US.properties.等这些文件的命名格式符合
baseName_language_country的格式。

6.native2ascii 命令的使用
 
       //在 jdk bin 目录下 建一个记事本 temp.xml 
 userName=姓名
 userPassword=密码

   win+r cmd cd D:\ProgramFiles\Java\jdk1.6.0_17\bin 
   native2ascii temp.text globalMessages_zh_CN.properties
  


7.Struts2的国际化支持占位符,从而可以更加灵活的输出国际化信息,占位符鼻息使用参数来填充。
  A:在jsp中填充国际化资源信息是的占位符
   通过<s:text>标签中嵌套多个<s:param>标签来填充占位符。
B:在Action中填充国际化资源信息时的占位符
  这种情况在action中可以调用getTest()方法来填充占位符。

8.globalMessages_zh_CN.properties
loginBtn=登录
loginName=用户名
loginPassword=密码
loginTitle=用户登录
loginSuccess=欢迎 {0} 登录成功!


9.globalMessages_en_US.properties
loginBtn=Login
loginTitle=UserLogin
loginName=LoginName
loginPassword=LoginPassword
loginSuccess=welcome {0} login Success!


11.在action 中给占位符赋值 使用 getTest()
	public String  checkLogin(){
		this.message=this.getText("loginSuccess",new String[]{this.loginName});
		return SUCCESS;
	}


12.struts.xml
<struts> 
     <!-- 定义国际化资源文件的基本名称 -->
	<constant name="struts.custom.i18n.resources" value="globalMessages"/>
    <constant name="struts.i18n.encoding" value="utf-8"/>
    <package name="/user" extends="struts-default">
    	<action name="checkLogin" class="com.sh.action.LoginAction" method="checkLogin">
			<result name="success">/index.jsp</result>    	
    	</action>
    </package>
</struts>


13.login.jsp  有占位符的访问
<body>
      <center>
         <h3>第一种方式,在jsp页面里面填充带占位符的国际化信息<h3>
      <s:text name="loginSuccess">
      	<s:param>
      		<s:property value="loginName"/>
      	</s:param>
      </s:text>
      <h3>第二种方式,在Action中填充带占位符的国际化信息</h3>
       <s:property value="message"/>
      </center>
 </body>


14.没有占位符的访问
<body>
    <center>
    	<h3>
    		<s:text name="loginTitle"/>
    	</h3>
    	<s:form action="checkLogin" method="post">
    		<s:textfield name="loginName" key="loginName"/>
    		<s:textfield name="loginPassword" key="loginPassword"/>    	
    		<s:submit key="loginBtn"/>
    		<s:token/>
    	</s:form>
    </center>
  </body>


package范围的资源文件 (在struts.xml中配置)
放在对应的包下面 命名:package_language_country.properties(固定格式)
com.ah.action/LoginAction.java
package com.sh.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
	private String loginName;
	private String loginPassword;
	private String message;
	
	public String  checkLogin(){
		this.message=this.getText("loginSuccess",new String[]{this.loginName});
		return SUCCESS;
	}
}

properties
//中文 com.sh.action/package_zh_CN.properties
loginBtn=package:登录
loginName=package:用户名
loginPassword=package:密码
loginTitle=package:用户登录
loginSuccess=package:欢迎 {0} 登录成功!
// 英文 com.sh.action/package_en_US.properties
loginBtn=package:Login
loginTitle=package:UserLogin
loginName=package:LoginName
loginPassword=package:LoginPassword
loginSuccess=package:welcome {0} login Success!

struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts> 
     <!-- 定义包范围的 国际化资源文件的基本名称 package -->
	<constant name="struts.custom.i18n.resources" value="com.sh.action.package"/>

    <constant name="struts.i18n.encoding" value="utf-8"/>
    <package name="/user" extends="struts-default">
    	<action name="checkLogin" class="com.sh.action.LoginAction" method="checkLogin">
			<result name="success">/index.jsp</result>    	
    	</action>
    </package>
</struts>



jsp
<body>
    <center>
    	<h3>
    		<s:text name="loginTitle"/>
    	</h3>
    	<s:form action="checkLogin" method="post">
    		<s:textfield name="loginName" key="loginName" />
    		<s:textfield name="loginPassword" key="loginPassword"/>    	
    		<s:submit key="loginBtn"/>
    		<s:token/>
    	</s:form>
    	<s:text name="loginName"></s:text>
    </center>
  </body>

Action范围的资源文件(在struts.xml中配置)
命名格式为:ActionName_language_country.properties 放action同一级目录下面

//英文 LoginAction_en_US.properties
loginBtn=Action:Login
loginTitle=Action:UserLogin
loginName=Action:LoginName
loginPassword=Action:LoginPassword
loginSuccess=Action:welcome {0} login Success!
//中文 LoginAction_zh_CN.properties
loginBtn=Action:登录
loginName=Action:用户名
loginPassword=Action:密码
loginTitle=Action:用户登录
loginSuccess=Action:欢迎 {0} 登录成功!


struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts> 
     <!-- 定义 Action 范围的国际化资源文件的基本名称 -->
	<constant name="struts.custom.i18n.resources" value="com.sh.action.LoginAction"/>
	
    <constant name="struts.i18n.encoding" value="utf-8"/>
    <package name="/user" extends="struts-default">
    	<action name="checkLogin" class="com.sh.action.LoginAction" method="checkLogin">
			<result name="success">/index.jsp</result>    	
    	</action>
    </package>
</struts>

action , jsp 和上面的一样
1
14
分享到:
评论
1 楼 xiaokang1582830 2012-10-23  
com.sh.action/package_zh_CN.properties ?这样的文件能创建成功,/为特殊字符

相关推荐

    struts2国际化例子源码

    在Struts2中实现国际化,可以帮助开发者创建对多语言环境友好的应用。 本示例主要围绕Struts2框架如何实现国际化进行深入探讨。源码中包含两个关键部分:WebRoot目录和src目录。 1. **WebRoot** 目录: - `WEB-...

    Struts2国际化的实现原理

    Struts2国际化的实现原理;简单的struts2国际化实现过程的讲解

    struts2国际化 标签 页面 处理类

    Struts2是一个流行的Java web框架,它提供了强大的国际化支持,帮助开发者创建多语言的应用程序。在Struts2中实现国际化,主要包括配置、JSP页面、表单和Action类的处理。 首先,在`struts.xml`配置文件中,我们...

    Struts2国际化Demo

    在“Struts2国际化Demo”中,我们主要探讨的是如何利用Struts2框架实现应用的多语言支持,即国际化(i18n)功能。国际化是一种设计方法,使得软件能够根据不同地区的语言和文化习惯进行调整,使得全球用户都能无障碍...

    STRUTS2国际化的问题

    ### STRUTS2国际化的问题 #### 一、Struts2国际化的概述 Struts2作为一个流行的Web应用框架,为了满足全球用户的使用需求,提供了一系列国际化(Internationalization, 简称I18N)的支持。这包括了如何在配置文件...

    struts2国际化源码以及eclipse国际化插件

    在Struts2中实现国际化(i18n)是一项重要功能,它允许应用程序支持多种语言,以满足全球用户的需求。国际化不仅仅是翻译文本,而是设计应用程序以适应不同地区的文化习惯和语言需求。 首先,让我们来探讨一下...

    struts2国际化MyEclipse开发

    struts2国际化MyEclipse开发struts2国际化MyEclipse开发童叟无欺

    struts1.2 国际化

    ### Struts 1.2 国际化详解 #### 一、引言 在软件开发过程中,为了满足不同地域和语言环境下的用户需求,软件国际化(Internationalization, 简称 I18N)和本地化(Localization, 简称 L10N)成为了一项重要的技术...

    struts2国际化测试

    在“struts2国际化测试”这个主题中,我们将探讨如何在Struts2框架下实现应用程序的国际化功能。 首先,国际化(i18n,i代表第9个字母n,18是n到i的字母数,表示国际化)是使软件能够适应不同语言和文化背景的重要...

    Struts1 和 Struts 2 国际化全局资源

    Struts1 和 Struts 2 是两种非常流行的Java Web开发框架,它们都提供了对国际化(i18n)的支持,使得应用能够根据用户的语言和地区显示相应的本地化内容。国际化是软件设计的一个重要方面,它允许应用程序在全球范围...

    struts2国际化处理全解

    在国际化处理方面,Struts2提供了全面的支持,使得开发者能够轻松地为多语言环境的应用程序创建接口。 首先,我们需要了解什么是国际化(Internationalization)和本地化(Localization)。国际化是指设计和开发...

    struts2国际化+简单的标签+用户注册和登录

    总的来说,这个项目提供了一个基础的Struts2应用实例,展示了如何实现国际化、使用Struts2标签库,以及创建简单的用户注册和登录功能,尽管它并不涉及实际的数据存储。对于学习和理解Struts2框架的运作机制,这是一...

    Struts2国际化支持引导(初)

    这篇指南将深入探讨Struts2如何实现国际化支持,并提供一个初步的引导。 首先,理解国际化的基本概念是至关重要的。国际化不仅仅是翻译文本,它还涉及到日期、时间、货币等格式的本地化。在Java中,这一过程通常...

    struts2标签库及国际化的使用例子

    Struts2 框架提供了强大的标签库和国际化功能,本实验旨在掌握 Struts 2 标签库和国际化功能的使用,并实现用户注册页面的国际化显示。 一、Struts2 标签库 Struts2 框架提供了一个强大的标签库,用于简化 JSP ...

    struts2国际化demo

    "Struts2国际化demo"是一个示例,展示了如何在Struts2框架下实现这一功能,使得网站可以根据用户的浏览器设置显示不同的语言。 首先,要实现国际化,我们需要创建资源文件。在Java中,这些通常是`.properties`文件...

    Struts2 使用 Struts2 实现国际化

    总结,实现Struts2的国际化涉及资源文件的创建、配置Struts2的`struts.xml`、设置locale以及在JSP页面中使用国际化标签库。理解和掌握这些步骤对于开发全球化应用程序至关重要。通过阅读源码和利用相关工具,开发者...

    struts2 国际化使用

    在Struts2中实现国际化,可以帮助你的应用触达全球用户。 Struts2的国际化主要依赖于Java的ResourceBundle类,该类用于管理应用程序中的多语言资源。以下是如何在Struts2中进行国际化设置的详细步骤: 1. **创建...

    Struts2国际化(可选择语言)

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

    struts2框架国际化

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

Global site tag (gtag.js) - Google Analytics