Проблема интернационализации Java Spring (i18n) - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь научиться разрабатывать многоязычные веб-сайты с помощью Java Spring.После просмотра нескольких уроков я понял, как это работает.Но кажется, что я делаю некоторые ошибки.

Структура проекта:

src
   └─── ? main
       ├─── ? java
       │   └─── ? com
       │       └─── ? example_project
       │           └─── ? config
       │               └─── WebMvcConfig
       └─── ? resources
           ├─── ? i18n
           │   ├─── messages_en.properties
           │   └─── messages_fr.properties
           ├─── ? static
           └─── ? templates

WebMvcConfig.java

@EnableWebMvc
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

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

    @Bean
    public LocaleResolver localeResolver() {
        CookieLocaleResolver resolver = new CookieLocaleResolver();
        resolver.setDefaultLocale(new Locale("en"));
        resolver.setCookieName("lang_cookie");
        return resolver;
    }

    @Override
    public void addInterceptors(InterceptorRegistry reg) {
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        interceptor.setParamName("lang");
        reg.addInterceptor(interceptor);
    }
}

LandingController.java

@Controller
public class LandingController {

    @Layout("layout/default")
    @GetMapping("/")
    public String index() { return "index"; }

}

index.html

<div th:fragment="content">
    <ul>
        <li><a th:href="@{/?lang=en}"><img src="/assets/images/en.png"></a></li>
        <li><a th:href="@{/?lang=fr}"><img src="/assets/images/fr.png"></a></li>
    </ul>
    <p th:text="#{hello}"></p>
</div>

Он загружает только файл свойств "en", когда я нажимаю ссылку "fr" для его перезагрузки, но не загружаю файл свойств "fr".

Я не могу понять, в чем проблема.

1 Ответ

0 голосов
/ 17 сентября 2018

Ваш MessageSource не может найти сообщение с ключом "hello" в обоих файлах свойств.Если источник сообщения не может найти сообщение в свойствах fr, он вернет сообщение от en.Убедитесь, что вы определили сообщение в обоих файлах

  • messages_en.properties

hello = Hello in en

  • messages_fr.properties

привет = Привет во фр

...