일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 완도산회
- 2638
- dp
- 양꼬치
- 2839
- 맛집
- 쓰레드 풀
- Spring
- 문자열 압축
- 동적 프로그래밍
- 호유동
- 1로 만들기
- 설탕 배달
- 고모네 콩탕
- 스프링
- 다이나믹 프로그래밍
- 맛집 투어
- 백준
- 스프링 MVC
- 투어
- 포두부 보쌈
- 프로그래머스
- 2020 KAKAO BLIND
- BFS
- 서블릿
- Servlet
- 2589
- mvc
- HTTP API
- 알고리즘
- Today
- Total
프로그래밍 공방
국제화 / Internationalization / I18N 본문
국제화 란?
글로벌한 서비스를 제공하는 경우에 다양한 나라에서 해당 서비스에 접근하게 되는데 국제화는 서비스를 각 지역의 해당 언어로 제공하기 위해 설계하고 개발하는 과정을 말한다
예를 들어 messages.properties 라는 파일로 메시지를 관리한다고 가정하면
국가별 관리를 위해 messages_ko.properties / messages_en.properties / ... 를 추가로 만들어서 접근하는 사용자의 지역에 따라 다른 properties 를 적용해 주면 서비스를 국제화 할 수 있다
- messages_ko.properties
user=사용자
user.name=이름
user.age=나이
- messages_en.properties
user=user
user.name=name
user.age=age
사용자가 어느 지역에서 접근하는지, 어떤 언어를 제공할 지 인식하는 방법은 HTTP accept-language 값을 사용하거나 직접 언어를 선택하게 하고 쿠키 등을 사용해서 처리하는 방법 등이 있다
참고
Spring Boot의 경우에는 기본적으로 MessageSource 빈을 사용해서 메시지, 국제화 등의 기능을 제공한다
아래와 같이 application의 값을 변경함으로써 MessageSource의 설정을 변경할 수 있다.
- application.properties
spring.messages.basename=messages
※ 자세한 설정 사항은 아래 링크에서 확인 가능하다 (Spring 버전 확인 필요)
- https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties
LocaleResolver
스프링은 Locale 선택 방식을 변경할 수 있도록 LocaleResolver 라는 인터페이스를 제공하는데, 스프링 부트는 기본으로 Accept-Language를 활용하는 AcceptHeaderLocaleResolver를 사용한다
* 쿠키나 세션 기반의 Locale 선택 기능을 제공하기 위해 Locale 선택 방식을 변경하려면 LocaleResolver 의 구현체를 변경해줘야 한다