Programming/Java

Java 국가 코드 및 국가명 Locale Class로 쉽게 가져오기

Jan92 2021. 8. 28. 03:35

Class Locale

 

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