본문 바로가기
JAVA Spring

메시지, 국제화

by ppirae 2022. 5. 26.

메시지

기획자가 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까?

여러 화면에 보이는 상품명, 가격, 수량 등, label 에 있는 단어를 변경하려면 다음 화면들을 다 찾아가면서 모두 변경해야 한다. 왜냐하면 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문이다.

이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다.

 

국제화

메시지에서 설명한 메시지 파일( messages.properties )을 각 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다.

영어를 사용하는 사람이면 messages_en.properties 를 사용하고, 한국어를 사용하는 사람이면 messages_ko.properties 를 사용하게 개발하면 된다. 이렇게 하면 사이트를 국제화 할 수 있다.

 

한국에서 접근한 것인지 영어에서 접근한 것인지는 인식하는 방법은 HTTP accept-language 해더 값을 사용하거나 사용자가 직접 언어를 선택하도록 하고, 쿠키 등을 사용해서 처리하면 된다.


메시지

스프링 부트를 사용하면 스프링 부트가 MessageSource 를 자동으로 스프링 빈으로 등록한다.

스프링 부트를 사용하면 application.properties에 다음과 같이 메시지 소스를 설정할 수 있다.

spring.messages.basename=messages,config.i18n.messages

 

파일을 만든다.

messages.properties  -> 기본값으로 사용(한글)

messages_en.properties  -> 영어 국제화 사용

 

messages.properties에 사용할 메시지를 적어놓는다.

예)

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

타임리프 메시지 적용

타임리프의 메시지 표현식 #{...} 를 사용하면 스프링의 메시지를 편리하게 조회할 수 있다.

예를 들어서 방금 등록한 상품이라는 이름을 조회하려면 #{label.item} 이라고 하면 된다.


국제화

messages_en.properties에 사용할 메시지를 적어놓는다.

label.item.id=Item ID
label.item.itemName=Item Name
label.item.price=price
label.item.quantity=quantity

이것으로 국제화 적용은 끝났다. 이미 타임리프를 템플릿 파일에 적용해두었기 때문이다.

 

Locale.Korea에서 접속하면 messages.properties의 한글 메시지가 나타나고

Locale.English에서 접속하면 messages_en.properties의 영어 메시지가 나타난다.


인프런 김영한님의 스프링 MVC 2편을 듣고 작성한 글입니다.

https://inf.run/oKtV

 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의

웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있

www.inflearn.com

 

'JAVA Spring' 카테고리의 다른 글

로그인 처리 - 쿠키와 세션  (0) 2022.06.17
검증 - Bean Validation  (0) 2022.05.29
타임리프 - 기본기능(2)  (0) 2022.05.25
타임리프 - 기본기능(1)  (0) 2022.05.25
스프링 MVC - 웹페이지 만들기(3)  (0) 2022.04.16

댓글