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. ...
随机推荐
- 自己定义AlertDialog对话框布局
自己定义对话框中的信息body布局 LayoutInflater inflater =getLayoutInflater(); View layout = inflater.inflate(R.lay ...
- Eclipse 中导入jar包
导入到工程即可使用了1. 在程序目录下,创建一个文件夹,如 lib. 2. 将第三方jar包复制到该目录下3.右键工程,选择Build path4.java build path,选择 librari ...
- pm2 相关命令
pm2 相关命令 转载 2017年02月18日 22:59:48 二.安装 Linux Binaries下载地址:https://nodejs.org/dist cd oneinstack/src ...
- ajax成功返回数据中存在多余字符的处理
ajax里有需要判断反馈的字符串是否为“ok”,在浏览器里调试,看到返回的内容明明是“ok”,但是if(“ok”==data)判断为false,用alert打印内容也是ok,但是打印长度的时候却是3. ...
- vue项目启动出现cannot GET /服务错误
出现 Cannot GET/: 控制台中并没有报错:npm run dev命令行窗口也没有报错. 原因 在网上查了一堆,发现这个问题还挺多呢,而且各个回答的解决方式都竟然有许多不同… 于是把能改的 ...
- ElementUI日期选择器时间选择范围限制
ElementUI是饿了么推出的一套基于vue2.x的一个ui框架.官方文档也很详细,这里做一个element-ui日期插件的补充,官方文档中使用picker-options属性来限制可选择的日期,这 ...
- sqllite3
OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里.OS X包装的是第三版的SQLite,又称SQLite3.这套软件有几个特色: 软件属于公共财(public do ...
- CarbonData编译与安装
原文连接 http://xiguada.org/carbondata_compile/ CarbonData是啥? CarbonData is a fully indexed columnar and ...
- 那些年困扰我们的Linux 的蠕虫、病毒和木马
虽然针对Linux的恶意软件并不像针对Windows乃至OS X那样普遍,但是近些年来,Linux面临的安全威胁却变得越来越多.越来越严重.个中原因包括,手机爆炸性的普及意味着基于Linux的安卓成为 ...
- Mac版小黑屋提示无法确认开发者身份的解决办法
Mac版小黑屋提示无法确认开发者身份的解决办法 学习了:https://jingyan.baidu.com/article/37bce2be703fa21003f3a259.html 需要按住cont ...