Angular ngx translate可以与数据库翻译一起使用吗?

Angular ngx translate可以与数据库翻译一起使用吗?,angular,pouchdb,ngx-translate,Angular,Pouchdb,Ngx Translate,我有一个大型数据库(PockDB),里面有很多翻译,每种语言的翻译都保存在自己的数据库中。如何使用ngx translate直接从数据库获取翻译?是的,您可以根据需要: 实现REST方法,返回不同语言的翻译; 像GEThttp://yourhost/rest/translation/en 然后你可以安装一个提供ngx翻译的软件,通过Http加载你的翻译,或者实现你自己的服务 附言:如果你仍然在Angular上,你需要做的第一件事就是覆盖应用程序模块中的ini函数,因为你需要在应用程序完全显示之前

我有一个大型数据库(PockDB),里面有很多翻译,每种语言的翻译都保存在自己的数据库中。如何使用ngx translate直接从数据库获取翻译?

是的,您可以根据需要:

  • 实现REST方法,返回不同语言的翻译; 像
    GET
    http://yourhost/rest/translation/en
  • 然后你可以安装一个提供ngx翻译的软件,通过Http加载你的翻译,或者实现你自己的服务

  • 附言:如果你仍然在Angular上,你需要做的第一件事就是覆盖应用程序模块中的ini函数,因为你需要在应用程序完全显示之前下载翻译。在app.module的providers属性中添加以下内容:

        {
            provide: APP_INITIALIZER, useFactory: (ini), deps: [
                HttpClient,
                TranslateService,
            ], multi: true
        }
    
    此外,当您声明反翻译模块时,还需要创建自定义翻译加载程序并在app.module中声明

       TranslateModule.forRoot({
            provide: TranslateLoader,
            useFactory: (createCustomTranslateLoader),
            deps: [Http, RegionService]
        }),
    
    init函数将返回另一个返回可观察值的函数。这里是你申报翻译服务的地方吗

           translate.addLangs(["en", "fr", "es"])
            translate.setDefaultLang("en")
            let browserLang = translate.getBrowserLang()
            moment.locale(browserLang)
            translate.use(browserLang.match(/en|fr|es/) ? browserLang : "en")
    
    createCustomTranslateLoader方法将返回从TranlasteLoader扩展的类

    export function createCustomTranslateLoader(http: Http, regionService: RegionService) {
        return new CustomTranslationLoader(http, regionService)
    }
    
    该类将重新实现从后端加载翻译的方法

    export class CustomTranslationLoader extends TranslateLoader {
    
        constructor(private http: Http, private regionService: RegionService) {
           super()
        }
    
        getTranslation(lang: string): Observable<any> {
         ...
        }
    }
    
    导出类CustomTranslationLoader扩展了TranslateLoader{
    构造函数(私有http:http,私有regionService:regionService){
    超级()
    }
    getTranslation(lang:string):可观察{
    ...
    }
    }
    
    我认为您需要使用API调用将所有db条目传递给应用程序,然后您应该能够读取它们。看到一些代码会很好,只是想知道您想要实现什么