스프링에서 메시지 기능은 중요한 단어들을 한 파일에 모아놓고 관리하는 기능이다.
이러한 기능이 쓰이는 경우는 예를 들어서 우리가 코드에 A,B,C 라는 단어들을 넣어서 코드를 짰는데 누군가가 이를 D,E,F라는 단어로 싹 다 바꿔달라고 하면 우리는 수십개의 HTML 파일들을 일일이 찾아가며 수정해야 한다. 이러한 경우를 방지하게 위해서 중요한 단어들을 한 파일에 모아서 메시지 관리용 파일을 만드는 것이다.
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=취소
자바의 messages.properties라는 폴더에 우리가 메시지 기능을 쓸 단어들을 Key, value 형식으로 모아놓고 타임리프 문법을 이용하여 HTML에 넣으면 된다.
타임리프의 메시지 표현식 #{...}을 이용한다.
우리가 messages.properties 폴더에 key, value 형식으로 넣어놨기 때문에 아래 코드의 page.addItem은 상품 등록으로 바뀌고 label.item.itemName은 상품명으로 랜더링이 돼서 화면에 나타나게 된다.
<h2 th:text="#{page.addItem}">상품 등록</h2>
<label for="itemName" th:text="#{label.item.itemName}">상품명</label>
<label for="quantity" th:text="#{label.item.quantity}">수량</label>
<button class="w-100 btn btn-primary btn-lg" type="submit" th:text="#{button.save}">저장</button>
type="button" th:text="#{button.cancel}">취소</button>
국제화
우선 메시지 기능은 구현을 했는데 우리가 만든 사이트, 앱이 유명해져서 외국에서도 이용해야 한다고 하면 그 나라의 언어에 맞게 언어를 바꿔주어야 한다. 이런 경우에도 주요 단어들을 한 파일에 모아놓기만 하면 된다.
messages_en.properties 파일에도 key, value 형식으로 저장을 해보자.
label.item=Item
label.item.id=Item ID
label.item.itemName=Item Name
label.item.price=price
label.item.quantity=quantity
page.items=Item List
page.item=Item Detail
page.addItem=Item Add
page.updateItem=Item Update
button.save=Save
button.cancel=Cancel
이렇게만 해주면 더 이상 HTML 코드를 바꿀 필요는 없다. 왜냐하면 messages.properties와 messages_en.properties의 키값은 동일하기 때문에 영어를 이용하고 싶다면 사용자가 직접 웹 브라우저의 언어 설정 값을 변경하거나 alert를 이용하여 언어를 바꾸게 한다면 HTTP 요청 헤더 (Accept-Language)를 통해서 자신이 원하는 언어를 선택할 수 있게 된다 참고로 스프링은 언어 선택을 할 때 자동으로 Accept-Language 헤더 값을 사용한다.
'Spring > Spring' 카테고리의 다른 글
[Spring] 쿠키와 세션을 이용한 로그인 처리 (0) | 2024.10.22 |
---|---|
[Spring] BindingResult / FieldError / ObjectError (2) | 2024.10.16 |
[Spring] 타임리프 - 리터럴 (0) | 2024.10.09 |
[Spring] 타임리프 - 텍스트 (1) | 2024.10.09 |
[Spring] @ResponseBody 애너테이션 (1) | 2024.10.03 |