Java i18n – Java에서 국제화

다국어화 또는 Java i18n은 매우 중요한 기능입니다. Java는 리소스 번들을 통한 다국어화(i18n) 지원을 제공합니다.

Java에서의 다국어화

어플리케이션을 다양한 로케일에서 지원하려면 해당 로케일에 맞는 속성 파일을 생성해야 합니다. 파일 이름은 번들 이름에 언어 코드 및 국가 코드를 포함하며, 예를 들면 ApplicationMessages_en_US.properties입니다. 특정 로케일에 대한 속성 파일이 준비되면 올바른 로케일로 리소스 번들을 초기화하기만 하면 됩니다. Java는 이를 위해 java.util.ResourceBundlejava.util.Locale 두 클래스를 제공합니다. ResourceBundle은 로케일별 속성 파일을 읽고 모든 키에 대한 로케일별 값에 액세스할 수 있습니다. 이는 웹 어플리케이션 텍스트를 로케일별로 지원하는 데 매우 유용하며, HTTP 요청에서 로케일 정보를 가져와 해당 로케일 리소스 번들 파일로 동적 페이지를 생성할 수 있습니다. 또한 사용자에게 로케일을 선택하고 레이블을 동적으로 업데이트할 수 있는 옵션을 제공할 수도 있습니다.

Java i18n 예제

프로젝트를 만들었습니다. 구조는 아래 이미지와 같습니다. 여기는 JavaInternationalizationExample 클래스의 Java 코드입니다.

package com.journaldev.i18n;

import java.util.Locale;
import java.util.ResourceBundle;

public class JavaInternationalizationExample {

    public static void main(String[] args) {
        //기본 로캘
        ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
        //이미 정의된 로캘을 사용하여 ResourceBundle 얻기
        ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
        //로캘을 생성해야 할 때 ResourceBundle 얻기
        ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
        
        //일부 메시지 출력
        printMessages(bundle);
        printMessages(bundleFR);
        printMessages(bundleSWE);
        
    }

    private static void printMessages(ResourceBundle bundle) {
        System.out.println(bundle.getString("CountryName"));
        System.out.println(bundle.getString("CurrencyCode"));
    }

}

번들 이름은 ApplicationMessages이며 2개의 로캘별 리소스 번들과 하나의 기본 리소스 번들이 있습니다. ApplicationMessages.properties

CountryName=USA
CurrencyCode=USD

ApplicationMessages_fr_FR.properties

CountryName=France
CurrencyCode=Euro

ApplicationMessages_sv_SE.properties

CountryName=Sweden
CurrencyCode=Kr

Locale 클래스의 사용에 주목하십시오. 일부 로캘이 이미 정의되어 있지만 언제든지 언어 코드와 국가 코드를 생성자에 전달하여 새로운 로캘을 만들 수 있습니다. 프로그램을 실행하면 다음이 출력됩니다.

USA
USD
France
Euro
Sweden
Kr

이것으로 빠른 Java i18n 예제가 모두입니다. Java에서의 국제화는 로캘별 언어로 페이지를 제공하는 웹 응용 프로그램에서 매우 유용합니다.

Source:
https://www.digitalocean.com/community/tutorials/java-i18n-internationalization-in-java