- 메시지
- html 에 하드코딩된 "상품명", "가격" 등등을 하드코딩 하지않고,
한 파일안에 정의해놓고 필요한 부분을 불러서 사용하면 일관성있고,
코드오류를 줄일 수 있다. - 또, 해당 필드명을 바꾼다 하였을때, 설정파일 하나만 수정하면 전체가 바뀐다.
- html 에 하드코딩된 "상품명", "가격" 등등을 하드코딩 하지않고,
- 국제화
- 나라별 언어 셋팅
(kr에서 들어오면 한국말, eu에서 들어오면 영어)
- 나라별 언어 셋팅
수동 빈 등록 - (스프링 부트에서는 자동등록)
@Bean
public MessageSource messageSource() {
javaResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("messages", "errors");
messageSource.setDefaultEncoding("utf-8");
return messageSource;
}
자동 빈 등록 - 부트
application.properties에 밑 구문 추가
spring.messages.basename=messages,config.i18n.messages
스프링 부트 메시지 소스 기본 값
spring.messages.basename=messages
1. properties 생성
메시지와 국제화
- ms.getMessage("정의된 이름", null, null)
- code: "정의된 이름"
- args: null //변수명
- locale: null //http header에 정의된 locale값 또는 지정
- 정의한 code 값이 message.properties 안에 없으면
- NoSuchMessageExcption 예외가 발생한다.
- 예외가 발생했을 때 예외처리를 해주거나
- (code, args, defaultmessage, local) 값을 매개변수로 작성해놓으면 값을 찾지 못했을 경우
defaultmessage가 전달된다.
타임리프에서의 메시지 호출
"#{(정의된 이름)}" - ex) th:text="#{label.item}"
스프링은 Accept-Languge 헤더 값을 사용해서 구분한다.
LocaleResolver
스프링은 Locale 선택 방식을 변경할 수 있도록 LocaleResolver 인터페이스를 제공한다.
스프링은 기본으로 AcceptHeaderLocaleResolver를 사용한다.
LocaleResolver 변경 :
LocaleResolver의 구현체를 변경해서 쿠키나 세션 기반의 Locale 선택 기능을 사용할 수 있다.
(고객이 직접 Locale을 선택할 수 있도록 하는것)
출처: https://tan-sog.tistory.com/90
'Spring' 카테고리의 다른 글
[Spring] Bean Validation (0) | 2024.05.16 |
---|---|
[Spring] 검증(Validation) (1) | 2024.05.15 |
[Spring] Thymeleaf(타임리프) 스프링 통합과 폼 (0) | 2024.05.11 |
[Spring] Thymeleaf(타임리프) 기본 -2 (0) | 2024.05.11 |
[Spring] Thymeleaf(타임리프) 기본 -1 (0) | 2024.05.09 |