IT Study/Spring

Spring - 다국어 처리(국제화)

hhyyyjun 2023. 1. 3. 14:10

하나의 페이지를 여러가지의 언어로 서비스하는 것을 말한다.

과거에는 언어별로 페이지를 다르게 제작했었다.

하지만 Spring 프레임워크의 다국어 처리 기능을 사용하게 되면서 별도 페이지 제작을 할 필요가 없어졌다.

실습을 통해 영어와 한글 처리를 진행해보았다.

1. 메세지 파일 제작

1) 다국어 처리 관련 파일 message 폴더 생성

메세지 파일의 위치는 src/main/resources 에 message 폴더로 생성

2) 일반 파일로 선택하여 파일 확장자를 .properties로 생성

=> 스프링에서 인지하여 사용해야 하기 때문이다.

3) 언어 선택을 Locale 코드 정보로 수행

Locale 코드란?

사용자의 언어, 국가뿐 아니라 사용자 인터페이스에서 사용자가 선호하는 사항을 지정한 매개변수의 모임이다.

보통 로케일 증명자는 적어도 하나의 언어 증명자와 하나의 지역 증명자를 가지고 있다.

국가별 Locale 코드 : https://ddolcat.tistory.com/1953

3-1) 국가별 Locale 코드를 확인하고 파일명에 언어에 해당하는 Locale 코드를 추가하게 된다.

ex) xxx_en.properties, xxx_ko.properties... 등등

3-2) 파일 내부에는 메세지 키+메세지 값을 작성

유니코드로 작성

- 파일에 메세지 설정

View에서 작성할 메세지 코드와 동일하게 사용할 메세지 코드 설정

- #은 주석

- 한글로쓰면 자동으로 유니코드 처리가 된다.

2. DispatcherServlet.xml에 MessageSource 클래스 <bean> 등록

스프링 설정파일(DispatcherServlet.xml)에게 메세지 파일들을 읽어들일 수 있도록 클래스(MessageSource) 추가 => bean 등록

<!-- 다국어 처리 id는 고정 > 변경X -->
	<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
      <property name="basenames">
         <list>
            <value>message.messageSource</value>
         </list>
      </property>
   </bean>

3. Locale 정보를 알아서 판단해줄 LocaleResolver 등록

스프링 설정파일(DispatcherServlet.xml)에서 SessionLocaleResolver 등록

<!-- LocaleResolver -->
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />

4. Locale 정보를 변경해서 사용하고 싶을 때의 방법

Locale 정보를 변경해줄 LocaleChangeInterceptor 클래스 등록

lang 파라미터로 Locale 정보를 변경할 수 있음

<!-- LocaleChangeInterceptor -->
	<mvc:interceptors>
		<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
			<property name="paramName" value="lang" />
		</bean>
	</mvc:interceptors>

 

5. 사용하기

스프링 라이브러리를 사용하기 위해 상단에 코어를 추가한다.

<!-- 라이브러리 추가해야 한다. -->
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!-- 메세지 키에서는 .properties 파일에서 설정한 메세지 키와 동일하게 작성해주어야 한다. -->
<spring:message code="메세지 키"/>
 

실습

1) View에서 영어와 한글처리를 위해 Locale 코드를 확인하여 .properties 파일을 생성하였다.

변경될 부분의 메세지를 각각 설정해주었다.

2) 다른 언어로 처리하기 위해 경로를 위 4번 에서 value로 설정한 lang에 변경할 언어 locale 코드를 넣어주었다.

3) 다국어 처리할 태그에 spring:message 태그를 통해 속성값을 .properties에서 설정한 메세지 코드로 작성해주었다.

웹 화면

상단의 ENGLISH를 클릭한 경우

제대로 다국어 처리가 된 것을 확인하였다.

코드 확인

https://github.com/hhyyyjun/SpringLanguage

src/main/resources에 각 다국어처리 .properties 파일 생성

login.jsp 파일에서 메세지 코드 설정