메시지/ 국제화

이동건 (불꽃냥펀치)·2025년 1월 11일
0

메시지/국제화

만약 화면에 보이는 문구를 대량으로 수정할 일이 있으면 우리는 모든 html을 다 뒤져가며 해당 문자들을 변경해야 한다. 하지만 다양한 메시지를 한 곳에서 관리하는 메시지 기능을 이용하면 번거롭게 html을 뒤지는 작업을 하지 않아도 된다.

예를 들어서 message.properties라는 관리자용 파일을 만들고

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

각 html들을 해당 데이터를 불러와서 사용하면 된다.

<label for="itemName" th:text="#{item.itemName}"></label>

여기서 더 나가면 메시지에서 설명한 메시지 파일을 각 나라별로 관리하면 서비스를 국제화 할 수 있다.

messages_en.properties

messages_en.properties
item=Item
 item.id=Item ID
 item.itemName=Item Name
 item.price=price
 item.quantity=quantity

messages_ko.properties

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

이런식으로 2개의 파일을 만들면 사이트를 국제화 할 수 있다. 한국에서 접근한 것인지 영어에서 접근한 것인지 인식하는 방법은 HTTP accept-language헤더 값을 사용하거나 사용자가 직접 언어를 선택하도록 하고 쿠키 등을 사용해서 처리하면 된다.

스프링부트는 이런 기능을하는 MessageSource를 자동으로 스프링 빈으로 등록한다.

MessageSource 를 스프링 빈으로 등록하지 않고, 스프링 부트와 관련된 별도의 설정을 하지 않으면 messages 라 는 이름으로 기본 등록된다. 따라서 messages_en.properties , messages_ko.properties , messages.properties 파일만 등록하면 자동으로 인식된다.

예시

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



웹페이지에서 메시지 적용

message.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=취소

타임리프 메시지 적용

  • 렌더링 전
<div th:text="#{label.item}"></h2>
  • 렌더링 후
<div>상품</h2>

참고

hello.name=안녕 {0}
<p th:text="#{hello.name(${item.itemName})}"></p>
  • 파라미터는 다음곽 같이 사용될 수 있다








출처:https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard

profile
자바를 사랑합니다

0개의 댓글

관련 채용 정보