1. Locale 介绍
Locale 表示地区。每一个Locale对象都代表了一个特定的地理、政治和文化地区。
在操作 Date, Calendar等表示日期/时间的对象时,经常会用到;因为不同的区域,时间表示方式都不同。
下面说说Locale对象的3种常用创建方式。
(1)获取默认的Locale
使用方法:

[java] view plain copy
  1. Locale locale = Locale.getDefault()
[java] view plain copy

1

(2) 直接使用Locale的静态对象Locale.java中提供了以下静态对象

[java] view plain copy
  1. public static final Locale CANADA
  2. public static final Locale CANADA_FRENCH
  3. public static final Locale CHINA
  4. public static final Locale CHINESE
  5. public static final Locale ENGLISH
  6. public static final Locale FRANCE
  7. public static final Locale FRENCH
  8. public static final Locale GERMAN
  9. public static final Locale GERMANY
  10. public static final Locale ITALIAN
  11. public static final Locale ITALY
  12. public static final Locale JAPAN
  13. public static final Locale JAPANESE
  14. public static final Locale KOREA
  15. public static final Locale KOREAN
  16. public static final Locale PRC
  17. public static final Locale ROOT
  18. public static final Locale SIMPLIFIED_CHINESE
  19. public static final Locale TAIWAN
  20. public static final Locale TRADITIONAL_CHINESE
  21. public static final Locale UK
  22. public static final Locale US

使用方法:下面的Locale对象是对应 “中国(大陆)”的

Locale locale = Locale.SIMPLIFIED_CHINESE

(3)通过Locale的构造函数创建Locale对象
Locale的构造函数共有3个。如下:

[java] view plain copy
  1. Locale(String language)
  2. Locale(String language, String country)
  3. Locale(String language, String country, String variant)

使用方法:

Locale local = new Locale("zh","CN");

Locale类支持非常多的国家和地区。我们可以通过以下方法,查看Locale支持的全部区域:

[java] view plain copy
  1. Locale[] ls = Locale.getAvailableLocales();
  2. for (Locale locale:ls) {
  3. System.out.println("locale :"+locale);
  4. }

输入结果如下:

All Locales: ja_JP, es_PE, en, ja_JP_JP, es_PA, sr_BA, mk, es_GT, ar_AE, no_NO, sq_AL, bg, ar_IQ, ar_YE, hu, pt_PT, el_CY, ar_QA, mk_MK, sv, de_CH, en_US, fi_FI, is, cs, en_MT, sl_SI, sk_SK, it, tr_TR, zh, th, ar_SA, no, en_GB, sr_CS, lt, ro, en_NZ, no_NO_NY, lt_LT, es_NI, nl, ga_IE, fr_BE, es_ES, ar_LB, ko, fr_CA, et_EE, ar_KW, sr_RS, es_US, es_MX, ar_SD, in_ID, ru, lv, es_UY, lv_LV, iw, pt_BR, ar_SY, hr, et, es_DO, fr_CH, hi_IN, es_VE, ar_BH, en_PH, ar_TN, fi, de_AT, es, nl_NL, es_EC, zh_TW, ar_JO, be, is_IS, es_CO, es_CR, es_CL, ar_EG, en_ZA, th_TH, el_GR, it_IT, ca, hu_HU, fr, en_IE, uk_UA, pl_PL, fr_LU, nl_BE, en_IN, ca_ES, ar_MA, es_BO, en_AU, sr, zh_SG, pt, uk, es_SV, ru_RU, ko_KR, vi, ar_DZ, vi_VN, sr_ME, sq, ar_LY, ar, zh_CN, be_BY, zh_HK, ja, iw_IL, bg_BG, in, mt_MT, es_PY, sl, fr_FR, cs_CZ, it_CH, ro_RO, es_PR, en_CA, de_DE, ga, de_LU, de, es_AR, sk, ms_MY, hr_HR, en_SG, da, mt, pl, ar_OM, tr, th_TH_TH, el, ms, sv_SE, da_DK, es_HN

下面选择其中的两个进行说明,如何利用它们来创建Locale对象:
例如,第一个输出是“ja_JP”。
其中,ja代表“语言”,这里指日语;“JP”代表国家,这里指日本。
我们可以通过如下方法,创建“语言是日语,国家是日本的Locale对象”。

Locale locale = new Locale("ja","JP");

例如,第三个输出是“en”。
其中,en代表“语言”,这里指英语。
我们可以通过如下方法,创建“语言是英文的Locale对象”。

Locale locale = new Locale("en");

Locale 函数列表

[java] view plain copy
  1. // Locale的构造函数
  2. Locale(String language)
  3. Locale(String language, String country)
  4. Locale(String language, String country, String variant)
 
[java] view plain copy
  1. Object             clone()
  2. boolean           equals(Object object)
  3. static Locale[]       getAvailableLocales()
  4. String             getCountry()
  5. static Locale         getDefault()
  6. String             getDisplayCountry(Locale locale)
  7. final String         getDisplayCountry()
  8. final String         getDisplayLanguage()
  9. String             getDisplayLanguage(Locale locale)
  10. String             getDisplayName(Locale locale)
  11. final String         getDisplayName()
  12. final String         getDisplayVariant()
  13. String             getDisplayVariant(Locale locale)
  14. String             getISO3Country()
  15. String             getISO3Language()
  16. static String[]       getISOCountries()
  17. static String[]       getISOLanguages()
  18. String             getLanguage()
  19. String             getVariant()
  20. synchronized int       hashCode()
  21. synchronized static void   setDefault(Locale locale)
  22. final String         toString()

2. Locale示例
下面通过示例演示在Date中使用Locale的。
参考代码如下(LocaleTest.java):

[java] view plain copy
  1. import java.util.Locale;
  2. import java.util.Date;
  3. import java.util.Calendar;
  4. import java.text.SimpleDateFormat;
  5. import java.text.DateFormat;
  6. /**
  7. * Locale 的测试程序
  8. */
  9. public class LocaleTest {
  10. publicstatic void main(String[] args) {
  11. // 2种不同的Locale的创建方法
  12. testDiffDateLocales();
  13. // 显示所有的Locales
  14. testAllLocales();
  15. }
  16. /**
  17. * 2种不同的Locale的创建方法
  18. */
  19. privatestatic void testDiffDateLocales() {
  20. // date为2013-09-19 14:22:30
  21. Date date =new Date(113,8, 19,14, 22,30);
  22. // 创建“简体中文”的Locale
  23. Locale localeCN = Locale.SIMPLIFIED_CHINESE;
  24. // 创建“英文/美国”的Locale
  25. Locale localeUS =new Locale("en","US");
  26. // 获取“简体中文”对应的date字符串
  27. String cn = DateFormat.getDateInstance(DateFormat.MEDIUM, localeCN).format(date);
  28. // 获取“英文/美国”对应的date字符串
  29. String us = DateFormat.getDateInstance(DateFormat.MEDIUM, localeUS).format(date);
  30. System.out.printf("cn=%s\nus=%s\n", cn, us);
  31. }
  32. /**
  33. * 显示所有的Locales
  34. */
  35. privatestatic void testAllLocales() {
  36. Locale[] ls = Locale.getAvailableLocales();
  37. System.out.print("All Locales: ");
  38. for(Locale locale:ls) {
  39. System.out.printf(locale+", ");
  40. }
  41. System.out.println();
  42. }
  43. }

3.使用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.
使用Struts1.x实现国际化自动切换

查看Struts源码就可以发现,语言环境信息就存放在session中,通过this.setLocale(request, locale);
所以要实现国际化就要在页面上点击超链接经过Action的时候改变会话中Locale(语言环境)的值。在Action中:

[java] view plain copy
  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. } elseif (“en”.equals(language)) {
  9. currentLocale =new Locale(“en”, “US”);
  10. }
  11. //……
  12. //将session中的信息更改掉
  13. this.setLocale(request, currentLocale);
  14. //当然,在页面显示资源文件信息的时候采用如下这种方式:
  15. //<bean:message key=”key” />

国际化的locale类详解相关推荐

  1. OpenCV Mat类详解和用法(官网原文)

    参考文章:OpenCV Mat类详解和用法 我马克一下,日后更 官网原文链接:https://docs.opencv.org/3.2.0/d6/d6d/tutorial_mat_the_basic_i ...

  2. 转载:c+string类详解

    C++ string 类详解 </h1><div class="clear"></div><div class="postBod ...

  3. JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  4. JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  5. Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】

    目   录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...

  6. Java中的Runtime类详解

    Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...

  7. [NewLife.XCode]实体类详解

    NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...

  8. basicdatasourcefactory mysql_Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中"获得连接"或"释放资源 ...

  9. JAVA的StringBuffer类详解

    JAVA的StringBuffer类详解 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer ...

  10. OpenCV参考手册之Mat类详解

    OpenCV参考手册之Mat类详解(一) OpenCV参考手册之Mat类详解(二) OpenCV参考手册之Mat类详解(三)

最新文章

  1. Xamarin 2017.10.9更新
  2. 微信小程序-WXML转换类型
  3. 学生开始学术生涯的好方法
  4. 【深度学习】迁移学习理论与实践
  5. 练习系列 - 5、求子数组的最大和
  6. 再发:VS怎么会这个样子的?
  7. 如何才能避免聚会尬聊
  8. 计算机论文的的格式,计算机论文格式模板.doc
  9. 激光slam_机器人主流定位技术,激光SLAM与视觉SLAM谁更胜一筹
  10. 多人姿态识别框架——AlphaPose
  11. android 两列菜单,【Android】实战开发之ListView同一个item显示2列的实现方法(仿2列商品列表)...
  12. 开源软件史上最大收购案!IBM340亿美元收购Linux分销商Red Hat
  13. 一种语音识别的自动控制系统及方法与流程
  14. matlab中K=[K,temp]含义
  15. Okhttp之CacheInterceptor简单分析
  16. Linux上获取软件程序包
  17. nginx Access日志格式
  18. matlab里的speed,matlab虚数 分析一下getspeed()函数
  19. [Python] 年终奖税后计算器
  20. 制作外挂需要多高的编程技术?

热门文章

  1. 从零开始搭建ROS小车(绪论)
  2. 如何将分表汇总到总表_EXCEL如何将分表中的数据汇总到总表 - 卡饭网
  3. html 登录页面模板
  4. 魔兽世界服务器TrinityCore源码学习
  5. zt中俄两军炮兵的差距
  6. 在html中input是什么意思,在HTML代码中input是什么意思?
  7. [开源]蚂蚁森林自动收能量,自动解锁和自动触发
  8. 为知笔记 | 3 分钟创建格式美美的笔记
  9. css实现3D书本翻页动画
  10. Aviary发布iOS和Android App 成功从Android插件转型独立应用