전자정부 다국어페이지 구현

Nux·2022년 7월 26일
0
post-custom-banner
  • 모든 경로를 인터셉트해서 language 체크->language변경

message properties 작성

  • 경로: main – resources – egovframework – message – context내

예시

  • message-context.properties(디폴트)
home.name=연습 홈페이지
home.content=반갑습니다.
  • message-context_ko.properties
home.name=연습 홈페이지
home.content=반갑습니다.
  • message-context_en.properties
home.name= Web Page Practice
home.content=Hello

빈 설정

Context-common.xml

  • context.xml: 톰캣에서 구동되는 웹 어플리케이션 자체 설정 관리
  • 사용할 message.properties 파일을 설정
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>classpath:/egovframework/message/com/message-common</value>
			… 추가 가능
</list>
        </property>
        <property name="cacheSeconds">
            <value>60</value>
        </property>
    </bean>

Servlet.xml

  • servlet.xml: 스프링 설정파일
  • interceptor를 설정해서 페이지 접속 시 인터셉트해서 language를 설정함
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="language" />
</bean>

Controller

// 언어를 영어로 바꿈
@ResponseBody
@RequestMapping(value = "langEng.do")
public void langKor (HttpServletRequest request, HttpServletResponse response) throws Exception {
	String language = “en";
	Locale locale = new Locale(language);
	LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
	localeResolver.setLocale(request, response, locale);
}

// 언어를 한국어로 바꿈
@ResponseBody
@RequestMapping(value = "langKor.do")
public void langKor (HttpServletRequest request, HttpServletResponse response) throws Exception {
	String language = “ko";
	Locale locale = new Locale(language);
	LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
	localeResolver.setLocale(request, response, locale);
}

View

  • 아이콘
<img src="/kor.png" style="height: 50px" id="lang-kor" class="lang">
<img src="/eng.png" style="height: 50px" id="lang-eng" class="lang">
  • 제이쿼리 에이젝스
$(document).on("click", "#lang-kor", function(){
	alert("kor클릭");
	$.ajax({
		url:"/langKor.do",
		success: function(){
			location.reload();
		}
	})
});

$(document).on("click", "#lang-eng", function(){
	alert("eng클릭");
	$.ajax({
		url:"/langEng.do",
		success: function(){
			location.reload();
		}
	})
});
  • 변경 언어 출력
<spring:message code="msg.test" arguments="${home.content }"/>
post-custom-banner

0개의 댓글