Skip to main content

메시지,국제화

·189 words·1 min· loading
Table of Contents
SpringMVC2 - This article is part of a series.
Part 4: This Article

메시지, 국제화 소개
#

메시지
#

기획자가 “상품명” 이란 단어를 모두 “상품이름” 으로 고쳐달라고 하면? HTML 파일에 메시지가 하드코딩 되어 있어 모든 화면을 고쳐야 한다 ㅅㅂ

이런 다양한 메시지를 한 곳(파일)에서 관리하는 기능을 메시지 기능이라 한다.

EX) messages.properties라는 파일을 만들고

item=상품
item.itemName=상품명
...

HTML에서 해당 데이터를 key값으로 불러서 사용한다 addForm.html <label for="itemName" th:text="#{item.itemName}"></label>

국제화
#

위의 messages.properties를 각 나라별로 관리하면, 서비스를 국제화 가능

스프링은 기본적인 메시지와 국제화 기능을 제공하고, 타임리프도 이와 통합해서 제공


스프링 메시지 소스 설정
#

여기서 검색

스프링부트를 사용하면, 스프링부트가 MessageSource를 자동으로 빈에 등록

application.properties(소스 기본 값) resources 밑의messages.properties 파일 기본 인식 (파일명 마지막에 언어정보가 있는 파일도 인식한다 ex)messages_en.properties )

spring.messages.basename=messages

/src/main/resources/messages.properties

hello=안녕
hello.name=안녕 {0}

/src/main/resources/messages_en.properties

hello=hello
hello.name=hello {0}

웹 애플리케이션에 메시지 적용하기
#

messages.properties등록

label.item=상품
label.item.id= 상품 ID
label.item.itemName=상품명
label.item.price=가격 label.item.quantity=수량

page.items=상품 목록 
page.item=상품 상세 
page.addItem=상품 등록 
page.updateItem=상품 수정

button.save=저장 
button.cancel=취소

타임리프 메시지 표현식 #{...} ex) “상품"을 조회하려면 #{label.item} messages.properties에 설정된 값을 변경하면, 모든 메시지가 바뀐다!!

참고 hello.name=안녕{0}

<p th:text="#{hello.name(${item.itemName})}"></p>

이런 식으로 파라미터받아서도 사용가능


국제화 적용
#

messages_en.properties에 영어로 지정해주면 끝!!

Request header의 Accept-Language:에 따라 변환될것임

LocaleResolver 인터페이스 Locale선택 방식을 변경하려면, LocaleResolver 구현체를 변경해서 사용 ex) 사용자가 직접 언어를 선택하게 만들기

쓸일이 없을것같지만, 생기면 구글검색

SpringMVC2 - This article is part of a series.
Part 4: This Article