java语言国际化--ResouceBundle、struts
一、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资源包包含特定语言环境的对象。使用其可以加载并读取语言环境资源。
- 轻松的本地化或者翻译成不同的语言
- 一次处理多个语言环境
- 以后可以轻松的进行修改,一遍支持更多的语言环境。
当程序需要特定于语言环境的对象时,它使用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中:
- //接受客户端传过来的语言请求信息
- String language = request.getParameter(“myLanguage”);
- //定义语言地区信息
- Locale currentLocale = null;
- //根据不同的请求创建不同的语言环境信息
- if (“zh”.equals(language)) {
- currentLocale = new Locale(“zh”, “CN”);
- } else if (“en”.equals(language)) {
- currentLocale = new Locale(“en”, “US”);
- }
- //……
- //将session中的信息更改掉
- this.setLocale(request, currentLocale);
- //当然,在页面显示资源文件信息的时候采用如下这种方式:
- //<bean:message key=”key” />
java语言国际化--ResouceBundle、struts的更多相关文章
- Java语言国际化
事实上,Java语言不可能支持所有国家和语言,如需要获取Java语言所支持的语言和国家,可调用Locale类的getAvailableLocale方法获取,该方法返回一个Locale数组,该数组里包含 ...
- 自定义JSP标签实现语言国际化(类似struts text标签),并同时支持图片、JS文件国际化
源代码及样例下载地址: http://download.csdn.net/detail/u014569459/7169385 一.功能说明: 1. 支持语言国际化 2. 支持图片文件.JS文件国际化 ...
- Java同步和异步过程中消息语言国际化处理策略
在Java后端做消息内容的语言国际化处理时可以通过Spring中MessageSource接口的来实现,但是MessageSource接口需要用到Locale对象, 而Locale类又是根据前端传过来 ...
- Java的国际化(i18n)
http://blog.csdn.net/csuliky/article/details/4225800 1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, ...
- JAVA实现国际化
1 Java国际化的思路 Java程序的国际化的思路是将程序中的标签.提示等信息放在资源文件中,程序需要支持哪些国家.语言环境,就对应提供相应的资源文件.资源文件是key-value对,每个资源文件中 ...
- 瘋耔java语言笔记
一◐ java概述 1.1 ...
- Java:国际化
Java的国际化: 资源文件的命名可以有如下三种形式:baseName _ language _country.properties baseName _language.properties bas ...
- [Java入门笔记] Java语言简介
前言 学习Java有一段时间了,但是一直缺少一个系统的思想,现在重新通过书籍中.网上的文章,视频等资料,整理与回顾Java的知识点. 言归正传,让我们先从了解Java语言开始. Java语言的由来 J ...
- Java语言中几个常用的包
Java采用包结构来组织和管理类和接口文件.本文介绍Java语言类库中几个常用的包,因为这几个包在软件开发与应用中经常需要用到,其中有些包是必要的.若是离开它,还真不能做事情了. 第一个包:java. ...
随机推荐
- android 广告平台 keymob
访问地址: http://www.keymob.com/
- python笔记17-字典如何按value排序
前言 面试题:如何统计数组中出现次数最多的数据,按出现次数由大到小排序 这个排序看似简单,涉及到的基础知识点还是很多的,真正写起来并不容易 备注:本篇是以python3.6讲解的,python2会多一 ...
- struts2 action通配符
首先,看一个struts2的配置文件: <package name="actions" extends="struts-default" namespac ...
- 有用的iOS网站地址
王巍 (@onevcat) 是一名 iOS 和 Unity3D 开发者,现旅居日本,正在寻求创意之源.http://swifter.tips/http://onevcat.com/2013/02/xc ...
- OpenRISC自定义指令GCC修改
This short tutorial shows how to use the custom instructions defined by OpenRISC architecture. The O ...
- 如何获取Android唯一标识(唯一序列号)
有很多场景和需求你需要用到手机设备的唯一标识符. 在Android中,有以下几种方法获取这样的ID. 1. The IMEI: 仅仅只对Android手机有效: 1 2 TelephonyManage ...
- php 单进程SAPI生命周期
php的生命周期3.1 STARTUP 1.初始化引擎和核心组件. 2.解析php.ini. 3.初始化静态构建的模块(MINIT). 4.初始化共享模块(MINIT).3.2 ...
- [简谈]绕过HR破门而入的求职智慧
以往我们在网上看到的非常多求职文章或指导性纲领,譬如啥自信.做功课.良好形象.华丽的简历.工作经验.口才啥的,事实上到了21世纪尤其是互联网快速发展的今天,前面这些技巧就显得无比空洞: 1.由于自信谁 ...
- (剑指Offer)面试题43:n个骰子的点数
题目: 把n个骰子仍在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 思路: s可能出现的值的范围为:n--6*n 1.全排列 回溯法枚举n个骰子(6面)的全排列,然 ...
- windows server 2008 安装Microsoft ActiveSync 6.1提示缺少一个Windows Mobile设备中心所须要的Windows组件
windows server 2008 安装WinCE的同步软件,须要安装Microsoft ActiveSync 6.1版本号的. 而不能安装ActiveSync|Microsoft ActiveS ...