Как развернуть многоязычное приложение Angular в Google App Engine - PullRequest
3 голосов
/ 30 июня 2019

Я создал приложение Angular 8 с angular/cli и i18n multilanguage support (с переводами на английский, испанский, французский).

Чтобы я мог создавать свое приложение несколько раз, по одному для каждого языка, а сборка сохраняется в dist/my-app/en, dist/my-app/es, dist/my-app/fr и т. Д. *

Теперь я хотел бы развернуть свое приложение в Google App Engine, но я не могу понять, что мне нужно сделать / настроить для развертывания всех моих определенных версий языка моего приложения.

Я уже опубликовал свою стандартную (английскую) версию для GAE, и она работает, но я не знаю, как / где развернуть все остальные версии (es, fr и т. Д.).

Должен ли я использовать файл отправки? Какой ваш лучший способ сделать это?

Спасибо!

1 Ответ

1 голос
/ 01 июля 2019

Вы можете считать dist/my-app своей корневой папкой относительно AppEngine.

  • Добавьте index.html внутри этой папки (чтобы перенаправить на локаль по умолчанию в зависимости от настроек браузера или позволить пользователю выбрать).
  • Развертывание всей папки как одного приложения в GAE.
  • Каждое локализованное приложение будет подпапками, а затем GAE будет обслуживаться как https: ///xxxx.appspot.com/en/...

Чтобы создать несколько приложений с несколькими локалями, установите флажок Официальные документы по угловым направлениям .

Каждый href должен быть настроен на локаль:

"baseHref": "/en/",

Затем обновите app.yaml и обработчики для обслуживания всех подпапок.

Например, это должно выглядеть так:

handlers:
- url: /fr/(.+)
  static_files: app/fr/index.html
  upload: app/fr/index.html
- url: /en/(.+)
  static_files: app/en/index.html
  upload: app/en/index.html
- url: /(.+)
  static_files: app/index.html
  upload: app/index.html
- url: /
  static_files: app/index.html
  upload: app/index.html

Но я не эксперт по обработчикам регулярных выражений, поэтому я уверен, что он может быть оптимизирован.

Папка Deploy должна выглядеть так:

deploy
  app.yaml
  app
    index.html // page to propose user to select locale or auto redirect
    fr
      index.html
      bundles.js...
    en
      index.html
      bundles.js...
...