这就是我向Spring应用程序添加国际化的方法。
首先,我在类中添加了:
@Configuration
public class SpringSecurityConfig {
// ...
}
方法(这里我设置默认语言-波兰语):
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(new Locale("pl"));
return slr;
}
接下来,在实现WebMvcConfigurer
接口的类中,我添加了以下两个方法:
@Component
public class WebMvcConfigurerImpl implements WebMvcConfigurer {
// ...
// Configuring a component that supports changing language settings
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
// Registering a component that supports changing the language
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
在添加了上面的代码之后,我在resources
文件夹中创建了两个文件labels.properties
和labels_en.properties
,在这些文件中,我将把key=value
写入页面上显示的文本(我使用Thymeleaf)。
接下来,我们需要在应用程序中注册这些文件,为此,在application.properties
文件中,我将名称标签添加到spring.messages.basename
,如下所示:
spring.messages.basename=errors-messages,labels
现在,当请求中的页面收到...?lang=en(lang
参数,值为en
)时,页面上的标签应该已经更改,但实际上没有。
我做错了什么?
1条答案
按热度按时间mqkwyuun1#
您只需要稍微修改代码,不要使用
some_url?lang=en
,而使用some_url?lang=en_GB
。例如,您可以有一个链接,将触发语言更改为英语
编辑:我刚刚尝试了用
some_url?lang=en
来修改语言,这也能用,所以我猜问题不在于url本身,而在于其他东西。确保你有一个控制器方法匹配/some_url,并且用户有权限访问它。