【问题标题】:Can ngx-translate be used with database translations?ngx-translate 可以与数据库翻译一起使用吗?
【发布时间】:2018-08-06 00:59:11
【问题描述】:

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

【问题讨论】:

  • 我认为您需要使用 API 调用将所有 db 条目传递给您的应用程序,然后您应该能够读取它们。看看一些代码就好了,只是为了知道你想要实现什么

标签: angular pouchdb ngx-translate


【解决方案1】:

是的,你可以做到这一点:

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

P。 S:如果你还在使用 Angular

【讨论】:

    【解决方案2】:

    您需要做的第一件事是覆盖应用模块中的 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> {
         ...
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 2022-06-23
      • 1970-01-01
      • 2023-02-04
      • 2019-03-08
      相关资源
      最近更新 更多