Java/Spring
[Spring]스프링 프로젝트 다국어 처리
오늘의개발부
2020. 2. 3. 20:51
반응형
1. 다음과 같이 propertis 파일을 만들어준다.
다음처럼 키값 형태로 데이터를 넣는다.
main.title= {0}의 홈페이지입니다.
main.hello=안녕하세요.
2. language-context.xml을 생성한다.
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list> <!-- 메세지 파일의 위치 lang_언어.properties 파일을 찾음 -->
<value>/WEB-INF/languages/lang</value>
</list>
</property>
<!-- 파일의 기본 인코딩 -->
<property name="defaultEncoding" value="UTF-8" />
<!-- properties 캐시를 확인하는 주기 지정 -->
<property name="cacheSeconds" value="3600" />
</bean>
<!-- 언어 정보를 세션에 저장. 디폴트를 kor로 사용 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="kor"/>
</bean>
3. web.xml에서 language-context.xml을 읽어준다
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/root-context.xml
/WEB-INF/spring/language-context.xml
</param-value>
</context-param>
4. view에서 spring 태그를 이용해 사용한다.
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
.
.
.
<title><spring:message code="main.title" arguments="나" text="defalut" /></title>
<!-- properties 파일 내에 {0} 등으로 선언해주면 arguments의 값을 대입할 수 있다-->
5. 로그인 등의 로직에서 사용자의 lang 코드 값에 따라 언어를 바꿔준다.
@Inject
SessionLocaleResolver localeResolver;
@GetMapping("/login")
public String setLogin(
@RequestParam(name="lang", defaultValue = "")String langCode,
HttpServletRequest request,
HttpServletResponse response) {
Locale locale = new Locale(langCode);
localeResolver.setLocale(request, response, locale);
return "/system/main";
}
예시 소스. 로그인할 때 langCode의 값을 변경해준다고 할 때 로그인 로직을 끝낸 후 위와 같이 간단하게 변경할 수 있다. 실제로는 파라미터로 받을 게 아니라 로그인 처리시 사용자의 언어값을 DB에서 가져와서 변경해줄 것이다.
반응형