Как обслуживать разные языковые стандарты Angular во время разработки с помощью ng serve?

Я разрабатываю приложение на двух разных языках (fa/en), используя Angular Internationalization (i18n).

  • Цель - развернуть две разные сборки в подпапках на сервере (example.com/en/...)
  • Эти сборки отличаются не только переводом, но и разными стилями и направлениями верстки.

Я могу обслуживать любую локализацию (языки), подобную этой

  "architect": {
    "build": {
      ...
      ,
      "configurations": {
      ...
        },
        "fa": {
          "localize": ["fa"],
          "baseHref": "/fa/"
        },
        "en": {
          "localize": ["en"],
          "baseHref": "/en/"
        }
      }
    },
    "serve": {
      "builder": "@angular-devkit/build-angular:dev-server",
      "options": {
        "browserTarget": "app:build"
      },
      "configurations": {
        "production": {
          "browserTarget": "app:build:production"
        },
        "en": {
          "browserTarget": "app:build:en"
        },
        "fa": {
          "browserTarget": "app:build:fa"
        }
      }
    },
    "extract-i18n": {
      "builder": "@angular-devkit/build-angular:extract-i18n",
      "options": {
        "browserTarget": "app:build"
      }
    },
    ...
  }

А потом ng serve --configuration=en работает, и он у меня включен http://localhost:4200/en/...Но мне нужно одновременно обслуживать оба языка во время разработки, чтобы работать над стилями и правильным макетом и проверять переводы. Если я попытаюсь сделать это в конфигурации сборки"localize": ["fa","en"] Я получаю следующую ошибку.

An unhandled exception occurred: The development server only supports localizing a single locale per build

Лучшее, что у меня есть, это бежать ng serve ..несколько раз на разных портах, чтобы иметь два экземпляра сервера разработки в разных регионах, но это немного уродливо. Я надеюсь на лучшее решение.

2 ответа

В Angular 9 сервер разработки (ng serve) можно использовать только с одной локалью.

Однако вы все равно можете обслуживать каждую локаль на разных портах, выполнив две отдельные команды:

ng serve --configuration=fa --port 4200

ng serve --configuration=en --port 4201

Надеюсь, они представят несколько вариантов локали для сборок разработки в Angular 10.

Если вы просто хотите быстро проверить локализацию для определенного языка, как я, просто добавьте"localize": ["<YOUR-LOCALE>"]кangular.jsonв"projects" > "<YOUR PROJECT NAME>" > "architect" > "build" > "configurations" > "development". После этого нормальныйng serveкоманда использует указанную локализацию. Как только вы закончите, не забудьте удалить его снова ;)

И да, я знаю, что это не относится к вопросу, но эта ветка отображается на самом верху в Google.

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