티스토리 뷰
Spring은 jsp 페이지를 다양한 언어로 지원할 수 있도록 할 수 있는 다국어 처리 기능 또한 가지고 있다.
1개의 페이지를 3가지 언어로 제작하려면, 언어별로 jsp 파일을 만들 필요가 없이 properties 파일을 사용하여 자동 맵핑하게끔 할 수 있다.
1. message 파일 작성
사용자가 원하는 언어로 메시지를 출력하려면 각 언어에 따른 메시지 파일을 작성해야 한다. 기본적이로 이 메시지 파일은 properties 파일을 이용하며, 해당 언어를 사용하는 Locale 정보를 결합하여 작성한다. (한글의 경우, txt 파일로 먼저 작성 후, properties 파일에 옮기면 STS 가 알아서 변환해준다.)
1) messageSource_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.link.insertBoard=\uC0C8\uAE00 \uB4F1\uB85D
-----------------------------------------messageSource_ko.txt----------------------------------
# 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=새글 등록
2) 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
2. MessageSource 등록
언어별 파일 작성을 끝냈으면, 스프링 설정 파일에서 이 메시지 파일들을 읽어 들이는 MessageSource 클래스를 bean 객체로 등록해야 한다.
◎presentation-layer.xml
<!-- MessageSource Registration -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>message.messageSource</value>
</list>
</property>
</bean>
이때, 프로퍼티 변수는 리스트 형태로 들어가기 때문에 확장자명이나 _ko, _en 같은 꼬리말은 생략 가능하다.
3. LocaleResolver 등록
웹브라우저가 서버에 요청하면 브라우저의 Locale 정보가 HTTP 요청 메시지 헤더에 자동으로 설정되어 전송된다. 이때, 스프링은 LocaleResolver 를 통해서 클라이언트의 Locale 정보를 추출하고, 이 Locale 정보에 해당하는 언어의 메시지를 적용한다.
◎presentation-layer.xml
<!-- LocaleResolver Registration -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>
4. Locale 변경하기
브라우저에 설정된 Locale 언어 이외에 다른 언어로 화면을 변경하고 싶을 때는 LocaleChangeInterceptor 클래스를 이용하여 변경이 가능하다.
◎presentation-layer.xml
<!-- LocaleChangeInterceptor Registration -->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang"></property>
</bean>
</mvc:interceptors>
5. jsp 화면 처리
jsp 파일에서 메시지 파일에 등록한 메시지로 화면을 구성하려면 스프링에서 제공하는 태그 라이브러리를 이용해야 한다.
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
그러고 나서 다음처럼 <spring:message/> 태그의 code 속성 값으로 메시지 파일에 등록된 메시지 키를 등록하면 Locale에 해당하는 메시지를 출력할 수 있다.
<title><spring:message code="message.user.login.title"></spring:message></title>
'[JAVA] > Spring' 카테고리의 다른 글
[Spring] Spring Project 예제: To Do List (0) | 2021.07.01 |
---|---|
[Spring] JSON & XML 형식으로 데이터 변환 (0) | 2021.06.28 |
[Spring] 파일 업로드 (0) | 2021.06.28 |
[Spring] Spring MVC 8: 비즈니스 컴포넌트 로딩 (0) | 2021.06.28 |
[Spring] Spring MVC 7: 비즈니스 컴포넌트 사용 (0) | 2021.06.28 |
- AsyncStorage
- react-native
- 이탈리안 레스토랑
- await
- 파니노구스토
- redux
- 인천 구월동 맛집
- javascript
- 인천 구월동 이탈리안 맛집
- 정보보안기사 #실기 #정리
- redux-thunk
- Promise
- react
- Async
- 맛집
- Total
- Today
- Yesterday