메시지, 국제화 소개

이성준·2022년 3월 8일
0

스프링 MVC

목록 보기
8/10

메시지와 국제화 소개

만약 기획자가 상품명이라는 단어를 모두 상품 이름으로 고쳐달라고 한다면?, 수십개의 html 파일에 메시지가 하드코딩되어있기 때문에 매우 불편하다.
message.properties
item=상품
item.id=상품 ID
item.itemName=상품명
item.price=가격
item.quantity=수량
이런 메시지 관리용 파일을 만들고 각 html들은 해당 데이터를 key 값으로 불러서 사용한다
messages_en.properties
item=Item
item.id=Item ID
item.itemName=Item Name
item.price=price
item.quantity=quantity
이러면 국제화가 가능

  • 영어에서 접근한건지 인식하는 방법은 http accept-language 헤더 값을 사용 아니면 사용자가 직접 설정, 쿠키 등을 사용해서 처리

메시지 파일 만들기

메시지 소스 부르기

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

스프링 메시지 소스 사용

@SpringBootTest
public class MessageSourceTest {

@Autowired
    MessageSource ms;

@Test
    void helloMessage() {
    String result = ms.getMessage("hello", null, null);
    assertThat(result).isEqualTo("안녕");
}
}
  • 가장 간단한 메세지 불러오는 테스트
@Test
    void notFoundMessageCode(){
    assertThatThrownBy(()->ms.getMessage("no-code", null,null)).isInstanceOf(NoSuchMessageException.class);
}
  • 메세지가 없을때
@Test
    void argumentMessage(){
    String message = ms.getMessage("hello.name", new Object[]{"spring"}, null);
    assertThat(message).isEqualTo("안녕 Spring");
}
  • 인자로 넣어 줬을때
@Test
    void enLang() {
    assertThat(ms.getMessage("hello", null, Locale.ENGLISH)).isEqualTo("hello");
}
  • Locale 이 영어일때

타임리프 메시지 적용

#{...}을 사용하면 스프링의 메시지를 편리하게 조회 할수 있음

0개의 댓글