SLF4J(Simple Logging Facade for Java)는 자바 어플리케이션에서 로깅을 위한 간단한 인터페이스를 제공하는 라이브러리입니다. SLF4J를 사용하면 로그 메시지를 쉽게 출력하고 관리할 수 있습니다. 이번에는 SLF4J에서 메시지 국제화(i18n)를 지원하는 방법에 대해 알아보겠습니다.
1. SLF4J에서 국제화를 위한 설정
SLF4J에서 메시지 국제화를 위해 MessageFormatter
클래스를 사용합니다. 이 클래스에는 중괄호를 이용한 메시지 템플릿을 파라미터화하는 기능이 제공됩니다. 먼저, 관련 의존성을 추가합니다.
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.32</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.32</version>
</dependency>
그리고 resources
폴더에 messages.properties
와 messages_ko.properties
파일을 생성합니다. messages.properties
파일에는 영어로 된 메시지 템플릿을, messages_ko.properties
파일에는 한국어로 된 메시지 템플릿을 작성합니다.
2. 메시지 템플릿 작성하기
영어로 된 메시지 템플릿(messages.properties
) 파일에 다음과 같은 내용을 작성합니다.
welcome=Welcome, {0}!
한국어로 된 메시지 템플릿(messages_ko.properties
) 파일에는 다음과 같은 내용을 작성합니다.
welcome=환영합니다, {0}님!
3. 메시지 국제화 예제
이제 메시지 국제화를 사용하는 간단한 예제 코드를 작성해보겠습니다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.helpers.MessageFormatter;
public class InternationalizationExample {
private static final Logger logger = LoggerFactory.getLogger(InternationalizationExample.class);
public static void main(String[] args) {
String name = "John";
logger.info(MessageFormatter.format(getMessage("welcome"), name).getMessage());
}
private static String getMessage(String key) {
return getMessage(key, "messages");
}
private static String getMessage(String key, String bundleName) {
ResourceBundle bundle = ResourceBundle.getBundle(bundleName, Locale.getDefault());
return bundle.getString(key);
}
}
위 예제 코드는 InternationalizationExample
클래스에서 logger.info()
를 사용하여 로그 메시지를 출력합니다. getMessage()
메서드는 지정된 키에 해당하는 메시지를 messages.properties
파일에서 읽어옵니다. 메시지의 파라미터로 name
변수 값을 전달하여 메시지를 국제화합니다.
4. 실행 결과
위 예제 코드를 실행하면 로그 메시지가 출력됩니다. 첫 번째 실행 시 로그 메시지는 영어로 출력되고, 두 번째 실행 시 로그 메시지는 한국어로 출력됩니다.
영어 출력 결과:
Welcome, John!
한국어 출력 결과:
환영합니다, John님!
이처럼 SLF4J를 이용하여 메시지 국제화를 구현할 수 있습니다. 국제화된 메시지를 이용하면 다국어 인터페이스를 구현하는 어플리케이션에서 사용자에게 더욱 친숙한 경험을 제공할 수 있습니다.