src/services/translate.service.ts
Properties |
|
Methods |
|
constructor(userServ: UserService, translate: NGXTranslateService)
|
||||||||||||
Defined in src/services/translate.service.ts:14
|
||||||||||||
Parameters :
|
Public getTranslate |
getTranslate()
|
Defined in src/services/translate.service.ts:48
|
Returns :
NGXTranslateService
|
Public ngOnInit |
ngOnInit()
|
Defined in src/services/translate.service.ts:44
|
Returns :
void
|
Private currentUser |
currentUser:
|
Type : User
|
Defined in src/services/translate.service.ts:14
|
Private lang |
lang:
|
Default value : us
|
Defined in src/services/translate.service.ts:13
|
import { Injectable, OnInit } from '@angular/core';
import { TranslateService as NGXTranslateService } from '@ngx-translate/core';
import { UserService } from './user.service';
import { User } from '../models/user';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { HttpClient } from '@angular/common/http';
const langs = ['en', 'fr', 'ru', 'he', 'zh', 'pt', 'it'];
const langmatch = /en|fr|ru|he|zh|pt|it/;
@Injectable()
export class TranslateService implements OnInit {
private lang = 'us';
private currentUser: User;
constructor( private userServ: UserService, private translate: NGXTranslateService ) {
translate.addLangs( langs );
// this language will be used as a fallback when a translation isn't found in the current language
translate.setDefaultLang( 'en' );
this.userServ.getCurrent().subscribe(( user: User ) => {
this.currentUser = user;
// the lang to use, if the lang isn't available, it will use the current loader to get them
const browserLang = this.translate.getBrowserLang();
const browserCultureLang = this.translate.getBrowserCultureLang();
console.log( 'Detected browser language: "' + browserCultureLang + '"' );
// check if current User has a Preferred Language set, and it differs from his browser lang
let useLang = 'en';
const prefLang = ( this.currentUser ) ? this.currentUser.preferredLang : null;
if ( !prefLang ) {
useLang = browserLang.match( langmatch ) ? browserLang : 'en';
} else {
console.log( 'Detected User preferred language: "' + prefLang + '"' );
useLang = prefLang.match( langmatch ) ? prefLang : 'en';
}
this.translate.use( useLang );
console.log( 'Translation language has been set to: "' + useLang + '"' );
// translate.use( 'ru' );
});
}
public ngOnInit() {
// TODO
}
public getTranslate(): NGXTranslateService {
return this.translate;
}
}