перевод ngx-translate во всех дочерних компонентах модуля - PullRequest
0 голосов
/ 15 мая 2019

В настоящее время я использую ngx-translate для angular 7. Мой проект переводит два языка, английский и китайский, проект состоит из структуры, показанной ниже, A.component является родительским компонентом, а B.component являетсядочерний компонент.

модуль A

    {
      componentB:{
         B.component.ts
         ....
      },
      A.component.ts
      A.module.ts
      .... 
    }

класс экспорта BComponent реализует OnInit {

  constructor(private translate: TranslateService
              ) {
        translate.addLangs(['zh-CN', 'en']);
        translate.use('zh-CN');
  }
}

, приведенный выше код работает для перевода.

Ноесли вышеуказанный код добавляется только к A.component, но не к B.component.перевод на B.component не произойдет.

Интересно, есть ли способ добавить код в родительский компонент модуля, и все следующие дочерние компоненты могут автоматически переводиться без помещения кода вкаждый дочерний компонент.

1 Ответ

0 голосов
/ 15 мая 2019

Я думаю, вы должны добавить в app.component.ts, как сказано в документе

  1. Сначала импортируйте TranslateModule:
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {TranslateModule} from '@ngx-translate/core';

@NgModule({
    imports: [
        BrowserModule,
        TranslateModule.forRoot()
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }
  1. Инициализируйте TranslateService для вашего приложения:
import {Component} from '@angular/core';
import {TranslateService} from '@ngx-translate/core';

@Component({
    selector: 'app',
    template: `
        <div>{{ 'HELLO' | translate:param }}</div>
    `
})
export class AppComponent {
    param = {value: 'world'};

    constructor(translate: TranslateService) {
        // this language will be used as a fallback when a translation isn't found in the current language
        translate.setDefaultLang('en');

         // the lang to use, if the lang isn't available, it will use the current loader to get them
        translate.use('en');
    }
}
...