Я работаю над приложением, которое использует тимилиф и Springboot. Мое приложение поддерживает английский и французский языки. Я использую метод # number.formatCurrency для форматирования валюты на основе локали. Если я нажимаю на приложение с помощью localhost: 8080 / order / summary, в браузере правильно отображается символ «$». У меня есть требование, где языковой стандарт будет установлен в параметре запроса URL. Если я запрашиваю приложение как localhost: 8080 / order / summary? Language = fr, символ доллара будет переименован как «¤», а не «$». Проблема возникает и с language-en. Эта проблема возникает, когда сессионный локализатор решен. Ниже приведены мои классы конфигурации.
@Bean(name = "localeResolver")
public LocaleResolver getLocaleResolver() {
SessionLocaleResolver resolver = new SessionLocaleResolver();
resolver.setDefaultLocale(Locale.US);
return resolver;
}
@Bean(name = "localeInterceptor")
public LocaleChangeInterceptor getlocaleInterceptor() {
LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();
localeInterceptor.setParamName("language");
return localeInterceptor;
}
Конфигурация Thymeleaf
@Bean
public ThymeleafViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setCharacterEncoding("UTF-8"); // forcing UTF-8
viewResolver.setContentType("text/html; charset=UTF-8");
viewResolver.setOrder(1);
viewResolver.setViewNames(new String[] { ".html"});
return viewResolver;
}
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".html");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCacheable(false);
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
public void configureViewResolvers(ViewResolverRegistry registry) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
resolver.setCharacterEncoding("UTF-8");
registry.viewResolver(resolver);
}