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

链接到struts2学习之十一-----国际化

阅读更多


一、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使用手册,自己写的

    - 通过这些标签,可以轻松地将jQuery功能集成到Struts2的动作方法中,比如通过`&lt;sj:submit&gt;`标签实现AJAX提交。 4. **自定义行为和事件** - Struts2-jQuery-Plugin支持自定义JavaScript事件处理,可以使用`...

    struts2官方例子8-资源配置文件的使用(包括国际化)

    在Struts2中,资源配置文件和国际化(i18n)是两个非常重要的概念,它们对于创建多语言支持和提供用户友好的界面至关重要。 资源配置文件通常以.properties为扩展名,它们存储了应用中的静态文本,如错误消息、提示...

    Struts2国际化支持引导(初)

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

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

    Struts2是一个流行的Java web开发框架,用于构建MVC(模型-视图-控制器)架构...为了更深入地学习和实践,你可以参考给定的博文链接(由于无法直接访问,建议自行搜索相关信息),或者查看Struts2官方文档和相关教程。

    struts2学习笔记

    此外,Struts2还支持动态方法调用、国际化、主题和模板、AJAX集成等特性,为开发者提供了全面的Web应用开发解决方案。在实际开发中,熟练掌握Struts2的各种机制和最佳实践,能提高开发效率和代码质量。

    struts2-tags-API

    Struts2 Tags API使得开发者能够轻松地与Action、结果类型、主题、国际化等核心概念交互,极大地提高了开发效率和代码的可维护性。 1. **Action标签**: - `s:action`:此标签用于执行一个Struts2 Action,可以...

    Struts2国际化 录象演示

    这个“Struts2国际化 录象演示”可能包含了如何在Struts2应用中实现这一功能的详细步骤。 首先,我们了解国际化的基本概念。国际化是指软件设计时考虑到全球不同地区和语言的需求,使得软件能够容易地适应多种语言...

    STRUTS2站点,STRUTS2学习实例1

    10. 链接与重定向:学习如何在Struts2中创建URL链接,以及何时使用redirect和redirectAction结果类型。 通过这个实例,学习者将能掌握Struts2的基本工作原理和常用特性,并能动手构建一个简单的Struts2应用。在实践...

    struts2自学文档

    - **拦截器**:Struts2的核心之一,通过拦截器可以实现诸如文件上传、输入验证等功能。 - **处理与分配流程**: - **前端请求**:用户发起的HTTP请求。 - **StrutsPrepareAndExecuteFilter**:处理请求的第一道...

    struts2项目部署

    5. **其他可能的目录**:如图片、国际化资源文件等。 **部署步骤**: 1. **环境准备**:确保已安装了Java JDK和Apache Tomcat服务器。Struts2项目需要在Java环境中运行,而Tomcat是常用的Servlet容器。 2. **构建...

    Struts2学习笔记

    9. **饼图结构解析.JPG**:这可能是一个关于数据可视化或报告生成的例子,可能涉及到Struts2如何处理图表数据,并将其展示在JSP页面上。 10. **下载(三十一).txt**:这部分可能讲解了如何在Struts2中实现文件下载...

    struts2相关书籍

    这是一份全面的教程,可能包含所有关于Struts2的必要知识,从基础到进阶,包括Action、结果类型、拦截器、国际化、表单验证、Ajax支持,以及最佳实践和设计模式。 《struts2轻松入门,密码是:517.txt》: 这个文件...

    struts 2 学习指南

    描述中的“NULL”可能表示该资源是一个链接到博客的文章,可能包含了对Struts 2的深入讲解和实践示例。博客链接(https://sunny-java-163-com.iteye.com/blog/661789)可能包含关于如何使用Struts 2进行开发的具体...

    struts2中文教程

    学习Struts2时,建议通过实际项目练习来加深理解,例如创建一个简单的登录注册系统,利用Struts2的Action、Interceptor和Result来处理用户交互,使用UI标签来构建用户界面。 总之,Struts2提供了一套完整的解决方案...

    实现struts2国际化支持

    总结来说,实现Struts2的国际化支持涉及到创建和管理资源文件,配置Struts2框架以加载这些文件,以及在Action和视图层正确使用国际化消息。这个过程有助于提高应用的用户体验,让不同地区和语言背景的用户都能舒适地...

    struts2BBS论坛

    在Struts2 BBS论坛中,Struts2框架起到了核心作用,负责处理用户请求,调度控制器Action,执行业务逻辑,并将结果渲染到视图层。Struts2的核心组件包括Action、ActionSupport、Interceptor(拦截器)、Result和配置...

    struts2.jar

    在提供的链接中(http://blog.csdn.net/zs20082012/article/details/79217642),博主详细讨论了Struts2的一些常见问题和解决方案,包括类型转换异常、国际化处理、Action跳转问题等。 在压缩包文件"struts-2.5....

    struts2学习.rar

    7. **国际化**:Struts2支持多语言环境,通过资源文件(通常为.properties格式)管理不同语言的文本,可以轻松实现应用的国际化。 8. **输入校验**:Struts2提供了强大的验证机制,可以对用户输入进行验证,确保...

    Struts2 Login Demo

    8. **国际化与本地化**:为了适应不同地区用户的需要,登录Demo可能包含国际化配置,允许显示不同语言的错误消息和提示。 9. **安全考虑**:在实际的登录系统中,需要考虑安全性问题,如防止SQL注入、XSS攻击,以及...

    Struts2之异常处理案例struts003

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts2中,异常处理是一项重要的功能,它...结合给出的博客链接,可以深入学习更多关于Struts2异常处理的实践案例和技巧。

Global site tag (gtag.js) - Google Analytics