Язык AngularJS с ES6 и Webpack

У меня проблема, я работаю над проектом с интернационализацией. Я использую AngularJS 1.5, ES6 и Webpack, я также использую ng-translate для другого текста.

Я установил AngularJS-i18n для манипулирования числами и датой и AngularJS-dynamic-locale для установки языка $locale, когда я меняю язык сайта с помощью npm.

Проблема, я не знаю, как загрузить языковой стандарт AngularJS из node_modules в моем config.js. Я сделал это:

export default function configApp(thmDynamicLocaleProvider) {
   tmhDynamicLocaleProvider.localeLocationPattern('../../../node_modules/angular-i18n/angular-locale_{{locale}}.js');
}
configApp.$inject = ['thmDynamicLocaleProvider'];

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

1 ответ

Если вы используете веб-пакет, я предлагаю вам использовать import() функция. Это разделит локали на части, которые будут вызваны во время выполнения по запросу. Но у этого метода есть одно ограничение. Вы не можете реализовать динамический путь к необходимым фрагментам. Таким образом, когда вы получите информацию о текущей локали где-то на стороне клиента, вы сможете switch Оператор выбирает, что импортировать.

Например,

function GetLocaleInfo(locale) {
    switch(locale) {
        case 'en': 
            import('angular-i18n/angular-locale_en.js').then((en) => {
                setLocale(en);
            });
        case 'ru': 
            import('angular-i18n/angular-locale_ru.js').then((ru) => {
                setLocale(ru);
            });  
       }
}

Я уделю немного больше внимания, что import Функция при использовании по асинхронному пути должна иметь только строковое содержимое. Он не поддерживает динамическое значение, потому что на шаге сборки веб-пакет проверяет эти способы создания правильных фрагментов кода в каталоге сборки.

Здесь вы найдете больше информации о разделении кода в веб-пакете.

Другие вопросы по тегам