【发布时间】:2025-12-29 16:10:07
【问题描述】:
我使用以下配置将 i18n 集成到我的应用程序中:
@Configuration
public class LocaleConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("lang");
registry.addInterceptor(localeChangeInterceptor);
}
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:/i18n/application");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
我为“en”和“de”设置了属性,到目前为止一切正常。
例如,如果我从西班牙进入页面,我只能从我的 html 文件中看到占位符。但不是这个,我想实现标准语言是英语(“en”),用于没有现有属性配置的语言/国家。所以我尝试了这个:
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
sessionLocaleResolver.setDefaultLocale(Locale.US);
return sessionLocaleResolver;
}
它将默认设置为我想要的英语,但现在每个页面(也具有特殊语言的现有属性)都以英语显示。
【问题讨论】:
标签: java spring spring-boot internationalization thymeleaf