一、Java国际化

我们使用java.lang.Locale来构造Java国际化的情境。

java.lang.Locale代表特定的地理、政治和文化。需要Locale来执行其任务的操作叫语言环境敏感的操作。

构造一个系统默认的Locale

Locale defaultLocale = Locale.getDefault();

获得此Java虚拟机当前线程默认的语言环境值

 

获取当前Java虚拟机线程默认的国家和语言信息

String country = defaultLocale.getCountry();//返回国家地区代码

String language = defaultLocale.getLanguage();//返回国家的语言

String displayCountry = defaultLocale.getDisplayCountry();//返回适合向用户显示的国家信息

String displayLanaguage = defaultLocale.getDisplayLanaguage();//返回适合向用户展示的语言信息

String displayName = defaultLocale.getDisplayName();//返回适合向用户展示的语言环境名

 

加入当前Java虚拟机线程所处的操作系统的区域语言设置为“中文(简体,中国)”,则上边的运行结果依次将会是:

    CN

    zh

    中国

    中文

    中文(中国)

根据国家地区和语言构造一个Locale(语言环境)

Locale currentLocale = new Locale(“zh”, ”CN”);

构造方法为:Locale(String language, String country);

二、使用ResouceBundle读取国际化资源文件

ResourceBundle资源包包含特定语言环境的对象。使用其可以加载并读取语言环境资源。

  1. 轻松的本地化或者翻译成不同的语言
  2. 一次处理多个语言环境
  3. 以后可以轻松的进行修改,一遍支持更多的语言环境。

当程序需要特定于语言环境的对象时,它使用getBundle()方法加载ResourceBundle类

ResourceBundle rb = ResourceBundle.getBundle(“res.MessageBundle”, currentLocale);

其中,res.MessageBundle代表的是我们在src下建立了一个res文件夹,而res文件夹下有一个名为MessageBundle.properteis的资源文件。我们允许在此建立多个国际化资源文件:MessageBundle_zh_CN.properties;MessageBundle_en_US.properteis;其中MessageBundle就是要在构造ResourceBundle时使用的字符串,这个名字合法即可,不需要特定约束。后边的名字一定要遵循规则,resourceName_language_country.properteis;

然后我们使用rb.getString(key);就可以获取资源文件中的Key对应的value.

 import java.util.ResourceBundle;

 /**
* @author kenneth */ public class ResourceProperties{ /** * 获取配置文件的值 * @param key */ public void getMessage(String key) { Locale currentLocale = new Locale(“zh”, ”CN”); ResourceBundle res = ResourceBundle.getBundle(“res.MessageBundle”, locale);
String message = res.getString(key); System.out.println(message); } }

三、使用Struts1.x实现国际化自动切换

查看Struts源码就可以发现,语言环境信息就存放在session中,通过this.setLocale(request, locale);

所以要实现国际化就要在页面上点击超链接经过Action的时候改变会话中Locale(语言环境)的值。在Action中:

  1. //接受客户端传过来的语言请求信息
  2. String language = request.getParameter(“myLanguage”);
  3. //定义语言地区信息
  4. Locale currentLocale = null;
  5. //根据不同的请求创建不同的语言环境信息
  6. if (“zh”.equals(language)) {
  7. currentLocale = new Locale(“zh”, “CN”);
  8. } else if (“en”.equals(language)) {
  9. currentLocale = new Locale(“en”, “US”);
  10. }
  11. //……
  12. //将session中的信息更改掉
  13. this.setLocale(request, currentLocale);
  14. //当然,在页面显示资源文件信息的时候采用如下这种方式:
  15. //<bean:message key=”key” />

java语言国际化--ResouceBundle、struts的更多相关文章

  1. Java语言国际化

    事实上,Java语言不可能支持所有国家和语言,如需要获取Java语言所支持的语言和国家,可调用Locale类的getAvailableLocale方法获取,该方法返回一个Locale数组,该数组里包含 ...

  2. 自定义JSP标签实现语言国际化(类似struts text标签),并同时支持图片、JS文件国际化

    源代码及样例下载地址: http://download.csdn.net/detail/u014569459/7169385 一.功能说明: 1. 支持语言国际化 2. 支持图片文件.JS文件国际化 ...

  3. Java同步和异步过程中消息语言国际化处理策略

    在Java后端做消息内容的语言国际化处理时可以通过Spring中MessageSource接口的来实现,但是MessageSource接口需要用到Locale对象, 而Locale类又是根据前端传过来 ...

  4. Java的国际化(i18n)

    http://blog.csdn.net/csuliky/article/details/4225800 1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, ...

  5. JAVA实现国际化

    1 Java国际化的思路 Java程序的国际化的思路是将程序中的标签.提示等信息放在资源文件中,程序需要支持哪些国家.语言环境,就对应提供相应的资源文件.资源文件是key-value对,每个资源文件中 ...

  6. 瘋耔java语言笔记

    一◐ java概述                                                                                        1.1 ...

  7. Java:国际化

    Java的国际化: 资源文件的命名可以有如下三种形式:baseName _ language _country.properties baseName _language.properties bas ...

  8. [Java入门笔记] Java语言简介

    前言 学习Java有一段时间了,但是一直缺少一个系统的思想,现在重新通过书籍中.网上的文章,视频等资料,整理与回顾Java的知识点. 言归正传,让我们先从了解Java语言开始. Java语言的由来 J ...

  9. Java语言中几个常用的包

    Java采用包结构来组织和管理类和接口文件.本文介绍Java语言类库中几个常用的包,因为这几个包在软件开发与应用中经常需要用到,其中有些包是必要的.若是离开它,还真不能做事情了. 第一个包:java. ...

随机推荐

  1. ZigBee和Z-Wave的区别与未来

    http://tech.c114.net/164/a702667.html ZigBee和Z-Wave短距离无线技术都用于远程监控和控制,但两种技术的规格和应用却不同.在美国应用越来越广泛的家庭局域网 ...

  2. Spring MapFactoryBean例子

    MapFactoryBean类为开发者提供了一种在Spring的bean配置文件中创建一个具体的Map集合类(HashMap和TreeMap). 这里有一个MapFactoryBean.例如,在运行时 ...

  3. [转].net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能

    接上篇,上篇已经学习了界面的各种功能以及各种配置,这篇准备学习下代码控制许可证. 代码控制许可证的意思就是软件经过.net reactor保护后,到期时客户端就需要购买许可证,这时软件开发商就需要生成 ...

  4. SEAndroid安全机制简要介绍和学习计划

    与iOS相比.Android最被人诟病的是其流畅性和安全性. 然而,从4.0開始,Android不遗余力地改善其流畅性. 特别是在即将公布的L版本号中,用ART替换了Dalvik,相信会越来越流畅.至 ...

  5. WebService如何抛出干净的异常

    转载:http://www.cnblogs.com/ahdung/p/3953431.html 说明:[干净]指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message ...

  6. DELPHI纤程的演示

    DELPHI纤程的演示 DELPHI7编译运行通过. 纤程实现单元: unit FiberFun; //Fiber(纤程测试Demo)//2018/04/11//QQ: 287413288 //参考 ...

  7. Tomcat与Servlet工作流程

    什么是Tomcat? Tomcatserver是一个免费的开放源码的Web 应用server,属于轻量级应用server. 什么是Servlet? Servlet是在server上执行的小程序.,说白 ...

  8. TextView文字横向自己主动滚动

              效果截图:                              watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjI4Nj ...

  9. 【笔记】css 1像素边框

    有时候在移动端显示1像素的边框时 可能因为dpi 的原因造成像素有变差 所以为了达到显示的像素达到预期效果就要编写一个css 通用类达到1像素边框的效果 关于dpi 的解释请看张鑫旭老师的文章:htt ...

  10. KRBTabControl(中文)Windows选项卡控件

    本文阐述了如何在C#使自定义Windows选项卡控件. Download demo project - 82.4 KB Download source - 252 KB 介绍 本文讨论如何使用.NET ...