1

我有一个带有 angular-i18n 的国际化 Angular Web 应用程序。有了这个系统,Angular 为每种语言创建了一个专用的应用程序。

为了在 Web 服务器上提供多语言,我为每种语言设置了一个 url(mywebsite.com/en、mywebsite.com/de、mywebsite.com/fr 等),每个 url 指向对应于该语言的应用程序。

该应用程序可以安装在设备上(使用 angular-pwa)。

问题如下:

当用户更改语言时,他会被重定向到另一个 url(例如从 mywebsite.com/en 到 mywebsite.com/fr)。对于已安装的应用程序,如果他离开并重新启动它,语言更改不会持续。还有另一个问题:与已安装的应用程序不在同一个 url 上会导致显示浏览器栏,这在已安装的 pwa 中是不可取的。

为了使更改持续存在,应用程序必须更改其目标 URL 或在用户更改语言时重新安装自身。但我在任何地方都找不到如何做到这一点......

如何解决这个问题呢?

--

编辑:

我只是发现了这个问题: Apply changes to an installed PWA ( different base URL)

我的问题非常相似。

4

1 回答 1

0
  1. 更新到 Angular 8,因为这修复了共享缓存的错误(向缓存添加 lang 前缀)。

  2. 在构建后修改文件时要小心,例如更改 html lang="" 因为这会破坏哈希。

3.您可以通过转到/ngsw/state 来检查一些调试信息。如果您从子目录运行您的应用程序(如果您使用的是 i18n,您可能会这样做)。这只能从源的根目录访问,如在 ngsw-worker.js 中:

if (requestUrlObj.path === '/ngsw/state') {
    // Allow the debugger to handle the request, but don't affect SW state in any other way.
   event.respondWith(this.debugger.handleFetch(req));
   return;
}

因此,如果您希望它例如为 /fr/ 工作,则替换'/ngsw/state''/fr/ngsw/state'.

于 2020-08-18T01:20:06.690 回答