UNPKG

liblocale

Version:

Make locale manipulation easy inside browser

592 lines (569 loc) 29.3 kB
"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: "" });