我有一个带angular-i18n的国际化angular web应用程序。有了这个系统,angular为每种语言创建了一个专用的应用程序。
为了在web服务器上提供多种语言,我为每种语言(mywebsite.com/en、mywebsitecom/de、mywebite.com/fr等(提供一个url,每个url都指向与该语言对应的应用程序。
该应用程序可以安装在设备上(带角度pwa(。
问题如下:
当用户更改语言时,他会被重定向到另一个url(例如从mywebsite.com/en到mywebsite.com/sr(。对于已安装的应用程序,如果他离开并重新启动它,语言更改将不会持续。还有另一个问题:与安装的应用程序不在同一个url上会导致显示浏览器栏,这在安装的pwa中是不可取的。
为了使更改持续存在,应用程序必须更改其目标url,或者在用户更改语言时重新安装自己。但我不知道该怎么做。。。
如何解决这个问题?
--
编辑:
我发现这个问题:将更改应用于已安装的PWA(不同的基本URL(
我的问题很相似。
-
更新到Angular 8,因为这修复了共享缓存的错误(为缓存添加了lang前缀(。
-
在构建后修改文件时要小心,例如更改html lang="quot;因为这打破了hashes。
3.您可以通过转到/nsw/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'
。