##########다국어 처리############
-------------------------------------------------------------------------------------
스프링에서 제공하는 다국어 처리 방식은 struts프레임워크와 유사
기본적으로 메세지 파일의 확장자는 ".properties"이며 파일명은
해당언어의 ■ Locale 정보를 이용해 작성한다.
*로케일이 뭐지 ?
ex ) messageSource_en.properties
원하는 언어들의 메세지 파일을 다 작성했다면
스프링 설정 파일에 해당 메세지 파일을 읽어들일 수 있도록
MessageSource클래스를 <bean> 으로 등록해야한다.
-------------------------------------------------------------------------------------
스프링 메시지소는 국제화(i18n)을 제공하는 인터페이스다.
메세지 설정 파일을 통해 각 국가에 해당하는 언어로 메세지를 제공할 수 있다.
ApplicationContext는 MessageSource를 구현하고 있다.
메세지 설정 파일은 프로퍼티 파일을 사용하며
파일이르메 [파일이름][언어][국가].properties형식으로 추가해주면된다.
-------------------------------------------------------------------------------------
id값이 basenames라고 되어있는데 이것은 springframework에서 지원하는
고정값이므로 마음대로 바꾸어서느 안된다.
그리고 내부의 <property> 엘리먼트의 name 속성에는 두가지 값이 존재한다.
basename & basenames의 두가지. 우리는 여러 언어를 등록할거라서
basenames를 사용해주어야 한다.
-------------------------------------------------------------------------------------
메세지파일을 조금더 효율적으로 관리하기 위해 value태그에는
모든걸 포함한 MessageSource 만쓴다. 즉 상위 개념을 써주는 것인데,
우리가 파일 1개에 모든 언어를 기록하는것이아니라 몇개씩 나누어쓰기때문에
50개로 나누어쓴다면 50개르 다써야하는 일이생기므로
새 언어가 추가 또는 삭제된다 해도 스프링설정파일을 수정할 필요가 없기 때문!
-------------------------------------------------------------------------------------
LocalResolver 등록
-------------------------------------------------------------------------------------
웹 브라우저가 =========> 서버에 어떠한 요청을 보내게되면,
기본 브라우저의 Local정보가
Http 요청 메세지 헤더에 자동으로 설정된 상태로 전송이 된다.
이때 스프링은 [LocaleResolver를 통해서 클라이언트의 Locale 정보를 추출]
하고 추출한 Locale 정보에 해당하는 언어의 메세지를 적용시켜 보여준다.
스프링은 4개의 LocalResolver를 지원하는데, 만약 스프링 설정파일에
LocalREsolver 가 따로 등록된게 아니라면
기본값으로 AcceptHeanderLocalResolver가 적용된다.
-------------------------------------------------------------------------------------
브라우저의 useragent 값이나 쿠키, 세션을 통해 locale 값을 처리한다.
그래서 우선 해당 xml에 아래처럼 추가해준다.
출처: https://unabated.tistory.com/entry/다국어-처리-localeResolver-messageSource [랄라라]
@RequestMapping("/choiceLan.do")
public String choiceLang(@RequestParam("lang") String lang,OnEmp onemp, HttpSession session,
HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("선택한 언어:"+lang);
System.out.println("전달 데이터 확인 : " + onemp);
// 해당되는 선택 언어가 message폴드 하위에 있는 다국어 선택 파일을
// 지정해서, 해당 위치/시간에 해당하는 언어가 나오게 된다.
Locale locale = new Locale(lang);
localResolver.setLocale(request,response, locale);
return "OnEmp/Login/login";
}
참고문헌 localeResolver 란 :: 쥬니의 개발블로그 (tistory.com)
Spring Framework 메세지 국제화(다국어 지원) 사용하기 (tistory.com)
랄라라 :: 다국어 처리 - localeResolver, messageSource (tistory.com)
'2. 웹' 카테고리의 다른 글
[github] dynamic 프로젝트 생성하기 (0) | 2021.11.04 |
---|---|
포트폴리오 준비 (0) | 2021.11.02 |
[Spring] 환경설정 web-xml 뜯어보기 (0) | 2021.11.02 |
MVC패턴이란 무엇일까? (0) | 2021.11.02 |
[spring] 스프링환경설정2 web.xml (0) | 2021.09.18 |