I18n인터셉터
I18nInterceptor 인터셉터는 웹 애플리케이션에 제공되는 국제 구성 요소입니다. 다음은 freemarker 템플릿에 사용되는 예입니다.
//먼저 I18nInterceptor를 전역 인터셉터로 구성
public void configInterceptor(Interceptors me) { me .add( new I18nInterceptor());
}
// 그런 다음 freemarker
${_res.get("msg")}
public void configInterceptor(Interceptors me) { me .add( new I18nInterceptor());
}
// 그런 다음 freemarker
${_res.get("msg")}
위의 코드는 I18nInterceptor가 작업 요청을 가로채도록 구성됩니다. 그런 다음 freemarker 템플릿 파일의 _res라는 개체를 통해 국제화된 데이터를 얻을 수 있습니다. I18nInterceptor의 구체적인 작업 흐름은 다음과 같습니다.
- l은 로케일 매개변수를 가져오면 cookie에 저장합니다.
- controller.getPara("_locale")가 매개변수 값을 가져오지 못하는 경우 controller .getCookie("_locale")가 로케일을 가져옵니다. 매개변수
- 위의 두 단계에서도 여전히 로케일 매개변수 값을 얻지 못한 경우 I18n.defaultLocale의 값을 로케일 값으로 사용하세요.
- 이전 세 단계를 사용하여 로케일 값을 가져오고 Res 객체를 가져옵니다. I18n.use(locale)를 통해 Res 개체를 controller.setAttr("_res", res)를 통해 사용할 페이지에 전달합니다.
- I18nInterceptor.isSwitchView가 참 값인 경우 보기 값도 변경됩니다. 전체 템플릿 파일을 전환하려면 렌더링을 수행해야 합니다. 자세한 내용은 소스 코드를 확인하세요.
위 단계에서 I18nInterceptor 개체 생성 시 I18nInterceptor의 변수 이름 "_locale" 및 "_res"를 지정할 수 있습니다. 지정하지 않으면 기본값이 사용됩니다. I18nInterceptor를 상속하고 getLocalPara, getResName 및 getBaseName을 재정의하여 보다 개인화된 기능을 사용자 정의할 수도 있습니다.
일부 웹 시스템에서는 페이지에 국제화된 텍스트가 너무 많이 필요하며 국제화로 인해 CSS와 HTML도 매우 다릅니다. 이 응용 프로그램 시나리오에서는 먼저 동일한 이름을 가진 여러 국제화된 보기 세트를 직접 만든 다음 이러한 보기를 만듭니다. 마지막으로 I18nInterceptor 인터셉터는 로케일에 따라 보기를 동적으로 전환하는 데 사용됩니다. 국제적으로 보기의 텍스트를 하나씩 전환하는 대신 I18nInterceptor.isSwitchView를 true로 설정하면 됩니다. 시간을 절약할 수 있습니다.