메모장

다국어 처리 본문

Spring/개념정리

다국어 처리

Itchild 2024. 8. 7. 13:41
728x90
반응형

 

크롬으로 접속하게 되면 자연스럽게 구글 번역을 쉽게 찾을 수 있다.

그러나 오늘 우리가 해볼 내용은 구글 번역이 아니라 쇼핑몰 처럼 회사에서 다국어(영어, 중국어, 일본어 등등 )로 사이트를 운영 중인 서비스 상황에 대하여만 이야기 하는 것이다.

 

 

  • 개요

이전에는 다른 언어로 서비스를 해야 했을때 , 페이지 자체를 따로 만들었었다.

(ex . 영어로 제작된 웹사이트 , 중국어로 제작된 웹사이트 , 한국어로 제작된 웹사이트 등등 ,,,)

.jsp 파일 자체를 여러개 제작해야했었다 !

 

이렇게 페이지를 여러개 만들어야 하는데 그게 불편하고 힘든 작업이라는 것을 알게되고

그러면 언어만 여러개 만들어보자 에서 하게 되었다 !

 

 

1. Spring 프로젝트 " 메세지 파일 " 제작

 

Spring 프로젝트에서는 "메세지 파일" 만을 제작하여 활용가능하다 !

메세지 파일을 만들어보자 !

우리가 전 실습에 이미지 업로드 할 때 처럼 폴더에 담아두고 제공되는 언어들 처럼 만들어볼 예정 이다.

 

먼저 src/main/resources 에다가 패키지를 만들어준다.

 

 

messageFile_어떤 나라 인지 .properties (한국은 ko , 미국 en ...)

file로 생성 !

string 메세지 파일 국가별 파일명 이라고 구글링 검색하면 찾을 수 있다 !

 

우리가 실습할 페이지는 insertBoard 글작성 페이지 이다 .

이것을 영어로 서비스 해볼 예정

글작성 페이지

 

 

 

 

 

2. 메세지 파일 작성하기

 

메세지 파일 주석은 # 으로 단다.

 

메세지 파일 작성해보자

메세지 파일은 key 값과 value 값으로 되어 있다. => " = " 을 기준으로 앞에가 KEY 값이다

메세지 키 = 메세지 값

예시 ) a.b.c.d.e = value

 

어떤 값에 대해 정확한 요소를 알려주려고 , 이름이 헷갈리면 안되서 이름을 정확하게 지어준것이다.

그러면 . 은 꼭 넣어야 하나요 ? 안넣어도 되지만 . 을 붙이면 정확하게 누구인지를 표현 할 수 있기 때문에

김철수 X, 6학년 1반 김철수 O ( 김철수라는 동명이인이 엄청 많기 때문에 )

 

 

같은 내용 인데 한국어로 작성하면 자동으로 유니코드로 변환 된다.

가끔 자동으로 변환이 되지 않을 땐

 

https://www.learnkoreantools.com/kr/korean-to-unicode

 

한국어-유니코드 변환 도구

 

www.learnkoreantools.com

 

유니코드로 변환 해주는 사이트를 이용 하길 바란다.

 

 


요기 까지 간단 정리

 

메세지 파일 작성하기

메세지 키 = 메세지 값으로 나뉘어져 있는데

키 값은 . 찍어서 관리하는 편

헷갈리지 않으려구 !

#으로 주석처리 가능

 


 

3. Resolver 클래스 ( == MessageSource) 를 등록

 

메세지 파일을 읽어들일 수 있는 view 를 제공할 적에 그냥 제공 말고 메세지 파일을 읽어서 제공 해줄래 ?

view 를 보여줄때 관여하는 친구 = Resolver 가 필요

메세지 파일을 읽어들일 수 있는 Resolver 클래스(==MessageSource)를 등록

DS-servlet.xml에 등록

 

Resolver 류 이지만 이름에 Resolver 가 붙지 않는다. messageSource라고 부르지만 Resolver 류 이다.

이 messageSource 는 확장자 뒤에 ko를 붙여주고 이런게 없다 !

_언더바 언어는 자동으로 붙여준다.

. 붙여주는 이유는 패키지를 헷갈릴수도 있어서 !

 

실무 가서는 파일 명을 등록하는 건지, 확장자까지 같이 등록 하는 건지 물어보고 여쭤보고 작업하면 된다.

 


여기서 부턴 추가

 

4. LocaleResolver 설정

 

MessageSource 클래스는 _en , _ko 등을 자동으로 설정

대신에 얘네를 자동으로 파악할 수 있는 친구가 하나 필요하다.

영어로 할건지 한국어로 할건지

 

순서는 웹 브라우저 ---- 요청 ---- > 서버 로 흘러간다.

HTTP 요청 헤더에 브라우저의 Locale 정보가 존재하는데

그때 Locale 정보를 추출할 LocaleResolver 가 필요하다

SessionLocaleResolver -> 실습용으로 사용해보자 . 현업에서는 잘 안쓰임 x

 

 

접속 지역 정보를 자동으로 설정 해준다.

접속 지역 정보를 어떻게 알아 ? 요청 헤더에서 Locale 정보를 알아올 LocaleResolver

 

 

5. 인터셉터 interceptors 설정

 

설정한 국가의 local 이나 한국에서 영어가 편한 사람이 있을수 있다.

언어 설정을 체인지 할 수 있도록 어떠한 정보를 바꾸는 것을 인터셉터라고 한다.

 

내가 실제 미국에서 접속 할 순 없으니까 인터셉터로 한번 바꿔볼까 ?

 

LocaleChageinterceptors 클래스가 필요하다 .

네임스페이스에서 mvc 를 추가 해준다.

 

 

이 클래스를 만들고 나서는 lang이라는 파라미터로 언어설정 변경가능!!!!

<property name="paramName" value="lang" />

lang이라는 파라미터로 언어설정 변경가능

 

이제 jsp로 가서

먼저 메세지 파일을 읽어 올수 있도록 태그 라이브러리 설정을 먼저 해줘야 한다.

태그 라이브러리 설정 ("spring") 이라는 메세지 키로부터 값을 불러오겠습니다 라는뜻

 

사용할 땐 "<spring:message code='메세지키' />">

사용자 UI 를 위해 EN 영어로 볼건지 , KO 한국어로 볼건지 태그를 만들어 주었다.

 

 

완성된 모습

 

 


 

에러상황

 

메세지 파일은 리졸버를 통해서만 볼 수 있기 때문에 500 에러가 날 수 있고

다른 이유로는

컨트롤러에서 반환 값에 redirect 를 붙이게 되면 전에 들고 오던 정보가 다 리셋 되서 없어지기 때문에

에러가 발생할 수 있다 ! 그래서 redirect 를 제거 해줘야 한다.

 

 

 

 

 

 

 

728x90
반응형