JSFiddle - React, Tailwind, and code Playground
by Abhishek Kumar
HTML
<div id="konsole">
</div>
<div id="testlab">
</div>
JavaScript
var LocaleManager = function() {
var LanguageRegion = {
en: ['US', 'UK', 'GB'],
fr: ['FR', 'CA']
};
var format = {
HYPHEN: '[xx]-[YY]',
UNDERSCORE: '[xx]_[YY]',
DOT: '[xx].[YY]'
};
var bisectors = ['-', '_', '.'];
var template;
var _constructor = function(fmt) {
return template = fmt;
}(arguments[0]);
var fixIn = function(template, hashtable) {
var tag, output = template;
for (var key in hashtable) {
tag = new RegExp("\\[" + key + "\\]", 'g')
output = output.replace(tag, hashtable[key]);
}
return output;
};
var getLanguage = function(lc) {
for (var i = 0; i < bisectors.length; i++) {
var bisectorPosition = lc.indexOf(bisectors[i]);
if (bisectorPosition >= 0) {
return lc.substring(0, bisectorPosition);
}
}
return lc;
};
var getRegion = function(lc) {
for (var i = 0; i < bisectors.length; i++) {
var bisectorPosition = lc.indexOf(bisectors[i]);
if (bisectorPosition >= 0) {
return lc.substring(bisectorPosition + 1, lc.length);
}
}
return null;
};
var getFormatted = function(l, r) {
return fixIn(format[template], {
xx: l,
YY: r.toUpperCase()
});
};
var process = function(lc) {
var language = getLanguage(lc);
var region = getRegion(lc);
if (!!LanguageRegion[language]) {
if (region == null) {
region = LanguageRegion[language][0];
} else {
region = (LanguageRegion[language].indexOf(region.toUpperCase()) >= 0) ? region : LanguageRegion[language][0];
}
return getFormatted(language, region);
} else {
return (region != null) ? getFormatted(language, region) : language;
}
};
this.getLocaleId = function(lc) {
return process(lc);
};
};
// Usage
var localeManager = new LocaleManager('HYPHEN');
var lcid = localeManager.getLocaleId('en.uk');
$('#konsole').html('<h4>Usage</h4>' + lcid);
// Test cases
var...