온 코딩

[Spring](게시판 예제) 언어변환 본문

카테고리 없음

[Spring](게시판 예제) 언어변환

SummerON 2021. 6. 28. 18:47

홈페이지에서 영어로 변환하는 그런 것 

 

미리 properties파일에 다국어 출력 파일을 저장해 놓고 그것을 사용함 

1. messageResource 파일 설정

messageResource_en.properties

#login.jsp
message.user.login.title=LOGIN
message.user.login.id=ID
message.user.login.password=PASSWORD
message.user.login.loginBtn=LOG-IN


message.user.login.language.en=English
message.user.login.language.ko=Korean

#getBoardList.jsp
message.board.list.mainTitle=BOARD LIST
message.board.list.welcomeMsg= !Welcome to my Board
message.board.list.search.condition.title=TITLE
message.board.list.search.condition.content = CONTENT
message.board.list.search.condition.btn=Search
message.board.list.table.head.seq=SEQ
message.board.list.table.head.title=TITLE
message.board.list.table.head.writer=WRITER
message.board.list.table.head.regDate=REGDATE
message.board.list.table.head.cnt=CNT
message.board.list.table.head.insertBoard=Insert Board

messageResource_ko.properties

#login.jsp
message.user.login.title=\ub85c\uadf8\uc778
message.user.login.id=\uc544\uc774\ub514
message.user.login.password=\ube44\ubc00\ubc88\ud638
message.user.login.loginBtn=\ub85c\uadf8\uc778


message.user.login.language.en=\uc601\uc5b4
message.user.login.language.ko=\ud55c\uae00

#getBoardList.jsp
message.board.list.mainTitle=\uac8c\uc2dc\uae00 \ubaa9\ub85d
message.board.list.welcomeMsg=\ub2d8! \uac8c\uc2dc\ud310\uc5d0 \uc624\uc2e0\uac78 \ud658\uc601\ud569\ub2c8\ub2e4.
message.board.list.search.condition.title=\uc81c\ubaa9
message.board.list.search.condition.content =\ub0b4\uc6a9
message.board.list.search.condition.btn=\uac80\uc0c9
message.board.list.table.head.seq=\ubc88\ud638
message.board.list.table.head.title=\uc81c\ubaa9
message.board.list.table.head.writer=\uc791\uc131\uc790
message.board.list.table.head.regDate=\ub4f1\ub85d\uc77c
message.board.list.table.head.cnt=\uc870\ud68c\uc218
message.board.list.table.head.insertBoard=\uc0c8\uae00 \ub4f1\ub85d

 

한글 아스키코드 변환 법 : C:\Program Files\Java\jdk1.8.0_251\bin/native2ascii.exe 에서 가능

혹은 messageSource_ko.txt 파일에 한글로 입력 후 propertie 파일로 복사할 경우 자동 변환 

 

2. presentation-layer.xml

<!-- 다국어설정 -->
    <!-- MessageSource 등록 -->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    	<property name="basenames">
    		<list>
    			<value>message.messageSource</value>
    		</list>
    	</property>
    </bean>
    <!-- LocaleResolver등록 -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>
	<!-- LocaleChangeInterceptor 등록 -->
	<mvc:interceptors>
		<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
			<property name="paramName" value="lang"></property>
		</bean>
	</mvc:interceptors>

1) Message Source 등록

  • ResourceBundleMessageSource의 <bean>이름은 messageSource 로 고정 
  • <value>값을 message.messageSource 만 적는 이유 = > 확장자 생략은 규칙, _en등을 생략함으로서 어떤메세지 파일이 적용되는 지는 기본 언어 설정과  Locale의 변화에 따라 해당 언어의 메시지가 자동으로 선택됨

2) LocaleResolver 등록 

  • 고정 아이디 사용 
  • sessionLocaleResolver : 세션으로부터 Locale 정보를 추출하고 유지
LocaleResolver 종류 기능 설명
AcceptHeaderLocaleResolver 브라우저에서 전송된  HTTP 요청 헤더에서 Accept-Language에 설정된  Locale로 메시지를 적용한다.
CookieLocaleResolver Cookie에 저장된 Locale 정보를 추출하여 메시지를 적용한다
SessionLocaleResolver HttpSession에 저장된 Locale 정보를 추출하여 메시지를 적용한다
FixedLocaleResolver 웹 요청과 무관하게 특정 Locale로 고정한다.

3) LocaleChangeInterceptor - Locale 변경

<property name="paramName" value="lang"></property> 

Setter 주입 : lang이라는 파라미터로 특정 로케일 전송 되면 해당 로케일로 변경하겠다는 설정 

 

3. JSP 파일 작성 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>    

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>

<body align="center">
	<h1><spring:message code="message.user.login.title"></spring:message></h1>
	<a href="login.do?lang=en"><spring:message code="message.user.login.language.en" /></a>&nbsp;&nbsp;
	<a href="login.do?lang=ko"><spring:message code="message.user.login.language.ko" /></a>&nbsp;&nbsp;
	<hr>
	<div  align="center">
	<form action="login.do" method="post">
		<table border="1" cellpadding="0"  cellspacing="0">
			<tr>
				<td bgcolor="orange"><spring:message code="message.user.login.id" /></td>
				<td><input type="text" name="id" value="${user.id }"></td>
			</tr>
			
			<tr>
				<td bgcolor="orange"><spring:message code="message.user.login.password" /></td>
				<td><input type="password" name="password" value="${user.password }"/></td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input type="submit" value="<spring:message code="message.user.login.loginBtn" />" />
				</td>
			</tr>
		</table>
	</form>
	</div>
</body>
</html>

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

taglib 사용 

출력값은 미리 프로퍼티 파일에 저장해놓은 변수명을 통해 

ign="center">
<spring:message code="message.user.login.title"> 이런 식으로 작성

 

Comments