티스토리 뷰
다국어 처리란 하나의 JSP 페이지를 다양한 언어로 서비스하는 것이다.
1. 메시지 파일 작성
- src/main/resources 폴더에 패키지를 생성헌다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # 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 | cs |
- 한글 메시지는 유니코드로 변환하여 등록해야 한다.
- 일반 텍스트 문서에서 작성하여 properties파일에 붙여 넣으면 유니코드로 변경된다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # 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 | cs |
2. messageSource.txt등록
- messageSource도 아이디가 정해져 있다.
- basenames는 메시지 파일이 저당된 배열형태로 받아야 하는데 관리를 위해 마지막 '.'을 기준으로 왼쪽은 무조건 패키지 경로로 처리하고 오른쪽은 파일 이름으로 하고, 파일 이름은 지정하는 언어와 확장자는 생략하여 등록할 수 있도록 규정되었다고 한다.
>>> 이 과정을 위해 messageSoruce.txt 파일을 추가한 건가 싶었는데 지워도 상관 없네...
- LocaleResolver을 이용하여 언어 지원방식을 설정한다.
LocaleResolver 종류 |
기능 설명 |
AcceptHeaderLocaleResolver |
브라우저에서 전송된 HTTP 요청 헤더에서 Accept-Language에 설정된 Locale로 메시지를 적용한다. |
CookieLocaleResolver |
Cookie에 저장된 Locale 정보를 추출하여 메시지를 적용한다. |
SessionLocaleResolver |
HttpSession에 저장된 Locale 정보를 추출하여 메시지를 적용한다. 가장 많이 사용하는 방법이다. |
FixedLocaleResolver |
웹 요청과 무관하게 특정 Locale로 고정한다. |
- 화면단에서 언어를 선택하여 언어 설정을 변경할 경우 LocaleChangeInterceptor을 사용한다. mvc 네임스페이스를 추가해줘야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!-- presentaiton-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" /> </bean> </mvc:interceptors> | cs |
3. JSP 수정
- 작성한 메시지 파일을 사용하기 위해선 태그 라이브러리를 추가해야 한다.
- properties에서 작성한 키 값에 맞춰 해당 문구의 자리에 입력해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | // login.jsp <%@ page contentType="text/html; charset=EUC-KR"%> <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <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> <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> | cs |
'spring' 카테고리의 다른 글
day5 class05 Mybatis 프레임워크 시작하기 (0) | 2019.02.21 |
---|---|
day4 class07 데이터 변환 (0) | 2019.02.17 |
day4 class05 파일 업로드 및 예외 처리 (0) | 2019.02.12 |
day4 class04 검색 기능 추가 구현 (0) | 2019.02.11 |
day4 class03 프레젠테이션 레이어와 비즈니스 레이어 통합 (0) | 2019.02.10 |
- Total
- Today
- Yesterday
- 의존성
- handlermapping
- setter 인젝션
- application context
- JoinPoint
- servlet context
- 의존성 주입
- LoggingEvent
- NoClassDefFoundError
- aop
- blocking
- aspect oriented programming
- @Autowired
- postHandler
- 검색
- 스프링 컨테이너
- #java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent삭제
- Class path contains multiple SLF4J bindings
- 횡단 관심
- afterCompletion
- SqlSessionFactoryBean
- java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
- preHandler
- 어노테이션
- multiple SLF4J bindings
- Controller
- exclude-mapping
- 컨트롤러
- ViewResolver
- XmlWebApplicationContext
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |