자바에서 국제화에 사용되는 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” />
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.