openfl
Version:
A fast, productive library for 2D cross-platform development.
117 lines (101 loc) • 3.4 kB
JavaScript
// Class: openfl.globalization.LocaleID
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
$global.Object.defineProperty(exports, "__esModule", {value: true});
var __map_reserved = {};
// Imports
var $hxClasses = require("./../../hxClasses_stub").default;
var $hxEnums = require("./../../hxEnums_stub").default;
var $import = require("./../../import_stub").default;
function EReg() {return require("./../../EReg");}
function HxOverrides() {return require("./../../HxOverrides");}
function Reflect() {return require("./../../Reflect");}
function haxe_CallStack() {return require("./../../haxe/CallStack");}
function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");}
// Constructor
var LocaleID = function(name) {
if(name == "i-default") {
this.name = name;
this.language = name;
this.region = "";
this.script = "";
this.rtl = false;
this.lastOperationStatus = "noError";
} else {
try {
var intlLocale = (new Intl.Locale)(name).maximize();
this.name = (Reflect().default).field(intlLocale,"baseName");
this.language = (Reflect().default).field(intlLocale,"language");
this.region = (Reflect().default).field(intlLocale,"region");
this.script = (Reflect().default).field(intlLocale,"script");
this.rtl = LocaleID.RTL_LANGUAGES.indexOf(this.language) != -1;
this.lastOperationStatus = "noError";
} catch( e ) {
(haxe_CallStack().default).lastException = e;
var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e;
this.lastOperationStatus = "errorCodeUnknown";
}
}
}
// Meta
LocaleID.__name__ = "openfl.globalization.LocaleID";
LocaleID.__isInterface__ = false;
LocaleID.prototype = {
getLanguage: function() {
return this.language;
},
getRegion: function() {
return this.region;
},
getScript: function() {
return this.script;
},
getVariant: function() {
return "";
},
isRightToLeft: function() {
return this.rtl;
}
};
LocaleID.prototype.__class__ = LocaleID.prototype.constructor = $hxClasses["openfl.globalization.LocaleID"] = LocaleID;
// Init
// Statics
LocaleID.normalizeRequestedLocaleIDName = function(requestedLocaleIDName) {
if(requestedLocaleIDName == null) {
return null;
}
if(requestedLocaleIDName == "i-default") {
requestedLocaleIDName = Intl.DateTimeFormat().resolvedOptions().locale;
}
requestedLocaleIDName = new (EReg().default)("_","g").replace(requestedLocaleIDName,"-");
var parts = requestedLocaleIDName.split("-");
var language = parts.shift();
language = language.toLowerCase();
if(language == "root") {
language = "und";
}
var script = null;
var region = null;
if(parts.length > 0) {
var next = parts.shift();
if(next != null && next.length == 4) {
script = next.charAt(0).toUpperCase() + (HxOverrides().default).substr(next,1,null).toLowerCase();
next = parts.shift();
}
if(next != null && (next.length == 2 || next.length == 3)) {
region = next.toUpperCase();
next = parts.shift();
}
}
var result = language;
if(script != null) {
result += "-" + script;
}
if(region != null) {
result += "-" + region;
}
return result;
}
LocaleID.DEFAULT = "i-default"
LocaleID.RTL_LANGUAGES = ["ae","ar","arc","bcc","bqi","ckb","dv","fa","glk","he","ku","mzn","nqo","pnb","ps","sd","ug","ur","yi"]
// Export
exports.default = LocaleID;