springboot-국제화 사용자 정의 해상도 버전

3049 단어 springboot
전편에서 말했듯이 국제화를 필요로 하는 변수 설정 파일은properties의 세 가지 파일, 국제화 해석기, 국제화 차단기이다.
사용자 정의판은 해석기와 국제화 차단기의 기능을 결합시켜 국제화 해석기를 쓰는 것을 말한다.
이 해석기는 Locale Reslover 인터페이스를 실현하고 Resolve Locale 방법을 실현한다. 논리는 매개 변수(자신이 정의한 이름이 영역과 언어 정보를 전달하는 데 사용되는지)를 판정하고 이 매개 변수를 분석하여 Locale 대상을 만들고 이 대상을 되돌려서session에 저장하는 것이다.이 인자가 없으면 세션에서 가져오고 없으면 기본 Locale 대상을 되돌려줍니다.
package com.example.demo.intercepter;

import com.alibaba.druid.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Locale;

public class MyLocaleResolver implements LocaleResolver {
    private static final String I18N_LANGUAGE = "i18n_language";
    private static final String I18N_LANGUAGE_SESSION = "i18n_language_session";
    @Override
    public Locale resolveLocale(HttpServletRequest req) {
        String i18n_language = req.getParameter(I18N_LANGUAGE);
        Locale locale = Locale.getDefault();
        if(!StringUtils.isEmpty(i18n_language)) {
            String[] language = i18n_language.split("_");
            locale = new Locale(language[0], language[1]);

            // session
            HttpSession session = req.getSession();
            session.setAttribute(I18N_LANGUAGE_SESSION, locale);
        }else {
            // , session , , , , 
            HttpSession session = req.getSession();
            Locale localeInSession = (Locale) session.getAttribute(I18N_LANGUAGE_SESSION);
            if(localeInSession != null) {
                locale = localeInSession;
            }
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest req, HttpServletResponse res, Locale locale) {

    }
}

컨테이너가 Locale Resolver 대상을 초기화할 때 new에서 사용자 정의한 설정 클래스를 작성합니다.
package com.example.demo.config;

import com.example.demo.intercepter.MyLocaleResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class CustomMvcConfig extends WebMvcConfigurerAdapter {
    /**
     *  
     * @return
     */
    @Bean
    public LocaleResolver localeResolver() {
        return new MyLocaleResolver();
    }

    /**
     *  
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //super.addInterceptors(registry);
    }
}

 
jsp:





    Spring MVC 



중국어 간체
미국 영어

: : :

Locale: ${pageContext.response.locale }

좋은 웹페이지 즐겨찾기