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

How can I translate text input in AngularFire2 Firestore use 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

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。在 shared 目录中创建 firestore-trans-loader.ts,在 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 回购协议。