주니 개발 도서관

Spring

[ 다국어 처리 ] Spring을 이용하여 표현

주니홍 2022. 9. 29. 15:41

[ 다국어 처리 ]

- "국제화" 라고도 함


하나의 페이지를 여러가지의 언어로 서비스하는 것
과거에는 언어별로 페이지를 다르게 제작함 ( = 국제화 X )
>> 프레임워크의 다국어처리기능을 사용 ( 별도 페이지 제작을 하지 않고 표현할 예정 )

 

1) 메세지 파일 제작

 

new >> file 생성

. properties 확장자 고정

 

언어를 Locale 정보로 수행 ( ko, ja, en, zh )

>> 파일명에 언어에 해당하는 Locale 코드를 추가
ex) xxx_en.properties, xxx_ko.properties


파일 내부에는 메세지변수 + 메세지 값을 작성
값은 유니코드로 작성 ( 자동변환 됨 )

 

2)  스프링설정파일에게 메세지 파일들을 읽어들일수있도록 클래스 추가

다국어 처리 클래스

클래스를 생성하며 setter 해줄 basenames 변수에

<list> 태그를 이용하여 폴더명 . 파일이름 까지만 적어준다 (message.messageSource)

>> Loacle 정보 + 확장자는 적어주지 않는다

>> 확장자까지 적게되면 패키지와 혼동이올 수 있기때문

 

다국어 처리 본인의 Loacle 정보를 가져와주는 Resolver 

현재 자신의 Loacle 정보를 가져와 준다 ( 난 한국이라 ko )

 

다국어 처리 Loacle 정보를 변경해 주는 클래스

lang 파라미터로 Locale정보를 변경 할 수 있게된다

** Namespace 에서 mvc를 체크해야 사용 가능하다

lang 값을 같이 보내주면 Loacle 정보를 변경해주고

message.messageSource 안에 존재하는 Loacle 파일이 존재하는지 확인하여

ex ) ko 일 경우 message.messageSource_ko.properties 파일을 확인

 

파일에 등록된 정보들을 페이지에 출력해줌

 

3) 사용할 페이지(jsp)에 lib 등록하여 사용

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

 

 

4) . properties 파일 내부

 

# 적용할 페이지 이름 기재

적용한 페이지에서 사용할 변수 + 값 넣기

 

한글, 일어, 중국어는 자동으로 유니코드로 변환

 

 

5) .properties에 적용한 변수를 jsp 페이지에서 사용

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 등록해야함

 

<spring:message> 태그를 사용하여 값을 가져올 수 있고

속성의 code = ".properties 폴더에 저장한 변수명" 을 넣으면 값이 온다

 

ko, en, ja, zh 4종류를 만들어 놓았다

2) 설명에서 lang 파라미터로 Loacle 값을 보내어 바꿀 수 있다

 


 

** 오류 가능성이 높은 중요 포인트 **

 web.xml에서 *.do 요청에 반응하도록 설정해놓았기 때문에

.jsp로 바로 넘어갔을 경우 <spring:message> 태그에서 값을 가져오지 못하고 오류가 발생함!

그냥 jsp로 넘어가는 부분을 모두 do 요청으로 바꿔야하고

C에서 forward 액션으로 jsp로 보내주어야 한다