| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- PointCut
- Model
- gradle
- .xml
- 생성자주입
- frontController
- 어노테이션
- application.properties
- @RequestParam
- 서비스레이어
- c:if
- @ResponseBody
- AOP
- produces
- 의존주입
- jointpoint
- after-throwing
- SpringBoot
- spring
- @RequestMapping
- Java
- MVC
- 비즈니스레이어
- springmvc
- @
- @Valid
- 바인딩변수
- 스프링
- 유효성검사
- springjdbc
- Today
- Total
메모장
다국어 처리 본문

크롬으로 접속하게 되면 자연스럽게 구글 번역을 쉽게 찾을 수 있다.
그러나 오늘 우리가 해볼 내용은 구글 번역이 아니라 쇼핑몰 처럼 회사에서 다국어(영어, 중국어, 일본어 등등 )로 사이트를 운영 중인 서비스 상황에 대하여만 이야기 하는 것이다.
- 개요
이전에는 다른 언어로 서비스를 해야 했을때 , 페이지 자체를 따로 만들었었다.
(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 ( 김철수라는 동명이인이 엄청 많기 때문에 )

유니코드로 변환 해주는 사이트를 이용 하길 바란다.
요기 까지 간단 정리
메세지 파일 작성하기
메세지 키 = 메세지 값으로 나뉘어져 있는데
키 값은 . 찍어서 관리하는 편
헷갈리지 않으려구 !
#으로 주석처리 가능
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 를 제거 해줘야 한다.
'Spring > 개념정리' 카테고리의 다른 글
| Spring boot 에서 해야하는 기본 설정 (0) | 2024.08.07 |
|---|---|
| Spring Starter Project ( Spring boot ) (0) | 2024.08.07 |
| Spring 비동기 처리 에러 이슈 (한글 깨짐,인코딩) (0) | 2024.08.07 |
| Spring 비동기 처리 (별도의 lib 없이) (0) | 2024.08.07 |
| [ null 업데이트 이슈 ] (1) | 2024.08.07 |