JSFiddle - React, Tailwind, and code Playground

by kyo shoyo

JavaScript

const navigatorLanguage = 'in';

const XLT_SUPPORT_LANGUAGES = ['en', 'id', 'ja', 'th', 'zh-TW'];
const _BROWSER_TO_XLT_SUPPORT_LANGUAGES_MAP = {
  'in': 'id',
  'zh-TW': 'zh-Hant'
};

const BROWSER_SUPPORT_LANGUAGES = Array.from(XLT_SUPPORT_LANGUAGES);
Object.keys(_BROWSER_TO_XLT_SUPPORT_LANGUAGES_MAP).forEach(each => {
    if (_BROWSER_TO_XLT_SUPPORT_LANGUAGES_MAP[each]) {
        BROWSER_SUPPORT_LANGUAGES.push(_BROWSER_TO_XLT_SUPPORT_LANGUAGES_MAP[each]);
    }
});

function isSupportLanguage (navigatorLanguage) {
    return !!BROWSER_SUPPORT_LANGUAGES.find(each => {
        return each.toLowerCase() === navigatorLanguage.toLowerCase();
    });
}

function getBrowserToXltSupportLanguage (navigatorLanguage) {
    return Object.keys(_BROWSER_TO_XLT_SUPPORT_LANGUAGES_MAP).find(each => {
        return each.toLowerCase() === navigatorLanguage.toLowerCase();
    });
}

function getXltLanguageByBrowserLanguage (navigatorLanguage) {
    let result = XLT_SUPPORT_LANGUAGES.find(each => {
        let _result = each.toLowerCase() === navigatorLanguage.toLowerCase();
        if (_result) {
            return _result;
        }
        return getBrowserToXltSupportLanguage(each);
    });
    if (!result) { // undefined to null
        result = null;
    }
    return result;
}

console.log(XLT_SUPPORT_LANGUAGES);
console.log(BROWSER_SUPPORT_LANGUAGES);
console.log(isSupportLanguage(navigatorLanguage));
console.log(getXltLanguageByBrowserLanguage(navigatorLanguage))