Ошибка "Система не определена (...)" INTERNATIONALIZATION (I18N), angular -cli

Я пытался изучить этот учебник с помощью JiT и angular -cli. У меня есть следующие ошибки в консоли браузера, но нет ошибки в работе терминала/сборки приложения.

Неподготовлено ReferenceError: система не определена (...)

Неиспользуемая ошибка: не удается найти модуль. /locale/messages.fr.xlf!text '. (...)

введите описание изображения здесь

Мой код в github https://github.com/sayedrakib/internationalization_project.git

Я добавил systemjs-text-plugin.js в корневую папку, согласно инструкции в учебнике. Файловая структура введите описание изображения здесь

Я думаю, что я испортил путь к файлу в некоторых файлах, потому что я чувствовал, что предполагаемая структура файла в учебнике и angular -cli созданная структура файла не одинакова.

Ответ 1

Я вижу, что вы используете angular -cli, чем если вы хотите загрузить 3party libery, вам нужно работать с angular -cli.json файлом.

Сначала запустите в своем каталоге приложений npm install systemjs Во-вторых, вам нужно добавить путь к systemjs в ваш файл angular -cli.json.

"scripts": [
    "../node_modules/systemjs/dist/system.js"
  ]

если вам нужно загрузить другое 3party libery, просто повторите 2 этапа.

Ответ 2

Взял меня, чтобы понять это!

Если вы следовали документации, измените это:

  • Загрузите system.js, но он в корне (/app) и импортирует его перед тегом script.
  • В index.html удалите System.import('приложение')
  • Переименуйте все из System на SystemJS (index.html, i18n-services.ts)

Наконец, это выглядит так:

index.html

<body>
  <app-root>Loading...</app-root>

  <script src="system.js"></script>
  <script>
    // Get the locale id somehow
    document.locale = 'es';

    // Map to the text plugin
    SystemJS.config({
      map: {
        text: 'systemjs-text-plugin.js'
      }
    });
  </script>
</body>

i18n-providers.ts

export function getTranslationProviders(): Promise<Object[]> {
   [...]
}

declare let SystemJS: any;

function getTranslationsWithSystemJs(file: string) {
  return SystemJS.import(file + '!text'); // relies on text plugin
}

Я открыл GitHub Issue для обновления документации.