java - com.xxxx.xxx - Config - LocaleConfig
resources - message - message.properties
위의 사진과 같이 message_언어.properties로 파일을 만들며 _언어를 입력하지 않는 것이 디폴트로 설정된 언어다.
@Configuration
public class LocaleConfig implements WebMvcConfigurer {
//bean 이름을 설정해주지 않으면 method 이름과 같아 이름 변경
@Bean(name = "localeResolver")
public LocaleResolver getLocaleResolver() {
//세션 사용하려는 경우
// SessionLocaleResolver slr = new SessionLocaleResolver();
// slr.setDefaultLocale(Locale.KOREAN);
//쿠키 기준(세션이 끊겨도 브라우져에 설정된 쿠키 기준으로)
//최초 기본 로케일을 강제로 설정이 가능 하다.
//쿠키 기준(세션이 끊겨도 브라우져에 설정된 쿠키 기준으로)
// CookieLocaleResolver localeResolver = new CookieLocaleResolver();
CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver();
cookieLocaleResolver.setDefaultLocale(Locale.KOREAN);
cookieLocaleResolver.setCookieName("APPLICATION_LOCALE");
cookieLocaleResolver.setCookieMaxAge(60 * 60);
return cookieLocaleResolver;
}
//Bean 이름 설정
@Bean(name = "messageSource")
// 메세지 소스 세팅
public MessageSource getMessageResource() {
ReloadableResourceBundleMessageSource messageResource = new ReloadableResourceBundleMessageSource();
//resources/message 폴더 아래에 있는 messages 를 읽는다.(default) lang 값에 따라 _ko_KR, en_US 등이 추가 됨.
messageResource.setBasename("classpath:message/message");
messageResource.setDefaultEncoding("UTF-8");
messageResource.setCacheSeconds(10); // reload messages every 10 seconds
return messageResource;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();
//lang 이라는 파라미터로 받는다
localeInterceptor.setParamName("lang");
System.out.println(localeInterceptor.getParamName());
registry.addInterceptor(localeInterceptor).addPathPatterns("/*");
}
}
LocaleConfig에는 쿠키를 통해 처리하도록 하며 위와 같이 설정한다 주소를 lang을 통해 받는다.
lang = 언어
lang.change=언어 변경
lang.en=영어
lang.ja=일본어
lang.ko=한국어
lang.change=Change the language
lang.en=English
lang.ja=Japanese
lang.ko=Korean
message.properties, message.properties_en 에 다음과 같이 설정한 후
JSP 파일에서 사용하기 위해 다음과 같이 추가해준다.
<ul>
<li class="nav-header"><spring:message code="lang"/></li>
<li class="nav-item" id="ko" >
<a href="#" class="nav-link set-language">
<i class="nav-icon far fa-circle text-info"></i>
<p><spring:message code="lang.ko"/></p>
</a>
</li>
<li class="nav-item" id="en">
<a href="#" class="nav-link set-language">
<i class="nav-icon far fa-circle text-info"></i>
<p><spring:message code="lang.en"/></p>
</a>
</li>
</ul>
class 를 이용하 처리하기 위해 다음과 같이 설정해준후
$('.set-language').click(function () {
const getLanguage = $(this).closest("li").attr('id');
// $(".content-wrapper").load("sampleTable?lang=getLanguage")
window.location.replace("index?lang="+getLanguage);
});
load를 사용하려는 경우 주석에 있는 방법을 사용한다.
JSP의 경우
<spring:message code=""/>를 통해서 message.properties에서 설정한 값을 불러오며 spring:message를 사용하기 위해서는 아래의 태그 라이브러리를 가져와야한다.
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
'IT > 프로젝트' 카테고리의 다른 글
모달 외부 JSP에서 불러오기 (0) | 2020.03.19 |
---|---|
pushstate (ajax 뒤로가기) (0) | 2020.02.06 |
KakaoPay (1) | 2019.09.30 |
공공API 데이터 파싱 후 db (0) | 2019.09.04 |
댓글