all files / src/shared/ LangManager.js

100% Statements 10/10
100% Branches 9/9
100% Functions 3/3
100% Lines 9/9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26                                 
import { langToContent } from './ContentManager';
import { getUrlParameter } from './utils';
 
export const DEFAULT_LANG = 'en';
export const DEFAULT_BROWSER_LANG = 'en-us';
 
// https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/language
const getBrowserLang = () => (window.navigator && window.navigator.language)
    ? window.navigator.language : DEFAULT_BROWSER_LANG;
 
// parse the browser lang to map to just a two letter lang code or 'zh-hans'/'zh-hant'
const browserLangToLang = (browserLang) => {
    if (langToContent[browserLang] !== undefined) {
        return browserLang;
    }
 
    return browserLang.substring(0,2);
};
 
export default class LangManager {
    constructor(browserLang) {
        this.browserLang = (getUrlParameter('uselang') || browserLang || getBrowserLang()).toLowerCase();
        this.lang = browserLangToLang(this.browserLang);
    }
}