메세지 국제화

최준호·2021년 8월 28일
0

Spring

목록 보기
20/48
post-custom-banner

메세지란

프로젝트의 HTML에 메세지가 하드코딩되어 있는데 이런 다양한 메세지를 한곳에서 관리하도록 하는 기능을 메세지 기능이라고 한다.

메세지 관리용 파일(ex. message.properties)을 만들고 파일에서 값들을 불러와서 사용하는 것이다.

국제화

메세지 관리 파일로 프로젝트의 메세지들을 구성했다면 이제 국적을 선택함에 따라 해당 국적 언어의 메세지 파일로 연결시켜주면 된다.

접근 국적을 확인하는 방법은 사용자가 직접 선택할 수도 있고 HTTP accept-language 헤더 값을 사용하면 되고 쿠키 등을 사용해서 처리하면 된다.

메세지 국제화 기능을 직접 구현할 수도 있겠지만 스프링에서 기본적인 기능을 제공한다.

스프링 메세지 소스 설정

기존 스프링은 MessageSource interface를 @Bean으로 등록하여 사용했었는데 스프링 부트에서는 자동으로 Bean으로 등록해 놓는다. 그리고 spring에서 소스를 설정할 수 있는데

spring.messages.basename=messages

다음과 같이 기본 설정으로 해놓으면 resource 폴더 내에 메세지 설정 파일들을 사용할 수 있다.

웹 어플리케이션에 메세지 적용

<h2 th:text="#{page.addItem}">상품 등록</h2>

타임리프의 경우 위 코드와 같이 #{설정이름} 으로 설정해주면 메세지 설정 파일에 설정해놓은 명칭으로 변환되어 적용되는 것을 확인할 수 있다.

또한 파라미터를 적용하기 위해서

<p th:text="#{hello.name(상품명)}"></p>

과 같이 적용해서 사용할 수 있다.

웹 어플리케이션에 국제화 적용

놀랍게도 우리는 이미 프로젝트에 국제화를 적용 시켜놓았다. 그냥 Spring을 실행시키고 크롬의 경우

다음과 같이 한국어보다 영어를 우선순위로 놓으면 사이트에서 자동으로 인식한다.

Spring에서 기본적인 설정으로 웹 브라우저의 언어 설정 값인 Accept-Language의 우선순위 값을 통해서 적용한다.

만약 사이트 내에서 쿠키나 세션을 통해서 국제화를 적용하고자 한다면 LocaleResolver라는 인터페이스를 제공한다.

Locale을 사용자가 선택하여 사용하고자 한다면 LocaleResolver의 구현체를 변경해서 쿠키나 세션 기반의 국제화 선택 기능을 사용할 수 있다.

profile
해당 주소로 이전하였습니다. 감사합니다. https://ililil9482.tistory.com
post-custom-banner

0개의 댓글