SPRING MVC - 메시지 및 국제화 적용 시키기

Sungjin·2021년 7월 26일
1

Spring

목록 보기
8/23
post-thumbnail

메시지 및 국제화가 필요한 이유!

  • 메시지
    화면에 보이는 문구를 수정해야하는 상황을 생각 해 봅시다.
    물론, 화면이 별로 없거나 바꿔야할 부분이 공통딘 부분이 많이 없다면?? 별로 어려운 이야기는 아닐 것 입니다.
    하지만, 화면이 막 수백 개 되어 버리는데 바꿔야 할 공통 부분이 화면마다 다 있으면?? 이야말로 암울한 상황이죠.
    메시지를 한 곳에서 관리가 된다면 한 곳에서만 고쳐주면 이런 문제는 해결 될 것 입니다.

  • 국제화
    요즘 구글이나 애플 같은 사이트를 보면 페이지가 영어도 있고 한글도 있고 막 언어가 다양하신 것을 볼 수 있습니다.
    이를 메시지 국제화라고 하는데 HTTP의 accept-language 헤더 값을 이용하여 스프링은 국제화의 기본 적인 기능을 제공합니다.

사용한번 해 봅시당

메시지 관리 기능을 위해 스프링에서는 MessageSource를 bean으로 등록 했어야 했지만, 스프링 부트에서는 자동적으로 등록 한다고 합니다!

MessageSource는 /resources/messages.properties를 읽어서 사용하게 됩니다.
국제화 기능을 사용하기 위해서는 messages_en.properties 처럼 뒤에 국가의 정보를 넣어 주시면 됩니다. 일단 default로는 messages.properties를 사용하게 됩니다.

별도의 설정을 하지 않아도 messages라는 이름으로 기본 등록 되지만, 다른 이름으로 메시지를 등록하고 싶으면 application.properties 파일에 spring.messages.basename='하시고싶으신거' 이렇게 등록하시면 됩니다.

저는 오늘 타임리프를 이용하여 제 이름을 한글과 영어로 출력하도록 하겠습니다!

  • 타임리프에서는 #{...}라는 메시지 표현식이 있는데 스프링의 메시지를 편리하게 조회할 수 있습니다.

messages.properties

messages_en.properties

화면에 출력한 html파일

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleag.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>messages.properties를 사용하여 이름 출력하기</h1>
<ul>
    <li>성 : <span th:text="#{lastname}"></span></li>
    <li>이름 : <span th:text="#{firstname}"></span></li>
</ul>

</body>

</html>

결과

  • 한글

  • 영어(국제화)
    크롬 브라우저 설정에서 언어를 영어로 바꾸고 실행하시면 됩니다!

    Request Header에서 accept-Language

    결과

    messages.properties에서 영어로 설정한 성과 이름이 표시되는 것을 보실 수 있습니다.

스프링이 국제화를 시킬 수 있는 이유
스프링은 기본적으로 Accept Language를 보고 언어를 선택 합니다.
좀 더 자세히 말하자면 AcceptHeaderLocaleResolver를 사용하여 Locale정보를 알아 냅니다!!

이상으로 포스팅을 마치겠습니다. 감사합니다 :)

이 글은 인프런 김영한님의 '스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술'을 수강하고 작성합니다.
출처:https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard

profile
WEB STUDY & etc.. HELLO!

0개의 댓글