Интернационализация (локаль) не работает с акцентами в весенней загрузке Java - PullRequest
0 голосов
/ 08 мая 2018

У меня есть приложение весенней загрузки, в котором я использую два языка - английский и французский. У меня есть файлы messages.fr и messages.en в качестве ссылок для изменения языков в html-документах с помощью тимелифа.

Проблема в том, что мои акцентированные вещи выглядят так: например "Cr er un compte" (создать аккаунт) Должно быть: "Créer un compte"

Как лучше всего пройти через это при весенней загрузке? спасибо за вашу помощь ..

имейте в виду, что у меня есть эта конфигурация с тимьяном

# INTERNATIONALIZATION (MessageSourceProperties)
spring.messages.always-use-message-format=false
spring.messages.basename=messages
spring.messages.cache-duration=-1
spring.messages.encoding=UTF-8
spring.messages.fallback-to-system-locale=true

#Thymeleaf configurations
spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.cache=false
spring.thymeleaf.check-template=true
spring.thymeleaf.check-template-location=true
spring.thymeleaf.content-type=text/html
spring.thymeleaf.enabled=true 
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.suffix=.html
spring.thymeleaf.prefix=classpath:/templates/

Я использую эти бины в моей конфигурации

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

@Bean
public LocaleResolver localeResolver() {
    final CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver();
    cookieLocaleResolver.setDefaultLocale(Locale.ENGLISH);
    return cookieLocaleResolver;
}

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

Я запускаю этот код для проверки типа контента

@RequestMapping(value = "/check", method = RequestMethod.GET)
@ResponseBody
public String plaintext(HttpServletResponse response) {
    response.setContentType("text/plain");
    esponse.setCharacterEncoding("UTF-8");
    return "àèääèäé";
}   

возвращает то же значение: aèääèäé с акцентами

1 Ответ

0 голосов
/ 09 мая 2018

На самом деле у меня был подобный опыт в прошлом, когда языки не отображаются с акцентами в веб-приложении Spring.

После того, как я прочитал небольшую дискуссию в github об этом, проверьте эту ссылку

https://github.com/spring-projects/spring-boot/issues/5361

Они упоминали, что java имеет базовое кодирование в ISO-8859-1, а Spring делает это в UTF-8, что вызывает некоторую несовместимость. Однако технически я не знаю почему, но я помню, как менял свои свойства, и это сработало.

Можете ли вы попробовать изменить свои свойства и заменить

spring.messages.encoding=UTF-8

от

spring.messages.encoding=ISO-8859-1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...