最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java中用于國(guó)際化的locale類

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

1. Locale 介紹
Locale 表示地區(qū)。每一個(gè)Locale對(duì)象都代表了一個(gè)特定的地理、政治和文化地區(qū)。
在操作 Date, Calendar等表示日期/時(shí)間的對(duì)象時(shí),經(jīng)常會(huì)用到;因?yàn)椴煌膮^(qū)域,時(shí)間表示方式都不同。
下面說(shuō)說(shuō)Locale對(duì)象的3種常用創(chuàng)建方式。
(1)獲取默認(rèn)的Locale
使用方法:

Locale locale = Locale.getDefault()

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

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對(duì)象是對(duì)應(yīng) “中國(guó)(大陸)”的

Locale locale = Locale.SIMPLIFIED_CHINESE

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

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

使用方法:

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

Locale類支持非常多的國(guó)家和地區(qū)。我們可以通過(guò)以下方法,查看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

下面選擇其中的兩個(gè)進(jìn)行說(shuō)明,如何利用它們來(lái)創(chuàng)建Locale對(duì)象:
例如,第一個(gè)輸出是“ja_JP”。
其中,ja代表“語(yǔ)言”,這里指日語(yǔ);“JP”代表國(guó)家,這里指日本。
我們可以通過(guò)如下方法,創(chuàng)建“語(yǔ)言是日語(yǔ),國(guó)家是日本的Locale對(duì)象”。

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

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

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示例
下面通過(guò)示例演示在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 的測(cè)試程序
 */
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)建“簡(jiǎn)體中文”的Locale
    Locale localeCN = Locale.SIMPLIFIED_CHINESE;
    // 創(chuàng)建“英文/美國(guó)”的Locale
    Locale localeUS = new Locale("en", "US");

    // 獲取“簡(jiǎn)體中文”對(duì)應(yīng)的date字符串
    String cn = DateFormat.getDateInstance(DateFormat.MEDIUM, localeCN).format(date);
    // 獲取“英文/美國(guó)”對(duì)應(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讀取國(guó)際化資源文件

ResourceBundle資源包包含特定語(yǔ)言環(huán)境的對(duì)象。使用其可以加載并讀取語(yǔ)言環(huán)境資源。
1.輕松的本地化或者翻譯成不同的語(yǔ)言
2.一次處理多個(gè)語(yǔ)言環(huán)境
3.以后可以輕松的進(jìn)行修改,一遍支持更多的語(yǔ)言環(huán)境。
 
當(dāng)程序需要特定于語(yǔ)言環(huán)境的對(duì)象時(shí),它使用getBundle()方法加載ResourceBundle類

ResourceBundle rb = ResourceBundle.getBundle(“res.MessageBundle”, currentLocale);

其中,res.MessageBundle代表的是我們?cè)趕rc下建立了一個(gè)res文件夾,而res文件夾下有一個(gè)名為MessageBundle.properteis的資源文件。我們?cè)试S在此建立多個(gè)國(guó)際化資源文件:

MessageBundle_zh_CN.properties;MessageBundle_en_US.properteis;

其中MessageBundle就是要在構(gòu)造ResourceBundle時(shí)使用的字符串,這個(gè)名字合法即可,不需要特定約束。后邊的名字一定要遵循規(guī)則,

resourceName_language_country.properteis;

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

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

//接受客戶端傳過(guò)來(lái)的語(yǔ)言請(qǐng)求信息 
String language = request.getParameter(“myLanguage”); 
 
//定義語(yǔ)言地區(qū)信息 
Locale currentLocale = null; 
 
//根據(jù)不同的請(qǐng)求創(chuàng)建不同的語(yǔ)言環(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); 
 
//當(dāng)然,在頁(yè)面顯示資源文件信息的時(shí)候采用如下這種方式: 
 
//<bean:message key=”key” /> 

相關(guān)文章

  • spring boot的maven配置依賴詳解

    spring boot的maven配置依賴詳解

    本篇文章主要介紹了spring boot的maven配置依賴詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • SpringCloud GateWay動(dòng)態(tài)路由用法

    SpringCloud GateWay動(dòng)態(tài)路由用法

    網(wǎng)關(guān)作為所有項(xiàng)目的入口,不希望重啟,因此動(dòng)態(tài)路由是必須的,動(dòng)態(tài)路由主要通過(guò)RouteDefinitionRepository接口實(shí)現(xiàn),其默認(rèn)的實(shí)現(xiàn)是InMemoryRouteDefinitionRepository,即在內(nèi)存中存儲(chǔ)路由配置,可基于這個(gè)map對(duì)象操作,動(dòng)態(tài)路由的實(shí)現(xiàn)方案有兩種
    2024-10-10
  • Java網(wǎng)絡(luò)編程之TCP通信完整代碼示例

    Java網(wǎng)絡(luò)編程之TCP通信完整代碼示例

    這篇文章主要介紹了Java網(wǎng)絡(luò)編程之TCP通信完整代碼示例,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Java基于Semaphore構(gòu)建阻塞對(duì)象池

    Java基于Semaphore構(gòu)建阻塞對(duì)象池

    這篇文章主要介紹了Java基于Semaphore構(gòu)建阻塞對(duì)象池,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot中Formatter和Converter用法和區(qū)別小結(jié)

    SpringBoot中Formatter和Converter用法和區(qū)別小結(jié)

    本文主要介紹了SpringBoot中Formatter和Converter用法和區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • IDEA 自定義方法注解模板的實(shí)現(xiàn)方法

    IDEA 自定義方法注解模板的實(shí)現(xiàn)方法

    這篇文章主要介紹了IDEA 自定義方法注解模板的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼

    Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • springboot整合shardingjdbc實(shí)現(xiàn)分庫(kù)分表最簡(jiǎn)單demo

    springboot整合shardingjdbc實(shí)現(xiàn)分庫(kù)分表最簡(jiǎn)單demo

    我們知道分庫(kù)分表是針對(duì)某些數(shù)據(jù)量持續(xù)大幅增長(zhǎng)的表,比如用戶表、訂單表等,而不是一刀切將全部表都做分片,這篇文章主要介紹了springboot整合shardingjdbc實(shí)現(xiàn)分庫(kù)分表最簡(jiǎn)單demo,需要的朋友可以參考下
    2021-06-06
  • spring單元測(cè)試之@RunWith的使用詳解

    spring單元測(cè)試之@RunWith的使用詳解

    這篇文章主要介紹了spring單元測(cè)試之@RunWith的使用詳解,@RunWith 就是一個(gè)運(yùn)行器,@RunWith(JUnit4.class) 就是指用JUnit4來(lái)運(yùn)行,
    @RunWith(SpringJUnit4ClassRunner.class),讓測(cè)試運(yùn)行于Spring測(cè)試環(huán)境,需要的朋友可以參考下
    2023-12-12
  • 詳解Java中的封裝、繼承、多態(tài)

    詳解Java中的封裝、繼承、多態(tài)

    本文主要介紹了Java中的封裝、繼承、多態(tài)的相關(guān)知識(shí),具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01

最新評(píng)論

临海市| 合作市| 墨江| 齐齐哈尔市| 广东省| 新宾| 阿拉善左旗| 泾川县| 岳阳市| 上思县| 南康市| 罗江县| 乌兰察布市| 重庆市| 类乌齐县| 湖南省| 襄樊市| 株洲市| 九龙城区| 汨罗市| 广州市| 恩平市| 长垣县| 潼关县| 左贡县| 新余市| 汾阳市| 两当县| 抚宁县| 通化县| 永胜县| 曲靖市| 滨州市| 安康市| 西和县| 德保县| 平凉市| 酒泉市| 十堰市| 云和县| 章丘市|