ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
2 lines • 4.52 kB
JavaScript
// !data localeinfo
var ilib=require("../index.js"),Utils=require("./Utils.js"),Locale=require("./Locale.js"),LocaleMatcher=require("./LocaleMatcher.js"),LocaleInfo=function(locale,options){var sync=!0,loadParams=void 0;switch(this.info=LocaleInfo.defaultInfo,typeof locale){case"string":this.locale=new Locale(locale);break;default:case"undefined":this.locale=new Locale();break;case"object":this.locale=locale}-1!=["pa-PK","ha-CM","ha-SD"].indexOf(this.locale.getSpec())&&new LocaleMatcher({locale:this.locale.getSpec(),sync:sync,loadParams:loadParams,onLoad:ilib.bind(this,function(lm){this.locale=new Locale(lm.getLikelyLocale())})}),options&&(void 0!==options.sync&&(sync=!!options.sync),void 0!==options.loadParams)&&(loadParams=options.loadParams),Utils.loadData({object:"LocaleInfo",locale:this.locale,name:"localeinfo.json",sync:sync,loadParams:loadParams,callback:ilib.bind(this,function(info){this.info=info||LocaleInfo.defaultInfo,options&&"function"==typeof options.onLoad&&options.onLoad(this)})})};LocaleInfo.defaultInfo=ilib.data.localeinfo,LocaleInfo.defaultInfo=LocaleInfo.defaultInfo||{calendar:"gregorian",clock:"24",currency:"USD",delimiter:{quotationStart:"“",quotationEnd:"”",alternateQuotationStart:"‘",alternateQuotationEnd:"’"},firstDayOfWeek:1,meridiems:"gregorian",numfmt:{script:"Latn",decimalChar:".",groupChar:",",pctChar:"%",exponential:"E",prigroupSize:3,currencyFormats:{common:"{s} {n}",commonNegative:"-{s} {n}",iso:"{s} {n}",isoNegative:"({s} {n})"},negativenumFmt:"-{n}",pctFmt:"{n}%",negativepctFmt:"-{n}%",roundingMode:"halfdown",secGroupSize:null,useNative:!1},paperSizes:{regular:"A4"},timezone:"Etc/UTC",units:"metric",weekendEnd:0,weekendStart:6},LocaleInfo.prototype={getLanguageName:function(){return this.info["language.name"]},getRegionName:function(){return this.info["region.name"]},getClock:function(){return this.info.clock},getLocale:function(){return this.locale},getUnits:function(){return this.info.units},getCalendar:function(){return this.info.calendar},getFirstDayOfWeek:function(){return this.info.firstDayOfWeek},getWeekEndStart:function(){return this.info.weekendStart},getWeekEndEnd:function(){return this.info.weekendEnd},getTimeZone:function(){return this.info.timezone},getDecimalSeparator:function(){return this.info.numfmt.decimalChar},getNativeDecimalSeparator:function(){return this.info.native_numfmt&&this.info.native_numfmt.decimalChar||this.info.numfmt.decimalChar},getGroupingSeparator:function(){return this.info.numfmt.groupChar},getNativeGroupingSeparator:function(){return this.info.native_numfmt&&this.info.native_numfmt.groupChar||this.info.numfmt.groupChar},getPrimaryGroupingDigits:function(){return void 0!==this.info.numfmt.prigroupSize&&this.info.numfmt.prigroupSize||0},getSecondaryGroupingDigits:function(){return this.info.numfmt.secgroupSize||0},getPercentageFormat:function(){return this.info.numfmt.pctFmt},getNegativePercentageFormat:function(){return this.info.numfmt.negativepctFmt},getPercentageSymbol:function(){return this.info.numfmt.pctChar||"%"},getExponential:function(){return this.info.numfmt.exponential},getNativeExponential:function(){return this.info.native_numfmt&&this.info.native_numfmt.exponential||this.info.numfmt.exponential},getNativePercentageSymbol:function(){return this.info.native_numfmt&&this.info.native_numfmt.pctChar||this.info.numfmt.pctChar||"%"},getNegativeNumberFormat:function(){return this.info.numfmt.negativenumFmt},getCurrencyFormats:function(){return this.info.numfmt.currencyFormats},getCurrency:function(){return this.info.currency},getDigitsStyle:function(){return this.info.numfmt&&this.info.numfmt.useNative?"native":void 0!==this.info.native_numfmt?"optional":"western"},getDigits:function(){return this.info.numfmt.digits},getNativeDigits:function(){return this.info.numfmt.useNative&&this.info.numfmt.digits||this.info.native_numfmt&&this.info.native_numfmt.digits},getRoundingMode:function(){return this.info.numfmt.roundingMode},getDefaultScript:function(){return this.info.scripts?this.info.scripts[0]:"Latn"},getScript:function(){return this.locale.getScript()||this.getDefaultScript()},getAllScripts:function(){return this.info.scripts||["Latn"]},getMeridiemsStyle:function(){return this.info.meridiems||"gregorian"},getPaperSize:function(){return this.info.paperSizes.regular},getDelimiterQuotationStart:function(){return this.info.delimiter.quotationStart},getDelimiterQuotationEnd:function(){return this.info.delimiter.quotationEnd}},module.exports=LocaleInfo;