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))