0

我在我的 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。我只能通过以下方式做到这一点:

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 的配置:

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] 
    })
  ],
  ...
4

2 回答 2

1

正如你所说,你的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>
于 2016-11-30T11:57:32.450 回答
0

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

于 2016-12-10T12:11:17.117 回答