pretty-ngx-translate
Version:
The internationalization (i18n) library for Angular 2+
65 lines (52 loc) • 2.23 kB
Markdown
## Example: Custom loader for translations stored in Firebase Real-time Database
Dependency: [angularfire2](https://github.com/angular/angularfire2)
## FirebaseTransLoader
```ts
import { TranslateLoader } from '@ngx-translate/core';
import { Observable } from 'rxjs/Observable';
import { AngularFireDatabase} from 'angularfire2/database';
export class FirebaseTransLoader implements TranslateLoader {
constructor(private db: AngularFireDatabase) {}
public getTranslation(lang: string, prefix: string = 'translations/'): any {
return this.db.object(`${prefix}${lang}`) as Observable<any>;
}
}
```
## app.module
```ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { AngularFireModule } from 'angularfire2';
import { environment } from '../environments/environment';
import { AngularFireDatabaseModule } from 'angularfire2/database';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { FirebaseTransLoader } from './shared/firebase-trans-loader';
import { AngularFireDatabase, FirebaseObjectObservable } from 'angularfire2/database';
export function FbTransLoaderFactory(db: AngularFireDatabase) {
return new FirebaseTransLoader(db);
}
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
AngularFireModule.initializeApp(environment.firebase),
AngularFireDatabaseModule,
TranslateModule.forRoot({
loader: { provide: TranslateLoader, useFactory: FbTransLoaderFactory, deps: [AngularFireDatabase] }
})
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
```
In this example `FirebaseTransLoader` has an optional parameter:
- prefix: string = "translations/"
By using the default parameter, it will load your translations for the lang "en" from the Firebase database path: `translations/en`.
You can change the prefix in the `FbTransLoaderFactory` method that we just defined. For example if you want to load the "en" translations from `config/locales/en` you would use:
```ts
export function FbTransLoaderFactory(db: AngularFireDatabase) {
return new FirebaseTransLoader(db, "config/locales/");
}
```