Locale Class
Java에서 국가코드 및 국가명, 국가별 언어가 필요할 때 Locale Class를 통해 쉽게 가지고 올 수 있습니다.
Locale Class에 사용되는 국가명(country)은 'ISO 3166'를 기준으로 하고, 언어(language)는 'ISO 639'를 기준으로 합니다.
사용 예시를 간단하게 보고 아래에서 더 자세한 내용을 보도록 하겠습니다.
String[] countries = Locale.getISOCountries();
for(String country : countries) {
Locale locale = new Locale("en", country);
System.out.printf("2글자 국가 코드 : %s | 3글자 국가 코드 : %s | 영문 국가명 : %s | 한글 국가명 : %s %n",
locale.getCountry(),
locale.getISO3Country(),
locale.getDisplayCountry(new Locale("en")),
locale.getDisplayCountry());
}
작동 코드입니다.
2글자 국가 코드 : VN | 3글자 국가 코드 : VNM | 영문 국가명 : Vietnam | 한글 국가명 : 베트남
2글자 국가 코드 : VU | 3글자 국가 코드 : VUT | 영문 국가명 : Vanuatu | 한글 국가명 : 바누아투
2글자 국가 코드 : WF | 3글자 국가 코드 : WLF | 영문 국가명 : Wallis & Futuna | 한글 국가명 : 왈리스-푸투나 제도
2글자 국가 코드 : WS | 3글자 국가 코드 : WSM | 영문 국가명 : Samoa | 한글 국가명 : 사모아
2글자 국가 코드 : YE | 3글자 국가 코드 : YEM | 영문 국가명 : Yemen | 한글 국가명 : 예멘
2글자 국가 코드 : YT | 3글자 국가 코드 : MYT | 영문 국가명 : Mayotte | 한글 국가명 : 마요트
2글자 국가 코드 : ZA | 3글자 국가 코드 : ZAF | 영문 국가명 : South Africa | 한글 국가명 : 남아프리카
결과입니다.
Locale 객체 생성
- 생성자를 통한 객체 생성
Locale(String language, String country, String variant)
Locale(String language, String country)
Locale(String language)
// 사용 예시
Locale locale1 = new Locale("en", "US");
Locale locale2 = new Locale("ko");
'language' : ISO 639 alpha-2 또는 alpha-3 언어코드, 그리고 최대 8개의 알파벳 문자로 등록된 언어가 들어갑니다.
'country' : ISO 3166 alpha-2 국가코드 또는 UN M.49 numeric-3 area 코드 값이 들어갑니다.
variant' : Locale의 변형을 나타내는 데 사용되는 임의의 값입니다.
- Builder를 통한 객체 생성
Locale locale1 = new Locale.Builder()
.setLanguage("en")
.setRegion("US")
.build();
Locale locale1 = new Locale.Builder()
.setLanguage("ko")
.build();
- 자주 사용되는 국가는 Locale Class 내에서 Constant로 선언
// 전체 중 일부
// Useful constant for language.
public static final Locale ENGLISH = createConstant("en", "");
// Useful constant for language.
public static final Locale FRENCH = createConstant("fr", "");
// Useful constant for language.
public static final Locale GERMAN = createConstant("de", "");
// Useful constant for language.
public static final Locale ITALIAN = createConstant("it", "");
// Useful constant for language.
public static final Locale JAPANESE = createConstant("ja", "");
// Useful constant for language.
public static final Locale KOREAN = createConstant("ko", "");
// 사용 예시
Locale locale = Locale.KOREAN;
따라서 다음과 같이 객체를 새로 만들지 않고, 이미 만들어진 Constant를 사용할 수 있습니다.
정보 출력
- Country 정보 출력
Locale locale = new Locale("ko", "KR");
log.info("DisplayCountry : {}", locale.getDisplayCountry());
// DisplayCountry : 대한민국
log.info("Country : {}", locale.getCountry());
// Country : KR
log.info("ISO3Country : {}", locale.getISO3Country());
// ISO3Country : KOR
- getDisplayCountry() : 화면에 보여주기 적절한 국가명을 리턴합니다.
- getCountry() : Country code를 리턴하며, ISO 3166 2-letter code 또는 UN M.49 3-digit code 형태로 리턴됩니다.
- getISO3Country() : 3글자로 된 Country code를 리턴합니다.
- Language 정보 출력
Locale locale = new Locale("ko", "KR");
log.info("DisplayLanguage : {}", locale.getDisplayLanguage());
// DisplayLanguage : 한국어
log.info("Language : {}", locale.getLanguage());
// Language : ko
log.info("ISO3Language : {}", locale.getISO3Language());
// ISO3Language : kor
- getDisplayLanguage() : 화면에 보여주기 적절한 언어 이름을 리턴합니다.
- getLanguage() : Language Code를 리턴합니다.
- getISO3Language() : 3글자로 된 Language code를 리턴합니다.
- DisplayName 출력
Locale locale1 = new Locale("ko", "KR");
log.info("DisplayName : {}", locale1.getDisplayName());
// DisplayName : 한국어 (대한민국)
Locale locale2 = new Locale("en", "US");
log.info("DisplayName : {}", locale1.getDisplayName());
// DisplayName : 영어 (미국)
- getDisplayName() : 화면에 보여주기 적절한 locale를 출력합니다. locale 객체를 생성할 때 들어간 인자 개수에 따라 출력되는 결과가 다릅니다.
- toString 출력
Locale locale1 = new Locale("ko", "KR");
log.info("toString : {}", locale1.toString());
// toString : ko_KR
Locale locale2 = new Locale("en", "US");
log.info("toString : {}", locale1.toString());
// toString : en_US
- toString() : Language_Country 형태로 출력됩니다.
Default Locale
- getDefault, setDefault
Locale defaultLocale = Locale.getDefault();
log.info("defaultLocale : {}", defaultLocale.getDisplayName());
// defaultLocale : 한국어 (대한민국)
Locale.setDefault(Locale.US);
Locale changedLocale = Locale.getDefault();
log.info("changedLocale : {}", changedLocale.getDisplayName());
// changedLocale : English (United States)
- getDefault() : JVM(Java Virtual Machine)에 설정된 기본 Locale 정보를 가지고 옵니다.
- setDefault() : JVMJava Virtual Machine)에 설정된 기본 Locale 정보를 변경합니다.
사용 가능한 모든 Locale
- getAvailableLocales, getISOCountries
Locale[] availableLocales = Locale.getAvailableLocales();
for (Locale locale : availableLocales) {
}
String[] ISOCountries = Locale.getISOCountries();
for(String country : ISOCountries) {
}
- getAvailableLocales() : 사용 가능한 모든 Locale 객체를 가지고 옵니다.
- getISOCountries() : 모든 Locale 객체를 String 형식으로 가지고 옵니다.
참고 사이트
https://codechacha.com/ko/java-locale/
https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html
'Programming > Java' 카테고리의 다른 글
Java 객체 복사 Cloneable interface (0) | 2021.09.16 |
---|---|
함수형 프로그래밍을 위한 Java Stream 기본 개념 (2) | 2021.09.11 |
String class가 final인 이유, String의 불변성 (Immutable) (0) | 2021.08.24 |
Static, Stack, Heap / Java 메모리 영역의 구조와 특징 (0) | 2021.08.23 |
Java 빌더 패턴 (Builder Pattern)이란? (0) | 2021.08.22 |