web-dev-qa-db-fra.com

Comment activer l'installation du multi language Angular PWA avec un seul service worker?

J'ai préparé des applications avec des versions linguistiques localisées. Pour cela, j'ai utilisé le native Angular i18n module, qui a préparé deux packages d'application avec la langue appropriée dans chacun.

Chaque version de l'application est disponible sous l'emplacement individuel sur mon serveur nginx:

  • myapp.com/en/...
  • myapp.com/pl/...

Je voudrais que mon application soit installée une fois en tant que PWA et fournisse les deux versions linguistiques en utilisant un (unique?) Service worker.

Malheureusement, tout ce que je pourrais faire maintenant avec @ angular/pwa module est de fournir un service workers séparé pour chaque application, ce qui force des installations séparées de chaque version linguistique de mon application.

Ma question est: Est-il possible que l'application fonctionne de la manière que j'ai décrite en utilisant @ angular/pwa ou Workbox?

// Au fait, il est un peu surprenant que les créateurs de Angular n'aient pas mis en évidence l'intégration de @ angular/localize avec @ angular/pwa.

7
Jelly

Vous avez N applications pour chaque langue. Ils sont hébergés sur différents domaines. Ce sont en fait des applications différentes. Par conséquent, même si vous les installez tous dans une seule URL, vous les installez tous.

En tant qu'option d'utilisation d'un domaine avec différentes applications, vous pouvez soit créer une configuration avec toutes les langues et leurs fichiers JS correspondants, soit créer un analyseur pour index.html. Ensuite, vous devez créer votre propre worker qui insérera les bons scripts lors du chargement de la page (vous ne pouvez pas le faire en cours de route car le code JS serait déjà chargé). Cela chargera l'application appropriée. Et là, vous avez vos employés pour chaque application incluse, je suppose.

Vous pouvez envisager de changer d'outil i18n si vous envisagez de le publier dans Google Store en tant qu'application hybride.

Comme autre option, vous pouvez fournir une couche pour votre WebView et charger une URL différente en fonction de la langue choisie par l'utilisateur.

1
Sergey