mirror of https://github.com/BTCPrivate/copay.git
96 lines
2.2 KiB
TypeScript
96 lines
2.2 KiB
TypeScript
import { Injectable } from '@angular/core';
|
||
import { TranslateService } from '@ngx-translate/core';
|
||
import { Logger } from '../../providers/logger/logger';
|
||
|
||
import { ConfigProvider } from '../config/config';
|
||
|
||
import * as _ from "lodash";
|
||
|
||
@Injectable()
|
||
export class LanguageProvider {
|
||
private languages: any[] = [
|
||
{
|
||
name: 'English',
|
||
isoCode: 'en'
|
||
}, {
|
||
name: 'Español',
|
||
isoCode: 'es'
|
||
}, {
|
||
name: 'Français',
|
||
isoCode: 'fr',
|
||
}, {
|
||
name: 'Italiano',
|
||
isoCode: 'it',
|
||
}, {
|
||
name: 'Polski',
|
||
isoCode: 'pl',
|
||
}, {
|
||
name: 'Deutsch',
|
||
isoCode: 'de',
|
||
}, {
|
||
name: '日本語',
|
||
isoCode: 'ja',
|
||
useIdeograms: true,
|
||
}, {
|
||
name: '中文(简体)',
|
||
isoCode: 'zh',
|
||
useIdeograms: true,
|
||
}, {
|
||
name: 'Pусский',
|
||
isoCode: 'ru',
|
||
}, {
|
||
name: 'Português',
|
||
isoCode: 'pt',
|
||
}
|
||
];
|
||
private current: string;
|
||
|
||
constructor(
|
||
private logger: Logger,
|
||
private translate: TranslateService,
|
||
private configProvider: ConfigProvider
|
||
) {
|
||
this.logger.info('LanguageProvider initialized.');
|
||
this.translate.onLangChange.subscribe((event) => {
|
||
this.logger.info('Setting new default language to: ' + event.lang);
|
||
});
|
||
}
|
||
|
||
public load() {
|
||
let lang = this.configProvider.get().wallet.settings.defaultLanguage;
|
||
if (!_.isEmpty(lang)) this.current = lang;
|
||
else {
|
||
// Get from browser
|
||
const browserLang = this.translate.getBrowserLang();
|
||
this.current = this.getName(browserLang) ? browserLang : this.getDefault();
|
||
}
|
||
this.logger.info('Default language: ' + this.current);
|
||
this.translate.setDefaultLang(this.current);
|
||
}
|
||
|
||
public set(lang: string): void {
|
||
this.current = lang;
|
||
this.translate.use(lang);
|
||
this.configProvider.set({ wallet: { settings: { defaultLanguage: lang } } });
|
||
}
|
||
|
||
public getName(lang: string): string {
|
||
return _.result(_.find(this.languages, {
|
||
'isoCode': lang
|
||
}), 'name');
|
||
}
|
||
|
||
private getDefault(): string {
|
||
return this.languages[0]['isoCode'];
|
||
}
|
||
|
||
public getCurrent(): any {
|
||
return this.current;
|
||
}
|
||
|
||
public getAvailables(): any {
|
||
return this.languages;
|
||
}
|
||
|
||
}
|