부자 되기 위한 블로그, 머니킹

안녕하세요! 오늘도 열심히 개발 공부를 하고 있습니다. 최근 스프링의 다양한 기능들을 배우고 있습니다. 그 중에서 글로벌 서비스를 만들기 위한 다국어 처리를 스프링을 통해 손쉽게 해결할 수 있는 것을 알았는데요. 이번 포스팅에서는 스프링에서 메시지 국제화를 통해 다국어 처리를 하는 방법에 대해서 알아보겠습니다.

 

다국어 처리 파일

Spring Resources 폴더 밑에 messages.properties와 message_en.properties을 만들어줍니다. 해당 이름으로 해주는 이유는 다른 이름으로 해도 되지만 기본 default로 등록시키는 메시지 파일 이름이 "messages"이기 때문입니다. 다른 이름으로 설정시 application.poperties에 해당 메시지 국제화 설정을 등록해주면 됩니다.

 

 

messages.properties

hello=안녕하세요
hello.name=안녕 내 이름은 {0}

 

messages_en.properties

hello=hello
hello.name=hello {0}

 

위와 같이 메시지 파일들을 등록해줍니다. 해당 메시지 내용들은 thymeleaf를 통해 손쉽게 가져올 수 있습니다.

 

 

등록한 다국어 메시지 활용하기

global.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div th:text="#{hello.name('젤리')}"></div>
<div th:text="#{hello}"></div>
</body>
</html>

 

testcontroller

@GetMapping("/global")
public String global(Model model) {
    return "global";
}

 

이와 같이 controller와 thymeleaf 파일을 작성해줍시다. thymeleaf에서 메시지 사용하는 방법은 #{변수명} 형태로 사용하시면 됩니다.

 

만약 한국어 메시지가 뜨지 않고 물음표로 도배된 경우 인코딩 문제일 가능성이 높습니다. intellij의 경우 File Encodings - Properties File에서 utf-8을 설정해주시면 정상적으로 나옵니다.

 

 

다른 언어 메시지 테스트시 크롬 설정, 언어에서 영어를 가장 위로 올려주시면 정상적으로 영어 다국어 메시지가 나옵니다.

 

정상적으로 나오는 모습을 확인할 수 있습니다.