`
whp0731
  • 浏览: 174763 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts学习之十一-----国际化

阅读更多


一、java对国际化的支持
java.util.ReasourceBudle
java.util.Local
1、如何来获得当前jdk已经支持的国家

import java.util.Locale;
public class Test1
{
 public static void main(String[] args)
 {
  Locale[] locales = Locale.getAvailableLocales();//该方法是静态的,而且返回的是Local的数组
  
  for(Locale locale : locales)
  {
  System.out.println(locale.getDisplayCountry() + " : " + locale.getCountry());
  
  System.out.println("*********************************************************");
   
     System.out.println(locale.getDisplayLanguage() + " : " + locale.getLanguage());
  }
 }

}

 

2、用java实现国际化
文件名字:  basename_语言_国家
如   
      hellofile_en_US.properties
      hellofile_zh_CN.properties
文件内容:
      hello=helloworld
      hello=你好-----》需要转化后写上去----》用java下的工具native2ascii得到   hello=\u4f60\u597d

涉及到类
java.util.ReasourceBudle
java.util.Local

 

import java.util.*;

public class Test2
{
 public static void main(String[] args)
 {
  Locale locale1=Locale.getDefault();//这个语句可以得到本地的默认Local
  
  Locale locale = Locale.US;//设置本地Local
  ResourceBundle bundle = ResourceBundle.getBundle("hellofile",locale);//通过静态方法得到ResourceBundle
  String value = bundle.getString("hello");//通过key得到value
  System.out.println(value);
  
 }
}

      
3、国际化资源文件不写死的情况
文件名字一样:  basename_语言_国家
如   
      hellofile_en_US.properties
      hellofile_zh_CN.properties
文件内容:
      hello = hello world : {0}
      hello = 你好 : {0}

{0}是程序运行时动态传进去的。

注:以上必须从0开始,一个个连续的加上去。
涉及到新类import java.text.MessageFormat类

import java.util.*;
import java.text.*;
public class Test3
{
 public static void main(String[] args)
 {
  Locale locale = Locale.US;
  
  ResourceBundle bundle = ResourceBundle.getBundle("hellofile",locale);
  
  String value = bundle.getString("hello");
  
  String result = MessageFormat.format(value,new Object[]{"北京"});
  
  System.out.println(result);
 }
}

 

  

二、struts国际化的支持

 

1、对jsp页面的国际化


1)国际化前在src文件夹中,有资源文件message.properties
                         struts.xml文件中有配置:
 
                  <constant name="struts.custom.i18n.resources" value="message"></constant>
2)国际化准备工作,就是将原来src文件夹下的message.properties文件
 改为需要国际化的那几个国家几个文件:
message_en_US.properties
message_zh_CN.properties
内容分别如下:
addUser = Add User Information
username.invalid = username "{0}" invalid
username.xml.invalid = username xml invalid

addUser = 增加用户信息
username.invalid = 用户名 "{0}" 填写不正确
username.xml.invalid = 验证框架提示用户名不正确

国际化后即可用浏览器预览:  Internate选项/常规/语言/添加语言英语/上移
即可显示英文版了

 


2、对action类validate()方法的国际化


1)用到的文件:工作同上面jsp国际化的1)2)两步
2)在文件message_en_US.properties
message_zh_CN.properties
分别增加以下内容username.invalid=username error !
                username.invalid=\u7528\u6237\u540d\u586b\u5199\u4eod
3)validate()方法修改如下

if (null == username || username.length() < 6 || username.length() > 10)
  {
   this.addActionError(this.getText("username.invalid"));
  }

 

当客户使用英文操作浏览器时,验证错误时提示如下:username error !
当客户使用中文浏览器时。验证错误时提示如下信息:用户名不正确
因为“用户名不正确”正好对应ascii为上面的“\u7528\u6237\u540d\u586b\u5199\u4eod”

2、1同样validate方法中也可以加动态的参数,如下对上面的2、对类validate()方法的国际化修改如下:
2)在文件message_en_US.properties
message_zh_CN.properties
分别增加以下内容username.invalid = username "{0}" invalid
                username.invalid = 用户名 "{0}" 填写不正确
3)validate()方法修改如下

if (null == username || username.length() < 6 || username.length() > 10)
  {      //this.addActionError(this.getText("username.invalid",new String[]{username}));
         //或将上面一句改成以下方式

                        List list = new ArrayList();
   list.add(username);
   this.addActionError(this.getText("username.invalid",list));
  }

 

当客户使用英文操作浏览器时,输入"张三"验证错误时提示如下:username"张三"error !
当客户使用中文浏览器时。验证错误时提示如下信息:用户名"张三"不正确

 

3、验证框架(xml)的国际化

 

1)用到的文件:工作同上面jsp国际化的1)2)两步
2)在文件message_en_US.properties
message_zh_CN.properties
分别增加以下内容username.xml.invalid = username xml invalid
                username.xml.invalid = 验证框架提示用户名不正确
3)在原来的registerAtionValidate.xml文件中增加
<message key="username.xml.invalid"></message>
例如:

<field name="username">
  <field-validator type="requiredstring">
   <param name="trim">true</param>
   <message key="username.xml.invalid"></message>
  </field-validator>
  
  <field-validator type="stringlength">
   <param name="minLength">6</param>
   <param name="maxLength">10</param>
   <message>username should be between ${minLength} and ${maxLength}</message>
  </field-validator>
 </field>

 


4、以上国际化文件都是全局的,还有包级别和类级别的资源文件

 

1)包级别命名规则。package_en_US.properties
                package_zh_CN.properties

此时和java的变量一样,若在包级别中发现内容,就不会再去全局中去找了。

2)类级别命名规则RegisterAction_en_US.properties
RegisterAction_zh_CN.properties
此时和java的变量一样,若在类级别中发现内容,就不会再去全局和包级别中去找了。

 

5、表单form国际化


1)要求:Struts表单不能设置为simple主题
2)它国际化是和相应的action去关联,会首先去找类级别的国际化。

 

6、也可以在jsp页面中直接用i18n来挨个字段指定


1)假如我在src目录下有资源 包
                temp_en_US.properties
                temp_zh_CN.properties
内容为:        hello = world,{0}
                hello = 你好,{0}

<body>  
  <center>
   <s:i18n name="temp">
    <s:text name="hello">
     <s:param>langsin</s:param>
    </s:text>
   </s:i18n>
  </center>
</body>

 

分享到:
评论

相关推荐

    struts2-jquery-plugin使用手册,自己写的

    - 同时,它还支持国际化,可以轻松地切换语言环境,满足多语言应用的需求。 7. **实用特性** - `dynamicLoad`属性用于控制组件是否动态加载,可以优化页面加载性能。 - `ajaxValidation`属性可以开启或关闭表单...

    struts2-tags-API,struts2标签api

    Struts2标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列预定义的标签,用于处理视图层的展示逻辑,如表单处理、数据验证、国际化等。这些标签通常比纯HTML和脚本更易于维护,且与Action类解耦,提高了代码...

    struts2-core-2.1.8.1 xwork-core-2.1.6源码

    8. **国际化与本地化(I18N & L10N)**:Struts2支持多语言环境,通过`com.opensymphony.xwork2.util.LocalizedTextUtil`等类实现资源文件的加载和本地化字符串的获取。 9. **插件(Plugins)**:Struts2的可扩展性...

    Struts学习----Action 的配置和使用(源码学习)

    Struts是Apache软件基金会的一个开源框架,主要用于构建Java Web应用程序。在Struts中,Action类是...在实际应用中,你还可以学习如何集成其他Struts特性,如国际化、数据校验、拦截器等,以构建更复杂的Web应用程序。

    struts-2.0.11-all.zip

    - **国际化与本地化**:框架内置了对多语言支持的机制,方便创建国际化的应用程序。 - **插件系统**:Struts2的插件机制允许快速集成第三方库和功能,如Ajax、富客户端组件、REST服务等。 总的来说,Struts2.0.11-...

    struts-2.3.16-all

    增强了插件架构,扩展了框架的功能,如国际化的支持;优化了性能,减少了不必要的HTTP请求和提高了响应速度;加强了安全性,修复了一些已知的安全漏洞,如XSS和CSRF攻击防护。 Struts 2与其他Java框架的集成也十分...

    struts-------资料.rar

    5. **国际化与本地化**:Struts支持多语言环境,通过资源文件可以轻松实现应用的国际化。 6. **异常处理**:Struts提供了一套完整的异常处理机制,可以通过配置文件定义全局或特定Action的异常处理策略。 7. **...

    struts2-2.3.4.1-all

    5. **国际化(i18n)与本地化(l10n)**:Struts2支持多语言环境,开发者可以通过简单的配置实现应用的国际化和本地化。 6. **插件体系**:Struts2有一个强大的插件系统,可以轻松地扩展框架功能,如Spring集成、...

    struts2-showcase.rar

    5. **国际化(i18n)**:如何为应用添加多语言支持。 6. **异常处理**:演示了如何配置和处理应用程序中的异常。 7. **Tiles布局**:使用Tiles插件来组织和定义页面模板。 8. **Ajax支持**:展示了Struts2与...

    struts2课件----传智博客张孝祥老师最新讲解PPT

    另外,Struts2的国际化、异常处理、主题和模板等功能也是开发者必须熟悉的。 总的来说,Struts2是一个强大且灵活的MVC框架,它的设计原则和实践方法对于任何Java Web开发者来说都是宝贵的知识。张孝祥老师的课程...

    struts2-----之一

    在学习过程中,你可以通过阅读`01.pdf`这份文档,了解到更多关于Struts2的基础知识,包括如何创建Action、配置Action、使用拦截器、处理表单提交、实现国际化等。同时,文档可能还会介绍如何集成其他技术,如Spring...

    struts-xwork-core源码

    Struts-xwork-core是Struts2框架的核心组件,它提供了Action和结果的执行模型,以及类型转换、数据验证和国际化等功能。在这个压缩包中,包含了该核心库的源代码,对于学习和理解Struts2的工作原理及其内部机制极具...

    struts-2.0.1-all.zip

    Struts 2提供了许多特性,如强大的国际化支持、自定义拦截器、动态方法调用、强大的表单验证和文件上传功能等。其强大的插件系统允许开发者轻松地扩展框架功能,以满足特定需求。 总的来说,Struts 2.0.1是Java Web...

    struts2-core-lib.rar

    4. `xwork-core.jar`:XWork是Struts2的基础,提供了许多基础的OOP(面向对象编程)特性,如类型转换、异常处理和国际化支持。 5. `ognl.jar`:OGNL(Object-Graph Navigation Language)是Struts2的默认表达式语言...

    Struts2学习之二--Struts2标签介绍

    标题:Struts2学习之二--Struts2标签介绍 描述与内容摘要: 本文主要介绍了Struts2框架中的标签库,特别聚焦于非UI类型的标签,包括条件判断、迭代和国际化处理等。通过实例,详细解析了`if/elseif/else`、`...

    struts-2.3.8-all.zip

    5. **国际化与本地化**: Struts2内置了对多语言的支持,开发者可以通过简单的配置实现应用的国际化和本地化。 6. **模板引擎**: Struts2支持多种视图技术,如JSP、FreeMarker、Velocity等,这些模板引擎可以帮助...

    Struts-2.3.16.1 -All

    这些实例是学习和理解Struts2工作原理的好工具,涵盖了各种功能和用法,如动作映射、拦截器、结果类型、国际化、表单验证等。通过这些例子,开发者可以快速上手并熟练掌握Struts2的核心特性。 `docs`目录包含了...

    Struts——an open-source MVC implementation

    4. **国际化与本地化支持**:方便地实现多语言网站。 5. **配置驱动**:通过XML配置文件,可以灵活配置应用行为,降低代码的耦合度。 总的来说,Struts框架为Web开发提供了一个强大的基础架构,使得开发者能够专注...

    struts-2.3.15

    7. **国际化与本地化**:Struts 2支持多语言,可以轻松实现应用的国际化和本地化,通过资源包(properties文件)管理不同语言的文本。 8. **结果类型(Result Types)**:Struts 2预定义了多种结果类型,如...

    struts2-2.2.1-all 版本

    9. **国际化支持**:Struts2提供了方便的国际化功能,通过资源包(Properties文件)可以轻松实现多语言环境。 10. **AJAX支持**:Struts2的AJAX插件允许部分页面更新,提高了用户体验。 在使用Struts2-2.2.1版本时...

Global site tag (gtag.js) - Google Analytics