如何使用ngx-translate翻译AngularFire2 Firestore中输入的文本?

时间:2018-10-01 17:00:50

标签: angular angular6 angularfire2 ngx-translate

<div class="row"><h6>{{item.ageList}}</h6></div>
<div class="row"><h6>{{item.amenities}}</h6></div>

注意:我想在获取Firestore之后转换数据,例如

<div class="row"><h6>{{'item.ageList' | translate}}</h6></div>
<div class="row"><h6>{{'item.amenities' | translate}}</h6></div>

Firestore object image

1 个答案:

答案 0 :(得分:0)

ngx-translate的仓库中,确实有Firebase的示例。
https://github.com/ngx-translate/core/blob/master/FIREBASE_EXAMPLE.md

编辑。 完成一些工作后,我可以为您提供工作示例。
1。将您的Firebase的配置放入envrionment.ts

export const environment = {
  production: false,
  firebase: {
    apiKey: '',
    authDomain: '',
    databaseURL: '',
    projectId: '',
    storageBucket: '',
    messagingSenderId: ''
  },
};

您可以从项目的Firebase控制台获取它。
2。在firestore-trans-loader.ts目录旁边的shared目录中创建app

import { TranslateLoader } from '@ngx-translate/core';
import { AngularFirestore } from '@angular/fire/firestore';
import { Observable } from 'rxjs';

export class FirestoreTransLoader implements TranslateLoader {

  constructor(private db: AngularFirestore) {
  }

  getTranslation(lang: string, prefix: string = 'translates'): Observable<any> {
    return this.db.doc(`${prefix}/${lang}`).valueChanges();
  }

}

3。准备您的app.module.ts

export function FirestoreTranslationsLoaderFactory(db: AngularFirestore) {
  return new FirestoreTransLoader(db);
}

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AngularFireModule.initializeApp(environment.firebase),
    AngularFirestoreModule,
    TranslateModule.forRoot({
      loader: {provide: TranslateLoader, useFactory: FirestoreTranslationsLoaderFactory, deps: [AngularFirestore]}
    })
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

4。最后在您的组件中使用它

import { Component } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';

@Component({
  selector: 'app-root',
  template: `
    <p>{{ helloKey | translate }}</p>
    <select (change)="onLangChange($event)">
      <option value="en">English</option>
      <option value="pl">Polish</option>
    </select>

  `,
})
export class AppComponent {

  helloKey = 'HELLO';
  constructor(private translate: TranslateService) {
    translate.setDefaultLang('en');
    translate.use('en');
  }

  onLangChange(event) {
    this.translate.use(event.target.value);
  }

}

这里确实有没有配置的完整仓库,您可以在其中找到详细信息(如果我忘记了某些内容)。
https://github.com/Mr-Eluzive/angularfire-ngx-translate-example 另外,我为此做了一些工作,所以也许我会尝试将其推入ngx-translate回购中。