liblocale
Version:
Make locale manipulation easy inside browser
592 lines (569 loc) • 29.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ROOT = exports.CANADA_FRENCH = exports.CANADA = exports.US = exports.UK = exports.TAIWAN = exports.PRC = exports.CHINA = exports.KOREA = exports.JAPAN = exports.ITALY = exports.GERMANY = exports.FRANCE = exports.TRADITIONAL_CHINESE = exports.SIMPLIFIED_CHINESE = exports.CHINESE = exports.KOREAN = exports.JAPANESE = exports.ITALIAN = exports.GERMAN = exports.FRENCH = exports.ENGLISH = exports.Locale = exports.getLocaleNames = undefined;
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @babel */
var isoLanguageTable = "aa" + "aar" + "ab" + "abk" + "ae" + "ave" + "af" + "afr" + "ak" + "aka" + "am" + "amh" + "an" + "arg" + "ar" + "ara" + "as" + "asm" + "av" + "ava" + "ay" + "aym" + "az" + "aze" + "ba" + "bak" + "be" + "bel" + "bg" + "bul" + "bh" + "bih" + "bi" + "bis" + "bm" + "bam" + "bn" + "ben" + "bo" + "bod" + "br" + "bre" + "bs" + "bos" + "ca" + "cat" + "ce" + "che" + "ch" + "cha" + "co" + "cos" + "cr" + "cre" + "cs" + "ces" + "cu" + "chu" + "cv" + "chv" + "cy" + "cym" + "da" + "dan" + "de" + "deu" + "dv" + "div" + "dz" + "dzo" + "ee" + "ewe" + "el" + "ell" + "en" + "eng" + "eo" + "epo" + "es" + "spa" + "et" + "est" + "eu" + "eus" + "fa" + "fas" + "ff" + "ful" + "fi" + "fin" + "fj" + "fij" + "fo" + "fao" + "fr" + "fra" + "fy" + "fry" + "ga" + "gle" + "gd" + "gla" + "gl" + "glg" + "gn" + "grn" + "gu" + "guj" + "gv" + "glv" + "ha" + "hau" + "he" + "heb" + "hi" + "hin" + "ho" + "hmo" + "hr" + "hrv" + "ht" + "hat" + "hu" + "hun" + "hy" + "hye" + "hz" + "her" + "ia" + "ina" + "id" + "ind" + "ie" + "ile" + "ig" + "ibo" + "ii" + "iii" + "ik" + "ipk" + "in" + "ind" + "io" + "ido" + "is" + "isl" + "it" + "ita" + "iu" + "iku" + "iw" + "heb" + "ja" + "jpn" + "ji" + "yid" + "jv" + "jav" + "ka" + "kat" + "kg" + "kon" + "ki" + "kik" + "kj" + "kua" + "kk" + "kaz" + "kl" + "kal" + "km" + "khm" + "kn" + "kan" + "ko" + "kor" + "kr" + "kau" + "ks" + "kas" + "ku" + "kur" + "kv" + "kom" + "kw" + "cor" + "ky" + "kir" + "la" + "lat" + "lb" + "ltz" + "lg" + "lug" + "li" + "lim" + "ln" + "lin" + "lo" + "lao" + "lt" + "lit" + "lu" + "lub" + "lv" + "lav" + "mg" + "mlg" + "mh" + "mah" + "mi" + "mri" + "mk" + "mkd" + "ml" + "mal" + "mn" + "mon" + "mo" + "mol" + "mr" + "mar" + "ms" + "msa" + "mt" + "mlt" + "my" + "mya" + "na" + "nau" + "nb" + "nob" + "nd" + "nde" + "ne" + "nep" + "ng" + "ndo" + "nl" + "nld" + "nn" + "nno" + "no" + "nor" + "nr" + "nbl" + "nv" + "nav" + "ny" + "nya" + "oc" + "oci" + "oj" + "oji" + "om" + "orm" + "or" + "ori" + "os" + "oss" + "pa" + "pan" + "pi" + "pli" + "pl" + "pol" + "ps" + "pus" + "pt" + "por" + "qu" + "que" + "rm" + "roh" + "rn" + "run" + "ro" + "ron" + "ru" + "rus" + "rw" + "kin" + "sa" + "san" + "sc" + "srd" + "sd" + "snd" + "se" + "sme" + "sg" + "sag" + "si" + "sin" + "sk" + "slk" + "sl" + "slv" + "sm" + "smo" + "sn" + "sna" + "so" + "som" + "sq" + "sqi" + "sr" + "srp" + "ss" + "ssw" + "st" + "sot" + "su" + "sun" + "sv" + "swe" + "sw" + "swa" + "ta" + "tam" + "te" + "tel" + "tg" + "tgk" + "th" + "tha" + "ti" + "tir" + "tk" + "tuk" + "tl" + "tgl" + "tn" + "tsn" + "to" + "ton" + "tr" + "tur" + "ts" + "tso" + "tt" + "tat" + "tw" + "twi" + "ty" + "tah" + "ug" + "uig" + "uk" + "ukr" + "ur" + "urd" + "uz" + "uzb" + "ve" + "ven" + "vi" + "vie" + "vo" + "vol" + "wa" + "wln" + "wo" + "wol" + "xh" + "xho" + "yi" + "yid" + "yo" + "yor" + "za" + "zha" + "zh" + "zho" + "zu" + "zul";
var isoCountryTable = "AD" + "AND" + "AE" + "ARE" + "AF" + "AFG" + "AG" + "ATG" + "AI" + "AIA" + "AL" + "ALB" + "AM" + "ARM" + "AN" + "ANT" + "AO" + "AGO" + "AQ" + "ATA" + "AR" + "ARG" + "AS" + "ASM" + "AT" + "AUT" + "AU" + "AUS" + "AW" + "ABW" + "AX" + "ALA" + "AZ" + "AZE" + "BA" + "BIH" + "BB" + "BRB" + "BD" + "BGD" + "BE" + "BEL" + "BF" + "BFA" + "BG" + "BGR" + "BH" + "BHR" + "BI" + "BDI" + "BJ" + "BEN" + "BL" + "BLM" + "BM" + "BMU" + "BN" + "BRN" + "BO" + "BOL" + "BR" + "BRA" + "BS" + "BHS" + "BT" + "BTN" + "BV" + "BVT" + "BW" + "BWA" + "BY" + "BLR" + "BZ" + "BLZ" + "CA" + "CAN" + "CC" + "CCK" + "CD" + "COD" + "CF" + "CAF" + "CG" + "COG" + "CH" + "CHE" + "CI" + "CIV" + "CK" + "COK" + "CL" + "CHL" + "CM" + "CMR" + "CN" + "CHN" + "CO" + "COL" + "CR" + "CRI" + "CS" + "SCG" + "CU" + "CUB" + "CV" + "CPV" + "CX" + "CXR" + "CY" + "CYP" + "CZ" + "CZE" + "DE" + "DEU" + "DJ" + "DJI" + "DK" + "DNK" + "DM" + "DMA" + "DO" + "DOM" + "DZ" + "DZA" + "EC" + "ECU" + "EE" + "EST" + "EG" + "EGY" + "EH" + "ESH" + "ER" + "ERI" + "ES" + "ESP" + "ET" + "ETH" + "FI" + "FIN" + "FJ" + "FJI" + "FK" + "FLK" + "FM" + "FSM" + "FO" + "FRO" + "FR" + "FRA" + "GA" + "GAB" + "GB" + "GBR" + "GD" + "GRD" + "GE" + "GEO" + "GF" + "GUF" + "GG" + "GGY" + "GH" + "GHA" + "GI" + "GIB" + "GL" + "GRL" + "GM" + "GMB" + "GN" + "GIN" + "GP" + "GLP" + "GQ" + "GNQ" + "GR" + "GRC" + "GS" + "SGS" + "GT" + "GTM" + "GU" + "GUM" + "GW" + "GNB" + "GY" + "GUY" + "HK" + "HKG" + "HM" + "HMD" + "HN" + "HND" + "HR" + "HRV" + "HT" + "HTI" + "HU" + "HUN" + "ID" + "IDN" + "IE" + "IRL" + "IL" + "ISR" + "IM" + "IMN" + "IN" + "IND" + "IO" + "IOT" + "IQ" + "IRQ" + "IR" + "IRN" + "IS" + "ISL" + "IT" + "ITA" + "JE" + "JEY" + "JM" + "JAM" + "JO" + "JOR" + "JP" + "JPN" + "KE" + "KEN" + "KG" + "KGZ" + "KH" + "KHM" + "KI" + "KIR" + "KM" + "COM" + "KN" + "KNA" + "KP" + "PRK" + "KR" + "KOR" + "KW" + "KWT" + "KY" + "CYM" + "KZ" + "KAZ" + "LA" + "LAO" + "LB" + "LBN" + "LC" + "LCA" + "LI" + "LIE" + "LK" + "LKA" + "LR" + "LBR" + "LS" + "LSO" + "LT" + "LTU" + "LU" + "LUX" + "LV" + "LVA" + "LY" + "LBY" + "MA" + "MAR" + "MC" + "MCO" + "MD" + "MDA" + "ME" + "MNE" + "MF" + "MAF" + "MG" + "MDG" + "MH" + "MHL" + "MK" + "MKD" + "ML" + "MLI" + "MM" + "MMR" + "MN" + "MNG" + "MO" + "MAC" + "MP" + "MNP" + "MQ" + "MTQ" + "MR" + "MRT" + "MS" + "MSR" + "MT" + "MLT" + "MU" + "MUS" + "MV" + "MDV" + "MW" + "MWI" + "MX" + "MEX" + "MY" + "MYS" + "MZ" + "MOZ" + "NA" + "NAM" + "NC" + "NCL" + "NE" + "NER" + "NF" + "NFK" + "NG" + "NGA" + "NI" + "NIC" + "NL" + "NLD" + "NO" + "NOR" + "NP" + "NPL" + "NR" + "NRU" + "NU" + "NIU" + "NZ" + "NZL" + "OM" + "OMN" + "PA" + "PAN" + "PE" + "PER" + "PF" + "PYF" + "PG" + "PNG" + "PH" + "PHL" + "PK" + "PAK" + "PL" + "POL" + "PM" + "SPM" + "PN" + "PCN" + "PR" + "PRI" + "PS" + "PSE" + "PT" + "PRT" + "PW" + "PLW" + "PY" + "PRY" + "QA" + "QAT" + "RE" + "REU" + "RO" + "ROU" + "RS" + "SRB" + "RU" + "RUS" + "RW" + "RWA" + "SA" + "SAU" + "SB" + "SLB" + "SC" + "SYC" + "SD" + "SDN" + "SE" + "SWE" + "SG" + "SGP" + "SH" + "SHN" + "SI" + "SVN" + "SJ" + "SJM" + "SK" + "SVK" + "SL" + "SLE" + "SM" + "SMR" + "SN" + "SEN" + "SO" + "SOM" + "SR" + "SUR" + "ST" + "STP" + "SV" + "SLV" + "SY" + "SYR" + "SZ" + "SWZ" + "TC" + "TCA" + "TD" + "TCD" + "TF" + "ATF" + "TG" + "TGO" + "TH" + "THA" + "TJ" + "TJK" + "TK" + "TKL" + "TL" + "TLS" + "TM" + "TKM" + "TN" + "TUN" + "TO" + "TON" + "TR" + "TUR" + "TT" + "TTO" + "TV" + "TUV" + "TW" + "TWN" + "TZ" + "TZA" + "UA" + "UKR" + "UG" + "UGA" + "UM" + "UMI" + "US" + "USA" + "UY" + "URY" + "UZ" + "UZB" + "VA" + "VAT" + "VC" + "VCT" + "VE" + "VEN" + "VG" + "VGB" + "VI" + "VIR" + "VN" + "VNM" + "VU" + "VUT" + "WF" + "WLF" + "WS" + "WSM" + "YE" + "YEM" + "YT" + "MYT" + "ZA" + "ZAF" + "ZM" + "ZMB" + "ZW" + "ZWE";
var cache = {};
var DISPLAY_LANGUAGE = 0;
var DISPLAY_COUNTRY = 1;
var DISPLAY_VARIANT = 2;
var defaultLocale = null;
var isoCountries = null;
var isoLanguages = null;
var getLocaleNames = exports.getLocaleNames = function getLocaleNames(inLocale) {
var country = inLocale.getCountry().toLowerCase();
var variant = inLocale.getVariant().toLowerCase();
if (country === "af") {
return 'Afrikaans';
} else if (country === "ar") {
if (variant === "ae") {
return 'Arabic / United Arab Emirates';
} else if (variant === "bh") {
return 'Arabic / Bahrain';
} else if (variant === "eg") {
return 'Arabic / Egypt';
} else if (variant === "dz") {
return 'Arabic / Algeria';
} else if (variant === "iq") {
return 'Arabic / Iraq';
} else if (variant === "jo") {
return 'Arabic / Jordan';
} else if (variant === "kw") {
return 'Arabic / Kuwait';
} else if (variant === "lb") {
return 'Arabic / Lebanon';
} else if (variant === "ly") {
return 'Arabic / Libya';
} else if (variant === "ma") {
return 'Arabic / Morocco';
} else if (variant === "om") {
return 'Arabic / Oman';
} else if (variant === "qa") {
return 'Arabic / Qatar';
} else if (variant === "sa") {
return 'Arabic / Saudi Arabia';
} else if (variant === "sy") {
return 'Arabic / Syria';
} else if (variant === "tn") {
return 'Arabic / Tunisia';
} else if (variant === "ye") {
return 'Arabic / Yemen';
} else {
return 'Arabic';
}
} else if (country === "be") {
return 'Belarusian';
} else if (country === "bg") {
return 'Bulgarian';
} else if (country === "ca") {
return 'Catalan';
} else if (country === "cs") {
return 'Czech';
} else if (country === "da") {
return 'Danish';
} else if (country === "de") {
if (variant === "at") {
return 'German / Austria';
} else if (variant === "ch") {
return 'German / Switzerland';
} else if (variant === "li") {
return 'German / Liechtenstein';
} else if (variant === "lu") {
return 'German / Luxembourg';
} else {
return 'German / Germany';
}
} else if (country === "el") {
return 'Greek / Greece';
} else if (country === "en") {
if (variant === "us") {
return 'English / United States';
} else if (variant === "au") {
return 'English / Austrailia';
} else if (variant === "bz") {
return 'English / Belize';
} else if (variant === "ca") {
return 'English / Canada';
} else if (variant === "gb") {
return 'English / Great Britain';
} else if (variant === "ie") {
return 'English / Ireland';
} else if (variant === "jm") {
return 'English / Jamaica';
} else if (variant === "nz") {
return 'English / New Zealand';
} else if (variant === "tt") {
return 'English / Trinidad';
} else if (variant === "za") {
return 'English / South Africa';
} else {
return 'English';
}
} else if (country === "es") {
if (variant === "ar") {
return 'Spanish / Argentina';
} else if (variant === "bo") {
return 'Spanish / Bolivia';
} else if (variant === "cl") {
return 'Spanish / Chile';
} else if (variant === "co") {
return 'Spanish / Colombia';
} else if (variant === "cr") {
return 'Spanish / Costa Rica';
} else if (variant === "do") {
return 'Spanish / Dominican Republic';
} else if (variant === "ec") {
return 'Spanish / Ecuador';
} else if (variant === "gt") {
return 'Spanish / Guatemala';
} else if (variant === "hn") {
return 'Spanish / Honduras';
} else if (variant === "mx") {
return 'Spanish / Mexico';
} else if (variant === "ni") {
return 'Spanish / Nicaragua';
} else if (variant === "pa") {
return 'Spanish / Panama';
} else if (variant === "pe") {
return 'Spanish / Peru';
} else if (variant === "pr") {
return 'Spanish / Puerto Rico';
} else if (variant === "py") {
return 'Spanish / Paraguay';
} else if (variant === "sv") {
return 'Spanish / El Salvador';
} else if (variant === "uy") {
return 'Spanish / Uruguay';
} else if (variant === "ve") {
return 'Spanish / Venezuela';
} else {
return 'Spanish / Spain';
}
} else if (country === "et") {
return 'Estonian';
} else if (country === "eu") {
return 'Basque';
} else if (country === "fa") {
return 'Farsi';
} else if (country === "fi") {
return 'Finnish';
} else if (country === "fo") {
return 'Faeroese';
} else if (country === "fr") {
if (variant === "be") {
return 'French / Belgium';
} else if (variant === "ca") {
return 'French / Canada';
} else if (variant === "ch") {
return 'French / Switzerland';
} else if (variant === "ca") {
return 'French / Luxembourg';
}
return 'French / France';
} else if (country === "gd") {
if (variant === "ie") {
return 'Gaelic / Ireland';
}
return 'Gaelic / Scotland';
} else if (country === "he") {
return 'Hebrew';
} else if (country === "hi") {
return 'Hindi';
} else if (country === "hr") {
return 'Croatian';
} else if (country === "hu") {
return 'Hungarian';
} else if (country === "in") {
return 'Indonesian';
} else if (country === "is") {
return 'Icelandic';
} else if (country === "he") {
return 'Hebrew';
} else if (country === "it") {
if (variant === "ch") {
return 'Italian / Switzerland';
}
return 'Italian / Italy';
} else if (country === "ja") {
return 'Japanese / Japan';
} else if (country === "ji") {
return 'Yiddish';
} else if (country === "ko") {
return 'Korean / Korea';
} else if (country === "lt") {
return 'Lithuanian / Lithuania';
} else if (country === "lv") {
return 'Latvian';
} else if (country === "mk") {
return 'Macedonian / Macedonia';
} else if (country === "ms") {
return 'Malaysian / Malaysia';
} else if (country === "mt") {
return 'Maltese / Malta';
} else if (country === "nl") {
if (country === "be") {
return 'Dutch / Belgium';
}
return 'Dutch / Netherlands';
} else if (country === "pl") {
return 'Polish / Poland';
} else if (country === "pt") {
if (variant === "br") {
return 'Portuguese / Brazil';
}
return 'Portuguese / Portugual';
} else if (country === "rm") {
return 'Rhaeto-Romanic / Romania';
} else if (country === "ro") {
return 'Romanian / Romania';
} else if (country === "ru") {
return 'Russian / Russia';
} else if (country === "sb") {
return 'Sorbian';
} else if (country === "sk") {
return 'Slovak';
} else if (country === "sl") {
return 'Slovenian';
} else if (country === "sq") {
return 'Albanian / Albania';
} else if (country === "sr") {
return 'Serbian / Serbia';
} else if (country === "sv") {
if (variant === "fi") {
return 'Swedish / Finland';
}
return 'Swedish / Sweden';
} else if (country === "sx") {
return 'Sutu';
} else if (country === "sz") {
return 'Sami';
} else if (country === "th") {
return 'Thai / Thailand';
} else if (country === "tn") {
return 'Tswana';
} else if (country === "tr") {
return 'Turkish / Turkey';
} else if (country === "ts") {
return 'Tsonga';
} else if (country === "uk") {
return 'Ukrainian';
} else if (country === "th") {
return 'Thai / Thailand';
} else if (country === "ur") {
return 'Urdu';
} else if (country === "ve") {
return 'Venda';
} else if (country === "vi") {
return 'Vietnamese / Vietnam';
} else if (country === "xh") {
return 'Xhosa';
} else if (country === "zh") {
if (variant === "cn") {
return 'Chinese / China';
} else if (variant === "hk") {
return 'Chinese / Hong Kong';
} else if (variant === "sg") {
return 'Chinese / Singapore';
} else if (variant === "tw") {
return 'Chinese / Taiwan';
}
return 'Chinese / China';
} else if (country === "zu") {
return 'Zulu';
}
return 'Could not be determined';
};
var Locale = exports.Locale = function () {
function Locale() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$language = _ref.language,
language = _ref$language === undefined ? null : _ref$language,
_ref$country = _ref.country,
country = _ref$country === undefined ? null : _ref$country,
_ref$variant = _ref.variant,
variant = _ref$variant === undefined ? null : _ref$variant;
(0, _classCallCheck3.default)(this, Locale);
if (language === null && country === null && variant === null) {
this.language = this.convertOldISOCodes("en");
this.country = "US";
this.variant = "";
} else {
this.language = this.convertOldISOCodes(language);
this.country = country ? country.toUpperCase() : "";
this.variant = variant || "";
}
}
(0, _createClass3.default)(Locale, [{
key: "convertOldISOCodes",
value: function convertOldISOCodes(language) {
language = language.toLowerCase();
if (language === "he") {
return "iw";
}
if (language === "yi") {
return "ji";
}
if (language === "id") {
return "in";
}
return language;
}
}, {
key: "equals",
value: function equals(obj) {
if (this === obj) return true;
if (!(obj instanceof Locale)) {
return false;
}
var other = obj;
return this.language === other.language && this.country === other.country && this.variant === other.variant;
}
}, {
key: "getCountry",
value: function getCountry() {
return this.country;
}
}, {
key: "getDisplayCountry",
value: function getDisplayCountry() {
var inLocale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
if (inLocale === null) {
inLocale = Locale.getDefault();
}
return this.getDisplayString(this.country, inLocale, DISPLAY_COUNTRY);
}
}, {
key: "getDisplayLanguage",
value: function getDisplayLanguage() {
var inLocale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
if (inLocale === null) {
inLocale = Locale.getDefault();
}
return this.getDisplayString(this.language, inLocale, DISPLAY_LANGUAGE);
}
}, {
key: "getDisplayString",
value: function getDisplayString(code) {
var inLocale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (code.length === 0) {
return "";
}
if (inLocale === null) {
throw new ReferenceError("NullPointerException");
}
return getLocaleNames(inLocale);
}
}, {
key: "getISO3Country",
value: function getISO3Country() {
var country3 = Locale.getISO3Code(this.country, isoCountryTable);
if (country3 === null) {
throw new ReferenceError("MissingResourceException Couldn't find 3-letter country" + " code for " + this.country, "FormatData_" + this.toString());
}
return country3;
}
}, {
key: "getISO3Language",
value: function getISO3Language() {
var language3 = Locale.getISO3Code(this.language, isoLanguageTable);
if (language3 === null) {
throw new ReferenceError("MissingResourceException Couldn't find 3-letter" + " language code for " + this.language, "FormatData_" + this.toString());
}
return language3;
}
}, {
key: "getLanguage",
value: function getLanguage() {
return this.language;
}
}, {
key: "getVariant",
value: function getVariant() {
return this.variant;
}
}, {
key: "toString",
value: function toString() {
var l = this.language.length != 0,
c = this.country.length != 0,
v = this.variant.length != 0,
result = this.language;
if (c || l && v) {
result += '_' + this.country;
}
if (v && (l || c)) {
result += '_' + this.variant;
}
return result;
}
}], [{
key: "createSingleton",
value: function createSingleton() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref2$language = _ref2.language,
language = _ref2$language === undefined ? null : _ref2$language,
_ref2$country = _ref2.country,
country = _ref2$country === undefined ? null : _ref2$country,
_ref2$variant = _ref2.variant,
variant = _ref2$variant === undefined ? null : _ref2$variant;
var locale = new Locale({ language: language, country: country, variant: variant }),
key = locale.language + "_" + locale.country + "_" + locale.variant;
cache[key] = locale;
return locale;
}
}, {
key: "getDefault",
value: function getDefault() {
var fallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
if (defaultLocale === null) {
var lang = void 0,
language = void 0,
region = void 0,
country = void 0,
variant = void 0,
nav = void 0;
nav = navigator;
if (nav.language) {
lang = nav.language.replace("-", "_");
} else if (nav.systemLanguage) {
lang = nav.systemLanguage.replace("-", "_");
} else if (nav.userLanguage) {
lang = nav.userLanguage.replace("-", "_");
} else {
lang = fallback || "en_EN";
}
lang = lang.split("_");
language = lang[0];
region = lang.length > 1 ? lang[1].toUpperCase() : lang[0].toUpperCase();
if (region !== null) {
var i = region.indexOf("_");
if (i >= 0) {
country = region.substring(0, i);
variant = region.substring(i + 1);
} else {
country = region;
variant = "";
}
} else {
country = variant = "";
}
defaultLocale = Locale.getInstance({ language: language, country: country, variant: variant });
}
return defaultLocale;
}
}, {
key: "getInstance",
value: function getInstance() {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref3$language = _ref3.language,
language = _ref3$language === undefined ? null : _ref3$language,
_ref3$country = _ref3.country,
country = _ref3$country === undefined ? null : _ref3$country,
_ref3$variant = _ref3.variant,
variant = _ref3$variant === undefined ? null : _ref3$variant;
var locale = void 0,
sb = void 0,
l = void 0;
if (language === null || country === null || variant === null) {
throw new ReferenceError("NullPointerException");
}
sb = language + "_" + country + "_" + variant;
locale = cache[sb];
if (locale === null) {
locale = new Locale({ language: language, country: country, variant: variant });
l = cache[sb] = locale;
if (l !== null) {
locale = l;
}
}
return locale;
}
}, {
key: "getISOCountries",
value: function getISOCountries() {
if (isoCountries === null) {
isoCountries = Locale.getISO2Table(isoCountryTable);
}
return isoCountries;
}
}, {
key: "getISOLanguages",
value: function getISOLanguages() {
if (isoLanguages === null) {
isoLanguages = Locale.getISO2Table(isoLanguageTable);
}
return isoLanguages;
}
}, {
key: "getISO2Table",
value: function getISO2Table(table) {
var len = table.length / 5,
isoTable = new Array(len),
i = void 0,
j = void 0;
for (i = 0, j = 0; i < len; i++, j += 5) {
isoTable[i] = table.substring(j, j + 2);
}
return isoTable;
}
}, {
key: "getISO3Code",
value: function getISO3Code(iso2Code, table) {
var codeLength = iso2Code.length;
if (codeLength === 0) {
return "";
}
var tableLength = table.length,
index = tableLength;
if (codeLength === 2) {
var c1 = iso2Code.charAt(0),
c2 = iso2Code.charAt(1);
for (index = 0; index < tableLength; index += 5) {
if (table.charAt(index) === c1 && table.charAt(index + 1) === c2) {
break;
}
}
}
return index < tableLength ? table.substring(index + 2, index + 5) : null;
}
}, {
key: "setDefault",
value: function setDefault(newLocale) {
if (newLocale === null) {
throw new ReferenceError("NullPointerException Can't set default locale to" + " NULL");
}
defaultLocale = newLocale;
}
}]);
return Locale;
}();
var ENGLISH = exports.ENGLISH = Locale.createSingleton({ language: "en__", country: "en", variant: "" });
var FRENCH = exports.FRENCH = Locale.createSingleton({ language: "fr__", country: "fr", variant: "" });
var GERMAN = exports.GERMAN = Locale.createSingleton({ language: "de__", country: "de", variant: "" });
var ITALIAN = exports.ITALIAN = Locale.createSingleton({ language: "it__", country: "it", variant: "" });
var JAPANESE = exports.JAPANESE = Locale.createSingleton({ language: "ja__", country: "ja", variant: "" });
var KOREAN = exports.KOREAN = Locale.createSingleton({ language: "ko__", country: "ko", variant: "" });
var CHINESE = exports.CHINESE = Locale.createSingleton({ language: "zh__", country: "zh", variant: "" });
var SIMPLIFIED_CHINESE = exports.SIMPLIFIED_CHINESE = Locale.createSingleton({ language: "zh_CN_", country: "zh", variant: "CN" });
var TRADITIONAL_CHINESE = exports.TRADITIONAL_CHINESE = Locale.createSingleton({ language: "zh_TW_", country: "zh", variant: "TW" });
var FRANCE = exports.FRANCE = Locale.createSingleton({ language: "fr_FR_", country: "fr", variant: "FR" });
var GERMANY = exports.GERMANY = Locale.createSingleton({ language: "de_DE_", country: "de", variant: "DE" });
var ITALY = exports.ITALY = Locale.createSingleton({ language: "it_IT_", country: "it", variant: "IT" });
var JAPAN = exports.JAPAN = Locale.createSingleton({ language: "ja_JP_", country: "ja", variant: "JP" });
var KOREA = exports.KOREA = Locale.createSingleton({ language: "ko_KR_", country: "ko", variant: "KR" });
var CHINA = exports.CHINA = SIMPLIFIED_CHINESE;
var PRC = exports.PRC = SIMPLIFIED_CHINESE;
var TAIWAN = exports.TAIWAN = TRADITIONAL_CHINESE;
var UK = exports.UK = Locale.createSingleton({ language: "en_GB_", country: "en", variant: "GB" });
var US = exports.US = Locale.createSingleton({ language: "en_US_", country: "en", variant: "US" });
var CANADA = exports.CANADA = Locale.createSingleton({ language: "en_CA_", country: "en", variant: "CA" });
var CANADA_FRENCH = exports.CANADA_FRENCH = Locale.createSingleton({ language: "fr_CA_", country: "fr", variant: "CA" });
var ROOT = exports.ROOT = Locale.createSingleton({ language: "__", country: "", variant: "" });