欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java中用于國際化的locale類

 更新時間:2016年06月04日 09:00:21   投稿:goldensun  
Java中也有用于轉(zhuǎn)換和劃分地區(qū)的國際化類java.lang.Locale,國際化在程序中設(shè)置語言和時間等時非常有用,下面我們就來詳解Java中用于國際化的locale類

1. Locale 介紹
Locale 表示地區(qū)。每一個Locale對象都代表了一個特定的地理、政治和文化地區(qū)。
在操作 Date, Calendar等表示日期/時間的對象時,經(jīng)常會用到;因為不同的區(qū)域,時間表示方式都不同。
下面說說Locale對象的3種常用創(chuàng)建方式。
(1)獲取默認的Locale
使用方法:

Locale locale = Locale.getDefault()

(2) 直接使用Locale的靜態(tài)對象
Locale.java中提供了以下靜態(tài)對象

public static final Locale CANADA
public static final Locale CANADA_FRENCH
public static final Locale CHINA
public static final Locale CHINESE
public static final Locale ENGLISH
public static final Locale FRANCE
public static final Locale FRENCH
public static final Locale GERMAN
public static final Locale GERMANY
public static final Locale ITALIAN
public static final Locale ITALY
public static final Locale JAPAN
public static final Locale JAPANESE
public static final Locale KOREA
public static final Locale KOREAN
public static final Locale PRC
public static final Locale ROOT
public static final Locale SIMPLIFIED_CHINESE
public static final Locale TAIWAN
public static final Locale TRADITIONAL_CHINESE
public static final Locale UK
public static final Locale US

使用方法:下面的Locale對象是對應(yīng) “中國(大陸)”的

Locale locale = Locale.SIMPLIFIED_CHINESE

(3)通過Locale的構(gòu)造函數(shù)創(chuàng)建Locale對象
Locale的構(gòu)造函數(shù)共有3個。如下:

Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)

使用方法:

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

Locale類支持非常多的國家和地區(qū)。我們可以通過以下方法,查看Locale支持的全部區(qū)域:

Locale[] ls = Locale.getAvailableLocales();

for (Locale locale:ls) {
  System.out.println("locale :"+locale);
}

輸入結(jié)果如下:

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

下面選擇其中的兩個進行說明,如何利用它們來創(chuàng)建Locale對象:
例如,第一個輸出是“ja_JP”。
其中,ja代表“語言”,這里指日語;“JP”代表國家,這里指日本。
我們可以通過如下方法,創(chuàng)建“語言是日語,國家是日本的Locale對象”。

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

例如,第三個輸出是“en”。
其中,en代表“語言”,這里指英語。
我們可以通過如下方法,創(chuàng)建“語言是英文的Locale對象”。

Locale locale = new Locale("en");

Locale 函數(shù)列表

// Locale的構(gòu)造函數(shù)
Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
Object             clone()
boolean           equals(Object object)
static Locale[]       getAvailableLocales()
String             getCountry()
static Locale         getDefault()
String             getDisplayCountry(Locale locale)
final String         getDisplayCountry()
final String         getDisplayLanguage()
String             getDisplayLanguage(Locale locale)
String             getDisplayName(Locale locale)
final String         getDisplayName()
final String         getDisplayVariant()
String             getDisplayVariant(Locale locale)
String             getISO3Country()
String             getISO3Language()
static String[]       getISOCountries()
static String[]       getISOLanguages()
String             getLanguage()
String             getVariant()
synchronized int       hashCode()
synchronized static void   setDefault(Locale locale)
final String         toString()

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

import java.util.Locale;
import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.text.DateFormat;

/**
 * Locale 的測試程序
 */
public class LocaleTest {

  public static void main(String[] args) {
    // 2種不同的Locale的創(chuàng)建方法
    testDiffDateLocales();

    // 顯示所有的Locales
    testAllLocales();
  }


  /**
   * 2種不同的Locale的創(chuàng)建方法
   */
  private static void testDiffDateLocales() {
    // date為2013-09-19 14:22:30
    Date date = new Date(113, 8, 19, 14, 22, 30);

    // 創(chuàng)建“簡體中文”的Locale
    Locale localeCN = Locale.SIMPLIFIED_CHINESE;
    // 創(chuàng)建“英文/美國”的Locale
    Locale localeUS = new Locale("en", "US");

    // 獲取“簡體中文”對應(yīng)的date字符串
    String cn = DateFormat.getDateInstance(DateFormat.MEDIUM, localeCN).format(date);
    // 獲取“英文/美國”對應(yīng)的date字符串
    String us = DateFormat.getDateInstance(DateFormat.MEDIUM, localeUS).format(date);

    System.out.printf("cn=%s\nus=%s\n", cn, us);
  }

  /**
   * 顯示所有的Locales
   */
  private static void testAllLocales() {
    Locale[] ls = Locale.getAvailableLocales();

    System.out.print("All Locales: ");
    for (Locale locale:ls) {
      System.out.printf(locale+", ");
    }
    System.out.println();
  }
}

3.使用ResouceBundle讀取國際化資源文件

ResourceBundle資源包包含特定語言環(huán)境的對象。使用其可以加載并讀取語言環(huán)境資源。
1.輕松的本地化或者翻譯成不同的語言
2.一次處理多個語言環(huán)境
3.以后可以輕松的進行修改,一遍支持更多的語言環(huán)境。
 
當程序需要特定于語言環(huán)境的對象時,它使用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就是要在構(gòu)造ResourceBundle時使用的字符串,這個名字合法即可,不需要特定約束。后邊的名字一定要遵循規(guī)則,

resourceName_language_country.properteis;

然后我們使用rb.getString(key);就可以獲取資源文件中的Key對應(yīng)的value.
使用Struts1.x實現(xiàn)國際化自動切換

查看Struts源碼就可以發(fā)現(xiàn),語言環(huán)境信息就存放在session中,通過this.setLocale(request, locale);
所以要實現(xiàn)國際化就要在頁面上點擊超鏈接經(jīng)過Action的時候改變會話中Locale(語言環(huán)境)的值。在Action中:

//接受客戶端傳過來的語言請求信息 
String language = request.getParameter(“myLanguage”); 
 
//定義語言地區(qū)信息 
Locale currentLocale = null; 
 
//根據(jù)不同的請求創(chuàng)建不同的語言環(huán)境信息 
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” /> 

相關(guān)文章

  • ssm項目session使用及其作用域問題

    ssm項目session使用及其作用域問題

    這篇文章主要介紹了ssm項目session使用及其作用域問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 解決springboot自定義注解AOP在controller上導(dǎo)致controller注入失敗問題

    解決springboot自定義注解AOP在controller上導(dǎo)致controller注入失敗問題

    這篇文章主要介紹了解決springboot自定義注解AOP在controller上導(dǎo)致controller注入失敗問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Java判斷閏年的2種方法示例

    Java判斷閏年的2種方法示例

    這篇文章主要給大家介紹了關(guān)于Java判斷閏年的2種方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java單例模式實現(xiàn)的幾種方式

    Java單例模式實現(xiàn)的幾種方式

    這篇文章主要介紹了Java單例模式實現(xiàn)的幾種方式的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • SpringBoot整合Apache?Pulsar教程示例

    SpringBoot整合Apache?Pulsar教程示例

    這篇文章主要為大家介紹了SpringBoot整合Apache?Pulsar教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • IDEA中database使用教程

    IDEA中database使用教程

    idea集成了一個數(shù)據(jù)庫管理工具,可以可視化管理很多種類的數(shù)據(jù)庫,本文主要介紹了IDEA中database使用教程,具有一定的參考價值,感興趣的可以了解一下
    2023-06-06
  • 一文帶你掌握Java中Scanner類的使用

    一文帶你掌握Java中Scanner類的使用

    Scanner類是java.util包中的一個類,常用于控制臺的輸入,當需要使用控制臺輸入時即可調(diào)用這個類。本文將通過一些簡單的例子為大家介紹一下Java中Scanner類的使用,需要的可以參考一下
    2023-04-04
  • Spring Data JPA中的動態(tài)查詢實例

    Spring Data JPA中的動態(tài)查詢實例

    本篇文章主要介紹了詳解Spring Data JPA中的動態(tài)查詢。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java中ReentrantLock的用法和原理

    Java中ReentrantLock的用法和原理

    本文主要介紹了Java中ReentrantLock的用法和原理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Spring Boot 日志配置方法(超詳細)

    Spring Boot 日志配置方法(超詳細)

    默認情況下,Spring Boot會用Logback來記錄日志,并用INFO級別輸出到控制臺。下面通過本文給大家介紹Spring Boot 日志配置方法詳解,感興趣的朋友參考下吧
    2017-07-07

最新評論