Интернационализация и локализация в SpringBoot без тимелина - PullRequest
0 голосов
/ 30 ноября 2018

Здравствуйте, мне нужно реализовать интернационализацию и локализацию, используя springBoot в бэкэнде и ExtJs во внешнем интерфейсе (в настоящее время я пытаюсь реализовать с использованием базовой html-страницы, но позже приходится реализовывать то же самое в ExtJ.

Потратил часы на поиск в Google, но всеПримеры, которые я получил, используя тимилеф в forntend, даже не используя обычный jsp / Html без тимелина.

Я реализовал необходимую конфигурацию в SpringBoot

package com.corex.i18npoc;

import java.util.Locale;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

@SpringBootApplication
public class I18nPocApplication extends WebMvcConfigurerAdapter{

    public static void main(String[] args) {
        SpringApplication.run(I18nPocApplication.class, args);
    }


       @Bean
       public LocaleResolver localeResolver(){
            SessionLocaleResolver localeResolver = new SessionLocaleResolver();
            localeResolver.setDefaultLocale(Locale.US);
            return  localeResolver;
        }

       @Bean
       public ResourceBundleMessageSource messageSource() {
           ResourceBundleMessageSource rs = new ResourceBundleMessageSource();
           rs.setBasename("messages");
           rs.setUseCodeAsDefaultMessage(true);
           return rs ;
       }

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

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

Файл My View

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>
    <h2>
        < code="lang.de" />
    </h2>
    <div>
        <span><fmt:message key="lang.de" /></span>
    </div>
    <div>
        <fmt:message key="lang.de" />
    </div>
    <ul>
        <li><a href="?lang=en"><fmt:message key="lang.de" /></a></li>
        <li><a href="?lang=de"><fmt:message key="lang.de" /></a></li>
        <li><a href="?lang=fr"><fmt:message key="lang.de" /></a></li>
        <li><a href="?lang=zh"><fmt:message key="lang.de" /></a></li>
    </ul>
</body>
</html>

Структура моего проекта

Мои ПРОБЛЕМЫ: -

1.) Где я ошибаюсь в этой конфигурации, так как не могу просмотреть результат.

2.) Является ли это лучшим подходом для интернационализации и локализации, когда backend в springBoot и frontend это Extjs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...