ng2-translate 组件文件

ng2-translate on component file

我在我的 ionic2 应用程序上使用 ng2-translate,我让它在 html 上的静态文本上工作得很好,比如:

<ion-title>{{ 'Inventory.view-header' | translate }}</ion-title>

我翻译了这个标题,但是当我尝试翻译这个时:

<ion-item menuClose *ngFor="let p of pages" (click)="openPage(p)">
  <ion-icon color="gray" name="{{p.icon}}" item-left></ion-icon>
  {{p.title}}
</ion-item>

我无法用翻译管道翻译 p.title 作为 ion-title。我只能通过以下方式做到这一点:

this.translate.onLangChange.subscribe((event: LangChangeEvent) => {
  this.pages[0].title = event.translations.Menu.pantry;
  this.pages[1].title = event.translations.Menu.inventory;
...

但我不想为我要翻译的每个 ngfor 或数组都添加一个订阅。还有另一种方法可以使这项工作吗?

我在 app.module 上的会议:[​​=14=]

import { TranslateStaticLoader, TranslateModule, TranslateLoader} from 'ng2-translate';
export function createTranslateLoader(http: Http) {
    return new TranslateStaticLoader(http, './assets/i18n', '.json');
}

@NgModule({
  declarations: [
    MyApp,
    ...
  ],
  imports: [
    IonicModule.forRoot(MyApp),
    TranslateModule.forRoot({
      provide: TranslateLoader,
      useFactory: (createTranslateLoader),
      deps: [Http] 
    })
  ],
  ...

正如您所说,您的 p.title 值类似于 pantryinventory 那么您必须使用 translate 管道,如下所示:

<ion-item menuClose *ngFor="let p of pages" (click)="openPage(p)">
  <ion-icon color="gray" name="{{p.icon}}" item-left></ion-icon>
  {{ 'Menu.' + p.title | translate }}
</ion-item>

在这里您可以找到使用 TranslationPipe 和 TranslationService 的 Ionic2 rc3 的 repo。 https://github.com/philipphalder/ionic2-rc3-NG2-Translate