다국어 처리

jinkyung·2021년 2월 19일
0

Spring

목록 보기
19/24
post-thumbnail

message 패키지 및 하위 파일들을 만든다

messageSource_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.link.insertBoard=Insert Board	

messageSource_ko.properties
한국어(아시아권 언어)는 유니코드로 변환하여 등록해야 한다.
그래서 먼저 txt 파일에 쓴 후 properties파일에 복사 붙여넣기를 한다.

# login.jsp
message.user.login.title=로그인 
message.user.login.id=아이디 
message.user.login.password=비밀번호 
message.user.login.loginBtn=로그인 

message.user.login.language.en=영어
message.user.login.language.ko=한글

#getBoardList.jsp
message.board.list.mainTitle=게시글 목록
message.board.list.welcomeMsg=님! 게시판에 오신 걸 환영합니다.
message.board.list.search.condition.title=제목 
message.board.list.search.condition.content=내용 
message.board.list.search.condition.btn=검색 
message.board.list.table.head.seq=번호
message.board.list.table.head.title=제목
message.board.list.table.head.writer=작성자
message.board.list.table.head.regDate=등록일
message.board.list.table.head.cnt=조회수
message.board.list.link.insertBoard=새글 등록	

유니코드로 변환되어 표시된다.

presentation-layer.xml

  • 스프링에서 properties 파일을 사용할 수 있도록 등록해줘야 한다.
    properties파일의 이름과 value의 이름은 반드시 같아야 한다.

  • locale resolver 등록

  • 해당 화면의 언어를 변경하고 싶을 때 쓸 수 있는 것이 LocaleChangeInterceptor 클래스이다.(헤더에 들어오는 locale 정보를 가로채서 우리가 알아서 하겠다.) 따라서 설정 파일에 인터셉터를 등록한다.
    lang이라는 파라미터에 전송되는 locale에 따라 언어를 변경할 수 있다.

login.jsp

  • jsp화면에서 읽어들인 프로퍼티 파일을 사용해야 한다.
    taglib을 추가하고 코드를 변경한다.
    <spring:message code/> 태그의 code속성 값으로 메시지 파일에 등록된 메시지 키를 등록하면 locale에 해당하는 메시지를 출력할 수 있다.
<%@ 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><spring:message code="message.user.login.title"/></title>
</head>
<body>
	<center>
		<h1><spring:message code="message.user.login.title"/></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>
		<hr>
		<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="${userVO.id}"/></td>
				</tr>
				<tr>
					<td bgcolor="orange"><spring:message code="message.user.login.password"/></td>
					<td><input type="password" name="password"
							value="${userVO.password}"/></td>
				</tr>
				<tr>
					<td colspan="2" align="center">
						<input type="submit" value="<spring:message code="message.user.login.loginBtn"/>"/>
					</td>
				</tr>
			</table>
		</form>
	</center>
</body>
</html>

파라미터 lang에 en을 전달 했을 때

0개의 댓글