File

src/services/translate.service.ts

Index

Properties
Methods

Constructor

constructor(userServ: UserService, translate: NGXTranslateService)
Parameters :
Name Type Optional Description
userServ UserService
translate NGXTranslateService

Methods

Public getTranslate
getTranslate()
Public ngOnInit
ngOnInit()
Returns : void

Properties

Private currentUser
currentUser: User
Type : User
Private lang
lang:
Default value : us
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;
    }

}

results matching ""

    No results matching ""