2016-03-26 30 views
2

我hava i18n,但经验问题与俄罗斯信件。我有问号?????而不是文字。配置:春季i18n问号而不是文字

@Bean 
public LocaleResolver localeResolver(){ 
    CookieLocaleResolver resolver = new CookieLocaleResolver(); 
    resolver.setDefaultLocale(new Locale("ru")); 
    resolver.setCookieName("locale"); 
    resolver.setCookieMaxAge(60 * 60 * 24 * 365 * 10); 
    return resolver; 
} 

@Bean 
public LocaleChangeInterceptor localeChangeInterceptor() { 
    LocaleChangeInterceptor changeInterceptor = new LocaleChangeInterceptor(); 
    changeInterceptor.setParamName("lang"); 
    return changeInterceptor; 
} 

@Bean 
public MessageSource messageSource() { 
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasename("classpath:/i18n/messages"); 
    messageSource.setDefaultEncoding("UTF-8"); 
    return messageSource; 
} 

@Override 
public void addInterceptors(InterceptorRegistry registry) { 
    registry.addInterceptor(localeChangeInterceptor()); 
} 

另外我正在使用Thymeleaf。

<h1 th:text="#{message}"></h1> 
+0

仅适用于来自消息源的俄语字母吗?你能看到页面中的俄文字母吗? –

+0

@KenBekov是的,仅适用于来自消息源的字母。是的,我可以 –

+0

这是可能的你保存的消息文件编码错误。检查包含以utf-8编码保存的俄语消息的文件。 –

回答

0

只是一个猜测:在“addInterceptor”你自己手动构建LocaleChangeInterceptor。如果这个类依赖于其他Spring bean(如MessageSource),那么它们不会被注入。找到一种方法让Spring实例化LocaleChangeInterceptor(例如,通过使用应用程序上下文的各种getBean()之一)。

+0

不幸的是它不工作 –