ngx-translate可以用于数据库翻译吗?

问题描述 投票:-2回答:2

我有一个充满翻译的大型数据库(pouchDB),每个语言的翻译都保存在自己的数据库中。我如何使用ngx-translate直接从db获取翻译?

angular pouchdb ngx-translate
2个回答
0
投票

您需要做的第一件事是覆盖应用程序模块中的ini函数,因为您需要在应用程序完全显示之前下载翻译。在app.module的providers属性中添加:

    {
        provide: APP_INITIALIZER, useFactory: (ini), deps: [
            HttpClient,
            TranslateService,
        ], multi: true
    }

您还需要创建一个自定义翻译加载器,并在声明de translate模块时在app.module中声明

   TranslateModule.forRoot({
        provide: TranslateLoader,
        useFactory: (createCustomTranslateLoader),
        deps: [Http, RegionService]
    }),

init函数将返回另一个返回observable的函数。在这里你宣布翻译服务

       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> {
     ...
    }
}

0
投票

是的,你可以为此需要:

  1. 实现REST方法,返回不同语言的翻译;像GET http://yourhost/rest/translation/en;
  2. 然后您可以安装package,它提供ngx-translation以通过Http加载您的翻译,或者为此实现您自己的服务。

P. S:如果你仍然使用Angular <4.3,请使用@ angular / http中的Http和[email protected]

© www.soinside.com 2019 - 2024. All rights reserved.