본문 바로가기

스프링

메세지 소스, 국제화

메세지 소스

공통적으로 처리하는 메시지들을 처리하는데 사용한다.

기본적으로 MessageSource 인터페이스를 구현한 ResourceBundleMessageSource를 스프링 빈으로 등록하여 사용해야 하지만 스프링 부트에서는 자동으로 등록해준다.

이제 메세지 소스에 대해 자세히 살펴보자.

  • 메시지는 resources - messages - messages.properties(messages_kr.properties ...)에서 관리되어진다.

  • 메시지는 다음과 같이 값을 부여하여 사용할 수 있도록한다.
<label>
    <p class="label-txt" th:text="|#{programmer.name} : ${person.name}|"></p>
    <p class="label-txt" th:text="|#{programmer.age} : ${person.age}|"></p>
    <p class="label-txt" th:utext="|#{programmer.department} : <b>${person.department}</b>|"></p>
    <p class="label-txt" th:utext="|#{programmer.major} : <b>${person.major}</b>|"></p>
    <p class="label-txt" th:if="${person.notebook}" th:text="|#{programmer.notebook} O|"></p>
    <p class="label-txt" th:unless="${person.notebook}" th:text="|#{programmer.notebook} X|"></p>
    <div th:each="lan : ${person.lang}">
        <p class="label-txt" th:text="|#{programmer.lang} : ${lan}|"></p>
    </div>
    <p class="label-txt" th:text="|#{programmer.env} : ${person.envs.desc}|"></p>
    <p class="label-txt" th:text="|#{programmer.email} : ${person.emailId}@${person.platform}|"></p>
</label>
  • Thymeleaf에서 메세지 소스를 사용하려고 하려면 #{메세지코드}와 같이 사용하면 된다.

  • 잘 나오는 모습을 확인할 수 있다.

국제화

우리는 메세지 소스를 활용하여 국제화 기능을 사용할 수 있다.

우리가 한글로 등록해놓은 내용을 외국어로 변경하면 된다.

메세지 소스는 messages_ko.properties, messages_en.properties와 같이 등록하면 되는데 스프링에서 자동으로 HTTP Accept-Language 헤더의 값을 보고 설정해준다.

그리고 어느 것도 해당하지 않았을 때, messages.properties가 선택되어 진행된다.

이를 간단한 예제로 살펴보자.

  • 다음과 같이 messages_en.properties의 위치, 언어를 적절하게 설정한다.

  • 실행해보기 위해 언어 설정을 잠시 변경한다.

  • 잘 나오는 모습을 확인할 수 있다.

단순히 언어 변경을 통한 것이 아니라 우리가 셀렉트 박스로 변경하는 것과 같은 동작으로 하기를 원하는 경우 LocaleResolver를 활용하면 된다.

참고문헌

https://www.inflearn.com/course/스프링-mvc-2/dashboard

'스프링' 카테고리의 다른 글

[Spring] 검증(Bean Validation)  (0) 2021.09.23
[Spring] 검증(Validation)  (0) 2021.09.23
[Spring, Thymeleaf] Form 심화  (0) 2021.09.23
[Spring, Thymeleaf] Form 기본  (0) 2021.09.23
[Thymeleaf] 반복, 조건, 블럭  (0) 2021.09.22