728x90
/* 메시지 국제화 */
내가 만들고 있는 웹이 여러 언어 환경을 지원할 수 있도록 설계하는 것을 의미한다. (독일에 있는 독일인이 내 웹을 보고싶다 -> 자동으로 독일어를 지원하게 하는 웹)
/* 디폴트값 설정 */
나는 REST API로 메시지 국제화를 해볼 생각이다. 그래서 localhost:8080/hello-world-internationaized 를 방문했을 때 Good Morning 을 디폴트 값으로 설정하고 독일어를 지원할 생각이다. 그러면 디폴트값은 다음과 같이 설정할 수 있다.
// messages.properties
good.morning.message = Good Morning
파일명은 반드시 messages.properties로 해야한다. yml파일은 안된다 (혹시 되나요?)
/* 독일값 설정 */
// messages_nl.properties
good.morning.message = Goedemoergen
독일이 nl 이므로 messages_nl.properties와 같이 지어준다. 만약 프랑스일경우는 messages_fr.properties로 하면 되겠다.
/* 컨트롤러 설정 */
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Locale;
@RestController
public class HelloWorldController{
private final MessageSource messageSource;
@Autowired
public HelloWorldController(MessageSource messageSource) {
this.messageSource = messageSource;
}
@GetMapping(path = "/hello-world-internationalized")
public String helloWorldInternationalized(){
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage("good.morning.message",null, "Default",locale);
}
}
MessageSource 객체를 불러오고 생성자 주입을 한다.
GetMapping을 설정해준다.
message.Source.getMessage -
- 첫번째 패러미터 : 참조할 값
- 두번째 패러미터 : args
- 세번째 패러미터 : 디폴트값 (근데 우리는 이미 디폴트값을 messages.properties에 설정해서 사실상 무의미하다)
- 네번째 패러미터 : locale (이 값이 fr이면 fr, nl이면 nl, ko면 ko 이렇게 매핑을 해준다.)
/* Test (Talend API) */
다음과 같이 얻을 수 있다.
728x90
'백엔드' 카테고리의 다른 글
[Spring Boot] JsonIgnore, JsonIgnoreProperty, JsonFilter (2) | 2024.01.04 |
---|---|
[Spring Boot] RestAPI - ResponseEntity, Hateoas (1) | 2024.01.04 |
[Spring Boot] @Validation 유효성 (0) | 2023.12.17 |
[Spring Boot] Spring JDBC (0) | 2023.12.16 |
[Spring Boot] @ConfigurationProperties (0) | 2023.12.16 |