웹개발

[JAVA] 전자정부프레임워크 - 웹 페이지 다국어 처리

u_SZero 2024. 1. 23. 12:07

개인이 복습하기 위한 글이기에 정확성이 떨어질 수 있으니 참고만 부탁드립니다!

참조 페이지

현재 전자정부프레임워크를 사용한 maven 프로젝트를 다루는 중인데

이 웹 페이지를 한글/영어 버전으로 전환하는 과정을 맡게 되었다.

 

사전 조사를 하던 중 전자정부프레임워크에서 사용하는 다국어 처리 방법이 있다는 것을 알게 되었고

찾아본 것에 대해 정리해보려 한다.

 

전자정부프레임워크에서 제공하는 다국어 처리 방법

 

egovframework:rte:ptl:internationalization [eGovFrame]

전자정부 표준 프레임워크에서는 Spring MVC 에서 제공하는 LocaleResolver를 이용한다. 우리는 여기서 LocaleResolver를 알아보고 적용하는 설정과 다국어가 적용된 message resource 를 가져와 활용하는 것을

www.egovframe.go.kr

 

해당 링크에 들어가면 xml 설정부터 jsp 파일에서 어떻게 사용하는 것인지 설명해주고 있다.

 

Spring MVC 는 다국어를 지원하기 위하여 아래와 같은 종류의 LocaleResolver 를 제공하고 있다.
CookieLocaleResolver : 쿠키를 이용한 locale정보 사용
SessionLocaleResolver : 세션을 이용한 locale정보 사용
AcceptHeaderLocaleResolver : 클라이언트의 브라우져에 설정된 locale정보 사용
Bean 설정 파일에 정의하지 않을 경우 AcceptHeaderLocaleResolver 를 default 로 적용된다.

 

 

applicationContext.xml

적용시 SessionLocaleResolver를 사용하였다.

이를 설정해주기 위해 Bean 설정을 해주어야 하는데

src/main/resources/applicationContext.xml 파일에 아래 구문을 입력하여 설정해준다.

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

 

 

properties 파일의 내용을 가져오기 위해서 properties파일이 위치한 경로를 설정해준다.

  <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
      <property name="basenames">
        <list>
         <value>classpath:/message/message</value>
        </list>
      </property>
  </bean>

 

 

web.xml

이후 web.xml 파일에서

아래 코드를 이용하여 encoding설정을 해준다.

...
   <filter>
       <filter-name>encoding-filter</filter-name>
       <filter-class>
           org.springframework.web.filter.CharacterEncodingFilter
       </filter-class>
       <init-param>
           <param-name>encoding</param-name>
           <param-value>UTF-8</param-value>
       </init-param>
   </filter>
 
  <filter-mapping>
      <filter-name>encoding-filter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
...

 

 

properties 파일 생성

 

bean으로 설정한 위치에 message_ko.properties / message_en.properties 파일을 생성해준다.

#message_ko.properties

hello=안녕하세요!
#message_en.properties

hello=Hello!

 

samlple-servlet.xml

링크에 들어있는 Locale(언어) 설정을 읽어들이는 것에 필요한 bean 설정을 해주는 부분이라 이해했다.

 

아래 코드는 cookie에 저장되어 있는 Locale(언어) 설정을 읽어들이는 것에 필요한 bean 설정 구문이다.

<!-- 세션을 이용한 Locale 이용시-->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>

 

 

이제 기본적인 설정은 끝났고

이를 사용하는 방법은

jsp파일 상단에

<%@ taglib prefix="spring" uri=http://www.springframework.org/tags %>

 

로 spring 메시지 태그를 설정해준 후

사용하고자 하는 곳에 

<spring:message code="hello" />

와 같이 적용해준다.

 

참고로 서버단에서 불러오는 것이기 때문에 jsp 내부의 script 문에서는 사용이 가능하지만

별도의 js파일에서는 사용이 불가능하다는 점을 유의하시길 바란다.