이번에는 다국어 처리에 대해 알아보려고 한다.
다국어 처리라는 것은 하나의 출력값을 여러가지 언어로 표시해주는 기능을 말한다.
자동으로 표시되는 것이 아닌 제공하고자 하는 언어별로 지역코드, 언어설정에 따라 제공해주는 기능이다.
@Bean
public SessionLocaleResolver localResolver(){
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.KOREA);
return localeResolver;
}
먼저 RestfulWebserviceApplication 클래스에 LocaleResolver 메서드를 생성해주었는데,
return 값이 SessionLocaleResolver 로 해야해서 SessionLocaleResolver 메서드로 수정해서 작성해주었다.
찾아보니 아마 상위 인터페이스에 LocaleResolver가 선언되어있어 사용하는데에 문제가 없고 버전 차이인 것 같다..
그 후 application.yml 파일에서
spring:
messages:
basename: messages
설정을 추가해준다.
다국어 파일은 resources > messages.properties 파일에 저장해 둘 것이기 때문에 새로 생성해준다.
greeting.message=안녕하세요
생성 후 처음이니 한국어 인사만 저장해둔다.
다국어 처리를 여러개 진행할 것이기 때문에 파일을 복사하여 프랑스어/영어도 진행해본다.
이번 다국어 처리는 단순히 문자 변경 작업을 해볼 것이기 때문에 HelloWorldController에 작업을 해보려고 한다.
@RestController
public class HelloWorldController {
//어노테이션을 통한 의존성 주입
@Autowired
private MessageSource source;
@GetMapping(path = "/hello-world-internationalized")
public String helloWorldInternationalized(
@RequestHeader(name = "Accept-Language", required = false) Locale locale){
//다국어 지역 설정을 header값에 포함
//Accept-Language라는 값이 Header에 포함되지 않았을 경우에는 자동적으로 Locale값이 보이게 된다.
return source.getMessage("greeting.message",null, locale);
}
}
실행을 시켜보면 .,.. 나는 인코딩 문제로 ????가 나왔다..ㅎ
인코딩 설정을 하려면
File > Settings > File Encodings > 밑에 Properties Files 에서 UTF-8로 설정해주면 된다!
이번에는 Header 값에 Locale 값을 추가해서 호출해보려한다.
이렇게 Accept-language 에 fr값을 입력하면 Bonjour값을 만날 수 있다.
'프로그래밍 > SPRING BOOT' 카테고리의 다른 글
[인프런 : spring-boot] 프로그래밍으로 제어하는 Filtering (1) | 2022.09.01 |
---|---|
[인프런 : spring-boot] XML format / 데이터 제어 Filtering (0) | 2022.09.01 |
[인프런 : spring-boot] 유효성 체크를 위한 Validation API (0) | 2022.09.01 |
[인프런 : spring-boot] DELETE-HTTP Method (0) | 2022.08.30 |
[인프런 : spring-boot] AOP를 이용한 예외처리 (0) | 2022.08.30 |