我正在使用这个库ngx-translate-multi-http-loader,以便能够为我的离子5应用程序加载多语言文件。
我没有任何错误,但翻译不起作用。
然后,我在TranslateModule.forRoot({})
中添加了defaultLanguage: 'en'
,然后产生了以下错误消息
以下翻译文件出错:./assets/i18n/en.json
未创建数据库。必须首先调用create()
我需要很多时间来弄清楚如何修复它,在互联网上找不到任何帮助。
我正在使用这个库ngx-translate-multi-http-loader,以便能够为我的离子5应用程序加载多语言文件。
我没有任何错误,但翻译不起作用。
然后,我在TranslateModule.forRoot({})
中添加了defaultLanguage: 'en'
,然后产生了以下错误消息
以下翻译文件出错:./assets/i18n/en.json
未创建数据库。必须首先调用create()
我需要很多时间来弄清楚如何修复它,在互联网上找不到任何帮助。
1条答案
按热度按时间dced5bon1#
2023修复
在〉= 9.2.0的情况下,这个错误不会再发生。因为库现在使用
httpBackend
错误
This topic为我指出了正确的方向。基本上,我们用来导入翻译文件的所需加载程序
直接导入到app.module中.ts @ngModule
如果你发现这篇文章,这肯定意味着你在你的应用程序中使用了
HttpInterceptor
,它确实从离子存储(或任何其他服务)请求数据,以将特定逻辑应用于请求-〉比方说,你想向请求添加一个令牌。让我们看下面这个例子
然后,由于
ngx-translate-multi-http-loader
正在请求带有Angular 默认http
类的翻译文件,您将通过此http拦截器。但是_storage
尚未示例化。这将导致Database not created. Must call create() first
,使我们的请求无法进入Something went wrong for the following translation file: ./assets/i18n/en.json
修复
对于那个特定的请求,我们必须忽略这个拦截器。
为此目的:
1.你可以用
httpBackend
-〉here an explanation来实现,但是它不起作用,因为你在调用http之前没有示例化你的服务。1.你必须添加一个特定的头,告诉你的
HttpInterceptor
忽略请求,让它通过没有进一步的调查. *Thx JohnrSharpe *为了能够将该头文件传递到
ngx-translate-multi-http-loader
中,嗯...你不能。因为库不接受它,但复制它并不复杂。你就在这儿。