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