ngx翻译:在ionic3中从firebase加载i18n json

ngx翻译:在ionic3中从firebase加载i18n json,ionic3,ngx-translate,Ionic3,Ngx Translate,在Ionic3应用程序中,我可以通过什么方式加载用于ngx翻译的JSON语言?上面提到的当前方法是将每种语言的JSON文件保存在assets文件夹中。这种方法的问题是,每次我必须添加新的语言支持时,我都必须发布新版本的应用程序。有没有办法从Firebase加载JSON?我创建了一个新的TranslateLoader,可以从Firebase获取JSON。代码如下: import {AngularFireDatabase} from 'angularfire2/database'; import {

在Ionic3应用程序中,我可以通过什么方式加载用于ngx翻译的JSON语言?上面提到的当前方法是将每种语言的JSON文件保存在assets文件夹中。这种方法的问题是,每次我必须添加新的语言支持时,我都必须发布新版本的应用程序。有没有办法从Firebase加载JSON?

我创建了一个新的TranslateLoader,可以从Firebase获取JSON。代码如下:

import {AngularFireDatabase} from 'angularfire2/database';
import {TranslateLoader} from "@ngx-translate/core";

export class TranslateFirebaseLoader implements TranslateLoader {
    constructor(public db : AngularFireDatabase) {}

    /**
     * Gets the translations from firebase
     * @param lang
     * @returns {any}
     */
    public getTranslation(lang: string): any {
      return this.db.list('/translations/'+lang)
            .map(data => {
              let fields={};
              data.forEach(field =>{
                fields[field.$key]=field.$value;
              });
              return fields;
            });
    }
}

好的,我设法让它像这样工作:

app.module.ts

从'@ngx translate/core'导入{TranslateModule,TranslateLoader};
//也应该使用“AngularFireDatabase”。但我想让它离线工作
从“angularfire2脱机/数据库”导入{AngularFireOfflineDatabase};
从“./translateFileRebeSeloader”导入{translateFileRebeSeloader};
导出函数CreateTransaleLoader(db:AngularFireOfflineDatabase){
返回新的translateFileRebeLoader(db,'/my/firebase/path');
}
@NGD模块({
进口:[
// ...
TranslateModule.forRoot({
加载器:{
提供:TranslateLoader,
useFactory:(createTranslateLoader),
副秘书:[AngularFireOfflineDatabase]
}
}),
// ...
],
// ...
})

导出类AppModule{}
谢谢。你能提供一段你是如何使用这段代码的吗。我收到一个错误“无法读取未定义的'getTranslation'属性”。谢谢