如何使用 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
回购协议。
<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
回购协议。