자바에서 국제화에 사용되는 locale 클래스 상세 설명

7893 단어 Javalocale
1. Locale 소개
Locale은 지역을 나타냅니다.모든 Locale 대상은 특정한 지리, 정치, 문화 지역을 대표한다.
날짜, Calendar 등 날짜/시간을 나타내는 대상을 조작할 때 자주 사용된다.서로 다른 구역, 시간 표시 방식이 다르기 때문이다.
Locale 객체의 일반적인 작성 방법 세 가지를 설명합니다.
(1) 기본 Locale 가져오기
사용 방법:

Locale locale = Locale.getDefault()
(2) Locale의 정적 객체를 직접 사용
Locale.java에서 다음 정적 대상을 제공합니다

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 객체는 "중국(대륙)"에 대한

Locale locale = Locale.SIMPLIFIED_CHINESE
(3) Locale의 구조 함수를 통해 Locale 객체 만들기
Locale의 구조 함수는 모두 3개입니다.다음과 같습니다.

Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
사용 방법:

Locale local = new Locale("zh", "CN");
Locale 클래스는 매우 많은 국가와 지역을 지원합니다.다음과 같은 방법으로 Locale이 지원하는 모든 영역을 볼 수 있습니다.

Locale[] ls = Locale.getAvailableLocales();

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

입력 결과는 다음과 같습니다.

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"입니다.
그 중에서 자는'언어'를 대표하는데 여기는 일본어를 가리킨다.JP는 국가를 대표하는데, 여기에는 일본을 가리킨다.
우리는 다음과 같은 방법으로 "언어는 일본어, 국가는 일본의 Locale 대상"을 만들 수 있다.

Locale locale = new Locale("ja", "JP");
예를 들어, 세 번째 출력은 "en"입니다.
그 중에서 엔은'언어'를 대표하는데 여기는 영어를 가리킨다.
다음과 같은 방법으로 언어가 영어인 Locale 객체를 만들 수 있습니다.

Locale locale = new Locale("en");
Locale 함수 목록

// Locale 
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 
    testDiffDateLocales();

    //  Locales
    testAllLocales();
  }


  /**
   * 2 Locale 
   */
  private static void testDiffDateLocales() {
    // date 2013-09-19 14:22:30
    Date date = new Date(113, 8, 19, 14, 22, 30);

    //  “ ” Locale
    Locale localeCN = Locale.SIMPLIFIED_CHINESE;
    //  “ / ” Locale
    Locale localeUS = new Locale("en", "US");

    //  “ ” date 
    String cn = DateFormat.getDateInstance(DateFormat.MEDIUM, localeCN).format(date);
    //  “ / ” date 
    String us = DateFormat.getDateInstance(DateFormat.MEDIUM, localeUS).format(date);

    System.out.printf("cn=%s
us=%s
", 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 리소스 패키지에는 특정 언어 환경의 객체가 포함되어 있습니다.언어 환경 자원을 불러오고 읽을 수 있습니다.
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;
그 중에서 Message Bundle은 Resource Bundle를 구성할 때 사용할 문자열입니다. 이 이름은 합법적이며 특정한 제약이 필요하지 않습니다.뒤에 있는 이름은 반드시 규칙을 따르고,

resourceName_language_country.properteis;
그리고 우리는 rb를 사용한다.getString(key);자원 파일의 키에 대응하는value를 얻을 수 있습니다.
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” /> 

좋은 웹페이지 즐겨찾기