메시지
기획자가 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까?
여러 화면에 보이는 상품명, 가격, 수량 등, 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편을 듣고 작성한 글입니다.
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의
웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있
www.inflearn.com
'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 |
댓글