-
[김영한 스프링] 15. 메시지, 국제화 - 프로젝트 설정 & 세팅 & 메시지, 국제화 소개Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 25. 03:35
프로젝트 설정
이름 변경
다운로드한 파일 중 "message-start"를 원하는 곳으로 이동 후 "message"로 이름변경
참고 : 메시지, 국제화 예제에 집중하기 위해서 복잡한 체크, 셀렉트 박스 관리 기능은 제거했다.
프로젝트 열기
build.gradle 열기
설정
설정 -> 파일 인코딩 -> 프로퍼티 파일에 대한 디폴트 인코딩을 UTF-8로 변경
설정 -> Gradle -> Intelij IDEA로 변경
실행
결과
메시지, 국제화 소개
메지시
악덕? 기획자가 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까?
여러 화면에 보이는 상품명, 가격, 수량 등, label에 있는 단어를 변경하려면 다음 화면들을 다 찾아가면서 모두 변경해야 한다. 지금처럼 화면 수가 적으면 문제가 되지 않지만 화면이 수십개 이상이라면 수십개의 파일을 모두 고쳐야 한다.
- addForm.html, editForm.html, item.html, items.html
왜냐하면 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문이다.
이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다.
예를 들어서 messages.properties라는 메시지 관리용 파일을 만들고
item=상품
item.id=상품 ID
item.itemName=상품명
item.price=가격
item.quantity=수량각 HTML들은 다음과 같이 해당 데이터를 key값으로 불러서 사용하는 것이다.
addForm.html
<label for="itemName" th:text="#{item.itemName}"></label>
editForm.html
<label for="itemName" th:text="#{item.itemName}"></label>
국제화
메시지에서 한 발 더 나가보자.
메시지에서 설명한 메시지 파일(messages.properties)을 각 나라별로 별도로 관리하면 서비스를 국제화할 수 있다.
예를 들어서 다음과 같이 2개의 파일을 만들어서 분류한다.
messages_en.properties
item=Item
item.id=Item ID
item.itemName=Item Name
item.price=price
item.quantity=quantitymessages_ko.properties
item=상품
item.id=상품 ID
item.itemName=상품명
item.price=가격
item.quantity=수량영어를 사용하는 사람이면 messages_en.properties를 사용하고, 한국어를 사용하는 사람이면 messages_ko.properties를 사용하게 개발하면 된다.
이렇게 하면 사이트를 국제화할 수 있다.
한국에서 접근한 것인지 영어에서 접근한 것인지는 인식하는 방법은 HTTP accept-language해더 값을 사용하거나 사용자가 직접 언어를 선택하도록 하고, 쿠키 등을 사용해서 처리하면 된다.
메시지와 국제화 기능을 직접 구현할 수도 있겠지만, 스프링은 기본적인 메시지와 국제화 기능을 모두 제공한다. 그리고 타임리프도 스프링이 제공하는 메시지와 국제화 기능을 편리하게 통합해서 제공한다.
출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의
웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있
www.inflearn.com
'Spring > 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 카테고리의 다른 글
[김영한 스프링] 17. 메시지, 국제화 - 웹 애플리케이션에 메시지, 국제화 적용하기 (0) 2023.08.28 [김영한 스프링] 16. 메시지, 국제화 - 스프링 메시지 소스 (0) 2023.08.25 [김영한 스프링] 14. 타임리프 스프링 통합과 폼 - 라디오 버튼 & 셀렉트 박스 (0) 2023.08.25 [김영한 스프링] 13. 타임리프 스프링 통합과 폼 - 멀티 체크 박스 (0) 2023.08.23 [김영한 스프링] 12. 타임리프 스프링 통합과 폼 - 단일 체크 박스 (0) 2023.08.22