웹 애플리케이션에 메시지+국제화 적용

2023. 7. 3. 20:06·Spring
728x90
messages.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=취소

타임리프 메시지 적용

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

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

 

렌더링 전

<div th:text="#{label.item}"></h2>

렌더링 후

<div>상품</h2>

페이지 이름에 적용

<h2>상품 등록 폼</h2>
<h2 th:text="#{page.addItem}">상품 등록</h2>

 

레이블에 적용

<label for="itemName">상품명</label>
<label for="itemName" th:text="#{label.item.itemName}">상품명</label> <label for="price" th:text="#{label.item.price}">가격</label>
<label for="quantity" th:text="#{label.item.quantity}">수량</label>

 

버튼에 적용

<button type="submit">상품 등록</button>
<button type="submit" th:text="#{button.save}">저장</button> <button type="button" th:text="#{button.cancel}">취소</button>

 

파라미터는 다음과 같이 사용할 수 있다.

hello.name=안녕 {0}

<p th:text="#{hello.name(${item.itemName})}"></p>

 

국제화 적용은 간단하다. 일단 영문 properties에 영문 메시지를 추가한다.

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
이미 위에서 메시지 표현식을 정의해두었기 때문에 국제화는 이걸로 끝난다.

웹 브라우저에서 언어 설정 값 우선순위를 변경하면 국제화 된 것을 확인할 수 있다.

Accept-Language 는 클라이언트가 서버에 기대하는 언어 정보를 담아서 요청하는 HTTP 요청 헤더이다.

메시지 기능은 Locale정보를 알아야 언어를 선택할 수 있다.

스프링도 Locale정보를 알아야 언어를 선택할 수 있다. 그래서 스프링은 언어 선택시 기본으로 Accept-Language헤더의 값을 사용한다.

 

LocaleResolver

스프링은 Locale 선택 방식을 변경할 수 있도록 LocaleResolver 라는 인터페이스를 제공하는데, 스프링 부트는 기본으로 Accept-Language 를 활용하는 AcceptHeaderLocaleResolver 를 사용한다.

 

LocaleResolver 변경
만약 Locale 선택 방식을 변경하려면 LocaleResolver 의 구현체를 변경해서 쿠키나 세션 기반의 Locale 선택 기능을 사용할 수 있다

728x90

'Spring' 카테고리의 다른 글

오류 메시지 처리  (0) 2023.07.14
검증 - Validation  (0) 2023.07.04
메시지와 국제화  (1) 2023.07.03
타임리프 라디오 버튼  (0) 2023.06.28
타임리프 멀티 체크박스  (0) 2023.06.27
'Spring' 카테고리의 다른 글
  • 오류 메시지 처리
  • 검증 - Validation
  • 메시지와 국제화
  • 타임리프 라디오 버튼
Bello's
Bello's
개발하는 벨로
  • Bello's
    벨로의 개발일지
    Bello's
  • 전체
    오늘
    어제
    • 분류 전체보기 (199) N
      • 노예 일지 (7)
        • 스타트업 노예일지 (3)
      • CS 이론 (81)
        • 학과 수업 (4)
        • 알고리즘 (64)
        • 시스템 프로그래밍 (3)
        • 데이터 통신 (1)
        • 운영체제 (2)
        • 데이터베이스 (1)
      • project (3)
      • 나는 감자다. (4)
      • Spring (27)
      • 모각코 (45)
        • 절개와지조(모각코) (7)
        • 어쩌다보니 박준태가 조장이조 (11)
        • 어쩌다보니 박준태가 또 조장이조 (12)
      • LikeLion🦁 (20)
      • 캘리포니아 감자 (4)
      • OpenSource Contribute (1)
      • 우아한테크벨로 (1) N
        • 프리코스 회고록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    감자
    어렵다
    자바
    누적합
    8기
    Spring
    오블완
    DFS
    BFS
    뛰슈
    절개와지조
    프리코스
    그래프 순회
    백준
    JPA
    나는 감자
    모각코
    티스토리챌린지
    회고록
    타임리프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Bello's
웹 애플리케이션에 메시지+국제화 적용
상단으로

티스토리툴바