Запретить Angular обновлять базовый href с помощью langcode

У меня проблема с angular v9. Я внедрил в свое приложение функции локализации i18n. Когда я пытаюсь создать свое приложение в определенном месте, оно постоянно добавляет подпапку к базовому пути href (но я хочу сохранить файлы в подпапке). Есть ли способ предотвратить добавление языкового стандарта в базовый URL-адрес href?

Этапы воспроизведения:

  1. Создать фиктивный проект ng new Project.
  2. Конфигурация сборки ng build --prod --localize.
  3. Файлы встраиваются в папку dist/en-us/, но index.html имеет <base href="/en-US/">.

Есть ли способ заставить angular прекратить добавление langcode в базовый href? Это приведет к тому, что все ссылки приложений будут содержать языковой код, что нежелательно.

Мое развертывание настроено для развертывания приложения на основе каталога в другом месте, каждое из которых будет в корневом каталоге.

  • hxxp: //app.fr/ корень в папке /fr/
  • hxxp: //app.de/ корень в папке /de/

person Gumowy Kaczak    schedule 11.02.2020    source источник


Ответы (4)


У меня была такая же проблема, и я нашел решение в этой проблеме:

https://github.com/angular/angular-cli/issues/17260

Вы должны написать для каждой локали и для вашего sourceLocale baseHref

"i18n": {
    "sourceLocale": {
        "code": "en",
        "baseHref": ""
    },
    "locales": {
        "fr": {
            "baseHref": "",
            "translation": "src/locale/messagesfr.xlf"
        }
    }
}
person Thomas    schedule 23.04.2020

Публикация с моим решением, но это убивает новую функцию Angular v.9.

Решение - не использовать флаг --localize.

Итак, я удалил определение:

"i18n": {
    "sourceLocale": "de",
    "locales": {
      "fr": "src/app/locale/messages.fr.xlf",
}

Затем я создал настраиваемую конфигурацию под:

  "configurations": {
    "fr": {
      "i18nFile": "src/app/locale/messages.fr.xlf",
      "i18nLocale": "fr",
      "outputPath": "dist/fr"
    }

И только что позвонил:

ng build --configuration=fr

Но это уродливо ... так что жду идей получше :)

person Gumowy Kaczak    schedule 11.02.2020
comment
..отмечая свой ответ, так как лучших ответов нет :( - person Gumowy Kaczak; 15.02.2020

Вы можете переопределить baseHref следующим образом:

"locales": {
  "de": {
    "translation": "src/locale/messages.de.xlf",
    "baseHref": "/"
  },
....
}
person Vladimir Portianko    schedule 11.04.2020

в Dockerfile:

ЗАПУСТИТЬ sed -i s / ‹base. * // /usr/share/nginx/html/nl/index.html

person Huub    schedule 16.09.2020