简体   繁体   English

用Angular Universal进行Ngx-翻译

[英]Ngx-translate with Angular Universal

I just upgraded from ng2-translate ( v. 5.xx ) to ngx-translate ( v. 6.xx ) in my Angular 2 Universal App. 我刚刚从升级ng2-translatev. 5.xx )到ngx-translatev. 6.xx在我的角2通用应用程序)。

Before the upgrade I was using this loader ( found here ): 在升级之前,我正在使用此加载程序( 在此处找到 ):

class TranslateUniversalLoader implements TranslateLoader {
  public getTranslation(lang: string): Observable<any> {
    return Observable.create(observer => {
      observer.next(JSON.parse(fs.readFileSync(`src/i18n/${lang}.json`, 'utf8')));
      observer.complete();
    });
  }
}

That I was using like so: 我使用的是这样的:

@NgModule({
  bootstrap: [AppComponent],
  declarations: [ AppComponent ],
  imports: [
    FormsModule,
    CoreModule,
    ViewsModule,
    TranslateModule.forRoot({
      provide: TranslateLoader,
      useClass: TranslateUniversalLoader,
    }),
    UniversalModule
  ]
})

After upgrading to ngx-translate , however, I get this error in the terminal console (thus, server-side error): 但是,升级到ngx-translate后,我在终端控制台中收到此错误(因此是服务器端错误):

Module build failed: Error: /src/app/app.node.module.ts (65,7): 
Argument of type '{ provide: typeof TranslateLoader; useClass: typeof TranslateUniversalLoader; }' is not assignable to parameter of type 'TranslateModuleConfig'.

So anyone knows how to set up a custom loader for server side support with Angular Universal with ngx-translate ? 因此,谁知道如何通过ngx-translate为Angular Universal设置服务器端支持的自定义加载程序?

The solution was way easier than expected and detailed in the migration guide . 该解决方案比预期的要容易得多,并且在迁移指南中进行了详细说明

In 6.xx what is changed that was breaking the code is the expected value passed to forRoot() . 6.xx ,更改代码的更改是传递给forRoot()的期望值。

Now we need to pass the loader as an object of the loader key, like so: 现在,我们需要将加载程序作为loader键的对象传递,如下所示:

TranslateModule.forRoot({
  loader: {
    provide: TranslateLoader,
    useClass: TranslateUniversalLoader,
  }
}),

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM