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. ...
随机推荐
- Mastering stack and heap for system reliability
http://www.iar.com/Global/Resources/Developers_Toolbox/Building_and_debugging/Mastering_stack_and_he ...
- Java垃圾回收精粹 — Part2
Java垃圾回收精粹分4个部分,本篇是第2部分.在第2部分里介绍了Hotspot中的堆结构.对象分配以及次要回收. Hotspot中的堆结构 理解不同的收集器的工作方式,是探讨Java堆结构如何支持分 ...
- Spark1.0.0 应用程序部署工具spark-submit
原文链接:http://blog.csdn.net/book_mmicky/article/details/25714545 随着Spark的应用越来越广泛,对支持多资源管理器应用程序部署工具的需求也 ...
- iOS:提示框(警告框)控件UIActionSheet的详解
提示框(警告框)控件2:UIActionSheet 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.它与导航栏类似,它继承自UIView. 风格类型: ...
- 关于QtCharts中的映射器与模型的使用
简述 本文章基于博主在使用QtCharts中一些经验总结,相关了Qt类有QVXYModelMapper,CustomTableModel(一个继承了QAbstractTableModel的类,用于实现 ...
- Delphi DBGrid图显用法
procedure TForm10.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: ...
- Android -- 启动模式
Android的启动模式分为四种: standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中. singleTop 如果在任务的栈顶正好存在该Activity ...
- 为pc编译配置安装当前最新的内核
搜索公众号:itxxgh (IT学习干货),全公益.免费.定期,提供,<IT学习教程>.不会骚扰大家,仅仅需轻点关注,也会传播<中华传统文化>传播正能量. 或扫描二维码 1 ...
- 使用PyQt4 designer时无法启动uic解决方案
1.自己调用命令行 pyuic4 -o codeFile.py -x yourUIfile.ui 2.写一个批处理,每次双击就行了,跟你的源文件放在同一文件夹下 import os for root, ...
- Python 遍历set
遍历set 由于 set 也是一个集合,所以,遍历 set 和遍历 list 类似,都可以通过 for 循环实现. 直接使用 for 循环可以遍历 set 的元素: weekdays = set([' ...