다국어 지원?
요즘 웹 페이지를 구성하는데 있어서 다국어를 지원하는 비중이 점점 커지고있다. 인터넷이 빨라짐에 따라서 자국어의 언어만으로 검색하기보다는 다른 언어를 이용해 검색하는 일이 빈번하기 때문이다.
이런 다국어 처리를 하기위해서 외부 javascript 파일을 사용하기에는 골치가 아프고 모든 요청을 서버사이드에서 처리하기에는 너무 부담이 크고 불가능한 경우도 많다. 그렇기 때문에 jQuery에서 제공하는 jQuery.i18n.properties
를 사용하게 되었다. Github의 주소는 아래와 같다. (참고로 라이브러리 이름 중간에 들어가는 i18n
는 internationalization
을 줄인 단어이다. i
와 n
사이에 18글자가 있다는 뜻. 나도 세어봤는데 진짜 18글자다.)
https://github.com/jquery-i18n-properties/jquery-i18n-properties
적용법
Spring에서 사용하기 위한 적용법을 살펴보자.
- 인코딩 설정
- application-servlet.xml 설정
- 서버 사이드에서 요청을 받을 Controller 작성
- 설정된 Locale을 확인하는 클래스 작성
- 메세지를 언어 설정에 따라서 가져오는 클래스
- javascript용 파일 생성
- 사용하기(javascript, java, jsp)
위와 같은 순서로 적용을 하면된다. 순서대로 살펴보자.
인코딩 설정
우선, web.xml
에 인코딩 필터를 추가한다. 그냥 복사 붙여넣기해서 추가해도된다.
1 |
|
application-servlet.xml 설정
Spring에서 텍스트 메세지를 처리하기 위한 MessageSource
를 빈으로 등록한다.(디폴트 ko)
1 |
|
MessageSource
는 인터페이스로 세 개의 메소드를 정의하고 있다.
1 |
|
자세한 내용은 아래의 블로그를 참고하자.
http://jjaeko.tistory.com/18
다시 돌아와서, 빈으로 등록한 MessageSource
를 사용하기 위해서는 classpath
로 등록한 /com/test/mydomain/
위치에 다국어를 포함하는 파일을 넣으면 된다. 파일명은 message_ko.property
와 같이 Locale명을 중간에 넣는 식으로 만들면 된다. 파일의 내용은
1 |
|
과 같은 방식으로 작성한다. 여기서 {0}
과 {1}
은 치환될 영역이다.
Controller 작성
1 |
|
요청을 받아 사용자의 Locale을 변환하는 Controller이다.
설정된 Locale을 확인하는 클래스 작성
1 |
|