import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
import { TranslateService } from 'ng2-translate/src/translate.service';
import { SdkService } from '../sdk/sdk.service';
import { SDK } from '../sdk/sdk.interface';
import { filter, take } from 'rxjs/operators';
type Language = 'en_US' | 'ru_RU' | 'zh_CN';
@Component({
selector: 'app-localization',
template: `
`,
styles: [`
:host {
display: inline-block;
}
`],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class LocalizationComponent implements OnChanges {
static DEFAULT_LANGUAGE = 'en_US';
@Input() lang;
setLanguage (lang: Language) {
this.translateService.use(lang);
}
ngOnChanges (changes) {
const lang: Language = changes.lang.currentValue || LocalizationComponent.DEFAULT_LANGUAGE;
this.translateService.use(lang);
}
constructor (private translateService: TranslateService,
private fbService: SdkService) {
// load facebook sdk on component init
this.fbService.sdk
.pipe(
filter((FB: SDK) => Boolean(FB)),
take(1)
);
// this language will be used as a fallback when a translation isn't found in the current language
this.translateService.setDefaultLang(LocalizationComponent.DEFAULT_LANGUAGE);
this.translateService.use(LocalizationComponent.DEFAULT_LANGUAGE);
}
}