메세지
국제화
스프링 부트 메시지 소스 설정
application.properties
spring.messages.basename=messages
메세지 만들기
messages.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 notFoundMessageCodeDefaultMessage(){
String result=ms.getMessage("no_code",null,"기본 메시지",null);
assertThat(result).isEqualTo("기본 메시지");
}
NoSuchMessageException
발생 @Test
void argumentMessage(){
String message=ms.getMessage("hello.name", new Object[]{"Spring"},null);
assertThat(message).isEqualTo("안녕 Spring");
}
타임리프 메시지 적용
<div th:text="#{label.item}"></h2>
파라미터 적용하는 법
hello.name=안녕 {0}
<p th:text="#{hello.name(${item.itemName})}"></p>
messages_en.properties에 영어 메세지를 추가하고 #{...} 를 통해서 메시지를 사용하도록 하면 알아서 국제화 적용됨
LocaleResolver