From c43149d8a4c3b006f1531190232e2d61bf20e806 Mon Sep 17 00:00:00 2001 From: Felix Nagel Date: Wed, 18 Nov 2015 17:04:20 +0100 Subject: [PATCH] Calendar: Use globalize-runtime with compiled locales --- Gruntfile.js | 39 +- bower.json | 2 +- demos/bootstrap.js | 7 +- external/cldrjs/cldr.js | 13 +- external/cldrjs/cldr/event.js | 6 +- external/cldrjs/cldr/supplemental.js | 6 +- external/globalize/globalize-runtime.js | 236 + .../{globalize => globalize-runtime}/date.js | 706 +-- .../globalize/globalize-runtime/number.js | 682 +++ external/globalize/globalize/number.js | 1266 ---- external/localization.js | 5442 +---------------- package.json | 2 + 12 files changed, 1143 insertions(+), 7264 deletions(-) create mode 100644 external/globalize/globalize-runtime.js rename external/globalize/{globalize => globalize-runtime}/date.js (64%) create mode 100644 external/globalize/globalize-runtime/number.js delete mode 100644 external/globalize/globalize/number.js diff --git a/Gruntfile.js b/Gruntfile.js index 86d921a83..10cb371a0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -234,9 +234,9 @@ grunt.initConfig({ "cldrjs/cldr/supplemental.js": "cldrjs/dist/cldr/supplemental.js", "cldrjs/LICENSE-MIT": "cldrjs/LICENSE-MIT", - "globalize/globalize.js": "globalize/dist/globalize.js", - "globalize/globalize/number.js": "globalize/dist/globalize/number.js", - "globalize/globalize/date.js": "globalize/dist/globalize/date.js", + "globalize/globalize-runtime.js": "globalize/dist/globalize-runtime.js", + "globalize/globalize-runtime/number.js": "globalize/dist/globalize-runtime/number.js", + "globalize/globalize-runtime/date.js": "globalize/dist/globalize-runtime/date.js", "globalize/LICENSE.txt": "globalize/LICENSE.txt", "qunit/qunit.js": "qunit/qunit/qunit.js", @@ -400,6 +400,39 @@ grunt.registerTask( "update-authors", function() { }); }); +grunt.registerTask( "compile-globalize", function() { + var formatters, + Globalize = require( "globalize" ), + globalizeCompiler = require( "globalize-compiler" ), + cldrData = require( "cldr-data" ), + languages = [ "ar", "en", "de", "es", "zh" ]; + + Globalize.load( cldrData.entireMainFor.apply( this, languages ) ); + Globalize.load( cldrData.entireSupplemental() ); + + formatters = languages.reduce( function( ret, language ) { + var globalize = Globalize( language ); + + ret = ret.concat([ + globalize.dateFormatter( { raw: "EEEEEE" } ), + globalize.dateFormatter( { raw: "EEEEE" } ), + globalize.dateFormatter( { raw: "EEEE" } ), + globalize.dateFormatter( { raw: "MMMM" } ), + globalize.dateFormatter( { raw: "w" } ), + globalize.dateFormatter( { raw: "c" } ), + globalize.dateFormatter( { date: "short" } ), + globalize.dateParser( { date: "short" } ), + globalize.dateFormatter( { date: "long" } ), + globalize.dateParser( { date: "long" } ), + globalize.numberParser() + ]); + + return ret; + }, [] ); + + grunt.file.write( "external/localization.js", globalizeCompiler.compile( formatters ) ); +}); + grunt.registerTask( "default", [ "lint", "requirejs", "test" ]); grunt.registerTask( "lint", [ "asciilint", "jshint", "jscs", "csslint", "htmllint" ]); grunt.registerTask( "test", [ "qunit" ]); diff --git a/bower.json b/bower.json index 614e4f78a..f7b44bb37 100644 --- a/bower.json +++ b/bower.json @@ -19,7 +19,7 @@ "qunit-assert-close": "JamesMGreene/qunit-assert-close#v1.1.1", "qunit-composite": "JamesMGreene/qunit-composite#v1.1.0", "requirejs": "2.1.14", - "globalize": "1.0.0", + "globalize": "globalize#1.1.0-rc.6", "jquery-1.7.0": "jquery#1.7.0", "jquery-1.7.1": "jquery#1.7.1", diff --git a/demos/bootstrap.js b/demos/bootstrap.js index efac1b838..602afa3e7 100644 --- a/demos/bootstrap.js +++ b/demos/bootstrap.js @@ -80,11 +80,16 @@ require.config( { baseUrl: window.location.pathname.indexOf( "demos/" ) !== -1 ? "../../ui" : "../../../ui", paths: { cldr: "../external/cldrjs/cldr", - globalize: "../external/globalize/globalize", + "globalize-runtime": "../external/globalize/globalize-runtime", "globalize-locales": "../external/localization", jquery: "../external/jquery/jquery", external: "../external/" }, + map: { + "*": { + "globalize": "globalize-runtime" + } + }, shim: { "external/globalize-old/globalize.culture.de-DE": [ "external/globalize-old/globalize" ], "external/globalize-old/globalize.culture.ja-JP": [ "external/globalize-old/globalize" ] diff --git a/external/cldrjs/cldr.js b/external/cldrjs/cldr.js index 5b3c637a8..23b6c96fe 100644 --- a/external/cldrjs/cldr.js +++ b/external/cldrjs/cldr.js @@ -1,15 +1,15 @@ /** - * CLDR JavaScript Library v0.4.1 + * CLDR JavaScript Library v0.4.3 * http://jquery.com/ * * Copyright 2013 Rafael Xavier de Souza * Released under the MIT license * http://jquery.org/license * - * Date: 2015-02-25T13:51Z + * Date: 2015-08-24T01:00Z */ /*! - * CLDR JavaScript Library v0.4.1 2015-02-25T13:51Z MIT license © Rafael Xavier + * CLDR JavaScript Library v0.4.3 2015-08-24T01:00Z MIT license © Rafael Xavier * http://git.io/h4lmVg */ (function( root, factory ) { @@ -463,12 +463,7 @@ arrayForEach( sources, function( source ) { var prop; for ( prop in source ) { - if ( prop in destination && arrayIsArray( destination[ prop ] ) ) { - - // Concat Arrays - destination[ prop ] = destination[ prop ].concat( source[ prop ] ); - - } else if ( prop in destination && typeof destination[ prop ] === "object" ) { + if ( prop in destination && typeof destination[ prop ] === "object" && !arrayIsArray( destination[ prop ] ) ) { // Merge Objects destination[ prop ] = merge( destination[ prop ], source[ prop ] ); diff --git a/external/cldrjs/cldr/event.js b/external/cldrjs/cldr/event.js index f9eaa368b..ee36d3543 100644 --- a/external/cldrjs/cldr/event.js +++ b/external/cldrjs/cldr/event.js @@ -1,15 +1,15 @@ /** - * CLDR JavaScript Library v0.4.1 + * CLDR JavaScript Library v0.4.3 * http://jquery.com/ * * Copyright 2013 Rafael Xavier de Souza * Released under the MIT license * http://jquery.org/license * - * Date: 2015-02-25T13:51Z + * Date: 2015-08-24T01:00Z */ /*! - * CLDR JavaScript Library v0.4.1 2015-02-25T13:51Z MIT license © Rafael Xavier + * CLDR JavaScript Library v0.4.3 2015-08-24T01:00Z MIT license © Rafael Xavier * http://git.io/h4lmVg */ (function( factory ) { diff --git a/external/cldrjs/cldr/supplemental.js b/external/cldrjs/cldr/supplemental.js index 87153683c..821abc4bf 100644 --- a/external/cldrjs/cldr/supplemental.js +++ b/external/cldrjs/cldr/supplemental.js @@ -1,15 +1,15 @@ /** - * CLDR JavaScript Library v0.4.1 + * CLDR JavaScript Library v0.4.3 * http://jquery.com/ * * Copyright 2013 Rafael Xavier de Souza * Released under the MIT license * http://jquery.org/license * - * Date: 2015-02-25T13:51Z + * Date: 2015-08-24T01:00Z */ /*! - * CLDR JavaScript Library v0.4.1 2015-02-25T13:51Z MIT license © Rafael Xavier + * CLDR JavaScript Library v0.4.3 2015-08-24T01:00Z MIT license © Rafael Xavier * http://git.io/h4lmVg */ (function( factory ) { diff --git a/external/globalize/globalize-runtime.js b/external/globalize/globalize-runtime.js new file mode 100644 index 000000000..1cee1297e --- /dev/null +++ b/external/globalize/globalize-runtime.js @@ -0,0 +1,236 @@ +/** + * Globalize Runtime v1.1.0-rc.6 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-11-18T10:38Z + */ +/*! + * Globalize Runtime v1.1.0-rc.6 2015-11-18T10:38Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define( factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory(); + } else { + + // Globalize + root.Globalize = factory(); + } +}( this, function() { + + +/** + * A toString method that outputs meaningful values for objects or arrays and + * still performs as fast as a plain string in case variable is string, or as + * fast as `"" + number` in case variable is a number. + * Ref: http://jsperf.com/my-stringify + */ +var toString = function( variable ) { + return typeof variable === "string" ? variable : ( typeof variable === "number" ? "" + + variable : JSON.stringify( variable ) ); +}; + + + + +/** + * formatMessage( message, data ) + * + * @message [String] A message with optional {vars} to be replaced. + * + * @data [Array or JSON] Object with replacing-variables content. + * + * Return the formatted message. For example: + * + * - formatMessage( "{0} second", [ 1 ] ); // 1 second + * + * - formatMessage( "{0}/{1}", ["m", "s"] ); // m/s + * + * - formatMessage( "{name} <{email}>", { + * name: "Foo", + * email: "bar@baz.qux" + * }); // Foo + */ +var formatMessage = function( message, data ) { + + // Replace {attribute}'s + message = message.replace( /{[0-9a-zA-Z-_. ]+}/g, function( name ) { + name = name.replace( /^{([^}]*)}$/, "$1" ); + return toString( data[ name ] ); + }); + + return message; +}; + + + + +var objectExtend = function() { + var destination = arguments[ 0 ], + sources = [].slice.call( arguments, 1 ); + + sources.forEach(function( source ) { + var prop; + for ( prop in source ) { + destination[ prop ] = source[ prop ]; + } + }); + + return destination; +}; + + + + +var createError = function( code, message, attributes ) { + var error; + + message = code + ( message ? ": " + formatMessage( message, attributes ) : "" ); + error = new Error( message ); + error.code = code; + + objectExtend( error, attributes ); + + return error; +}; + + + + +// Based on http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery +var stringHash = function( str ) { + return [].reduce.call( str, function( hash, i ) { + var chr = i.charCodeAt( 0 ); + hash = ( ( hash << 5 ) - hash ) + chr; + return hash | 0; + }, 0 ); +}; + + + + +var runtimeKey = function( fnName, locale, args, argsStr ) { + var hash; + argsStr = argsStr || JSON.stringify( args ); + hash = stringHash( fnName + locale + argsStr ); + return hash > 0 ? "a" + hash : "b" + Math.abs( hash ); +}; + + + + +var validate = function( code, message, check, attributes ) { + if ( !check ) { + throw createError( code, message, attributes ); + } +}; + + + + +var validateParameterPresence = function( value, name ) { + validate( "E_MISSING_PARAMETER", "Missing required parameter `{name}`.", + value !== undefined, { name: name }); +}; + + + + +var validateParameterType = function( value, name, check, expected ) { + validate( + "E_INVALID_PAR_TYPE", + "Invalid `{name}` parameter ({value}). {expected} expected.", + check, + { + expected: expected, + name: name, + value: value + } + ); +}; + + + + +var validateParameterTypeString = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "string", + "a string" + ); +}; + + + + +// ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions?redirectlocale=en-US&redirectslug=JavaScript%2FGuide%2FRegular_Expressions +var regexpEscape = function( string ) { + return string.replace( /([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1" ); +}; + + + + +var stringPad = function( str, count, right ) { + var length; + if ( typeof str !== "string" ) { + str = String( str ); + } + for ( length = str.length; length < count; length += 1 ) { + str = ( right ? ( str + "0" ) : ( "0" + str ) ); + } + return str; +}; + + + + +function Globalize( locale ) { + if ( !( this instanceof Globalize ) ) { + return new Globalize( locale ); + } + + validateParameterPresence( locale, "locale" ); + validateParameterTypeString( locale, "locale" ); + + this._locale = locale; +} + +Globalize.locale = function( locale ) { + validateParameterTypeString( locale, "locale" ); + + if ( arguments.length ) { + this._locale = locale; + } + return this._locale; +}; + +Globalize._createError = createError; +Globalize._formatMessage = formatMessage; +Globalize._regexpEscape = regexpEscape; +Globalize._runtimeKey = runtimeKey; +Globalize._stringPad = stringPad; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterTypeString = validateParameterTypeString; +Globalize._validateParameterType = validateParameterType; + +return Globalize; + + + + +})); diff --git a/external/globalize/globalize/date.js b/external/globalize/globalize-runtime/date.js similarity index 64% rename from external/globalize/globalize/date.js rename to external/globalize/globalize-runtime/date.js index 9f26a105d..118a5da05 100644 --- a/external/globalize/globalize/date.js +++ b/external/globalize/globalize-runtime/date.js @@ -1,5 +1,5 @@ /** - * Globalize v1.0.0 + * Globalize Runtime v1.1.0-rc.6 * * http://github.com/jquery/globalize * @@ -7,10 +7,10 @@ * Released under the MIT license * http://jquery.org/license * - * Date: 2015-04-23T12:02Z + * Date: 2015-11-18T10:38Z */ /*! - * Globalize v1.0.0 2015-04-23T12:02Z Released under the MIT license + * Globalize Runtime v1.1.0-rc.6 2015-11-18T10:38Z Released under the MIT license * http://git.io/TrdQbw */ (function( root, factory ) { @@ -20,34 +20,29 @@ // AMD define([ - "cldr", - "../globalize", - "./number", - "cldr/event", - "cldr/supplemental" + "../globalize-runtime", + "./number" ], factory ); } else if ( typeof exports === "object" ) { // Node, CommonJS - module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); + module.exports = factory( + require( "../globalize-runtime" ), + require( "./number" ) + ); } else { // Extend global - factory( root.Cldr, root.Globalize ); + factory( root.Globalize ); } -}(this, function( Cldr, Globalize ) { +}(this, function( Globalize ) { -var createError = Globalize._createError, - createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature, - formatMessage = Globalize._formatMessage, - numberSymbol = Globalize._numberSymbol, +var createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature, regexpEscape = Globalize._regexpEscape, + runtimeKey = Globalize._runtimeKey, stringPad = Globalize._stringPad, - validateCldr = Globalize._validateCldr, - validateDefaultLocale = Globalize._validateDefaultLocale, validateParameterPresence = Globalize._validateParameterPresence, validateParameterType = Globalize._validateParameterType, - validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject, validateParameterTypeString = Globalize._validateParameterTypeString; @@ -58,116 +53,6 @@ var validateParameterTypeDate = function( value, name ) { -var createErrorInvalidParameterValue = function( name, value ) { - return createError( "E_INVALID_PAR_VALUE", "Invalid `{name}` value ({value}).", { - name: name, - value: value - }); -}; - - - - -/** - * expandPattern( options, cldr ) - * - * @options [Object] if String, it's considered a skeleton. Object accepts: - * - skeleton: [String] lookup availableFormat; - * - date: [String] ( "full" | "long" | "medium" | "short" ); - * - time: [String] ( "full" | "long" | "medium" | "short" ); - * - datetime: [String] ( "full" | "long" | "medium" | "short" ); - * - raw: [String] For more info see datetime/format.js. - * - * @cldr [Cldr instance]. - * - * Return the corresponding pattern. - * Eg for "en": - * - "GyMMMd" returns "MMM d, y G"; - * - { skeleton: "GyMMMd" } returns "MMM d, y G"; - * - { date: "full" } returns "EEEE, MMMM d, y"; - * - { time: "full" } returns "h:mm:ss a zzzz"; - * - { datetime: "full" } returns "EEEE, MMMM d, y 'at' h:mm:ss a zzzz"; - * - { raw: "dd/mm" } returns "dd/mm"; - */ - -var dateExpandPattern = function( options, cldr ) { - var dateSkeleton, result, skeleton, timeSkeleton, type; - - function combineDateTime( type, datePattern, timePattern ) { - return formatMessage( - cldr.main([ - "dates/calendars/gregorian/dateTimeFormats", - type - ]), - [ timePattern, datePattern ] - ); - } - - switch ( true ) { - case "skeleton" in options: - skeleton = options.skeleton; - result = cldr.main([ - "dates/calendars/gregorian/dateTimeFormats/availableFormats", - skeleton - ]); - if ( !result ) { - timeSkeleton = skeleton.split( /[^hHKkmsSAzZOvVXx]/ ).slice( -1 )[ 0 ]; - dateSkeleton = skeleton.split( /[^GyYuUrQqMLlwWdDFgEec]/ )[ 0 ]; - if ( /(MMMM|LLLL).*[Ec]/.test( dateSkeleton ) ) { - type = "full"; - } else if ( /MMMM/g.test( dateSkeleton ) ) { - type = "long"; - } else if ( /MMM/g.test( dateSkeleton ) || /LLL/g.test( dateSkeleton ) ) { - type = "medium"; - } else { - type = "short"; - } - result = combineDateTime( type, - cldr.main([ - "dates/calendars/gregorian/dateTimeFormats/availableFormats", - dateSkeleton - ]), - cldr.main([ - "dates/calendars/gregorian/dateTimeFormats/availableFormats", - timeSkeleton - ]) - ); - } - break; - - case "date" in options: - case "time" in options: - result = cldr.main([ - "dates/calendars/gregorian", - "date" in options ? "dateFormats" : "timeFormats", - ( options.date || options.time ) - ]); - break; - - case "datetime" in options: - result = combineDateTime( options.datetime, - cldr.main([ "dates/calendars/gregorian/dateFormats", options.datetime ]), - cldr.main([ "dates/calendars/gregorian/timeFormats", options.datetime ]) - ); - break; - - case "raw" in options: - result = options.raw; - break; - - default: - throw createErrorInvalidParameterValue({ - name: "options", - value: options - }); - } - - return result; -}; - - - - /** * dayOfWeek( date, firstDay ) * @@ -249,25 +134,11 @@ var dateDayOfYear = function( date ) { -var dateWeekDays = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ]; - - - - -/** - * firstDayOfWeek - */ -var dateFirstDayOfWeek = function( cldr ) { - return dateWeekDays.indexOf( cldr.supplemental.weekData.firstDay() ); -}; - - - - /** * millisecondsInDay */ var dateMillisecondsInDay = function( date ) { + // TODO Handle daylight savings discontinuities return date - dateStartOf( date, "day" ); }; @@ -275,7 +146,7 @@ var dateMillisecondsInDay = function( date ) { -var datePatternRe = (/([a-z])\1*|'([^']|'')+'|''|./ig); +var datePatternRe = ( /([a-z])\1*|'([^']|'')+'|''|./ig ); @@ -325,6 +196,11 @@ var dateTimezoneHourFormat = function( date, format, timeSeparator, formatNumber +var dateWeekDays = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ]; + + + + /** * format( date, properties ) * @@ -345,12 +221,14 @@ var dateFormat = function( date, numberFormatters, properties ) { length = current.length; if ( chr === "j" ) { + // Locale preferred hHKk. // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data chr = properties.preferredTime; } if ( chr === "Z" ) { + // Z..ZZZ: same as "xxxx". if ( length < 4 ) { chr = "x"; @@ -377,6 +255,7 @@ var dateFormat = function( date, numberFormatters, properties ) { // Year case "y": + // Plain year. // The length specifies the padding, but for two letters it also specifies the // maximum length. @@ -388,6 +267,7 @@ var dateFormat = function( date, numberFormatters, properties ) { break; case "Y": + // Year in "Week of Year" // The length specifies the padding, but for two letters it also specifies the // maximum length. @@ -426,6 +306,7 @@ var dateFormat = function( date, numberFormatters, properties ) { // Week case "w": + // Week of Year. // woy = ceil( ( doy + dow of 1/1 ) / 7 ) - minDaysStuff ? 1 : 0. // TODO should pad on ww? Not documented, but I guess so. @@ -435,6 +316,7 @@ var dateFormat = function( date, numberFormatters, properties ) { break; case "W": + // Week of Month. // wom = ceil( ( dom + dow of `1/month` ) / 7 ) - minDaysStuff ? 1 : 0. ret = dateDayOfWeek( dateStartOf( date, "month" ), properties.firstDay ); @@ -452,6 +334,7 @@ var dateFormat = function( date, numberFormatters, properties ) { break; case "F": + // Day of Week in month. eg. 2nd Wed in July. ret = Math.floor( date.getDate() / 7 ) + 1; break; @@ -460,6 +343,7 @@ var dateFormat = function( date, numberFormatters, properties ) { case "e": case "c": if ( length <= 2 ) { + // Range is [1-7] (deduced by example provided on documentation) // TODO Should pad with zeros (not specified in the docs)? ret = dateDayOfWeek( date, properties.firstDay ) + 1; @@ -515,6 +399,7 @@ var dateFormat = function( date, numberFormatters, properties ) { // Zone case "z": case "O": + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". if ( date.getTimezoneOffset() === 0 ) { @@ -531,6 +416,7 @@ var dateFormat = function( date, numberFormatters, properties ) { break; case "X": + // Same as x*, except it uses "Z" for zero offset. if ( date.getTimezoneOffset() === 0 ) { ret = "Z"; @@ -539,6 +425,7 @@ var dateFormat = function( date, numberFormatters, properties ) { /* falls through */ case "x": + // x: hourFormat("+HH;-HH") // xx or xxxx: hourFormat("+HHmm;-HHmm") // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") @@ -575,233 +462,14 @@ var dateFormat = function( date, numberFormatters, properties ) { -/** - * properties( pattern, cldr ) - * - * @pattern [String] raw pattern. - * ref: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns - * - * @cldr [Cldr instance]. - * - * Return the properties given the pattern and cldr. - * - * TODO Support other calendar types. - */ -var dateFormatProperties = function( pattern, cldr ) { - var properties = { - pattern: pattern, - timeSeparator: numberSymbol( "timeSeparator", cldr ) - }, - widths = [ "abbreviated", "wide", "narrow" ]; - - function setNumberFormatterPattern( pad ) { - if ( !properties.numberFormatters ) { - properties.numberFormatters = {}; - } - properties.numberFormatters[ pad ] = stringPad( "", pad ); - } - - pattern.replace( datePatternRe, function( current ) { - var formatNumber, - chr = current.charAt( 0 ), - length = current.length; - - if ( chr === "j" ) { - // Locale preferred hHKk. - // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data - properties.preferredTime = chr = cldr.supplemental.timeData.preferred(); - } - - // ZZZZ: same as "OOOO". - if ( chr === "Z" && length === 4 ) { - chr = "O"; - length = 4; - } - - switch ( chr ) { - - // Era - case "G": - properties.eras = cldr.main([ - "dates/calendars/gregorian/eras", - length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) - ]); - break; - - // Year - case "y": - // Plain year. - formatNumber = true; - break; - - case "Y": - // Year in "Week of Year" - properties.firstDay = dateFirstDayOfWeek( cldr ); - properties.minDays = cldr.supplemental.weekData.minDays(); - formatNumber = true; - break; - - case "u": // Extended year. Need to be implemented. - case "U": // Cyclic year name. Need to be implemented. - throw createErrorUnsupportedFeature({ - feature: "year pattern `" + chr + "`" - }); - - // Quarter - case "Q": - case "q": - if ( length > 2 ) { - if ( !properties.quarters ) { - properties.quarters = {}; - } - if ( !properties.quarters[ chr ] ) { - properties.quarters[ chr ] = {}; - } - properties.quarters[ chr ][ length ] = cldr.main([ - "dates/calendars/gregorian/quarters", - chr === "Q" ? "format" : "stand-alone", - widths[ length - 3 ] - ]); - } else { - formatNumber = true; - } - break; - - // Month - case "M": - case "L": - if ( length > 2 ) { - if ( !properties.months ) { - properties.months = {}; - } - if ( !properties.months[ chr ] ) { - properties.months[ chr ] = {}; - } - properties.months[ chr ][ length ] = cldr.main([ - "dates/calendars/gregorian/months", - chr === "M" ? "format" : "stand-alone", - widths[ length - 3 ] - ]); - } else { - formatNumber = true; - } - break; - - // Week - Week of Year (w) or Week of Month (W). - case "w": - case "W": - properties.firstDay = dateFirstDayOfWeek( cldr ); - properties.minDays = cldr.supplemental.weekData.minDays(); - formatNumber = true; - break; - - // Day - case "d": - case "D": - case "F": - formatNumber = true; - break; - - case "g": - // Modified Julian day. Need to be implemented. - throw createErrorUnsupportedFeature({ - feature: "Julian day pattern `g`" - }); - - // Week day - case "e": - case "c": - if ( length <= 2 ) { - properties.firstDay = dateFirstDayOfWeek( cldr ); - formatNumber = true; - break; - } - - /* falls through */ - case "E": - if ( !properties.days ) { - properties.days = {}; - } - if ( !properties.days[ chr ] ) { - properties.days[ chr ] = {}; - } - if ( length === 6 ) { - - // If short day names are not explicitly specified, abbreviated day names are - // used instead. - // http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras - // http://unicode.org/cldr/trac/ticket/6790 - properties.days[ chr ][ length ] = cldr.main([ - "dates/calendars/gregorian/days", - chr === "c" ? "stand-alone" : "format", - "short" - ]) || cldr.main([ - "dates/calendars/gregorian/days", - chr === "c" ? "stand-alone" : "format", - "abbreviated" - ]); - } else { - properties.days[ chr ][ length ] = cldr.main([ - "dates/calendars/gregorian/days", - chr === "c" ? "stand-alone" : "format", - widths[ length < 3 ? 0 : length - 3 ] - ]); - } - break; - - // Period (AM or PM) - case "a": - properties.dayPeriods = cldr.main( - "dates/calendars/gregorian/dayPeriods/format/wide" - ); - break; - - // Hour - case "h": // 1-12 - case "H": // 0-23 - case "K": // 0-11 - case "k": // 1-24 - - // Minute - case "m": - - // Second - case "s": - case "S": - case "A": - formatNumber = true; - break; - - // Zone - case "z": - case "O": - // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". - // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". - properties.gmtFormat = cldr.main( "dates/timeZoneNames/gmtFormat" ); - properties.gmtZeroFormat = cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); - properties.tzLongHourFormat = cldr.main( "dates/timeZoneNames/hourFormat" ); - - /* falls through */ - case "Z": - case "X": - case "x": - setNumberFormatterPattern( 1 ); - setNumberFormatterPattern( 2 ); - break; - - case "v": - case "V": - throw createErrorUnsupportedFeature({ - feature: "timezone pattern `" + chr + "`" - }); - } +var dateFormatterFn = function( numberFormatters, properties ) { + return function dateFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeDate( value, "value" ); - if ( formatNumber ) { - setNumberFormatterPattern( length ); - } - }); + return dateFormat( value, numberFormatters, properties ); + }; - return properties; }; @@ -815,7 +483,7 @@ var dateFormatProperties = function( pattern, cldr ) { * Returns an indication whether the specified year is a leap year. */ var dateIsLeapYear = function( year ) { - return new Date(year, 1, 29).getMonth() === 1; + return new Date( year, 1, 29 ).getMonth() === 1; }; @@ -829,7 +497,7 @@ var dateIsLeapYear = function( year ) { * Return the last day of the given date's month */ var dateLastDayOfMonth = function( date ) { - return new Date( date.getFullYear(), date.getMonth() + 1, 0).getDate(); + return new Date( date.getFullYear(), date.getMonth() + 1, 0 ).getDate(); }; @@ -908,6 +576,7 @@ var dateParse = function( value, tokens, properties ) { var century, chr, value, length; if ( token.type === "literal" ) { + // continue return true; } @@ -916,6 +585,7 @@ var dateParse = function( value, tokens, properties ) { length = token.type.length; if ( chr === "j" ) { + // Locale preferred hHKk. // http://www.unicode.org/reports/tr35/tr35-dates.html#Time_Data chr = properties.preferredTimeData; @@ -936,6 +606,7 @@ var dateParse = function( value, tokens, properties ) { if ( outOfRange( value, 0, 99 ) ) { return false; } + // mimic dojo/date/locale: choose century to apply, according to a sliding // window of 80 years before and 20 years after present year. century = Math.floor( date.getFullYear() / 100 ) * 100; @@ -990,6 +661,7 @@ var dateParse = function( value, tokens, properties ) { break; case "F": + // Day of Week in month. eg. 2nd Wed in July. // Skip break; @@ -998,6 +670,7 @@ var dateParse = function( value, tokens, properties ) { case "e": case "c": case "E": + // Skip. // value = arrayIndexOf( dateWeekDays, token.value ); break; @@ -1104,6 +777,7 @@ var dateParse = function( value, tokens, properties ) { } if ( era === 0 ) { + // 1 BC = year 0 date.setFullYear( date.getFullYear() * -1 + 1 ); } @@ -1117,7 +791,7 @@ var dateParse = function( value, tokens, properties ) { if ( outOfRange( daysOfYear, 1, dateIsLeapYear( date.getFullYear() ) ? 366 : 365 ) ) { return null; } - date.setMonth(0); + date.setMonth( 0 ); date.setDate( daysOfYear ); } @@ -1141,22 +815,6 @@ var dateParse = function( value, tokens, properties ) { -/** - * parseProperties( cldr ) - * - * @cldr [Cldr instance]. - * - * Return parser properties. - */ -var dateParseProperties = function( cldr ) { - return { - preferredTimeData: cldr.supplemental.timeData.preferred() - }; -}; - - - - /** * Generated by: * @@ -1319,6 +977,7 @@ var dateTokenizer = function( value, numberParser, properties ) { length = current.length; if ( chr === "Z" ) { + // Z..ZZZ: same as "xxxx". if ( length < 4 ) { chr = "x"; @@ -1370,6 +1029,7 @@ var dateTokenizer = function( value, numberParser, properties ) { // Quarter case "Q": case "q": + // number l=1:{1}, l=2:{2}. // lookup l=3... oneDigitIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ @@ -1382,6 +1042,7 @@ var dateTokenizer = function( value, numberParser, properties ) { // Month case "M": case "L": + // number l=1:{1,2}, l=2:{2}. // lookup l=3... oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo() || lookup([ @@ -1393,6 +1054,7 @@ var dateTokenizer = function( value, numberParser, properties ) { // Day case "D": + // number {l,3}. if ( length <= 3 ) { @@ -1404,6 +1066,7 @@ var dateTokenizer = function( value, numberParser, properties ) { case "W": case "F": + // number l=1:{1}. oneDigitIfLengthOne(); break; @@ -1411,6 +1074,7 @@ var dateTokenizer = function( value, numberParser, properties ) { // Week day case "e": case "c": + // number l=1:{1}, l=2:{2}. // lookup for length >=3. if ( length <= 2 ) { @@ -1421,6 +1085,7 @@ var dateTokenizer = function( value, numberParser, properties ) { /* falls through */ case "E": if ( length === 6 ) { + // Note: if short day names are not explicitly specified, abbreviated day // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras lookup([ @@ -1458,11 +1123,13 @@ var dateTokenizer = function( value, numberParser, properties ) { case "j": case "m": case "s": + // number l1:{1,2}, l2:{2}. oneOrTwoDigitsIfLengthOne() || twoDigitsIfLengthTwo(); break; case "S": + // number {l}. // Unicode equivalent to /\d{length}/ @@ -1471,6 +1138,7 @@ var dateTokenizer = function( value, numberParser, properties ) { break; case "A": + // number {l+5}. // Unicode equivalent to /\d{length+5}/ @@ -1481,6 +1149,7 @@ var dateTokenizer = function( value, numberParser, properties ) { // Zone case "z": case "O": + // O: "{gmtFormat}+H;{gmtFormat}-H" or "{gmtZeroFormat}", eg. "GMT-8" or "GMT". // OOOO: "{gmtFormat}{hourFormat}" or "{gmtZeroFormat}", eg. "GMT-08:00" or "GMT". if ( value === properties[ "timeZoneNames/gmtZeroFormat" ] ) { @@ -1499,6 +1168,7 @@ var dateTokenizer = function( value, numberParser, properties ) { break; case "X": + // Same as x*, except it uses "Z" for zero offset. if ( value === "Z" ) { token.value = 0; @@ -1508,6 +1178,7 @@ var dateTokenizer = function( value, numberParser, properties ) { /* falls through */ case "x": + // x: hourFormat("+HH;-HH") // xx or xxxx: hourFormat("+HHmm;-HHmm") // xxx or xxxxx: hourFormat("+HH:mm;-HH:mm") @@ -1560,258 +1231,40 @@ var dateTokenizer = function( value, numberParser, properties ) { -/** - * tokenizerProperties( pattern, cldr ) - * - * @pattern [String] raw pattern. - * - * @cldr [Cldr instance]. - * - * Return Object with data that will be used by tokenizer. - */ -var dateTokenizerProperties = function( pattern, cldr ) { - var properties = { - pattern: pattern, - timeSeparator: numberSymbol( "timeSeparator", cldr ) - }, - widths = [ "abbreviated", "wide", "narrow" ]; - - function populateProperties( path, value ) { - - // The `dates` and `calendars` trim's purpose is to reduce properties' key size only. - properties[ path.replace( /^.*\/dates\//, "" ).replace( /calendars\//, "" ) ] = value; - } - - cldr.on( "get", populateProperties ); - - pattern.match( datePatternRe ).forEach(function( current ) { - var chr, length; - - chr = current.charAt( 0 ), - length = current.length; - - if ( chr === "Z" && length < 5 ) { - chr = "O"; - length = 4; - } - - switch ( chr ) { - - // Era - case "G": - cldr.main([ - "dates/calendars/gregorian/eras", - length <= 3 ? "eraAbbr" : ( length === 4 ? "eraNames" : "eraNarrow" ) - ]); - break; - - // Year - case "u": // Extended year. Need to be implemented. - case "U": // Cyclic year name. Need to be implemented. - throw createErrorUnsupportedFeature({ - feature: "year pattern `" + chr + "`" - }); - - // Quarter - case "Q": - case "q": - if ( length > 2 ) { - cldr.main([ - "dates/calendars/gregorian/quarters", - chr === "Q" ? "format" : "stand-alone", - widths[ length - 3 ] - ]); - } - break; - - // Month - case "M": - case "L": - // number l=1:{1,2}, l=2:{2}. - // lookup l=3... - if ( length > 2 ) { - cldr.main([ - "dates/calendars/gregorian/months", - chr === "M" ? "format" : "stand-alone", - widths[ length - 3 ] - ]); - } - break; - - // Day - case "g": - // Modified Julian day. Need to be implemented. - throw createErrorUnsupportedFeature({ - feature: "Julian day pattern `g`" - }); - - // Week day - case "e": - case "c": - // lookup for length >=3. - if ( length <= 2 ) { - break; - } - - /* falls through */ - case "E": - if ( length === 6 ) { - // Note: if short day names are not explicitly specified, abbreviated day - // names are used instead http://www.unicode.org/reports/tr35/tr35-dates.html#months_days_quarters_eras - cldr.main([ - "dates/calendars/gregorian/days", - [ chr === "c" ? "stand-alone" : "format" ], - "short" - ]) || cldr.main([ - "dates/calendars/gregorian/days", - [ chr === "c" ? "stand-alone" : "format" ], - "abbreviated" - ]); - } else { - cldr.main([ - "dates/calendars/gregorian/days", - [ chr === "c" ? "stand-alone" : "format" ], - widths[ length < 3 ? 0 : length - 3 ] - ]); - } - break; - - // Period (AM or PM) - case "a": - cldr.main([ - "dates/calendars/gregorian/dayPeriods/format/wide" - ]); - break; - - // Zone - case "z": - case "O": - cldr.main( "dates/timeZoneNames/gmtFormat" ); - cldr.main( "dates/timeZoneNames/gmtZeroFormat" ); - cldr.main( "dates/timeZoneNames/hourFormat" ); - break; - - case "v": - case "V": - throw createErrorUnsupportedFeature({ - feature: "timezone pattern `" + chr + "`" - }); - } - }); +var dateParserFn = function( numberParser, parseProperties, tokenizerProperties ) { + return function dateParser( value ) { + var tokens; - cldr.off( "get", populateProperties ); + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); - return properties; + tokens = dateTokenizer( value, numberParser, tokenizerProperties ); + return dateParse( value, tokens, parseProperties ) || null; + }; }; -function validateRequiredCldr( path, value ) { - validateCldr( path, value, { - skip: [ - /dates\/calendars\/gregorian\/dateTimeFormats\/availableFormats/, - /dates\/calendars\/gregorian\/days\/.*\/short/, - /supplemental\/timeData\/(?!001)/, - /supplemental\/weekData\/(?!001)/ - ] - }); -} +Globalize._dateFormatterFn = dateFormatterFn; +Globalize._dateParserFn = dateParserFn; +Globalize._dateFormat = dateFormat; +Globalize._dateParser = dateParse; +Globalize._dateTokenizer = dateTokenizer; +Globalize._validateParameterTypeDate = validateParameterTypeDate; -/** - * .dateFormatter( options ) - * - * @options [Object] see date/expand_pattern for more info. - * - * Return a date formatter function (of the form below) according to the given options and the - * default/instance locale. - * - * fn( value ) - * - * @value [Date] - * - * Return a function that formats a date according to the given `format` and the default/instance - * locale. - */ Globalize.dateFormatter = Globalize.prototype.dateFormatter = function( options ) { - var cldr, numberFormatters, pad, pattern, properties; - - validateParameterTypePlainObject( options, "options" ); - - cldr = this.cldr; options = options || { skeleton: "yMd" }; - - validateDefaultLocale( cldr ); - - cldr.on( "get", validateRequiredCldr ); - pattern = dateExpandPattern( options, cldr ); - properties = dateFormatProperties( pattern, cldr ); - cldr.off( "get", validateRequiredCldr ); - - // Create needed number formatters. - numberFormatters = properties.numberFormatters; - delete properties.numberFormatters; - for ( pad in numberFormatters ) { - numberFormatters[ pad ] = this.numberFormatter({ - raw: numberFormatters[ pad ] - }); - } - - return function( value ) { - validateParameterPresence( value, "value" ); - validateParameterTypeDate( value, "value" ); - return dateFormat( value, numberFormatters, properties ); - }; + return Globalize[ runtimeKey( "dateFormatter", this._locale, [ options ] ) ]; }; -/** - * .dateParser( options ) - * - * @options [Object] see date/expand_pattern for more info. - * - * Return a function that parses a string date according to the given `formats` and the - * default/instance locale. - */ Globalize.dateParser = Globalize.prototype.dateParser = function( options ) { - var cldr, numberParser, parseProperties, pattern, tokenizerProperties; - - validateParameterTypePlainObject( options, "options" ); - - cldr = this.cldr; options = options || { skeleton: "yMd" }; - - validateDefaultLocale( cldr ); - - cldr.on( "get", validateRequiredCldr ); - pattern = dateExpandPattern( options, cldr ); - tokenizerProperties = dateTokenizerProperties( pattern, cldr ); - parseProperties = dateParseProperties( cldr ); - cldr.off( "get", validateRequiredCldr ); - - numberParser = this.numberParser({ raw: "0" }); - - return function( value ) { - var tokens; - - validateParameterPresence( value, "value" ); - validateParameterTypeString( value, "value" ); - - tokens = dateTokenizer( value, numberParser, tokenizerProperties ); - return dateParse( value, tokens, parseProperties ) || null; - }; + return Globalize[ runtimeKey( "dateParser", this._locale, [ options ] ) ]; }; -/** - * .formatDate( value, options ) - * - * @value [Date] - * - * @options [Object] see date/expand_pattern for more info. - * - * Formats a date or number according to the given options string and the default/instance locale. - */ Globalize.formatDate = Globalize.prototype.formatDate = function( value, options ) { validateParameterPresence( value, "value" ); @@ -1820,15 +1273,6 @@ Globalize.prototype.formatDate = function( value, options ) { return this.dateFormatter( options )( value ); }; -/** - * .parseDate( value, options ) - * - * @value [String] - * - * @options [Object] see date/expand_pattern for more info. - * - * Return a Date instance or null. - */ Globalize.parseDate = Globalize.prototype.parseDate = function( value, options ) { validateParameterPresence( value, "value" ); diff --git a/external/globalize/globalize-runtime/number.js b/external/globalize/globalize-runtime/number.js new file mode 100644 index 000000000..b3031471a --- /dev/null +++ b/external/globalize/globalize-runtime/number.js @@ -0,0 +1,682 @@ +/** + * Globalize Runtime v1.1.0-rc.6 + * + * http://github.com/jquery/globalize + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-11-18T10:38Z + */ +/*! + * Globalize Runtime v1.1.0-rc.6 2015-11-18T10:38Z Released under the MIT license + * http://git.io/TrdQbw + */ +(function( root, factory ) { + + // UMD returnExports + if ( typeof define === "function" && define.amd ) { + + // AMD + define([ + "../globalize-runtime" + ], factory ); + } else if ( typeof exports === "object" ) { + + // Node, CommonJS + module.exports = factory( require( "../globalize-runtime" ) ); + } else { + + // Extend global + factory( root.Globalize ); + } +}(this, function( Globalize ) { + +var createError = Globalize._createError, + regexpEscape = Globalize._regexpEscape, + runtimeKey = Globalize._runtimeKey, + stringPad = Globalize._stringPad, + validateParameterType = Globalize._validateParameterType, + validateParameterPresence = Globalize._validateParameterPresence, + validateParameterTypeString = Globalize._validateParameterTypeString; + + +var createErrorUnsupportedFeature = function( feature ) { + return createError( "E_UNSUPPORTED", "Unsupported {feature}.", { + feature: feature + }); +}; + + + + +var validateParameterTypeNumber = function( value, name ) { + validateParameterType( + value, + name, + value === undefined || typeof value === "number", + "Number" + ); +}; + + + + +/** + * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize ) + * + * @number [Number]. + * + * @primaryGroupingSize [Number] + * + * @secondaryGroupingSize [Number] + * + * Return the formatted number with group separator. + */ +var numberFormatGroupingSeparator = function( number, primaryGroupingSize, secondaryGroupingSize ) { + var index, + currentGroupingSize = primaryGroupingSize, + ret = "", + sep = ",", + switchToSecondary = secondaryGroupingSize ? true : false; + + number = String( number ).split( "." ); + index = number[ 0 ].length; + + while ( index > currentGroupingSize ) { + ret = number[ 0 ].slice( index - currentGroupingSize, index ) + + ( ret.length ? sep : "" ) + ret; + index -= currentGroupingSize; + if ( switchToSecondary ) { + currentGroupingSize = secondaryGroupingSize; + switchToSecondary = false; + } + } + + number[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : "" ) + ret; + return number.join( "." ); +}; + + + + +/** + * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits, + * maximumFractionDigits, round, roundIncrement ) + * + * @number [Number] + * + * @minimumIntegerDigits [Number] + * + * @minimumFractionDigits [Number] + * + * @maximumFractionDigits [Number] + * + * @round [Function] + * + * @roundIncrement [Function] + * + * Return the formatted integer and fraction digits. + */ +var numberFormatIntegerFractionDigits = function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round, + roundIncrement ) { + + // Fraction + if ( maximumFractionDigits ) { + + // Rounding + if ( roundIncrement ) { + number = round( number, roundIncrement ); + + // Maximum fraction digits + } else { + number = round( number, { exponent: -maximumFractionDigits } ); + } + + // Minimum fraction digits + if ( minimumFractionDigits ) { + number = String( number ).split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumFractionDigits, true ); + number = number.join( "." ); + } + } else { + number = round( number ); + } + + number = String( number ); + + // Minimum integer digits + if ( minimumIntegerDigits ) { + number = number.split( "." ); + number[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * toPrecision( number, precision, round ) + * + * @number (Number) + * + * @precision (Number) significant figures precision (not decimal precision). + * + * @round (Function) + * + * Return number.toPrecision( precision ) using the given round function. + */ +var numberToPrecision = function( number, precision, round ) { + var roundOrder; + + // Get number at two extra significant figure precision. + number = number.toPrecision( precision + 2 ); + + // Then, round it to the required significant figure precision. + roundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) ); + roundOrder -= precision; + + return round( number, { exponent: roundOrder } ); +}; + + + + +/** + * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round ) + * + * @number [Number] + * + * @minimumSignificantDigits [Number] + * + * @maximumSignificantDigits [Number] + * + * @round [Function] + * + * Return the formatted significant digits number. + */ +var numberFormatSignificantDigits = function( number, minimumSignificantDigits, maximumSignificantDigits, round ) { + var atMinimum, atMaximum; + + // Sanity check. + if ( minimumSignificantDigits > maximumSignificantDigits ) { + maximumSignificantDigits = minimumSignificantDigits; + } + + atMinimum = numberToPrecision( number, minimumSignificantDigits, round ); + atMaximum = numberToPrecision( number, maximumSignificantDigits, round ); + + // Use atMaximum only if it has more significant digits than atMinimum. + number = +atMinimum === +atMaximum ? atMinimum : atMaximum; + + // Expand integer numbers, eg. 123e5 to 12300. + number = ( +number ).toString( 10 ); + + if ( ( /e/ ).test( number ) ) { + throw createErrorUnsupportedFeature({ + feature: "integers out of (1e21, 1e-7)" + }); + } + + // Add trailing zeros if necessary. + if ( minimumSignificantDigits - number.replace( /^0+|\./g, "" ).length > 0 ) { + number = number.split( "." ); + number[ 1 ] = stringPad( number[ 1 ] || "", minimumSignificantDigits - number[ 0 ].replace( /^0+/, "" ).length, true ); + number = number.join( "." ); + } + + return number; +}; + + + + +/** + * format( number, properties ) + * + * @number [Number]. + * + * @properties [Object] Output of number/format-properties. + * + * Return the formatted number. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberFormat = function( number, properties ) { + var infinitySymbol, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, + minimumIntegerDigits, minimumSignificantDigits, nanSymbol, nuDigitsMap, padding, prefix, + primaryGroupingSize, pattern, ret, round, roundIncrement, secondaryGroupingSize, suffix, + symbolMap; + + padding = properties[ 1 ]; + minimumIntegerDigits = properties[ 2 ]; + minimumFractionDigits = properties[ 3 ]; + maximumFractionDigits = properties[ 4 ]; + minimumSignificantDigits = properties[ 5 ]; + maximumSignificantDigits = properties[ 6 ]; + roundIncrement = properties[ 7 ]; + primaryGroupingSize = properties[ 8 ]; + secondaryGroupingSize = properties[ 9 ]; + round = properties[ 15 ]; + infinitySymbol = properties[ 16 ]; + nanSymbol = properties[ 17 ]; + symbolMap = properties[ 18 ]; + nuDigitsMap = properties[ 19 ]; + + // NaN + if ( isNaN( number ) ) { + return nanSymbol; + } + + if ( number < 0 ) { + pattern = properties[ 12 ]; + prefix = properties[ 13 ]; + suffix = properties[ 14 ]; + } else { + pattern = properties[ 11 ]; + prefix = properties[ 0 ]; + suffix = properties[ 10 ]; + } + + // Infinity + if ( !isFinite( number ) ) { + return prefix + infinitySymbol + suffix; + } + + ret = prefix; + + // Percent + if ( pattern.indexOf( "%" ) !== -1 ) { + number *= 100; + + // Per mille + } else if ( pattern.indexOf( "\u2030" ) !== -1 ) { + number *= 1000; + } + + // Significant digit format + if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { + number = numberFormatSignificantDigits( number, minimumSignificantDigits, + maximumSignificantDigits, round ); + + // Integer and fractional format + } else { + number = numberFormatIntegerFractionDigits( number, minimumIntegerDigits, + minimumFractionDigits, maximumFractionDigits, round, roundIncrement ); + } + + // Remove the possible number minus sign + number = number.replace( /^-/, "" ); + + // Grouping separators + if ( primaryGroupingSize ) { + number = numberFormatGroupingSeparator( number, primaryGroupingSize, + secondaryGroupingSize ); + } + + ret += number; + + // Scientific notation + // TODO implement here + + // Padding/'([^']|'')+'|''|[.,\-+E%\u2030]/g + // TODO implement here + + ret += suffix; + + return ret.replace( /('([^']|'')+'|'')|./g, function( character, literal ) { + + // Literals + if ( literal ) { + literal = literal.replace( /''/, "'" ); + if ( literal.length > 2 ) { + literal = literal.slice( 1, -1 ); + } + return literal; + } + + // Symbols + character = character.replace( /[.,\-+E%\u2030]/, function( symbol ) { + return symbolMap[ symbol ]; + }); + + // Numbering system + if ( nuDigitsMap ) { + character = character.replace( /[0-9]/, function( digit ) { + return nuDigitsMap[ +digit ]; + }); + } + + return character; + }); +}; + + + + +var numberFormatterFn = function( properties ) { + return function numberFormatter( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return numberFormat( value, properties ); + }; +}; + + + + +/** + * EBNF representation: + * + * number_pattern_re = prefix_including_padding? + * number + * scientific_notation? + * suffix? + * + * number = integer_including_group_separator fraction_including_decimal_separator + * + * integer_including_group_separator = + * regexp([0-9,]*[0-9]+) + * + * fraction_including_decimal_separator = + * regexp((\.[0-9]+)?) + + * prefix_including_padding = non_number_stuff + * + * scientific_notation = regexp(E[+-]?[0-9]+) + * + * suffix = non_number_stuff + * + * non_number_stuff = regexp([^0-9]*) + * + * + * Regexp groups: + * + * 0: number_pattern_re + * 1: prefix + * 2: integer_including_group_separator fraction_including_decimal_separator + * 3: integer_including_group_separator + * 4: fraction_including_decimal_separator + * 5: scientific_notation + * 6: suffix + */ +var numberNumberRe = ( /^([^0-9]*)(([0-9,]*[0-9]+)(\.[0-9]+)?)(E[+-]?[0-9]+)?([^0-9]*)$/ ); + + + + +/** + * parse( value, properties ) + * + * @value [String]. + * + * @properties [Object] Parser properties is a reduced pre-processed cldr + * data set returned by numberParserProperties(). + * + * Return the parsed Number (including Infinity) or NaN when value is invalid. + * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html + */ +var numberParse = function( value, properties ) { + var aux, infinitySymbol, invertedNuDigitsMap, invertedSymbolMap, localizedDigitRe, + localizedSymbolsRe, negativePrefix, negativeSuffix, number, prefix, suffix; + + infinitySymbol = properties[ 0 ]; + invertedSymbolMap = properties[ 1 ]; + negativePrefix = properties[ 2 ]; + negativeSuffix = properties[ 3 ]; + invertedNuDigitsMap = properties[ 4 ]; + + // Infinite number. + if ( aux = value.match( infinitySymbol ) ) { + + number = Infinity; + prefix = value.slice( 0, aux.length ); + suffix = value.slice( aux.length + 1 ); + + // Finite number. + } else { + + // TODO: Create it during setup, i.e., make it a property. + localizedSymbolsRe = new RegExp( + Object.keys( invertedSymbolMap ).map(function( localizedSymbol ) { + return regexpEscape( localizedSymbol ); + }).join( "|" ), + "g" + ); + + // Reverse localized symbols. + value = value.replace( localizedSymbolsRe, function( localizedSymbol ) { + return invertedSymbolMap[ localizedSymbol ]; + }); + + // Reverse localized numbering system. + if ( invertedNuDigitsMap ) { + + // TODO: Create it during setup, i.e., make it a property. + localizedDigitRe = new RegExp( + Object.keys( invertedNuDigitsMap ).map(function( localizedDigit ) { + return regexpEscape( localizedDigit ); + }).join( "|" ), + "g" + ); + value = value.replace( localizedDigitRe, function( localizedDigit ) { + return invertedNuDigitsMap[ localizedDigit ]; + }); + } + + // Add padding zero to leading decimal. + if ( value.charAt( 0 ) === "." ) { + value = "0" + value; + } + + // Is it a valid number? + value = value.match( numberNumberRe ); + if ( !value ) { + + // Invalid number. + return NaN; + } + + prefix = value[ 1 ]; + suffix = value[ 6 ]; + + // Remove grouping separators. + number = value[ 2 ].replace( /,/g, "" ); + + // Scientific notation + if ( value[ 5 ] ) { + number += value[ 5 ]; + } + + number = +number; + + // Is it a valid number? + if ( isNaN( number ) ) { + + // Invalid number. + return NaN; + } + + // Percent + if ( value[ 0 ].indexOf( "%" ) !== -1 ) { + number /= 100; + suffix = suffix.replace( "%", "" ); + + // Per mille + } else if ( value[ 0 ].indexOf( "\u2030" ) !== -1 ) { + number /= 1000; + suffix = suffix.replace( "\u2030", "" ); + } + } + + // Negative number + // "If there is an explicit negative subpattern, it serves only to specify the negative prefix + // and suffix. If there is no explicit negative subpattern, the negative subpattern is the + // localized minus sign prefixed to the positive subpattern" UTS#35 + if ( prefix === negativePrefix && suffix === negativeSuffix ) { + number *= -1; + } + + return number; +}; + + + + +var numberParserFn = function( properties ) { + return function numberParser( value ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return numberParse( value, properties ); + }; + +}; + + + + +var numberTruncate = function( value ) { + if ( isNaN( value ) ) { + return NaN; + } + return Math[ value < 0 ? "ceil" : "floor" ]( value ); +}; + + + + +/** + * round( method ) + * + * @method [String] with either "round", "ceil", "floor", or "truncate". + * + * Return function( value, incrementOrExp ): + * + * @value [Number] eg. 123.45. + * + * @incrementOrExp [Number] optional, eg. 0.1; or + * [Object] Either { increment: } or { exponent: } + * + * Return the rounded number, eg: + * - round( "round" )( 123.45 ): 123; + * - round( "ceil" )( 123.45 ): 124; + * - round( "floor" )( 123.45 ): 123; + * - round( "truncate" )( 123.45 ): 123; + * - round( "round" )( 123.45, 0.1 ): 123.5; + * - round( "round" )( 123.45, 10 ): 120; + * + * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round + * Ref: #376 + */ +var numberRound = function( method ) { + method = method || "round"; + method = method === "truncate" ? numberTruncate : Math[ method ]; + + return function( value, incrementOrExp ) { + var exp, increment; + + value = +value; + + // If the value is not a number, return NaN. + if ( isNaN( value ) ) { + return NaN; + } + + // Exponent given. + if ( typeof incrementOrExp === "object" && incrementOrExp.exponent ) { + exp = +incrementOrExp.exponent; + increment = 1; + + if ( exp === 0 ) { + return method( value ); + } + + // If the exp is not an integer, return NaN. + if ( !( typeof exp === "number" && exp % 1 === 0 ) ) { + return NaN; + } + + // Increment given. + } else { + increment = +incrementOrExp || 1; + + if ( increment === 1 ) { + return method( value ); + } + + // If the increment is not a number, return NaN. + if ( isNaN( increment ) ) { + return NaN; + } + + increment = increment.toExponential().split( "e" ); + exp = +increment[ 1 ]; + increment = +increment[ 0 ]; + } + + // Shift & Round + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] / increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp; + value = method( +( value[ 0 ] + "e" + value[ 1 ] ) ); + + // Shift back + value = value.toString().split( "e" ); + value[ 0 ] = +value[ 0 ] * increment; + value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp; + return +( value[ 0 ] + "e" + value[ 1 ] ); + }; +}; + + + + +Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature; +Globalize._numberFormat = numberFormat; +Globalize._numberFormatterFn = numberFormatterFn; +Globalize._numberParse = numberParse; +Globalize._numberParserFn = numberParserFn; +Globalize._numberRound = numberRound; +Globalize._validateParameterPresence = validateParameterPresence; +Globalize._validateParameterTypeNumber = validateParameterTypeNumber; +Globalize._validateParameterTypeString = validateParameterTypeString; + +Globalize.numberFormatter = +Globalize.prototype.numberFormatter = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "numberFormatter", this._locale, [ options ] ) ]; +}; + +Globalize.numberParser = +Globalize.prototype.numberParser = function( options ) { + options = options || {}; + return Globalize[ runtimeKey( "numberParser", this._locale, [ options ] ) ]; +}; + +Globalize.formatNumber = +Globalize.prototype.formatNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeNumber( value, "value" ); + + return this.numberFormatter( options )( value ); +}; + +Globalize.parseNumber = +Globalize.prototype.parseNumber = function( value, options ) { + validateParameterPresence( value, "value" ); + validateParameterTypeString( value, "value" ); + + return this.numberParser( options )( value ); +}; + +return Globalize; + + + + +})); diff --git a/external/globalize/globalize/number.js b/external/globalize/globalize/number.js deleted file mode 100644 index 7ab4256d4..000000000 --- a/external/globalize/globalize/number.js +++ /dev/null @@ -1,1266 +0,0 @@ -/** - * Globalize v1.0.0 - * - * http://github.com/jquery/globalize - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-04-23T12:02Z - */ -/*! - * Globalize v1.0.0 2015-04-23T12:02Z Released under the MIT license - * http://git.io/TrdQbw - */ -(function( root, factory ) { - - // UMD returnExports - if ( typeof define === "function" && define.amd ) { - - // AMD - define([ - "cldr", - "../globalize", - "cldr/event", - "cldr/supplemental" - ], factory ); - } else if ( typeof exports === "object" ) { - - // Node, CommonJS - module.exports = factory( require( "cldrjs" ), require( "globalize" ) ); - } else { - - // Global - factory( root.Cldr, root.Globalize ); - } -}(this, function( Cldr, Globalize ) { - -var createError = Globalize._createError, - objectExtend = Globalize._objectExtend, - regexpEscape = Globalize._regexpEscape, - stringPad = Globalize._stringPad, - validateCldr = Globalize._validateCldr, - validateDefaultLocale = Globalize._validateDefaultLocale, - validateParameterPresence = Globalize._validateParameterPresence, - validateParameterRange = Globalize._validateParameterRange, - validateParameterType = Globalize._validateParameterType, - validateParameterTypePlainObject = Globalize._validateParameterTypePlainObject; - - -var createErrorUnsupportedFeature = function( feature ) { - return createError( "E_UNSUPPORTED", "Unsupported {feature}.", { - feature: feature - }); -}; - - - - -var validateParameterTypeNumber = function( value, name ) { - validateParameterType( - value, - name, - value === undefined || typeof value === "number", - "Number" - ); -}; - - - - -var validateParameterTypeString = function( value, name ) { - validateParameterType( - value, - name, - value === undefined || typeof value === "string", - "a string" - ); -}; - - - - -/** - * goupingSeparator( number, primaryGroupingSize, secondaryGroupingSize ) - * - * @number [Number]. - * - * @primaryGroupingSize [Number] - * - * @secondaryGroupingSize [Number] - * - * Return the formatted number with group separator. - */ -var numberFormatGroupingSeparator = function( number, primaryGroupingSize, secondaryGroupingSize ) { - var index, - currentGroupingSize = primaryGroupingSize, - ret = "", - sep = ",", - switchToSecondary = secondaryGroupingSize ? true : false; - - number = String( number ).split( "." ); - index = number[ 0 ].length; - - while ( index > currentGroupingSize ) { - ret = number[ 0 ].slice( index - currentGroupingSize, index ) + - ( ret.length ? sep : "" ) + ret; - index -= currentGroupingSize; - if ( switchToSecondary ) { - currentGroupingSize = secondaryGroupingSize; - switchToSecondary = false; - } - } - - number[ 0 ] = number[ 0 ].slice( 0, index ) + ( ret.length ? sep : "" ) + ret; - return number.join( "." ); -}; - - - - -/** - * integerFractionDigits( number, minimumIntegerDigits, minimumFractionDigits, - * maximumFractionDigits, round, roundIncrement ) - * - * @number [Number] - * - * @minimumIntegerDigits [Number] - * - * @minimumFractionDigits [Number] - * - * @maximumFractionDigits [Number] - * - * @round [Function] - * - * @roundIncrement [Function] - * - * Return the formatted integer and fraction digits. - */ -var numberFormatIntegerFractionDigits = function( number, minimumIntegerDigits, minimumFractionDigits, maximumFractionDigits, round, - roundIncrement ) { - - // Fraction - if ( maximumFractionDigits ) { - - // Rounding - if ( roundIncrement ) { - number = round( number, roundIncrement ); - - // Maximum fraction digits - } else { - number = round( number, { exponent: -maximumFractionDigits } ); - } - - // Minimum fraction digits - if ( minimumFractionDigits ) { - number = String( number ).split( "." ); - number[ 1 ] = stringPad( number[ 1 ] || "", minimumFractionDigits, true ); - number = number.join( "." ); - } - } else { - number = round( number ); - } - - number = String( number ); - - // Minimum integer digits - if ( minimumIntegerDigits ) { - number = number.split( "." ); - number[ 0 ] = stringPad( number[ 0 ], minimumIntegerDigits ); - number = number.join( "." ); - } - - return number; -}; - - - - -/** - * toPrecision( number, precision, round ) - * - * @number (Number) - * - * @precision (Number) significant figures precision (not decimal precision). - * - * @round (Function) - * - * Return number.toPrecision( precision ) using the given round function. - */ -var numberToPrecision = function( number, precision, round ) { - var roundOrder; - - // Get number at two extra significant figure precision. - number = number.toPrecision( precision + 2 ); - - // Then, round it to the required significant figure precision. - roundOrder = Math.ceil( Math.log( Math.abs( number ) ) / Math.log( 10 ) ); - roundOrder -= precision; - - return round( number, { exponent: roundOrder } ); -}; - - - - -/** - * toPrecision( number, minimumSignificantDigits, maximumSignificantDigits, round ) - * - * @number [Number] - * - * @minimumSignificantDigits [Number] - * - * @maximumSignificantDigits [Number] - * - * @round [Function] - * - * Return the formatted significant digits number. - */ -var numberFormatSignificantDigits = function( number, minimumSignificantDigits, maximumSignificantDigits, round ) { - var atMinimum, atMaximum; - - // Sanity check. - if ( minimumSignificantDigits > maximumSignificantDigits ) { - maximumSignificantDigits = minimumSignificantDigits; - } - - atMinimum = numberToPrecision( number, minimumSignificantDigits, round ); - atMaximum = numberToPrecision( number, maximumSignificantDigits, round ); - - // Use atMaximum only if it has more significant digits than atMinimum. - number = +atMinimum === +atMaximum ? atMinimum : atMaximum; - - // Expand integer numbers, eg. 123e5 to 12300. - number = ( +number ).toString( 10 ); - - if ( (/e/).test( number ) ) { - throw createErrorUnsupportedFeature({ - feature: "integers out of (1e21, 1e-7)" - }); - } - - // Add trailing zeros if necessary. - if ( minimumSignificantDigits - number.replace( /^0+|\./g, "" ).length > 0 ) { - number = number.split( "." ); - number[ 1 ] = stringPad( number[ 1 ] || "", minimumSignificantDigits - number[ 0 ].replace( /^0+/, "" ).length, true ); - number = number.join( "." ); - } - - return number; -}; - - - - -/** - * format( number, properties ) - * - * @number [Number]. - * - * @properties [Object] Output of number/format-properties. - * - * Return the formatted number. - * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html - */ -var numberFormat = function( number, properties ) { - var infinitySymbol, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, - minimumIntegerDigits, minimumSignificantDigits, nanSymbol, nuDigitsMap, padding, prefix, - primaryGroupingSize, pattern, ret, round, roundIncrement, secondaryGroupingSize, suffix, - symbolMap; - - padding = properties[ 1 ]; - minimumIntegerDigits = properties[ 2 ]; - minimumFractionDigits = properties[ 3 ]; - maximumFractionDigits = properties[ 4 ]; - minimumSignificantDigits = properties[ 5 ]; - maximumSignificantDigits = properties[ 6 ]; - roundIncrement = properties[ 7 ]; - primaryGroupingSize = properties[ 8 ]; - secondaryGroupingSize = properties[ 9 ]; - round = properties[ 15 ]; - infinitySymbol = properties[ 16 ]; - nanSymbol = properties[ 17 ]; - symbolMap = properties[ 18 ]; - nuDigitsMap = properties[ 19 ]; - - // NaN - if ( isNaN( number ) ) { - return nanSymbol; - } - - if ( number < 0 ) { - pattern = properties[ 12 ]; - prefix = properties[ 13 ]; - suffix = properties[ 14 ]; - } else { - pattern = properties[ 11 ]; - prefix = properties[ 0 ]; - suffix = properties[ 10 ]; - } - - // Infinity - if ( !isFinite( number ) ) { - return prefix + infinitySymbol + suffix; - } - - ret = prefix; - - // Percent - if ( pattern.indexOf( "%" ) !== -1 ) { - number *= 100; - - // Per mille - } else if ( pattern.indexOf( "\u2030" ) !== -1 ) { - number *= 1000; - } - - // Significant digit format - if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { - number = numberFormatSignificantDigits( number, minimumSignificantDigits, - maximumSignificantDigits, round ); - - // Integer and fractional format - } else { - number = numberFormatIntegerFractionDigits( number, minimumIntegerDigits, - minimumFractionDigits, maximumFractionDigits, round, roundIncrement ); - } - - // Remove the possible number minus sign - number = number.replace( /^-/, "" ); - - // Grouping separators - if ( primaryGroupingSize ) { - number = numberFormatGroupingSeparator( number, primaryGroupingSize, - secondaryGroupingSize ); - } - - ret += number; - - // Scientific notation - // TODO implement here - - // Padding/'([^']|'')+'|''|[.,\-+E%\u2030]/g - // TODO implement here - - ret += suffix; - - return ret.replace( /('([^']|'')+'|'')|./g, function( character, literal ) { - - // Literals - if ( literal ) { - literal = literal.replace( /''/, "'" ); - if ( literal.length > 2 ) { - literal = literal.slice( 1, -1 ); - } - return literal; - } - - // Symbols - character = character.replace( /[.,\-+E%\u2030]/, function( symbol ) { - return symbolMap[ symbol ]; - }); - - // Numbering system - if ( nuDigitsMap ) { - character = character.replace( /[0-9]/, function( digit ) { - return nuDigitsMap[ +digit ]; - }); - } - - return character; - }); -}; - - - - -/** - * NumberingSystem( cldr ) - * - * - http://www.unicode.org/reports/tr35/tr35-numbers.html#otherNumberingSystems - * - http://cldr.unicode.org/index/bcp47-extension - * - http://www.unicode.org/reports/tr35/#u_Extension - */ -var numberNumberingSystem = function( cldr ) { - var nu = cldr.attributes[ "u-nu" ]; - - if ( nu ) { - if ( nu === "traditio" ) { - nu = "traditional"; - } - if ( [ "native", "traditional", "finance" ].indexOf( nu ) !== -1 ) { - - // Unicode locale extension `u-nu` is set using either (native, traditional or - // finance). So, lookup the respective locale's numberingSystem and return it. - return cldr.main([ "numbers/otherNumberingSystems", nu ]); - } - - // Unicode locale extension `u-nu` is set with an explicit numberingSystem. Return it. - return nu; - } - - // Return the default numberingSystem. - return cldr.main( "numbers/defaultNumberingSystem" ); -}; - - - - -/** - * nuMap( cldr ) - * - * @cldr [Cldr instance]. - * - * Return digits map if numbering system is different than `latn`. - */ -var numberNumberingSystemDigitsMap = function( cldr ) { - var aux, - nu = numberNumberingSystem( cldr ); - - if ( nu === "latn" ) { - return; - } - - aux = cldr.supplemental([ "numberingSystems", nu ]); - - if ( aux._type !== "numeric" ) { - throw createErrorUnsupportedFeature( "`" + aux._type + "` numbering system" ); - } - - return aux._digits; -}; - - - - -/** - * EBNF representation: - * - * number_pattern_re = prefix? - * padding? - * (integer_fraction_pattern | significant_pattern) - * scientific_notation? - * suffix? - * - * prefix = non_number_stuff - * - * padding = "*" regexp(.) - * - * integer_fraction_pattern = integer_pattern - * fraction_pattern? - * - * integer_pattern = regexp([#,]*[0,]*0+) - * - * fraction_pattern = "." regexp(0*[0-9]*#*) - * - * significant_pattern = regexp([#,]*@+#*) - * - * scientific_notation = regexp(E\+?0+) - * - * suffix = non_number_stuff - * - * non_number_stuff = regexp(('[^']+'|''|[^*#@0,.E])*) - * - * - * Regexp groups: - * - * 0: number_pattern_re - * 1: prefix - * 2: - - * 3: padding - * 4: (integer_fraction_pattern | significant_pattern) - * 5: integer_fraction_pattern - * 6: integer_pattern - * 7: fraction_pattern - * 8: significant_pattern - * 9: scientific_notation - * 10: suffix - * 11: - - */ -var numberPatternRe = (/^(('[^']+'|''|[^*#@0,.E])*)(\*.)?((([#,]*[0,]*0+)(\.0*[0-9]*#*)?)|([#,]*@+#*))(E\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/); - - - - -/** - * format( number, pattern ) - * - * @number [Number]. - * - * @pattern [String] raw pattern for numbers. - * - * Return the formatted number. - * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html - */ -var numberPatternProperties = function( pattern ) { - var aux1, aux2, fractionPattern, integerFractionOrSignificantPattern, integerPattern, - maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, - minimumIntegerDigits, minimumSignificantDigits, padding, prefix, primaryGroupingSize, - roundIncrement, scientificNotation, secondaryGroupingSize, significantPattern, suffix; - - pattern = pattern.match( numberPatternRe ); - if ( !pattern ) { - throw new Error( "Invalid pattern: " + pattern ); - } - - prefix = pattern[ 1 ]; - padding = pattern[ 3 ]; - integerFractionOrSignificantPattern = pattern[ 4 ]; - significantPattern = pattern[ 8 ]; - scientificNotation = pattern[ 9 ]; - suffix = pattern[ 10 ]; - - // Significant digit format - if ( significantPattern ) { - significantPattern.replace( /(@+)(#*)/, function( match, minimumSignificantDigitsMatch, maximumSignificantDigitsMatch ) { - minimumSignificantDigits = minimumSignificantDigitsMatch.length; - maximumSignificantDigits = minimumSignificantDigits + - maximumSignificantDigitsMatch.length; - }); - - // Integer and fractional format - } else { - fractionPattern = pattern[ 7 ]; - integerPattern = pattern[ 6 ]; - - if ( fractionPattern ) { - - // Minimum fraction digits, and rounding. - fractionPattern.replace( /[0-9]+/, function( match ) { - minimumFractionDigits = match; - }); - if ( minimumFractionDigits ) { - roundIncrement = +( "0." + minimumFractionDigits ); - minimumFractionDigits = minimumFractionDigits.length; - } else { - minimumFractionDigits = 0; - } - - // Maximum fraction digits - // 1: ignore decimal character - maximumFractionDigits = fractionPattern.length - 1 /* 1 */; - } - - // Minimum integer digits - integerPattern.replace( /0+$/, function( match ) { - minimumIntegerDigits = match.length; - }); - } - - // Scientific notation - if ( scientificNotation ) { - throw createErrorUnsupportedFeature({ - feature: "scientific notation (not implemented)" - }); - } - - // Padding - if ( padding ) { - throw createErrorUnsupportedFeature({ - feature: "padding (not implemented)" - }); - } - - // Grouping - if ( ( aux1 = integerFractionOrSignificantPattern.lastIndexOf( "," ) ) !== -1 ) { - - // Primary grouping size is the interval between the last group separator and the end of - // the integer (or the end of the significant pattern). - aux2 = integerFractionOrSignificantPattern.split( "." )[ 0 ]; - primaryGroupingSize = aux2.length - aux1 - 1; - - // Secondary grouping size is the interval between the last two group separators. - if ( ( aux2 = integerFractionOrSignificantPattern.lastIndexOf( ",", aux1 - 1 ) ) !== -1 ) { - secondaryGroupingSize = aux1 - 1 - aux2; - } - } - - // Return: - // 0: @prefix String - // 1: @padding Array [ , ] TODO - // 2: @minimumIntegerDigits non-negative integer Number value indicating the minimum integer - // digits to be used. Numbers will be padded with leading zeroes if necessary. - // 3: @minimumFractionDigits and - // 4: @maximumFractionDigits are non-negative integer Number values indicating the minimum and - // maximum fraction digits to be used. Numbers will be rounded or padded with trailing - // zeroes if necessary. - // 5: @minimumSignificantDigits and - // 6: @maximumSignificantDigits are positive integer Number values indicating the minimum and - // maximum fraction digits to be shown. Either none or both of these properties are - // present; if they are, they override minimum and maximum integer and fraction digits - // – the formatter uses however many integer and fraction digits are required to display - // the specified number of significant digits. - // 7: @roundIncrement Decimal round increment or null - // 8: @primaryGroupingSize - // 9: @secondaryGroupingSize - // 10: @suffix String - return [ - prefix, - padding, - minimumIntegerDigits, - minimumFractionDigits, - maximumFractionDigits, - minimumSignificantDigits, - maximumSignificantDigits, - roundIncrement, - primaryGroupingSize, - secondaryGroupingSize, - suffix - ]; -}; - - - - -/** - * Symbol( name, cldr ) - * - * @name [String] Symbol name. - * - * @cldr [Cldr instance]. - * - * Return the localized symbol given its name. - */ -var numberSymbol = function( name, cldr ) { - return cldr.main([ - "numbers/symbols-numberSystem-" + numberNumberingSystem( cldr ), - name - ]); -}; - - - - -var numberSymbolName = { - ".": "decimal", - ",": "group", - "%": "percentSign", - "+": "plusSign", - "-": "minusSign", - "E": "exponential", - "\u2030": "perMille" -}; - - - - -/** - * symbolMap( cldr ) - * - * @cldr [Cldr instance]. - * - * Return the (localized symbol, pattern symbol) key value pair, eg. { - * ".": "٫", - * ",": "٬", - * "%": "٪", - * ... - * }; - */ -var numberSymbolMap = function( cldr ) { - var symbol, - symbolMap = {}; - - for ( symbol in numberSymbolName ) { - symbolMap[ symbol ] = numberSymbol( numberSymbolName[ symbol ], cldr ); - } - - return symbolMap; -}; - - - - -var numberTruncate = function( value ) { - if ( isNaN( value ) ) { - return NaN; - } - return Math[ value < 0 ? "ceil" : "floor" ]( value ); -}; - - - - -/** - * round( method ) - * - * @method [String] with either "round", "ceil", "floor", or "truncate". - * - * Return function( value, incrementOrExp ): - * - * @value [Number] eg. 123.45. - * - * @incrementOrExp [Number] optional, eg. 0.1; or - * [Object] Either { increment: } or { exponent: } - * - * Return the rounded number, eg: - * - round( "round" )( 123.45 ): 123; - * - round( "ceil" )( 123.45 ): 124; - * - round( "floor" )( 123.45 ): 123; - * - round( "truncate" )( 123.45 ): 123; - * - round( "round" )( 123.45, 0.1 ): 123.5; - * - round( "round" )( 123.45, 10 ): 120; - * - * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round - * Ref: #376 - */ -var numberRound = function( method ) { - method = method || "round"; - method = method === "truncate" ? numberTruncate : Math[ method ]; - - return function( value, incrementOrExp ) { - var exp, increment; - - value = +value; - - // If the value is not a number, return NaN. - if ( isNaN( value ) ) { - return NaN; - } - - // Exponent given. - if ( typeof incrementOrExp === "object" && incrementOrExp.exponent ) { - exp = +incrementOrExp.exponent; - increment = 1; - - if ( exp === 0 ) { - return method( value ); - } - - // If the exp is not an integer, return NaN. - if ( !( typeof exp === "number" && exp % 1 === 0 ) ) { - return NaN; - } - - // Increment given. - } else { - increment = +incrementOrExp || 1; - - if ( increment === 1 ) { - return method( value ); - } - - // If the increment is not a number, return NaN. - if ( isNaN( increment ) ) { - return NaN; - } - - increment = increment.toExponential().split( "e" ); - exp = +increment[ 1 ]; - increment = +increment[ 0 ]; - } - - // Shift & Round - value = value.toString().split( "e" ); - value[ 0 ] = +value[ 0 ] / increment; - value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] - exp ) : -exp; - value = method( +(value[ 0 ] + "e" + value[ 1 ] ) ); - - // Shift back - value = value.toString().split( "e" ); - value[ 0 ] = +value[ 0 ] * increment; - value[ 1 ] = value[ 1 ] ? ( +value[ 1 ] + exp ) : exp; - return +( value[ 0 ] + "e" + value[ 1 ] ); - }; -}; - - - - -/** - * formatProperties( pattern, cldr [, options] ) - * - * @pattern [String] raw pattern for numbers. - * - * @cldr [Cldr instance]. - * - * @options [Object]: - * - minimumIntegerDigits [Number] - * - minimumFractionDigits, maximumFractionDigits [Number] - * - minimumSignificantDigits, maximumSignificantDigits [Number] - * - round [String] "ceil", "floor", "round" (default), or "truncate". - * - useGrouping [Boolean] default true. - * - * Return the processed properties that will be used in number/format. - * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html - */ -var numberFormatProperties = function( pattern, cldr, options ) { - var negativePattern, negativePrefix, negativeProperties, negativeSuffix, positivePattern, - properties; - - function getOptions( attribute, propertyIndex ) { - if ( attribute in options ) { - properties[ propertyIndex ] = options[ attribute ]; - } - } - - options = options || {}; - pattern = pattern.split( ";" ); - - positivePattern = pattern[ 0 ]; - - negativePattern = pattern[ 1 ] || "-" + positivePattern; - negativeProperties = numberPatternProperties( negativePattern ); - negativePrefix = negativeProperties[ 0 ]; - negativeSuffix = negativeProperties[ 10 ]; - - properties = numberPatternProperties( positivePattern ).concat([ - positivePattern, - negativePrefix + positivePattern + negativeSuffix, - negativePrefix, - negativeSuffix, - numberRound( options.round ), - numberSymbol( "infinity", cldr ), - numberSymbol( "nan", cldr ), - numberSymbolMap( cldr ), - numberNumberingSystemDigitsMap( cldr ) - ]); - - getOptions( "minimumIntegerDigits", 2 ); - getOptions( "minimumFractionDigits", 3 ); - getOptions( "maximumFractionDigits", 4 ); - getOptions( "minimumSignificantDigits", 5 ); - getOptions( "maximumSignificantDigits", 6 ); - - // Grouping separators - if ( options.useGrouping === false ) { - properties[ 8 ] = null; - } - - // Normalize number of digits if only one of either minimumFractionDigits or - // maximumFractionDigits is passed in as an option - if ( "minimumFractionDigits" in options && !( "maximumFractionDigits" in options ) ) { - // maximumFractionDigits = Math.max( minimumFractionDigits, maximumFractionDigits ); - properties[ 4 ] = Math.max( properties[ 3 ], properties[ 4 ] ); - } else if ( !( "minimumFractionDigits" in options ) && - "maximumFractionDigits" in options ) { - // minimumFractionDigits = Math.min( minimumFractionDigits, maximumFractionDigits ); - properties[ 3 ] = Math.min( properties[ 3 ], properties[ 4 ] ); - } - - // Return: - // 0-10: see number/pattern-properties. - // 11: @positivePattern [String] Positive pattern. - // 12: @negativePattern [String] Negative pattern. - // 13: @negativePrefix [String] Negative prefix. - // 14: @negativeSuffix [String] Negative suffix. - // 15: @round [Function] Round function. - // 16: @infinitySymbol [String] Infinity symbol. - // 17: @nanSymbol [String] NaN symbol. - // 18: @symbolMap [Object] A bunch of other symbols. - // 19: @nuDigitsMap [Array] Digits map if numbering system is different than `latn`. - return properties; -}; - - - - -/** - * EBNF representation: - * - * number_pattern_re = prefix_including_padding? - * number - * scientific_notation? - * suffix? - * - * number = integer_including_group_separator fraction_including_decimal_separator - * - * integer_including_group_separator = - * regexp([0-9,]*[0-9]+) - * - * fraction_including_decimal_separator = - * regexp((\.[0-9]+)?) - - * prefix_including_padding = non_number_stuff - * - * scientific_notation = regexp(E[+-]?[0-9]+) - * - * suffix = non_number_stuff - * - * non_number_stuff = regexp([^0-9]*) - * - * - * Regexp groups: - * - * 0: number_pattern_re - * 1: prefix - * 2: integer_including_group_separator fraction_including_decimal_separator - * 3: integer_including_group_separator - * 4: fraction_including_decimal_separator - * 5: scientific_notation - * 6: suffix - */ -var numberNumberRe = (/^([^0-9]*)(([0-9,]*[0-9]+)(\.[0-9]+)?)(E[+-]?[0-9]+)?([^0-9]*)$/); - - - - -/** - * parse( value, properties ) - * - * @value [String]. - * - * @properties [Object] Parser properties is a reduced pre-processed cldr - * data set returned by numberParserProperties(). - * - * Return the parsed Number (including Infinity) or NaN when value is invalid. - * ref: http://www.unicode.org/reports/tr35/tr35-numbers.html - */ -var numberParse = function( value, properties ) { - var aux, infinitySymbol, invertedNuDigitsMap, invertedSymbolMap, localizedDigitRe, - localizedSymbolsRe, negativePrefix, negativeSuffix, number, prefix, suffix; - - infinitySymbol = properties[ 0 ]; - invertedSymbolMap = properties[ 1 ]; - negativePrefix = properties[ 2 ]; - negativeSuffix = properties[ 3 ]; - invertedNuDigitsMap = properties[ 4 ]; - - // Infinite number. - if ( aux = value.match( infinitySymbol ) ) { - - number = Infinity; - prefix = value.slice( 0, aux.length ); - suffix = value.slice( aux.length + 1 ); - - // Finite number. - } else { - - // TODO: Create it during setup, i.e., make it a property. - localizedSymbolsRe = new RegExp( - Object.keys( invertedSymbolMap ).map(function( localizedSymbol ) { - return regexpEscape( localizedSymbol ); - }).join( "|" ), - "g" - ); - - // Reverse localized symbols. - value = value.replace( localizedSymbolsRe, function( localizedSymbol ) { - return invertedSymbolMap[ localizedSymbol ]; - }); - - // Reverse localized numbering system. - if ( invertedNuDigitsMap ) { - - // TODO: Create it during setup, i.e., make it a property. - localizedDigitRe = new RegExp( - Object.keys( invertedNuDigitsMap ).map(function( localizedDigit ) { - return regexpEscape( localizedDigit ); - }).join( "|" ), - "g" - ); - value = value.replace( localizedDigitRe, function( localizedDigit ) { - return invertedNuDigitsMap[ localizedDigit ]; - }); - } - - // Is it a valid number? - value = value.match( numberNumberRe ); - if ( !value ) { - - // Invalid number. - return NaN; - } - - prefix = value[ 1 ]; - suffix = value[ 6 ]; - - // Remove grouping separators. - number = value[ 2 ].replace( /,/g, "" ); - - // Scientific notation - if ( value[ 5 ] ) { - number += value[ 5 ]; - } - - number = +number; - - // Is it a valid number? - if ( isNaN( number ) ) { - - // Invalid number. - return NaN; - } - - // Percent - if ( value[ 0 ].indexOf( "%" ) !== -1 ) { - number /= 100; - suffix = suffix.replace( "%", "" ); - - // Per mille - } else if ( value[ 0 ].indexOf( "\u2030" ) !== -1 ) { - number /= 1000; - suffix = suffix.replace( "\u2030", "" ); - } - } - - // Negative number - // "If there is an explicit negative subpattern, it serves only to specify the negative prefix - // and suffix. If there is no explicit negative subpattern, the negative subpattern is the - // localized minus sign prefixed to the positive subpattern" UTS#35 - if ( prefix === negativePrefix && suffix === negativeSuffix ) { - number *= -1; - } - - return number; -}; - - - - -/** - * symbolMap( cldr ) - * - * @cldr [Cldr instance]. - * - * Return the (localized symbol, pattern symbol) key value pair, eg. { - * "٫": ".", - * "٬": ",", - * "٪": "%", - * ... - * }; - */ -var numberSymbolInvertedMap = function( cldr ) { - var symbol, - symbolMap = {}; - - for ( symbol in numberSymbolName ) { - symbolMap[ numberSymbol( numberSymbolName[ symbol ], cldr ) ] = symbol; - } - - return symbolMap; -}; - - - - -/** - * parseProperties( pattern, cldr ) - * - * @pattern [String] raw pattern for numbers. - * - * @cldr [Cldr instance]. - * - * Return parser properties, used to feed parser function. - */ -var numberParseProperties = function( pattern, cldr ) { - var invertedNuDigitsMap, invertedNuDigitsMapSanityCheck, negativePattern, negativeProperties, - nuDigitsMap = numberNumberingSystemDigitsMap( cldr ); - - pattern = pattern.split( ";" ); - negativePattern = pattern[ 1 ] || "-" + pattern[ 0 ]; - negativeProperties = numberPatternProperties( negativePattern ); - if ( nuDigitsMap ) { - invertedNuDigitsMap = nuDigitsMap.split( "" ).reduce(function( object, localizedDigit, i ) { - object[ localizedDigit ] = String( i ); - return object; - }, {} ); - invertedNuDigitsMapSanityCheck = "0123456789".split( "" ).reduce(function( object, digit ) { - object[ digit ] = "invalid"; - return object; - }, {} ); - invertedNuDigitsMap = objectExtend( - invertedNuDigitsMapSanityCheck, - invertedNuDigitsMap - ); - } - - // 0: @infinitySymbol [String] Infinity symbol. - // 1: @invertedSymbolMap [Object] Inverted symbol map augmented with sanity check. - // The sanity check prevents permissive parsing, i.e., it prevents symbols that doesn't - // belong to the localized set to pass through. This is obtained with the result of the - // inverted map object overloading symbol name map object (the remaining symbol name - // mappings will invalidate parsing, working as the sanity check). - // 2: @negativePrefix [String] Negative prefix. - // 3: @negativeSuffix [String] Negative suffix with percent or per mille stripped out. - // 4: @invertedNuDigitsMap [Object] Inverted digits map if numbering system is different than - // `latn` augmented with sanity check (similar to invertedSymbolMap). - return [ - numberSymbol( "infinity", cldr ), - objectExtend( {}, numberSymbolName, numberSymbolInvertedMap( cldr ) ), - negativeProperties[ 0 ], - negativeProperties[ 10 ].replace( "%", "" ).replace( "\u2030", "" ), - invertedNuDigitsMap - ]; -}; - - - - -/** - * Pattern( style ) - * - * @style [String] "decimal" (default) or "percent". - * - * @cldr [Cldr instance]. - */ -var numberPattern = function( style, cldr ) { - if ( style !== "decimal" && style !== "percent" ) { - throw new Error( "Invalid style" ); - } - - return cldr.main([ - "numbers", - style + "Formats-numberSystem-" + numberNumberingSystem( cldr ), - "standard" - ]); -}; - - - - -/** - * .numberFormatter( [options] ) - * - * @options [Object]: - * - style: [String] "decimal" (default) or "percent". - * - see also number/format options. - * - * Return a function that formats a number according to the given options and default/instance - * locale. - */ -Globalize.numberFormatter = -Globalize.prototype.numberFormatter = function( options ) { - var cldr, maximumFractionDigits, maximumSignificantDigits, minimumFractionDigits, - minimumIntegerDigits, minimumSignificantDigits, pattern, properties; - - validateParameterTypePlainObject( options, "options" ); - - options = options || {}; - cldr = this.cldr; - - validateDefaultLocale( cldr ); - - cldr.on( "get", validateCldr ); - - if ( options.raw ) { - pattern = options.raw; - } else { - pattern = numberPattern( options.style || "decimal", cldr ); - } - - properties = numberFormatProperties( pattern, cldr, options ); - - cldr.off( "get", validateCldr ); - - minimumIntegerDigits = properties[ 2 ]; - minimumFractionDigits = properties[ 3 ]; - maximumFractionDigits = properties[ 4 ]; - - minimumSignificantDigits = properties[ 5 ]; - maximumSignificantDigits = properties[ 6 ]; - - // Validate significant digit format properties - if ( !isNaN( minimumSignificantDigits * maximumSignificantDigits ) ) { - validateParameterRange( minimumSignificantDigits, "minimumSignificantDigits", 1, 21 ); - validateParameterRange( maximumSignificantDigits, "maximumSignificantDigits", - minimumSignificantDigits, 21 ); - - } else if ( !isNaN( minimumSignificantDigits ) || !isNaN( maximumSignificantDigits ) ) { - throw new Error( "Neither or both the minimum and maximum significant digits must be " + - "present" ); - - // Validate integer and fractional format - } else { - validateParameterRange( minimumIntegerDigits, "minimumIntegerDigits", 1, 21 ); - validateParameterRange( minimumFractionDigits, "minimumFractionDigits", 0, 20 ); - validateParameterRange( maximumFractionDigits, "maximumFractionDigits", - minimumFractionDigits, 20 ); - } - - return function( value ) { - validateParameterPresence( value, "value" ); - validateParameterTypeNumber( value, "value" ); - return numberFormat( value, properties ); - }; -}; - -/** - * .numberParser( [options] ) - * - * @options [Object]: - * - style: [String] "decimal" (default) or "percent". - * - * Return the number parser according to the default/instance locale. - */ -Globalize.numberParser = -Globalize.prototype.numberParser = function( options ) { - var cldr, pattern, properties; - - validateParameterTypePlainObject( options, "options" ); - - options = options || {}; - cldr = this.cldr; - - validateDefaultLocale( cldr ); - - cldr.on( "get", validateCldr ); - - if ( options.raw ) { - pattern = options.raw; - } else { - pattern = numberPattern( options.style || "decimal", cldr ); - } - - properties = numberParseProperties( pattern, cldr ); - - cldr.off( "get", validateCldr ); - - return function( value ) { - validateParameterPresence( value, "value" ); - validateParameterTypeString( value, "value" ); - return numberParse( value, properties ); - }; -}; - -/** - * .formatNumber( value [, options] ) - * - * @value [Number] number to be formatted. - * - * @options [Object]: see number/format-properties. - * - * Format a number according to the given options and default/instance locale. - */ -Globalize.formatNumber = -Globalize.prototype.formatNumber = function( value, options ) { - validateParameterPresence( value, "value" ); - validateParameterTypeNumber( value, "value" ); - - return this.numberFormatter( options )( value ); -}; - -/** - * .parseNumber( value [, options] ) - * - * @value [String] - * - * @options [Object]: See numberParser(). - * - * Return the parsed Number (including Infinity) or NaN when value is invalid. - */ -Globalize.parseNumber = -Globalize.prototype.parseNumber = function( value, options ) { - validateParameterPresence( value, "value" ); - validateParameterTypeString( value, "value" ); - - return this.numberParser( options )( value ); -}; - -/** - * Optimization to avoid duplicating some internal functions across modules. - */ -Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature; -Globalize._numberNumberingSystem = numberNumberingSystem; -Globalize._numberPattern = numberPattern; -Globalize._numberSymbol = numberSymbol; -Globalize._stringPad = stringPad; -Globalize._validateParameterTypeNumber = validateParameterTypeNumber; -Globalize._validateParameterTypeString = validateParameterTypeString; - -return Globalize; - - - - -})); diff --git a/external/localization.js b/external/localization.js index 2879601f8..67ecfe833 100644 --- a/external/localization.js +++ b/external/localization.js @@ -1,5357 +1,105 @@ -/** - * CLDR data - */ -( function( factory ) { - if ( typeof define === "function" && define.amd ) { - - // AMD. Register as an anonymous module. - define( [ - "globalize" - ], factory ); - } else { - - // Browser globals - factory( Globalize ); - } -}( function( Globalize ) { - -Globalize.load({ - "main": { - "ar": { - "identity": { - "version": { - "_cldrVersion": "27.0.1", - "_number": "$Revision: 11294 $" - }, - "generation": { - "_date": "$Date: 2015-02-23 16:50:24 -0600 (Mon, 23 Feb 2015) $" - }, - "language": "ar" - }, - "dates": { - "calendars": { - "gregorian": { - "months": { - "format": { - "abbreviated": { - "1": "يناير", - "2": "فبراير", - "3": "مارس", - "4": "أبريل", - "5": "مايو", - "6": "يونيو", - "7": "يوليو", - "8": "أغسطس", - "9": "سبتمبر", - "10": "أكتوبر", - "11": "نوفمبر", - "12": "ديسمبر" - }, - "narrow": { - "1": "ي", - "2": "ف", - "3": "م", - "4": "أ", - "5": "و", - "6": "ن", - "7": "ل", - "8": "غ", - "9": "س", - "10": "ك", - "11": "ب", - "12": "د" - }, - "wide": { - "1": "يناير", - "2": "فبراير", - "3": "مارس", - "4": "أبريل", - "5": "مايو", - "6": "يونيو", - "7": "يوليو", - "8": "أغسطس", - "9": "سبتمبر", - "10": "أكتوبر", - "11": "نوفمبر", - "12": "ديسمبر" - } - }, - "stand-alone": { - "abbreviated": { - "1": "يناير", - "2": "فبراير", - "3": "مارس", - "4": "أبريل", - "5": "مايو", - "6": "يونيو", - "7": "يوليو", - "8": "أغسطس", - "9": "سبتمبر", - "10": "أكتوبر", - "11": "نوفمبر", - "12": "ديسمبر" - }, - "narrow": { - "1": "ي", - "2": "ف", - "3": "م", - "4": "أ", - "5": "و", - "6": "ن", - "7": "ل", - "8": "غ", - "9": "س", - "10": "ك", - "11": "ب", - "12": "د" - }, - "wide": { - "1": "يناير", - "2": "فبراير", - "3": "مارس", - "4": "أبريل", - "5": "مايو", - "6": "يونيو", - "7": "يوليو", - "8": "أغسطس", - "9": "سبتمبر", - "10": "أكتوبر", - "11": "نوفمبر", - "12": "ديسمبر" - } - } - }, - "days": { - "format": { - "abbreviated": { - "sun": "الأحد", - "mon": "الاثنين", - "tue": "الثلاثاء", - "wed": "الأربعاء", - "thu": "الخميس", - "fri": "الجمعة", - "sat": "السبت" - }, - "narrow": { - "sun": "ح", - "mon": "ن", - "tue": "ث", - "wed": "ر", - "thu": "خ", - "fri": "ج", - "sat": "س" - }, - "short": { - "sun": "الأحد", - "mon": "الاثنين", - "tue": "الثلاثاء", - "wed": "الأربعاء", - "thu": "الخميس", - "fri": "الجمعة", - "sat": "السبت" - }, - "wide": { - "sun": "الأحد", - "mon": "الاثنين", - "tue": "الثلاثاء", - "wed": "الأربعاء", - "thu": "الخميس", - "fri": "الجمعة", - "sat": "السبت" - } - }, - "stand-alone": { - "abbreviated": { - "sun": "الأحد", - "mon": "الاثنين", - "tue": "الثلاثاء", - "wed": "الأربعاء", - "thu": "الخميس", - "fri": "الجمعة", - "sat": "السبت" - }, - "narrow": { - "sun": "ح", - "mon": "ن", - "tue": "ث", - "wed": "ر", - "thu": "خ", - "fri": "ج", - "sat": "س" - }, - "short": { - "sun": "الأحد", - "mon": "الاثنين", - "tue": "الثلاثاء", - "wed": "الأربعاء", - "thu": "الخميس", - "fri": "الجمعة", - "sat": "السبت" - }, - "wide": { - "sun": "الأحد", - "mon": "الاثنين", - "tue": "الثلاثاء", - "wed": "الأربعاء", - "thu": "الخميس", - "fri": "الجمعة", - "sat": "السبت" - } - } - }, - "quarters": { - "format": { - "abbreviated": { - "1": "الربع الأول", - "2": "الربع الثاني", - "3": "الربع الثالث", - "4": "الربع الرابع" - }, - "narrow": { - "1": "١", - "2": "٢", - "3": "٣", - "4": "٤" - }, - "wide": { - "1": "الربع الأول", - "2": "الربع الثاني", - "3": "الربع الثالث", - "4": "الربع الرابع" - } - }, - "stand-alone": { - "abbreviated": { - "1": "الربع الأول", - "2": "الربع الثاني", - "3": "الربع الثالث", - "4": "الربع الرابع" - }, - "narrow": { - "1": "١", - "2": "٢", - "3": "٣", - "4": "٤" - }, - "wide": { - "1": "الربع الأول", - "2": "الربع الثاني", - "3": "الربع الثالث", - "4": "الربع الرابع" - } - } - }, - "dayPeriods": { - "format": { - "abbreviated": { - "am": "ص", - "noon": "ظهرا", - "pm": "م" - }, - "narrow": { - "am": "ص", - "noon": "ظ", - "pm": "م" - }, - "wide": { - "am": "ص", - "noon": "ظهرا", - "pm": "م" - } - }, - "stand-alone": { - "abbreviated": { - "am": "ص", - "noon": "ظهرا", - "pm": "م" - }, - "narrow": { - "am": "ص", - "noon": "ظ", - "pm": "م" - }, - "wide": { - "am": "ص", - "noon": "ظهرا", - "pm": "م" - } - } - }, - "eras": { - "eraNames": { - "0": "قبل الميلاد", - "0-alt-variant": "BCE", - "1": "ميلادي", - "1-alt-variant": "بعد الميلاد" - }, - "eraAbbr": { - "0": "ق.م", - "0-alt-variant": "BCE", - "1": "م", - "1-alt-variant": "ب.م" - }, - "eraNarrow": { - "0": "ق.م", - "0-alt-variant": "BCE", - "1": "م", - "1-alt-variant": "ب.م" - } - }, - "dateFormats": { - "full": "EEEE، d MMMM، y", - "long": "d MMMM، y", - "medium": "dd‏/MM‏/y", - "short": "d‏/M‏/y" - }, - "timeFormats": { - "full": "h:mm:ss a zzzz", - "long": "h:mm:ss a z", - "medium": "h:mm:ss a", - "short": "h:mm a" - }, - "dateTimeFormats": { - "full": "{1} {0}", - "long": "{1} {0}", - "medium": "{1} {0}", - "short": "{1} {0}", - "availableFormats": { - "E": "ccc", - "EHm": "E HH:mm", - "EHms": "E HH:mm:ss", - "Ed": "E، d", - "Ehm": "E h:mm a", - "Ehms": "E h:mm:ss a", - "Gy": "y G", - "GyMMM": "MMM y G", - "GyMMMEd": "E، d MMM، y G", - "GyMMMd": "d MMM، y G", - "H": "HH", - "Hm": "HH:mm", - "Hms": "HH:mm:ss", - "Hmsv": "HH:mm:ss v", - "Hmv": "HH:mm v", - "M": "L", - "MEd": "E، d/M", - "MMM": "LLL", - "MMMEd": "E، d MMM", - "MMMMEd": "E، d MMMM", - "MMMMd": "d MMMM", - "MMMd": "d MMM", - "MMdd": "dd‏/MM", - "Md": "d/‏M", - "d": "d", - "h": "h a", - "hm": "h:mm a", - "hms": "h:mm:ss a", - "hmsv": "h:mm:ss a v", - "hmv": "h:mm a v", - "ms": "mm:ss", - "y": "y", - "yM": "M‏/y", - "yMEd": "E، d/‏M/‏y", - "yMM": "MM‏/y", - "yMMM": "MMM y", - "yMMMEd": "E، d MMM، y", - "yMMMM": "MMMM y", - "yMMMd": "d MMM، y", - "yMd": "d‏/M‏/y", - "yQQQ": "QQQ y", - "yQQQQ": "QQQQ y" - }, - "appendItems": { - "Day": "{0} ({2}: {1})", - "Day-Of-Week": "{0} {1}", - "Era": "{1} {0}", - "Hour": "{0} ({2}: {1})", - "Minute": "{0} ({2}: {1})", - "Month": "{0} ({2}: {1})", - "Quarter": "{0} ({2}: {1})", - "Second": "{0} ({2}: {1})", - "Timezone": "{0} {1}", - "Week": "{0} ({2}: {1})", - "Year": "{1} {0}" - }, - "intervalFormats": { - "intervalFormatFallback": "{0} – {1}", - "H": { - "H": "HH–HH" - }, - "Hm": { - "H": "HH:mm–HH:mm", - "m": "HH:mm–HH:mm" - }, - "Hmv": { - "H": "HH:mm–HH:mm v", - "m": "HH:mm–HH:mm v" - }, - "Hv": { - "H": "HH–HH v" - }, - "M": { - "M": "M–M" - }, - "MEd": { - "M": "E، d/‏M – E، d/‏M", - "d": "E، d/‏M –‏ E، d/‏M" - }, - "MMM": { - "M": "MMM–MMM" - }, - "MMMEd": { - "M": "E، d MMM – E، d MMM", - "d": "E، d – E، d MMM" - }, - "MMMM": { - "M": "LLLL–LLLL" - }, - "MMMd": { - "M": "d MMM – d MMM", - "d": "d–d MMM" - }, - "Md": { - "M": "M/d – M/d", - "d": "M/d – M/d" - }, - "d": { - "d": "d–d" - }, - "h": { - "a": "h a – h a", - "h": "h–h a" - }, - "hm": { - "a": "h:mm a – h:mm a", - "h": "h:mm–h:mm a", - "m": "h:mm–h:mm a" - }, - "hmv": { - "a": "h:mm a – h:mm a v", - "h": "h:mm–h:mm a v", - "m": "h:mm–h:mm a v" - }, - "hv": { - "a": "h a – h a v", - "h": "h–h a v" - }, - "y": { - "y": "y–y" - }, - "yM": { - "M": "M‏/y – M‏/y", - "y": "M‏/y – M‏/y" - }, - "yMEd": { - "M": "E، d‏/M‏/y – E، d‏/M‏/y", - "d": "E، dd‏/MM‏/y – E، dd‏/MM‏/y", - "y": "E، d‏/M‏/y – E، d‏/M‏/y" - }, - "yMMM": { - "M": "MMM – MMM، y", - "y": "MMM، y – MMM، y" - }, - "yMMMEd": { - "M": "E، d MMM – E، d MMM، y", - "d": "E، d – E، d MMM، y", - "y": "E، d MMM، y – E، d MMM، y" - }, - "yMMMM": { - "M": "MMMM – MMMM، y", - "y": "MMMM، y – MMMM، y" - }, - "yMMMd": { - "M": "d MMM – d MMM، y", - "d": "d–d MMM، y", - "y": "d MMM، y – d MMM، y" - }, - "yMd": { - "M": "d‏/M‏/y – d‏/M‏/y", - "d": "d‏/M‏/y – d‏/M‏/y", - "y": "d‏/M‏/y – d‏/M‏/y" - } - } - } - } - } - }, - "numbers": { - "defaultNumberingSystem": "arab", - "otherNumberingSystems": { - "native": "arab" - }, - "minimumGroupingDigits": "1", - "symbols-numberSystem-arab": { - "decimal": "٫", - "group": "٬", - "list": "؛", - "percentSign": "٪", - "plusSign": "‏+", - "minusSign": "‏-", - "exponential": "اس", - "superscriptingExponent": "×", - "perMille": "؉", - "infinity": "∞", - "nan": "ليس رقم", - "timeSeparator": "،" - }, - "symbols-numberSystem-latn": { - "decimal": ".", - "group": ",", - "list": ";", - "percentSign": "%", - "plusSign": "‎+", - "minusSign": "‎-", - "exponential": "E", - "superscriptingExponent": "×", - "perMille": "‰", - "infinity": "∞", - "nan": "NaN", - "timeSeparator": ":" - }, - "decimalFormats-numberSystem-arab": { - "standard": "#,##0.###", - "long": { - "decimalFormat": { - "1000-count-zero": "0 ألف", - "1000-count-one": "0 ألف", - "1000-count-two": "0 ألف", - "1000-count-few": "0 ألف", - "1000-count-many": "0 ألف", - "1000-count-other": "0 ألف", - "10000-count-zero": "00 ألف", - "10000-count-one": "00 ألف", - "10000-count-two": "00 ألف", - "10000-count-few": "00 ألف", - "10000-count-many": "00 ألف", - "10000-count-other": "00 ألف", - "100000-count-zero": "000 ألف", - "100000-count-one": "000 ألف", - "100000-count-two": "000 ألف", - "100000-count-few": "000 ألف", - "100000-count-many": "000 ألف", - "100000-count-other": "000 ألف", - "1000000-count-zero": "0 مليون", - "1000000-count-one": "0 مليون", - "1000000-count-two": "0 مليون", - "1000000-count-few": "0 مليون", - "1000000-count-many": "0 مليون", - "1000000-count-other": "0 مليون", - "10000000-count-zero": "00 مليون", - "10000000-count-one": "00 مليون", - "10000000-count-two": "00 مليون", - "10000000-count-few": "00 مليون", - "10000000-count-many": "00 مليون", - "10000000-count-other": "00 مليون", - "100000000-count-zero": "000 مليون", - "100000000-count-one": "000 مليون", - "100000000-count-two": "000 مليون", - "100000000-count-few": "000 مليون", - "100000000-count-many": "000 مليون", - "100000000-count-other": "000 مليون", - "1000000000-count-zero": "0 بليون", - "1000000000-count-one": "0 بليون", - "1000000000-count-two": "0 بليون", - "1000000000-count-few": "0 بليون", - "1000000000-count-many": "0 بليون", - "1000000000-count-other": "0 بليون", - "10000000000-count-zero": "00 بليون", - "10000000000-count-one": "00 بليون", - "10000000000-count-two": "00 بليون", - "10000000000-count-few": "00 بليون", - "10000000000-count-many": "00 بليون", - "10000000000-count-other": "00 بليون", - "100000000000-count-zero": "000 بليون", - "100000000000-count-one": "000 بليون", - "100000000000-count-two": "000 بليون", - "100000000000-count-few": "000 بليون", - "100000000000-count-many": "000 بليون", - "100000000000-count-other": "000 بليون", - "1000000000000-count-zero": "0 تريليون", - "1000000000000-count-one": "0 تريليون", - "1000000000000-count-two": "0 تريليون", - "1000000000000-count-few": "0 تريليون", - "1000000000000-count-many": "0 تريليون", - "1000000000000-count-other": "0 تريليون", - "10000000000000-count-zero": "00 تريليون", - "10000000000000-count-one": "00 تريليون", - "10000000000000-count-two": "00 تريليون", - "10000000000000-count-few": "00 تريليون", - "10000000000000-count-many": "00 تريليون", - "10000000000000-count-other": "00 تريليون", - "100000000000000-count-zero": "000 تريليون", - "100000000000000-count-one": "000 تريليون", - "100000000000000-count-two": "000 تريليون", - "100000000000000-count-few": "000 تريليون", - "100000000000000-count-many": "000 تريليون", - "100000000000000-count-other": "000 تريليون" - } - }, - "short": { - "decimalFormat": { - "1000-count-zero": "0 ألف", - "1000-count-one": "0 ألف", - "1000-count-two": "0 ألف", - "1000-count-few": "0 ألف", - "1000-count-many": "0 ألف", - "1000-count-other": "0 ألف", - "10000-count-zero": "00 ألف", - "10000-count-one": "00 ألف", - "10000-count-two": "00 ألف", - "10000-count-few": "00 ألف", - "10000-count-many": "00 ألف", - "10000-count-other": "00 ألف", - "100000-count-zero": "000 ألف", - "100000-count-one": "000 ألف", - "100000-count-two": "000 ألف", - "100000-count-few": "000 ألف", - "100000-count-many": "000 ألف", - "100000-count-other": "000 ألف", - "1000000-count-zero": "0 مليو", - "1000000-count-one": "0 مليو", - "1000000-count-two": "0 مليو", - "1000000-count-few": "0 مليو", - "1000000-count-many": "0 مليو", - "1000000-count-other": "0 مليو", - "10000000-count-zero": "00 مليو", - "10000000-count-one": "00 مليو", - "10000000-count-two": "00 مليو", - "10000000-count-few": "00 مليو", - "10000000-count-many": "00 مليو", - "10000000-count-other": "00 مليو", - "100000000-count-zero": "000 مليو", - "100000000-count-one": "000 مليو", - "100000000-count-two": "000 مليو", - "100000000-count-few": "000 مليو", - "100000000-count-many": "000 مليو", - "100000000-count-other": "000 مليو", - "1000000000-count-zero": "0 بليو", - "1000000000-count-one": "0 بليو", - "1000000000-count-two": "0 بليو", - "1000000000-count-few": "0 بليو", - "1000000000-count-many": "0 بليو", - "1000000000-count-other": "0 بليو", - "10000000000-count-zero": "00 بليو", - "10000000000-count-one": "00 بليو", - "10000000000-count-two": "00 بليو", - "10000000000-count-few": "00 بليو", - "10000000000-count-many": "00 بليو", - "10000000000-count-other": "00 بليو", - "100000000000-count-zero": "000 بليو", - "100000000000-count-one": "000 بليو", - "100000000000-count-two": "000 بليو", - "100000000000-count-few": "000 بليو", - "100000000000-count-many": "000 بليو", - "100000000000-count-other": "000 بليو", - "1000000000000-count-zero": "0 ترليو", - "1000000000000-count-one": "0 ترليو", - "1000000000000-count-two": "0 ترليو", - "1000000000000-count-few": "0 ترليو", - "1000000000000-count-many": "0 ترليو", - "1000000000000-count-other": "0 ترليو", - "10000000000000-count-zero": "00 ترليو", - "10000000000000-count-one": "00 ترليو", - "10000000000000-count-two": "00 ترليو", - "10000000000000-count-few": "00 ترليو", - "10000000000000-count-many": "00 ترليو", - "10000000000000-count-other": "00 ترليو", - "100000000000000-count-zero": "000 ترليو", - "100000000000000-count-one": "000 ترليو", - "100000000000000-count-two": "000 ترليو", - "100000000000000-count-few": "000 ترليو", - "100000000000000-count-many": "000 ترليو", - "100000000000000-count-other": "000 ترليو" - } - } - }, - "decimalFormats-numberSystem-latn": { - "standard": "#,##0.###", - "long": { - "decimalFormat": { - "1000-count-zero": "0 ألف", - "1000-count-one": "0 ألف", - "1000-count-two": "0 ألف", - "1000-count-few": "0 آلاف", - "1000-count-many": "0 ألف", - "1000-count-other": "0 ألف", - "10000-count-zero": "00 ألف", - "10000-count-one": "00 ألف", - "10000-count-two": "00 ألف", - "10000-count-few": "00 ألف", - "10000-count-many": "00 ألف", - "10000-count-other": "00 ألف", - "100000-count-zero": "000 ألف", - "100000-count-one": "000 ألف", - "100000-count-two": "000 ألف", - "100000-count-few": "000 ألف", - "100000-count-many": "000 ألف", - "100000-count-other": "000 ألف", - "1000000-count-zero": "0 مليون", - "1000000-count-one": "0 مليون", - "1000000-count-two": "0 مليون", - "1000000-count-few": "0 ملايين", - "1000000-count-many": "0 مليون", - "1000000-count-other": "0 مليون", - "10000000-count-zero": "00 مليون", - "10000000-count-one": "00 مليون", - "10000000-count-two": "00 مليون", - "10000000-count-few": "00 ملايين", - "10000000-count-many": "00 مليون", - "10000000-count-other": "00 مليون", - "100000000-count-zero": "000 مليون", - "100000000-count-one": "000 مليون", - "100000000-count-two": "000 مليون", - "100000000-count-few": "000 مليون", - "100000000-count-many": "000 مليون", - "100000000-count-other": "000 مليون", - "1000000000-count-zero": "0 بليون", - "1000000000-count-one": "0 بليون", - "1000000000-count-two": "0 بليون", - "1000000000-count-few": "0 بلايين", - "1000000000-count-many": "0 بليون", - "1000000000-count-other": "0 بليون", - "10000000000-count-zero": "00 بليون", - "10000000000-count-one": "00 بليون", - "10000000000-count-two": "00 بليون", - "10000000000-count-few": "00 بليون", - "10000000000-count-many": "00 بليون", - "10000000000-count-other": "00 بليون", - "100000000000-count-zero": "000 بليون", - "100000000000-count-one": "000 بليون", - "100000000000-count-two": "000 بليون", - "100000000000-count-few": "000 بليون", - "100000000000-count-many": "000 بليون", - "100000000000-count-other": "000 بليون", - "1000000000000-count-zero": "0 تريليون", - "1000000000000-count-one": "0 تريليون", - "1000000000000-count-two": "0 تريليون", - "1000000000000-count-few": "0 تريليونات", - "1000000000000-count-many": "0 تريليون", - "1000000000000-count-other": "0 تريليون", - "10000000000000-count-zero": "00 تريليون", - "10000000000000-count-one": "00 تريليون", - "10000000000000-count-two": "00 تريليون", - "10000000000000-count-few": "00 تريليون", - "10000000000000-count-many": "00 تريليون", - "10000000000000-count-other": "00 تريليون", - "100000000000000-count-zero": "000 تريليون", - "100000000000000-count-one": "000 تريليون", - "100000000000000-count-two": "000 تريليون", - "100000000000000-count-few": "000 تريليون", - "100000000000000-count-many": "000 تريليون", - "100000000000000-count-other": "000 تريليون" - } - }, - "short": { - "decimalFormat": { - "1000-count-zero": "0 ألف", - "1000-count-one": "0 ألف", - "1000-count-two": "0 ألف", - "1000-count-few": "0 آلاف", - "1000-count-many": "0 ألف", - "1000-count-other": "0 ألف", - "10000-count-zero": "00 ألف", - "10000-count-one": "00 ألف", - "10000-count-two": "00 ألف", - "10000-count-few": "00 ألف", - "10000-count-many": "00 ألف", - "10000-count-other": "00 ألف", - "100000-count-zero": "000 ألف", - "100000-count-one": "000 ألف", - "100000-count-two": "000 ألف", - "100000-count-few": "000 ألف", - "100000-count-many": "000 ألف", - "100000-count-other": "000 ألف", - "1000000-count-zero": "0 مليو", - "1000000-count-one": "0 مليو", - "1000000-count-two": "0 مليو", - "1000000-count-few": "0 مليو", - "1000000-count-many": "0 مليو", - "1000000-count-other": "0 مليو", - "10000000-count-zero": "00 مليو", - "10000000-count-one": "00 مليو", - "10000000-count-two": "00 مليو", - "10000000-count-few": "00 مليو", - "10000000-count-many": "00 مليو", - "10000000-count-other": "00 مليو", - "100000000-count-zero": "000 مليو", - "100000000-count-one": "000 مليو", - "100000000-count-two": "000 مليو", - "100000000-count-few": "000 مليو", - "100000000-count-many": "000 مليو", - "100000000-count-other": "000 مليو", - "1000000000-count-zero": "0 بليو", - "1000000000-count-one": "0 بليو", - "1000000000-count-two": "0 بليو", - "1000000000-count-few": "0 بليو", - "1000000000-count-many": "0 بليو", - "1000000000-count-other": "0 بليو", - "10000000000-count-zero": "00 بليو", - "10000000000-count-one": "00 بليو", - "10000000000-count-two": "00 بليو", - "10000000000-count-few": "00 بليو", - "10000000000-count-many": "00 بليو", - "10000000000-count-other": "00 بليو", - "100000000000-count-zero": "000 بليو", - "100000000000-count-one": "000 بليو", - "100000000000-count-two": "000 بليو", - "100000000000-count-few": "000 بليو", - "100000000000-count-many": "000 بليو", - "100000000000-count-other": "000 بليو", - "1000000000000-count-zero": "0 ترليو", - "1000000000000-count-one": "0 ترليو", - "1000000000000-count-two": "0 ترليو", - "1000000000000-count-few": "0 ترليو", - "1000000000000-count-many": "0 ترليو", - "1000000000000-count-other": "0 ترليو", - "10000000000000-count-zero": "00 ترليو", - "10000000000000-count-one": "00 ترليو", - "10000000000000-count-two": "00 ترليو", - "10000000000000-count-few": "00 ترليو", - "10000000000000-count-many": "00 ترليو", - "10000000000000-count-other": "00 ترليو", - "100000000000000-count-zero": "000 ترليو", - "100000000000000-count-one": "000 ترليو", - "100000000000000-count-two": "000 ترليو", - "100000000000000-count-few": "000 ترليو", - "100000000000000-count-many": "000 ترليو", - "100000000000000-count-other": "000 ترليو" - } - } - }, - "scientificFormats-numberSystem-arab": { - "standard": "#E0" - }, - "scientificFormats-numberSystem-latn": { - "standard": "#E0" - }, - "percentFormats-numberSystem-arab": { - "standard": "#,##0%" - }, - "percentFormats-numberSystem-latn": { - "standard": "#,##0%" - }, - "currencyFormats-numberSystem-arab": { - "currencySpacing": { - "beforeCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - }, - "afterCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - } - }, - "accounting": "¤#,##0.00;(¤#,##0.00)", - "standard": "¤ #,##0.00", - "unitPattern-count-zero": "{0} {1}", - "unitPattern-count-one": "{0} {1}", - "unitPattern-count-two": "{0} {1}", - "unitPattern-count-few": "{0} {1}", - "unitPattern-count-many": "{0} {1}", - "unitPattern-count-other": "{0} {1}" - }, - "currencyFormats-numberSystem-latn": { - "currencySpacing": { - "beforeCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - }, - "afterCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - } - }, - "accounting": "¤#,##0.00;(¤#,##0.00)", - "standard": "¤ #,##0.00", - "unitPattern-count-zero": "{0} {1}", - "unitPattern-count-one": "{0} {1}", - "unitPattern-count-two": "{0} {1}", - "unitPattern-count-few": "{0} {1}", - "unitPattern-count-many": "{0} {1}", - "unitPattern-count-other": "{0} {1}" - }, - "miscPatterns-numberSystem-arab": { - "atLeast": "+{0}", - "range": "{0}–{1}" - }, - "miscPatterns-numberSystem-latn": { - "atLeast": "+{0}", - "range": "{0}–{1}" - } - } - } - } -}); - -Globalize.load({ - "main": { - "es": { - "identity": { - "version": { - "_cldrVersion": "27.0.1", - "_number": "$Revision: 11321 $" - }, - "generation": { - "_date": "$Date: 2015-02-26 14:20:05 -0600 (Thu, 26 Feb 2015) $" - }, - "language": "es" - }, - "dates": { - "calendars": { - "gregorian": { - "months": { - "format": { - "abbreviated": { - "1": "ene.", - "2": "feb.", - "3": "mar.", - "4": "abr.", - "5": "may.", - "6": "jun.", - "7": "jul.", - "8": "ago.", - "9": "sept.", - "10": "oct.", - "11": "nov.", - "12": "dic." - }, - "narrow": { - "1": "E", - "2": "F", - "3": "M", - "4": "A", - "5": "M", - "6": "J", - "7": "J", - "8": "A", - "9": "S", - "10": "O", - "11": "N", - "12": "D" - }, - "wide": { - "1": "enero", - "2": "febrero", - "3": "marzo", - "4": "abril", - "5": "mayo", - "6": "junio", - "7": "julio", - "8": "agosto", - "9": "septiembre", - "10": "octubre", - "11": "noviembre", - "12": "diciembre" - } - }, - "stand-alone": { - "abbreviated": { - "1": "Ene.", - "2": "Feb.", - "3": "Mar.", - "4": "Abr.", - "5": "May.", - "6": "Jun.", - "7": "Jul.", - "8": "Ago.", - "9": "Sept.", - "10": "Oct.", - "11": "Nov.", - "12": "Dic." - }, - "narrow": { - "1": "E", - "2": "F", - "3": "M", - "4": "A", - "5": "M", - "6": "J", - "7": "J", - "8": "A", - "9": "S", - "10": "O", - "11": "N", - "12": "D" - }, - "wide": { - "1": "Enero", - "2": "Febrero", - "3": "Marzo", - "4": "Abril", - "5": "Mayo", - "6": "Junio", - "7": "Julio", - "8": "Agosto", - "9": "Septiembre", - "10": "Octubre", - "11": "Noviembre", - "12": "Diciembre" - } - } - }, - "days": { - "format": { - "abbreviated": { - "sun": "dom.", - "mon": "lun.", - "tue": "mar.", - "wed": "mié.", - "thu": "jue.", - "fri": "vie.", - "sat": "sáb." - }, - "narrow": { - "sun": "D", - "mon": "L", - "tue": "M", - "wed": "X", - "thu": "J", - "fri": "V", - "sat": "S" - }, - "short": { - "sun": "DO", - "mon": "LU", - "tue": "MA", - "wed": "MI", - "thu": "JU", - "fri": "VI", - "sat": "SA" - }, - "wide": { - "sun": "domingo", - "mon": "lunes", - "tue": "martes", - "wed": "miércoles", - "thu": "jueves", - "fri": "viernes", - "sat": "sábado" - } - }, - "stand-alone": { - "abbreviated": { - "sun": "Dom.", - "mon": "Lun.", - "tue": "Mar.", - "wed": "Mié.", - "thu": "Jue.", - "fri": "Vie.", - "sat": "Sáb." - }, - "narrow": { - "sun": "D", - "mon": "L", - "tue": "M", - "wed": "X", - "thu": "J", - "fri": "V", - "sat": "S" - }, - "short": { - "sun": "DO", - "mon": "LU", - "tue": "MA", - "wed": "MI", - "thu": "JU", - "fri": "VI", - "sat": "SA" - }, - "wide": { - "sun": "Domingo", - "mon": "Lunes", - "tue": "Martes", - "wed": "Miércoles", - "thu": "Jueves", - "fri": "Viernes", - "sat": "Sábado" - } - } - }, - "quarters": { - "format": { - "abbreviated": { - "1": "T1", - "2": "T2", - "3": "T3", - "4": "T4" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4" - }, - "wide": { - "1": "1.er trimestre", - "2": "2.º trimestre", - "3": "3.er trimestre", - "4": "4.º trimestre" - } - }, - "stand-alone": { - "abbreviated": { - "1": "T1", - "2": "T2", - "3": "T3", - "4": "T4" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4" - }, - "wide": { - "1": "1.er trimestre", - "2": "2.º trimestre", - "3": "3.er trimestre", - "4": "4.º trimestre" - } - } - }, - "dayPeriods": { - "format": { - "abbreviated": { - "am": "a. m.", - "noon": "mediodía", - "pm": "p. m." - }, - "narrow": { - "am": "a.m.", - "noon": "m.", - "pm": "p.m." - }, - "wide": { - "am": "a. m.", - "noon": "mediodía", - "pm": "p. m." - } - }, - "stand-alone": { - "abbreviated": { - "am": "a. m.", - "noon": "mediodía", - "pm": "p. m." - }, - "narrow": { - "am": "a.m.", - "noon": "m.", - "pm": "p.m." - }, - "wide": { - "am": "a. m.", - "noon": "mediodía", - "pm": "p. m." - } - } - }, - "eras": { - "eraNames": { - "0": "antes de Cristo", - "0-alt-variant": "antes de la era común", - "1": "después de Cristo", - "1-alt-variant": "era común" - }, - "eraAbbr": { - "0": "a. C.", - "0-alt-variant": "a. e. c.", - "1": "d. C.", - "1-alt-variant": "e. c." - }, - "eraNarrow": { - "0": "a. C.", - "0-alt-variant": "a. e. c.", - "1": "d. C.", - "1-alt-variant": "e. c." - } - }, - "dateFormats": { - "full": "EEEE, d 'de' MMMM 'de' y", - "long": "d 'de' MMMM 'de' y", - "medium": "d MMM y", - "short": "d/M/yy" - }, - "timeFormats": { - "full": "H:mm:ss (zzzz)", - "long": "H:mm:ss z", - "medium": "H:mm:ss", - "short": "H:mm" - }, - "dateTimeFormats": { - "full": "{1}, {0}", - "long": "{1}, {0}", - "medium": "{1} {0}", - "short": "{1} {0}", - "availableFormats": { - "E": "ccc", - "EHm": "E, H:mm", - "EHms": "E, H:mm:ss", - "Ed": "E d", - "Ehm": "E, h:mm a", - "Ehms": "E, h:mm:ss a", - "Gy": "y G", - "GyMMM": "MMM y G", - "GyMMMEd": "E, d MMM y G", - "GyMMMM": "MMMM 'de' y G", - "GyMMMMEd": "E, d 'de' MMMM 'de' y G", - "GyMMMMd": "d 'de' MMMM 'de' y G", - "GyMMMd": "d MMM y G", - "H": "H", - "Hm": "H:mm", - "Hms": "H:mm:ss", - "Hmsv": "H:mm:ss v", - "Hmsvvvv": "H:mm:ss (vvvv)", - "Hmv": "H:mm v", - "M": "L", - "MEd": "E, d/M", - "MMM": "LLL", - "MMMEd": "E, d MMM", - "MMMMEd": "E, d 'de' MMMM", - "MMMMd": "d 'de' MMMM", - "MMMd": "d MMM", - "MMd": "d/M", - "MMdd": "d/M", - "Md": "d/M", - "d": "d", - "h": "h a", - "hm": "h:mm a", - "hms": "h:mm:ss a", - "hmsv": "h:mm:ss a v", - "hmsvvvv": "h:mm:ss a (vvvv)", - "hmv": "h:mm a v", - "ms": "mm:ss", - "y": "y", - "yM": "M/y", - "yMEd": "EEE, d/M/y", - "yMM": "M/y", - "yMMM": "MMM y", - "yMMMEd": "EEE, d MMM y", - "yMMMM": "MMMM 'de' y", - "yMMMMEd": "EEE, d 'de' MMMM 'de' y", - "yMMMMd": "d 'de' MMMM 'de' y", - "yMMMd": "d MMM y", - "yMd": "d/M/y", - "yQQQ": "QQQ y", - "yQQQQ": "QQQQ 'de' y" - }, - "appendItems": { - "Day": "{0} ({2}: {1})", - "Day-Of-Week": "{0} {1}", - "Era": "{1} {0}", - "Hour": "{0} ({2}: {1})", - "Minute": "{0} ({2}: {1})", - "Month": "{0} ({2}: {1})", - "Quarter": "{0} ({2}: {1})", - "Second": "{0} ({2}: {1})", - "Timezone": "{0} {1}", - "Week": "{0} ({2}: {1})", - "Year": "{1} {0}" - }, - "intervalFormats": { - "intervalFormatFallback": "{0}–{1}", - "H": { - "H": "H–H" - }, - "Hm": { - "H": "H:mm–H:mm", - "m": "H:mm–H:mm" - }, - "Hmv": { - "H": "H:mm–H:mm v", - "m": "H:mm–H:mm v" - }, - "Hv": { - "H": "H–H v" - }, - "M": { - "M": "M–M" - }, - "MEd": { - "M": "E, d/M–E, d/M", - "d": "E, d/M–E, d/M" - }, - "MMM": { - "M": "MMM–MMM" - }, - "MMMEd": { - "M": "E, d MMM–E, d MMM", - "d": "E, d MMM–E, d MMM" - }, - "MMMMEd": { - "M": "E, d 'de' MMMM–E, d 'de' MMMM", - "d": "E, d 'de' MMMM–E, d 'de' MMMM" - }, - "MMMMd": { - "M": "d 'de' MMMM–d 'de' MMMM", - "d": "d–d 'de' MMMM" - }, - "MMMd": { - "M": "d MMM–d MMM", - "d": "d–d MMM" - }, - "Md": { - "M": "d/M–d/M", - "d": "d/M–d/M" - }, - "d": { - "d": "d–d" - }, - "h": { - "a": "h a–h a", - "h": "h–h a" - }, - "hm": { - "a": "h:mm a – h:mm a", - "h": "h:mm – h:mm a", - "m": "h:mm – h:mm a" - }, - "hmv": { - "a": "h:mm a–h:mm a v", - "h": "h:mm–h:mm a v", - "m": "h:mm–h:mm a v" - }, - "hv": { - "a": "h a–h a v", - "h": "h–h a v" - }, - "y": { - "y": "y–y" - }, - "yM": { - "M": "M/y–M/y", - "y": "M/y–M/y" - }, - "yMEd": { - "M": "E, d/M/y–E, d/M/y", - "d": "E, d/M/y–E, d/M/y", - "y": "E, d/M/y–E, d/M/y" - }, - "yMMM": { - "M": "MMM–MMM y", - "y": "MMM y–MMM y" - }, - "yMMMEd": { - "M": "E, d MMM–E, d MMM y", - "d": "E, d MMM–E, d MMM y", - "y": "E, d MMM y–E, d MMM y" - }, - "yMMMM": { - "M": "MMMM–MMMM 'de' y", - "y": "MMMM 'de' y–MMMM 'de' y" - }, - "yMMMMEd": { - "M": "E, d 'de' MMMM–E, d 'de' MMMM 'de' y", - "d": "E, d 'de' MMMM–E, d 'de' MMMM 'de' y", - "y": "E, d 'de' MMMM 'de' y–E, d 'de' MMMM 'de' y" - }, - "yMMMMd": { - "M": "d 'de' MMMM–d 'de' MMMM 'de' y", - "d": "d–d 'de' MMMM 'de' y", - "y": "d 'de' MMMM 'de' y–d 'de' MMMM 'de' y" - }, - "yMMMd": { - "M": "d MMM–d MMM y", - "d": "d–d MMM y", - "y": "d MMM y–d MMM y" - }, - "yMd": { - "M": "d/M/y–d/M/y", - "d": "d/M/y–d/M/y", - "y": "d/M/y–d/M/y" - } - } - } - } - } - }, - "numbers": { - "defaultNumberingSystem": "latn", - "otherNumberingSystems": { - "native": "latn" - }, - "minimumGroupingDigits": "1", - "symbols-numberSystem-latn": { - "decimal": ",", - "group": ".", - "list": ";", - "percentSign": "%", - "plusSign": "+", - "minusSign": "-", - "exponential": "E", - "superscriptingExponent": "×", - "perMille": "‰", - "infinity": "∞", - "nan": "NaN", - "timeSeparator": ":" - }, - "decimalFormats-numberSystem-latn": { - "standard": "#,##0.###", - "long": { - "decimalFormat": { - "1000-count-one": "0 mil", - "1000-count-other": "0 mil", - "10000-count-one": "00 mil", - "10000-count-other": "00 mil", - "100000-count-one": "000 mil", - "100000-count-other": "000 mil", - "1000000-count-one": "0 millón", - "1000000-count-other": "0 millones", - "10000000-count-one": "00 millones", - "10000000-count-other": "00 millones", - "100000000-count-one": "000 millones", - "100000000-count-other": "000 millones", - "1000000000-count-one": "0 mil millones", - "1000000000-count-other": "0 mil millones", - "10000000000-count-one": "00 mil millones", - "10000000000-count-other": "00 mil millones", - "100000000000-count-one": "000 mil millones", - "100000000000-count-other": "000 mil millones", - "1000000000000-count-one": "0 billón", - "1000000000000-count-other": "0 billones", - "10000000000000-count-one": "00 billones", - "10000000000000-count-other": "00 billones", - "100000000000000-count-one": "000 billones", - "100000000000000-count-other": "000 billones" - } - }, - "short": { - "decimalFormat": { - "1000-count-one": "0 K", - "1000-count-other": "0 K", - "10000-count-one": "00 K", - "10000-count-other": "00 K", - "100000-count-one": "000 K", - "100000-count-other": "000 K", - "1000000-count-one": "0 M", - "1000000-count-other": "0 M", - "10000000-count-one": "00 M", - "10000000-count-other": "00 M", - "100000000-count-one": "000 M", - "100000000-count-other": "000 M", - "1000000000-count-one": "0000 M", - "1000000000-count-other": "0000 M", - "10000000000-count-one": "00 MRD", - "10000000000-count-other": "00 MRD", - "100000000000-count-one": "000 MRD", - "100000000000-count-other": "000 MRD", - "1000000000000-count-one": "0 B", - "1000000000000-count-other": "0 B", - "10000000000000-count-one": "00 B", - "10000000000000-count-other": "00 B", - "100000000000000-count-one": "000 B", - "100000000000000-count-other": "000 B" - } - } - }, - "scientificFormats-numberSystem-latn": { - "standard": "#E0" - }, - "percentFormats-numberSystem-latn": { - "standard": "#,##0 %" - }, - "currencyFormats-numberSystem-latn": { - "currencySpacing": { - "beforeCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - }, - "afterCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - } - }, - "accounting": "#,##0.00 ¤", - "standard": "#,##0.00 ¤", - "unitPattern-count-one": "{0} {1}", - "unitPattern-count-other": "{0} {1}" - }, - "miscPatterns-numberSystem-latn": { - "atLeast": "Más de {0}", - "range": "{0}-{1}" - } - } - } - } -}); +(function( root, factory ) { -Globalize.load({ - "main": { - "en": { - "identity": { - "version": { - "_cldrVersion": "27.0.1", - "_number": "$Revision: 11348 $" - }, - "generation": { - "_date": "$Date: 2015-03-05 01:15:52 -0600 (Thu, 05 Mar 2015) $" - }, - "language": "en" - }, - "numbers": { - "defaultNumberingSystem": "latn", - "otherNumberingSystems": { - "native": "latn" - }, - "minimumGroupingDigits": "1", - "symbols-numberSystem-latn": { - "decimal": ".", - "group": ",", - "list": ";", - "percentSign": "%", - "plusSign": "+", - "minusSign": "-", - "exponential": "E", - "superscriptingExponent": "×", - "perMille": "‰", - "infinity": "∞", - "nan": "NaN", - "timeSeparator": ":" - }, - "decimalFormats-numberSystem-latn": { - "standard": "#,##0.###", - "long": { - "decimalFormat": { - "1000-count-one": "0 thousand", - "1000-count-other": "0 thousand", - "10000-count-one": "00 thousand", - "10000-count-other": "00 thousand", - "100000-count-one": "000 thousand", - "100000-count-other": "000 thousand", - "1000000-count-one": "0 million", - "1000000-count-other": "0 million", - "10000000-count-one": "00 million", - "10000000-count-other": "00 million", - "100000000-count-one": "000 million", - "100000000-count-other": "000 million", - "1000000000-count-one": "0 billion", - "1000000000-count-other": "0 billion", - "10000000000-count-one": "00 billion", - "10000000000-count-other": "00 billion", - "100000000000-count-one": "000 billion", - "100000000000-count-other": "000 billion", - "1000000000000-count-one": "0 trillion", - "1000000000000-count-other": "0 trillion", - "10000000000000-count-one": "00 trillion", - "10000000000000-count-other": "00 trillion", - "100000000000000-count-one": "000 trillion", - "100000000000000-count-other": "000 trillion" - } - }, - "short": { - "decimalFormat": { - "1000-count-one": "0K", - "1000-count-other": "0K", - "10000-count-one": "00K", - "10000-count-other": "00K", - "100000-count-one": "000K", - "100000-count-other": "000K", - "1000000-count-one": "0M", - "1000000-count-other": "0M", - "10000000-count-one": "00M", - "10000000-count-other": "00M", - "100000000-count-one": "000M", - "100000000-count-other": "000M", - "1000000000-count-one": "0B", - "1000000000-count-other": "0B", - "10000000000-count-one": "00B", - "10000000000-count-other": "00B", - "100000000000-count-one": "000B", - "100000000000-count-other": "000B", - "1000000000000-count-one": "0T", - "1000000000000-count-other": "0T", - "10000000000000-count-one": "00T", - "10000000000000-count-other": "00T", - "100000000000000-count-one": "000T", - "100000000000000-count-other": "000T" - } - } - }, - "scientificFormats-numberSystem-latn": { - "standard": "#E0" - }, - "percentFormats-numberSystem-latn": { - "standard": "#,##0%" - }, - "currencyFormats-numberSystem-latn": { - "currencySpacing": { - "beforeCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - }, - "afterCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - } - }, - "accounting": "¤#,##0.00;(¤#,##0.00)", - "standard": "¤#,##0.00", - "unitPattern-count-one": "{0} {1}", - "unitPattern-count-other": "{0} {1}" - }, - "miscPatterns-numberSystem-latn": { - "atLeast": "{0}+", - "range": "{0}–{1}" - } - }, - "dates": { - "calendars": { - "gregorian": { - "months": { - "format": { - "abbreviated": { - "1": "Jan", - "2": "Feb", - "3": "Mar", - "4": "Apr", - "5": "May", - "6": "Jun", - "7": "Jul", - "8": "Aug", - "9": "Sep", - "10": "Oct", - "11": "Nov", - "12": "Dec" - }, - "narrow": { - "1": "J", - "2": "F", - "3": "M", - "4": "A", - "5": "M", - "6": "J", - "7": "J", - "8": "A", - "9": "S", - "10": "O", - "11": "N", - "12": "D" - }, - "wide": { - "1": "January", - "2": "February", - "3": "March", - "4": "April", - "5": "May", - "6": "June", - "7": "July", - "8": "August", - "9": "September", - "10": "October", - "11": "November", - "12": "December" - } - }, - "stand-alone": { - "abbreviated": { - "1": "Jan", - "2": "Feb", - "3": "Mar", - "4": "Apr", - "5": "May", - "6": "Jun", - "7": "Jul", - "8": "Aug", - "9": "Sep", - "10": "Oct", - "11": "Nov", - "12": "Dec" - }, - "narrow": { - "1": "J", - "2": "F", - "3": "M", - "4": "A", - "5": "M", - "6": "J", - "7": "J", - "8": "A", - "9": "S", - "10": "O", - "11": "N", - "12": "D" - }, - "wide": { - "1": "January", - "2": "February", - "3": "March", - "4": "April", - "5": "May", - "6": "June", - "7": "July", - "8": "August", - "9": "September", - "10": "October", - "11": "November", - "12": "December" - } - } - }, - "days": { - "format": { - "abbreviated": { - "sun": "Sun", - "mon": "Mon", - "tue": "Tue", - "wed": "Wed", - "thu": "Thu", - "fri": "Fri", - "sat": "Sat" - }, - "narrow": { - "sun": "S", - "mon": "M", - "tue": "T", - "wed": "W", - "thu": "T", - "fri": "F", - "sat": "S" - }, - "short": { - "sun": "Su", - "mon": "Mo", - "tue": "Tu", - "wed": "We", - "thu": "Th", - "fri": "Fr", - "sat": "Sa" - }, - "wide": { - "sun": "Sunday", - "mon": "Monday", - "tue": "Tuesday", - "wed": "Wednesday", - "thu": "Thursday", - "fri": "Friday", - "sat": "Saturday" - } - }, - "stand-alone": { - "abbreviated": { - "sun": "Sun", - "mon": "Mon", - "tue": "Tue", - "wed": "Wed", - "thu": "Thu", - "fri": "Fri", - "sat": "Sat" - }, - "narrow": { - "sun": "S", - "mon": "M", - "tue": "T", - "wed": "W", - "thu": "T", - "fri": "F", - "sat": "S" - }, - "short": { - "sun": "Su", - "mon": "Mo", - "tue": "Tu", - "wed": "We", - "thu": "Th", - "fri": "Fr", - "sat": "Sa" - }, - "wide": { - "sun": "Sunday", - "mon": "Monday", - "tue": "Tuesday", - "wed": "Wednesday", - "thu": "Thursday", - "fri": "Friday", - "sat": "Saturday" - } - } - }, - "quarters": { - "format": { - "abbreviated": { - "1": "Q1", - "2": "Q2", - "3": "Q3", - "4": "Q4" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4" - }, - "wide": { - "1": "1st quarter", - "2": "2nd quarter", - "3": "3rd quarter", - "4": "4th quarter" - } - }, - "stand-alone": { - "abbreviated": { - "1": "Q1", - "2": "Q2", - "3": "Q3", - "4": "Q4" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4" - }, - "wide": { - "1": "1st quarter", - "2": "2nd quarter", - "3": "3rd quarter", - "4": "4th quarter" - } - } - }, - "dayPeriods": { - "format": { - "abbreviated": { - "am": "AM", - "am-alt-variant": "am", - "noon": "noon", - "pm": "PM", - "pm-alt-variant": "pm" - }, - "narrow": { - "am": "a", - "noon": "n", - "pm": "p" - }, - "wide": { - "am": "AM", - "am-alt-variant": "am", - "noon": "noon", - "pm": "PM", - "pm-alt-variant": "pm" - } - }, - "stand-alone": { - "abbreviated": { - "am": "AM", - "am-alt-variant": "am", - "noon": "noon", - "pm": "PM", - "pm-alt-variant": "pm" - }, - "narrow": { - "am": "a", - "noon": "n", - "pm": "p" - }, - "wide": { - "am": "AM", - "am-alt-variant": "am", - "noon": "noon", - "pm": "PM", - "pm-alt-variant": "pm" - } - } - }, - "eras": { - "eraNames": { - "0": "Before Christ", - "0-alt-variant": "Before Common Era", - "1": "Anno Domini", - "1-alt-variant": "Common Era" - }, - "eraAbbr": { - "0": "BC", - "0-alt-variant": "BCE", - "1": "AD", - "1-alt-variant": "CE" - }, - "eraNarrow": { - "0": "B", - "0-alt-variant": "BCE", - "1": "A", - "1-alt-variant": "CE" - } - }, - "dateFormats": { - "full": "EEEE, MMMM d, y", - "long": "MMMM d, y", - "medium": "MMM d, y", - "short": "M/d/yy" - }, - "timeFormats": { - "full": "h:mm:ss a zzzz", - "long": "h:mm:ss a z", - "medium": "h:mm:ss a", - "short": "h:mm a" - }, - "dateTimeFormats": { - "full": "{1} 'at' {0}", - "long": "{1} 'at' {0}", - "medium": "{1}, {0}", - "short": "{1}, {0}", - "availableFormats": { - "E": "ccc", - "EHm": "E HH:mm", - "EHms": "E HH:mm:ss", - "Ed": "d E", - "Ehm": "E h:mm a", - "Ehms": "E h:mm:ss a", - "Gy": "y G", - "GyMMM": "MMM y G", - "GyMMMEd": "E, MMM d, y G", - "GyMMMd": "MMM d, y G", - "H": "HH", - "Hm": "HH:mm", - "Hms": "HH:mm:ss", - "Hmsv": "HH:mm:ss v", - "Hmv": "HH:mm v", - "M": "L", - "MEd": "E, M/d", - "MMM": "LLL", - "MMMEd": "E, MMM d", - "MMMd": "MMM d", - "Md": "M/d", - "d": "d", - "h": "h a", - "hm": "h:mm a", - "hms": "h:mm:ss a", - "hmsv": "h:mm:ss a v", - "hmv": "h:mm a v", - "ms": "mm:ss", - "y": "y", - "yM": "M/y", - "yMEd": "E, M/d/y", - "yMMM": "MMM y", - "yMMMEd": "E, MMM d, y", - "yMMMd": "MMM d, y", - "yMd": "M/d/y", - "yQQQ": "QQQ y", - "yQQQQ": "QQQQ y" - }, - "appendItems": { - "Day": "{0} ({2}: {1})", - "Day-Of-Week": "{0} {1}", - "Era": "{0} {1}", - "Hour": "{0} ({2}: {1})", - "Minute": "{0} ({2}: {1})", - "Month": "{0} ({2}: {1})", - "Quarter": "{0} ({2}: {1})", - "Second": "{0} ({2}: {1})", - "Timezone": "{0} {1}", - "Week": "{0} ({2}: {1})", - "Year": "{0} {1}" - }, - "intervalFormats": { - "intervalFormatFallback": "{0} – {1}", - "H": { - "H": "HH – HH" - }, - "Hm": { - "H": "HH:mm – HH:mm", - "m": "HH:mm – HH:mm" - }, - "Hmv": { - "H": "HH:mm – HH:mm v", - "m": "HH:mm – HH:mm v" - }, - "Hv": { - "H": "HH – HH v" - }, - "M": { - "M": "M – M" - }, - "MEd": { - "M": "E, M/d – E, M/d", - "d": "E, M/d – E, M/d" - }, - "MMM": { - "M": "MMM – MMM" - }, - "MMMEd": { - "M": "E, MMM d – E, MMM d", - "d": "E, MMM d – E, MMM d" - }, - "MMMd": { - "M": "MMM d – MMM d", - "d": "MMM d – d" - }, - "Md": { - "M": "M/d – M/d", - "d": "M/d – M/d" - }, - "d": { - "d": "d – d" - }, - "h": { - "a": "h a – h a", - "h": "h – h a" - }, - "hm": { - "a": "h:mm a – h:mm a", - "h": "h:mm – h:mm a", - "m": "h:mm – h:mm a" - }, - "hmv": { - "a": "h:mm a – h:mm a v", - "h": "h:mm – h:mm a v", - "m": "h:mm – h:mm a v" - }, - "hv": { - "a": "h a – h a v", - "h": "h – h a v" - }, - "y": { - "y": "y – y" - }, - "yM": { - "M": "M/y – M/y", - "y": "M/y – M/y" - }, - "yMEd": { - "M": "E, M/d/y – E, M/d/y", - "d": "E, M/d/y – E, M/d/y", - "y": "E, M/d/y – E, M/d/y" - }, - "yMMM": { - "M": "MMM – MMM y", - "y": "MMM y – MMM y" - }, - "yMMMEd": { - "M": "E, MMM d – E, MMM d, y", - "d": "E, MMM d – E, MMM d, y", - "y": "E, MMM d, y – E, MMM d, y" - }, - "yMMMM": { - "M": "MMMM – MMMM y", - "y": "MMMM y – MMMM y" - }, - "yMMMd": { - "M": "MMM d – MMM d, y", - "d": "MMM d – d, y", - "y": "MMM d, y – MMM d, y" - }, - "yMd": { - "M": "M/d/y – M/d/y", - "d": "M/d/y – M/d/y", - "y": "M/d/y – M/d/y" - } - } - } - } - } - } - } - } -}); + // UMD returnExports + if ( typeof define === "function" && define.amd ) { -Globalize.load({ - "main": { - "de": { - "identity": { - "version": { - "_cldrVersion": "27.0.1", - "_number": "$Revision: 11304 $" - }, - "generation": { - "_date": "$Date: 2015-02-24 11:35:18 -0600 (Tue, 24 Feb 2015) $" - }, - "language": "de" - }, - "dates": { - "calendars": { - "gregorian": { - "months": { - "format": { - "abbreviated": { - "1": "Jan.", - "2": "Feb.", - "3": "März", - "4": "Apr.", - "5": "Mai", - "6": "Juni", - "7": "Juli", - "8": "Aug.", - "9": "Sep.", - "10": "Okt.", - "11": "Nov.", - "12": "Dez." - }, - "narrow": { - "1": "J", - "2": "F", - "3": "M", - "4": "A", - "5": "M", - "6": "J", - "7": "J", - "8": "A", - "9": "S", - "10": "O", - "11": "N", - "12": "D" - }, - "wide": { - "1": "Januar", - "2": "Februar", - "3": "März", - "4": "April", - "5": "Mai", - "6": "Juni", - "7": "Juli", - "8": "August", - "9": "September", - "10": "Oktober", - "11": "November", - "12": "Dezember" - } - }, - "stand-alone": { - "abbreviated": { - "1": "Jan", - "2": "Feb", - "3": "Mär", - "4": "Apr", - "5": "Mai", - "6": "Jun", - "7": "Jul", - "8": "Aug", - "9": "Sep", - "10": "Okt", - "11": "Nov", - "12": "Dez" - }, - "narrow": { - "1": "J", - "2": "F", - "3": "M", - "4": "A", - "5": "M", - "6": "J", - "7": "J", - "8": "A", - "9": "S", - "10": "O", - "11": "N", - "12": "D" - }, - "wide": { - "1": "Januar", - "2": "Februar", - "3": "März", - "4": "April", - "5": "Mai", - "6": "Juni", - "7": "Juli", - "8": "August", - "9": "September", - "10": "Oktober", - "11": "November", - "12": "Dezember" - } - } - }, - "days": { - "format": { - "abbreviated": { - "sun": "So.", - "mon": "Mo.", - "tue": "Di.", - "wed": "Mi.", - "thu": "Do.", - "fri": "Fr.", - "sat": "Sa." - }, - "narrow": { - "sun": "S", - "mon": "M", - "tue": "D", - "wed": "M", - "thu": "D", - "fri": "F", - "sat": "S" - }, - "short": { - "sun": "So.", - "mon": "Mo.", - "tue": "Di.", - "wed": "Mi.", - "thu": "Do.", - "fri": "Fr.", - "sat": "Sa." - }, - "wide": { - "sun": "Sonntag", - "mon": "Montag", - "tue": "Dienstag", - "wed": "Mittwoch", - "thu": "Donnerstag", - "fri": "Freitag", - "sat": "Samstag" - } - }, - "stand-alone": { - "abbreviated": { - "sun": "So", - "mon": "Mo", - "tue": "Di", - "wed": "Mi", - "thu": "Do", - "fri": "Fr", - "sat": "Sa" - }, - "narrow": { - "sun": "S", - "mon": "M", - "tue": "D", - "wed": "M", - "thu": "D", - "fri": "F", - "sat": "S" - }, - "short": { - "sun": "So.", - "mon": "Mo.", - "tue": "Di.", - "wed": "Mi.", - "thu": "Do.", - "fri": "Fr.", - "sat": "Sa." - }, - "wide": { - "sun": "Sonntag", - "mon": "Montag", - "tue": "Dienstag", - "wed": "Mittwoch", - "thu": "Donnerstag", - "fri": "Freitag", - "sat": "Samstag" - } - } - }, - "quarters": { - "format": { - "abbreviated": { - "1": "Q1", - "2": "Q2", - "3": "Q3", - "4": "Q4" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4" - }, - "wide": { - "1": "1. Quartal", - "2": "2. Quartal", - "3": "3. Quartal", - "4": "4. Quartal" - } - }, - "stand-alone": { - "abbreviated": { - "1": "Q1", - "2": "Q2", - "3": "Q3", - "4": "Q4" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4" - }, - "wide": { - "1": "1. Quartal", - "2": "2. Quartal", - "3": "3. Quartal", - "4": "4. Quartal" - } - } - }, - "dayPeriods": { - "format": { - "abbreviated": { - "afternoon": "nachmittags", - "am": "vorm.", - "earlyMorning": "morgens", - "evening": "abends", - "morning": "vormittags", - "night": "nachts", - "noon": "mittags", - "pm": "nachm." - }, - "narrow": { - "am": "vm.", - "noon": "m.", - "pm": "nm." - }, - "wide": { - "afternoon": "nachmittags", - "am": "vorm.", - "earlyMorning": "morgens", - "evening": "abends", - "morning": "vormittags", - "night": "nachts", - "noon": "mittags", - "pm": "nachm." - } - }, - "stand-alone": { - "abbreviated": { - "afternoon": "nachmittags", - "am": "vorm.", - "earlyMorning": "morgens", - "evening": "abends", - "morning": "vormittags", - "night": "nachts", - "noon": "mittags", - "pm": "nachm." - }, - "narrow": { - "am": "vm.", - "noon": "m.", - "pm": "nm." - }, - "wide": { - "afternoon": "nachmittags", - "am": "vorm.", - "earlyMorning": "morgens", - "evening": "abends", - "morning": "vormittags", - "night": "nachts", - "noon": "mittags", - "pm": "nachm." - } - } - }, - "eras": { - "eraNames": { - "0": "v. Chr.", - "0-alt-variant": "vor unserer Zeitrechnung", - "1": "n. Chr.", - "1-alt-variant": "unserer Zeitrechnung" - }, - "eraAbbr": { - "0": "v. Chr.", - "0-alt-variant": "v. u. Z.", - "1": "n. Chr.", - "1-alt-variant": "u. Z." - }, - "eraNarrow": { - "0": "v. Chr.", - "0-alt-variant": "v. u. Z.", - "1": "n. Chr.", - "1-alt-variant": "u. Z." - } - }, - "dateFormats": { - "full": "EEEE, d. MMMM y", - "long": "d. MMMM y", - "medium": "dd.MM.y", - "short": "dd.MM.yy" - }, - "timeFormats": { - "full": "HH:mm:ss zzzz", - "long": "HH:mm:ss z", - "medium": "HH:mm:ss", - "short": "HH:mm" - }, - "dateTimeFormats": { - "full": "{1} 'um' {0}", - "long": "{1} 'um' {0}", - "medium": "{1}, {0}", - "short": "{1}, {0}", - "availableFormats": { - "E": "ccc", - "EHm": "E, HH:mm", - "EHms": "E, HH:mm:ss", - "Ed": "E, d.", - "Ehm": "E h:mm a", - "Ehms": "E, h:mm:ss a", - "Gy": "y G", - "GyMMM": "MMM y G", - "GyMMMEd": "E, d. MMM y G", - "GyMMMd": "d. MMM y G", - "H": "HH 'Uhr'", - "Hm": "HH:mm", - "Hms": "HH:mm:ss", - "Hmsv": "HH:mm:ss v", - "Hmv": "HH:mm v", - "M": "L", - "MEd": "E, d.M.", - "MMM": "LLL", - "MMMEd": "E, d. MMM", - "MMMMEd": "E, d. MMMM", - "MMMd": "d. MMM", - "MMd": "d.MM.", - "MMdd": "dd.MM.", - "Md": "d.M.", - "d": "d", - "h": "h a", - "hm": "h:mm a", - "hms": "h:mm:ss a", - "hmsv": "h:mm:ss a v", - "hmv": "h:mm a v", - "ms": "mm:ss", - "y": "y", - "yM": "M.y", - "yMEd": "E, d.M.y", - "yMM": "MM.y", - "yMMM": "MMM y", - "yMMMEd": "E, d. MMM y", - "yMMMM": "MMMM y", - "yMMMd": "d. MMM y", - "yMMdd": "dd.MM.y", - "yMd": "d.M.y", - "yQQQ": "QQQ y", - "yQQQQ": "QQQQ y" - }, - "appendItems": { - "Day": "{0} ({2}: {1})", - "Day-Of-Week": "{0} {1}", - "Era": "{1} {0}", - "Hour": "{0} ({2}: {1})", - "Minute": "{0} ({2}: {1})", - "Month": "{0} ({2}: {1})", - "Quarter": "{0} ({2}: {1})", - "Second": "{0} ({2}: {1})", - "Timezone": "{0} {1}", - "Week": "{0} ({2}: {1})", - "Year": "{1} {0}" - }, - "intervalFormats": { - "intervalFormatFallback": "{0} – {1}", - "H": { - "H": "HH–HH 'Uhr'" - }, - "Hm": { - "H": "HH:mm–HH:mm", - "m": "HH:mm–HH:mm" - }, - "Hmv": { - "H": "HH:mm–HH:mm v", - "m": "HH:mm–HH:mm v" - }, - "Hv": { - "H": "HH–HH 'Uhr' v" - }, - "M": { - "M": "M.–M." - }, - "MEd": { - "M": "E, dd.MM. – E, dd.MM.", - "d": "E, dd.MM. – E, dd.MM." - }, - "MMM": { - "M": "MMM–MMM" - }, - "MMMEd": { - "M": "E, d. MMM – E, d. MMM", - "d": "E, d. – E, d. MMM" - }, - "MMMM": { - "M": "LLLL–LLLL" - }, - "MMMd": { - "M": "d. MMM – d. MMM", - "d": "d.–d. MMM" - }, - "Md": { - "M": "dd.MM. – dd.MM.", - "d": "dd.MM. – dd.MM." - }, - "d": { - "d": "d.–d." - }, - "h": { - "a": "h a – h a", - "h": "h–h a" - }, - "hm": { - "a": "h:mm a – h:mm a", - "h": "h:mm–h:mm a", - "m": "h:mm–h:mm a" - }, - "hmv": { - "a": "h:mm a – h:mm a v", - "h": "h:mm–h:mm a v", - "m": "h:mm–h:mm a v" - }, - "hv": { - "a": "h a – h a v", - "h": "h–h a v" - }, - "y": { - "y": "y–y" - }, - "yM": { - "M": "MM.y – MM.y", - "y": "MM.y – MM.y" - }, - "yMEd": { - "M": "E, dd.MM.y – E, dd.MM.y", - "d": "E, dd.MM.y – E, dd.MM.y", - "y": "E, dd.MM.y – E, dd.MM.y" - }, - "yMMM": { - "M": "MMM–MMM y", - "y": "MMM y – MMM y" - }, - "yMMMEd": { - "M": "E, d. MMM – E, d. MMM y", - "d": "E, d. – E, d. MMM y", - "y": "E, d. MMM y – E, d. MMM y" - }, - "yMMMM": { - "M": "MMMM–MMMM y", - "y": "MMMM y – MMMM y" - }, - "yMMMd": { - "M": "d. MMM – d. MMM y", - "d": "d.–d. MMM y", - "y": "d. MMM y – d. MMM y" - }, - "yMd": { - "M": "dd.MM.y – dd.MM.y", - "d": "dd.MM.y – dd.MM.y", - "y": "dd.MM.y – dd.MM.y" - } - } - } - } - } - }, - "numbers": { - "defaultNumberingSystem": "latn", - "otherNumberingSystems": { - "native": "latn" - }, - "minimumGroupingDigits": "1", - "symbols-numberSystem-latn": { - "decimal": ",", - "group": ".", - "list": ";", - "percentSign": "%", - "plusSign": "+", - "minusSign": "-", - "exponential": "E", - "superscriptingExponent": "·", - "perMille": "‰", - "infinity": "∞", - "nan": "NaN", - "timeSeparator": ":" - }, - "decimalFormats-numberSystem-latn": { - "standard": "#,##0.###", - "long": { - "decimalFormat": { - "1000-count-one": "0 Tausend", - "1000-count-other": "0 Tausend", - "10000-count-one": "00 Tausend", - "10000-count-other": "00 Tausend", - "100000-count-one": "000 Tausend", - "100000-count-other": "000 Tausend", - "1000000-count-one": "0 Million", - "1000000-count-other": "0 Millionen", - "10000000-count-one": "00 Millionen", - "10000000-count-other": "00 Millionen", - "100000000-count-one": "000 Millionen", - "100000000-count-other": "000 Millionen", - "1000000000-count-one": "0 Milliarde", - "1000000000-count-other": "0 Milliarden", - "10000000000-count-one": "00 Milliarden", - "10000000000-count-other": "00 Milliarden", - "100000000000-count-one": "000 Milliarden", - "100000000000-count-other": "000 Milliarden", - "1000000000000-count-one": "0 Billion", - "1000000000000-count-other": "0 Billionen", - "10000000000000-count-one": "00 Billionen", - "10000000000000-count-other": "00 Billionen", - "100000000000000-count-one": "000 Billionen", - "100000000000000-count-other": "000 Billionen" - } - }, - "short": { - "decimalFormat": { - "1000-count-one": "0 Tsd'.'", - "1000-count-other": "0 Tsd'.'", - "10000-count-one": "00 Tsd'.'", - "10000-count-other": "00 Tsd'.'", - "100000-count-one": "000 Tsd'.'", - "100000-count-other": "000 Tsd'.'", - "1000000-count-one": "0 Mio'.'", - "1000000-count-other": "0 Mio'.'", - "10000000-count-one": "00 Mio'.'", - "10000000-count-other": "00 Mio'.'", - "100000000-count-one": "000 Mio'.'", - "100000000-count-other": "000 Mio'.'", - "1000000000-count-one": "0 Mrd'.'", - "1000000000-count-other": "0 Mrd'.'", - "10000000000-count-one": "00 Mrd'.'", - "10000000000-count-other": "00 Mrd'.'", - "100000000000-count-one": "000 Mrd'.'", - "100000000000-count-other": "000 Mrd'.'", - "1000000000000-count-one": "0 Bio'.'", - "1000000000000-count-other": "0 Bio'.'", - "10000000000000-count-one": "00 Bio'.'", - "10000000000000-count-other": "00 Bio'.'", - "100000000000000-count-one": "000 Bio'.'", - "100000000000000-count-other": "000 Bio'.'" - } - } - }, - "scientificFormats-numberSystem-latn": { - "standard": "#E0" - }, - "percentFormats-numberSystem-latn": { - "standard": "#,##0 %" - }, - "currencyFormats-numberSystem-latn": { - "currencySpacing": { - "beforeCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - }, - "afterCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - } - }, - "accounting": "#,##0.00 ¤", - "standard": "#,##0.00 ¤", - "unitPattern-count-one": "{0} {1}", - "unitPattern-count-other": "{0} {1}" - }, - "miscPatterns-numberSystem-latn": { - "atLeast": "{0}+", - "range": "{0}–{1}" - } - } - } - } -}); + // AMD + define( ["globalize-runtime/number","globalize-runtime/date"], factory ); + } else if ( typeof exports === "object" ) { -Globalize.load({ - "main": { - "zh": { - "identity": { - "version": { - "_cldrVersion": "27.0.1", - "_number": "$Revision: 11294 $" - }, - "generation": { - "_date": "$Date: 2015-02-23 16:50:24 -0600 (Mon, 23 Feb 2015) $" - }, - "language": "zh" - }, - "dates": { - "calendars": { - "gregorian": { - "months": { - "format": { - "abbreviated": { - "1": "1月", - "2": "2月", - "3": "3月", - "4": "4月", - "5": "5月", - "6": "6月", - "7": "7月", - "8": "8月", - "9": "9月", - "10": "10月", - "11": "11月", - "12": "12月" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4", - "5": "5", - "6": "6", - "7": "7", - "8": "8", - "9": "9", - "10": "10", - "11": "11", - "12": "12" - }, - "wide": { - "1": "一月", - "2": "二月", - "3": "三月", - "4": "四月", - "5": "五月", - "6": "六月", - "7": "七月", - "8": "八月", - "9": "九月", - "10": "十月", - "11": "十一月", - "12": "十二月" - } - }, - "stand-alone": { - "abbreviated": { - "1": "1月", - "2": "2月", - "3": "3月", - "4": "4月", - "5": "5月", - "6": "6月", - "7": "7月", - "8": "8月", - "9": "9月", - "10": "10月", - "11": "11月", - "12": "12月" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4", - "5": "5", - "6": "6", - "7": "7", - "8": "8", - "9": "9", - "10": "10", - "11": "11", - "12": "12" - }, - "wide": { - "1": "一月", - "2": "二月", - "3": "三月", - "4": "四月", - "5": "五月", - "6": "六月", - "7": "七月", - "8": "八月", - "9": "九月", - "10": "十月", - "11": "十一月", - "12": "十二月" - } - } - }, - "days": { - "format": { - "abbreviated": { - "sun": "周日", - "mon": "周一", - "tue": "周二", - "wed": "周三", - "thu": "周四", - "fri": "周五", - "sat": "周六" - }, - "narrow": { - "sun": "日", - "mon": "一", - "tue": "二", - "wed": "三", - "thu": "四", - "fri": "五", - "sat": "六" - }, - "short": { - "sun": "周日", - "mon": "周一", - "tue": "周二", - "wed": "周三", - "thu": "周四", - "fri": "周五", - "sat": "周六" - }, - "wide": { - "sun": "星期日", - "mon": "星期一", - "tue": "星期二", - "wed": "星期三", - "thu": "星期四", - "fri": "星期五", - "sat": "星期六" - } - }, - "stand-alone": { - "abbreviated": { - "sun": "周日", - "mon": "周一", - "tue": "周二", - "wed": "周三", - "thu": "周四", - "fri": "周五", - "sat": "周六" - }, - "narrow": { - "sun": "日", - "mon": "一", - "tue": "二", - "wed": "三", - "thu": "四", - "fri": "五", - "sat": "六" - }, - "short": { - "sun": "周日", - "mon": "周一", - "tue": "周二", - "wed": "周三", - "thu": "周四", - "fri": "周五", - "sat": "周六" - }, - "wide": { - "sun": "星期日", - "mon": "星期一", - "tue": "星期二", - "wed": "星期三", - "thu": "星期四", - "fri": "星期五", - "sat": "星期六" - } - } - }, - "quarters": { - "format": { - "abbreviated": { - "1": "1季度", - "2": "2季度", - "3": "3季度", - "4": "4季度" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4" - }, - "wide": { - "1": "第一季度", - "2": "第二季度", - "3": "第三季度", - "4": "第四季度" - } - }, - "stand-alone": { - "abbreviated": { - "1": "1季度", - "2": "2季度", - "3": "3季度", - "4": "4季度" - }, - "narrow": { - "1": "1", - "2": "2", - "3": "3", - "4": "4" - }, - "wide": { - "1": "第一季度", - "2": "第二季度", - "3": "第三季度", - "4": "第四季度" - } - } - }, - "dayPeriods": { - "format": { - "abbreviated": { - "afternoon": "下午", - "am": "上午", - "earlyMorning": "清晨", - "midDay": "中午", - "morning": "上午", - "night": "晚上", - "noon": "中午", - "pm": "下午", - "weeHours": "凌晨" - }, - "narrow": { - "afternoon": "下午", - "am": "上午", - "earlyMorning": "清晨", - "midDay": "中午", - "morning": "上午", - "night": "晚上", - "noon": "中午", - "pm": "下午", - "weeHours": "凌晨" - }, - "wide": { - "afternoon": "下午", - "am": "上午", - "earlyMorning": "清晨", - "midDay": "中午", - "morning": "上午", - "night": "晚上", - "noon": "中午", - "pm": "下午", - "weeHours": "凌晨" - } - }, - "stand-alone": { - "abbreviated": { - "afternoon": "下午", - "am": "上午", - "earlyMorning": "清晨", - "midDay": "中午", - "morning": "上午", - "night": "晚上", - "noon": "中午", - "pm": "下午", - "weeHours": "凌晨" - }, - "narrow": { - "afternoon": "下午", - "am": "上午", - "earlyMorning": "清晨", - "midDay": "中午", - "morning": "上午", - "night": "晚上", - "noon": "中午", - "pm": "下午", - "weeHours": "凌晨" - }, - "wide": { - "afternoon": "下午", - "am": "上午", - "earlyMorning": "清晨", - "midDay": "中午", - "morning": "上午", - "night": "晚上", - "noon": "中午", - "pm": "下午", - "weeHours": "凌晨" - } - } - }, - "eras": { - "eraNames": { - "0": "公元前", - "0-alt-variant": "BCE", - "1": "公元", - "1-alt-variant": "CE" - }, - "eraAbbr": { - "0": "公元前", - "0-alt-variant": "BCE", - "1": "公元", - "1-alt-variant": "CE" - }, - "eraNarrow": { - "0": "公元前", - "0-alt-variant": "BCE", - "1": "公元", - "1-alt-variant": "CE" - } - }, - "dateFormats": { - "full": "y年M月d日EEEE", - "long": "y年M月d日", - "medium": "y年M月d日", - "short": "yy/M/d" - }, - "timeFormats": { - "full": "zzzz ah:mm:ss", - "long": "z ah:mm:ss", - "medium": "ah:mm:ss", - "short": "ah:mm" - }, - "dateTimeFormats": { - "full": "{1} {0}", - "long": "{1} {0}", - "medium": "{1} {0}", - "short": "{1} {0}", - "availableFormats": { - "E": "ccc", - "EHm": "EHH:mm", - "EHms": "EHH:mm:ss", - "Ed": "d日E", - "Ehm": "Eah:mm", - "Ehms": "Eah:mm:ss", - "Gy": "Gy年", - "GyMMM": "Gy年M月", - "GyMMMEd": "Gy年M月d日E", - "GyMMMd": "Gy年M月d日", - "H": "H时", - "Hm": "HH:mm", - "Hms": "HH:mm:ss", - "Hmsv": "v HH:mm:ss", - "Hmv": "v HH:mm", - "M": "M月", - "MEd": "M/dE", - "MMM": "LLL", - "MMMEd": "M月d日E", - "MMMMdd": "M月dd日", - "MMMd": "M月d日", - "MMdd": "MM/dd", - "Md": "M/d", - "d": "d日", - "h": "ah时", - "hm": "ah:mm", - "hms": "ah:mm:ss", - "hmsv": "v ah:mm:ss", - "hmv": "v ah:mm", - "ms": "mm:ss", - "y": "y年", - "yM": "y年M月", - "yMEd": "y/M/dE", - "yMM": "y年M月", - "yMMM": "y年M月", - "yMMMEd": "y年M月d日E", - "yMMMM": "y年M月", - "yMMMd": "y年M月d日", - "yMd": "y/M/d", - "yQQQ": "y年第Q季度", - "yQQQQ": "y年第Q季度" - }, - "appendItems": { - "Day": "{0} ({2}: {1})", - "Day-Of-Week": "{0} {1}", - "Era": "{1} {0}", - "Hour": "{0} ({2}: {1})", - "Minute": "{0} ({2}: {1})", - "Month": "{0} ({2}: {1})", - "Quarter": "{0} ({2}: {1})", - "Second": "{0} ({2}: {1})", - "Timezone": "{1}{0}", - "Week": "{0} ({2}: {1})", - "Year": "{1} {0}" - }, - "intervalFormats": { - "intervalFormatFallback": "{0} – {1}", - "H": { - "H": "HH–HH" - }, - "Hm": { - "H": "HH:mm–HH:mm", - "m": "HH:mm–HH:mm" - }, - "Hmv": { - "H": "v HH:mm–HH:mm", - "m": "v HH:mm–HH:mm" - }, - "Hv": { - "H": "v HH–HH" - }, - "M": { - "M": "M–M月" - }, - "MEd": { - "M": "M/dE至M/dE", - "d": "M/dE至M/dE" - }, - "MMM": { - "M": "LLL至LLL" - }, - "MMMEd": { - "M": "M月d日E至M月d日E", - "d": "M月d日E至d日E" - }, - "MMMd": { - "M": "M月d日至M月d日", - "d": "M月d日至d日" - }, - "Md": { - "M": "M/d – M/d", - "d": "M/d – M/d" - }, - "d": { - "d": "d–d日" - }, - "h": { - "a": "ah时至ah时", - "h": "ah时至h时" - }, - "hm": { - "a": "ah:mm至ah:mm", - "h": "ah:mm至h:mm", - "m": "ah:mm至h:mm" - }, - "hmv": { - "a": "vah:mm至ah:mm", - "h": "vah:mm至h:mm", - "m": "vah:mm至h:mm" - }, - "hv": { - "a": "vah时至ah时", - "h": "vah时至h时" - }, - "y": { - "y": "y–y年" - }, - "yM": { - "M": "y年M月至M月", - "y": "y年M月至y年M月" - }, - "yMEd": { - "M": "y/M/dE至y/M/dE", - "d": "y/M/dE至y/M/dE", - "y": "y/M/dE至y/M/dE" - }, - "yMMM": { - "M": "y年M月至M月", - "y": "y年M月至y年M月" - }, - "yMMMEd": { - "M": "y年M月d日E至M月d日E", - "d": "y年M月d日E至d日E", - "y": "y年M月d日E至y年M月d日E" - }, - "yMMMM": { - "M": "y年M月至M月", - "y": "y年M月至y年M月" - }, - "yMMMd": { - "M": "y年M月d日至M月d日", - "d": "y年M月d日至d日", - "y": "y年M月d日至y年M月d日" - }, - "yMd": { - "M": "y/M/d – y/M/d", - "d": "y/M/d – y/M/d", - "y": "y/M/d – y/M/d" - } - } - } - } - } - }, - "numbers": { - "defaultNumberingSystem": "latn", - "otherNumberingSystems": { - "native": "hanidec", - "traditional": "hans", - "finance": "hansfin" - }, - "minimumGroupingDigits": "1", - "symbols-numberSystem-hanidec": { - "decimal": ".", - "group": ",", - "list": ";", - "percentSign": "%", - "plusSign": "+", - "minusSign": "-", - "exponential": "E", - "superscriptingExponent": "×", - "perMille": "‰", - "infinity": "∞", - "nan": "NaN", - "timeSeparator": ":" - }, - "symbols-numberSystem-latn": { - "decimal": ".", - "group": ",", - "list": ";", - "percentSign": "%", - "plusSign": "+", - "minusSign": "-", - "exponential": "E", - "superscriptingExponent": "×", - "perMille": "‰", - "infinity": "∞", - "nan": "NaN", - "timeSeparator": ":" - }, - "decimalFormats-numberSystem-hanidec": { - "standard": "#,##0.###", - "long": { - "decimalFormat": { - "1000-count-other": "0千", - "10000-count-other": "0万", - "100000-count-other": "00万", - "1000000-count-other": "000万", - "10000000-count-other": "0000万", - "100000000-count-other": "0亿", - "1000000000-count-other": "00亿", - "10000000000-count-other": "000亿", - "100000000000-count-other": "0000亿", - "1000000000000-count-other": "0兆", - "10000000000000-count-other": "00兆", - "100000000000000-count-other": "000兆" - } - }, - "short": { - "decimalFormat": { - "1000-count-other": "0千", - "10000-count-other": "0万", - "100000-count-other": "00万", - "1000000-count-other": "000万", - "10000000-count-other": "0000万", - "100000000-count-other": "0亿", - "1000000000-count-other": "00亿", - "10000000000-count-other": "000亿", - "100000000000-count-other": "0000亿", - "1000000000000-count-other": "0兆", - "10000000000000-count-other": "00兆", - "100000000000000-count-other": "000兆" - } - } - }, - "decimalFormats-numberSystem-latn": { - "standard": "#,##0.###", - "long": { - "decimalFormat": { - "1000-count-other": "0千", - "10000-count-other": "0万", - "100000-count-other": "00万", - "1000000-count-other": "000万", - "10000000-count-other": "0000万", - "100000000-count-other": "0亿", - "1000000000-count-other": "00亿", - "10000000000-count-other": "000亿", - "100000000000-count-other": "0000亿", - "1000000000000-count-other": "0兆", - "10000000000000-count-other": "00兆", - "100000000000000-count-other": "000兆" - } - }, - "short": { - "decimalFormat": { - "1000-count-other": "0千", - "10000-count-other": "0万", - "100000-count-other": "00万", - "1000000-count-other": "000万", - "10000000-count-other": "0000万", - "100000000-count-other": "0亿", - "1000000000-count-other": "00亿", - "10000000000-count-other": "000亿", - "100000000000-count-other": "0000亿", - "1000000000000-count-other": "0兆", - "10000000000000-count-other": "00兆", - "100000000000000-count-other": "000兆" - } - } - }, - "scientificFormats-numberSystem-hanidec": { - "standard": "#E0" - }, - "scientificFormats-numberSystem-latn": { - "standard": "#E0" - }, - "percentFormats-numberSystem-hanidec": { - "standard": "#,##0%" - }, - "percentFormats-numberSystem-latn": { - "standard": "#,##0%" - }, - "currencyFormats-numberSystem-hanidec": { - "currencySpacing": { - "beforeCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - }, - "afterCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - } - }, - "accounting": "¤#,##0.00;(¤#,##0.00)", - "standard": "¤ #,##0.00", - "unitPattern-count-other": "{0}{1}" - }, - "currencyFormats-numberSystem-latn": { - "currencySpacing": { - "beforeCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - }, - "afterCurrency": { - "currencyMatch": "[:^S:]", - "surroundingMatch": "[:digit:]", - "insertBetween": " " - } - }, - "accounting": "¤#,##0.00;(¤#,##0.00)", - "standard": "¤ #,##0.00", - "unitPattern-count-other": "{0}{1}" - }, - "miscPatterns-numberSystem-hanidec": { - "atLeast": "{0}+", - "range": "{0}-{1}" - }, - "miscPatterns-numberSystem-latn": { - "atLeast": "{0}+", - "range": "{0}-{1}" - } - } - } - } -}); + // Node, CommonJS + module.exports = factory( require("globalize/dist/globalize-runtime/number"), require("globalize/dist/globalize-runtime/date") ); + } else { -Globalize.load({ - "supplemental": { - "version": { - "_unicodeVersion": "7.0.0", - "_number": "$Revision: 11318 $" - }, - "generation": { - "_date": "$Date: 2015-02-25 23:47:56 -0600 (Wed, 25 Feb 2015) $" - }, - "likelySubtags": { - "aa": "aa-Latn-ET", - "ab": "ab-Cyrl-GE", - "abr": "abr-Latn-GH", - "ace": "ace-Latn-ID", - "ach": "ach-Latn-UG", - "ada": "ada-Latn-GH", - "ady": "ady-Cyrl-RU", - "ae": "ae-Avst-IR", - "aeb": "aeb-Arab-TN", - "af": "af-Latn-ZA", - "agq": "agq-Latn-CM", - "ak": "ak-Latn-GH", - "akk": "akk-Xsux-IQ", - "aln": "aln-Latn-XK", - "alt": "alt-Cyrl-RU", - "am": "am-Ethi-ET", - "amo": "amo-Latn-NG", - "aoz": "aoz-Latn-ID", - "ar": "ar-Arab-EG", - "arc": "arc-Armi-IR", - "arc-Nbat": "arc-Nbat-JO", - "arc-Palm": "arc-Palm-SY", - "arn": "arn-Latn-CL", - "aro": "aro-Latn-BO", - "arq": "arq-Arab-DZ", - "ary": "ary-Arab-MA", - "arz": "arz-Arab-EG", - "as": "as-Beng-IN", - "asa": "asa-Latn-TZ", - "ast": "ast-Latn-ES", - "atj": "atj-Latn-CA", - "av": "av-Cyrl-RU", - "awa": "awa-Deva-IN", - "ay": "ay-Latn-BO", - "az": "az-Latn-AZ", - "az-Arab": "az-Arab-IR", - "az-IR": "az-Arab-IR", - "az-RU": "az-Cyrl-RU", - "azb": "azb-Arab-IR", - "ba": "ba-Cyrl-RU", - "bal": "bal-Arab-PK", - "ban": "ban-Latn-ID", - "bap": "bap-Deva-NP", - "bar": "bar-Latn-AT", - "bas": "bas-Latn-CM", - "bax": "bax-Bamu-CM", - "bbc": "bbc-Latn-ID", - "bbj": "bbj-Latn-CM", - "bci": "bci-Latn-CI", - "be": "be-Cyrl-BY", - "bem": "bem-Latn-ZM", - "bew": "bew-Latn-ID", - "bez": "bez-Latn-TZ", - "bfd": "bfd-Latn-CM", - "bfq": "bfq-Taml-IN", - "bft": "bft-Arab-PK", - "bfy": "bfy-Deva-IN", - "bg": "bg-Cyrl-BG", - "bgc": "bgc-Deva-IN", - "bgx": "bgx-Grek-TR", - "bh": "bh-Kthi-IN", - "bhb": "bhb-Deva-IN", - "bhi": "bhi-Deva-IN", - "bhk": "bhk-Latn-PH", - "bho": "bho-Deva-IN", - "bi": "bi-Latn-VU", - "bik": "bik-Latn-PH", - "bin": "bin-Latn-NG", - "bjj": "bjj-Deva-IN", - "bjn": "bjn-Latn-ID", - "bkm": "bkm-Latn-CM", - "bku": "bku-Latn-PH", - "blt": "blt-Tavt-VN", - "bm": "bm-Latn-ML", - "bmq": "bmq-Latn-ML", - "bn": "bn-Beng-BD", - "bo": "bo-Tibt-CN", - "bpy": "bpy-Beng-IN", - "bqi": "bqi-Arab-IR", - "bqv": "bqv-Latn-CI", - "br": "br-Latn-FR", - "bra": "bra-Deva-IN", - "brh": "brh-Arab-PK", - "brx": "brx-Deva-IN", - "bs": "bs-Latn-BA", - "bsq": "bsq-Bass-LR", - "bss": "bss-Latn-CM", - "bto": "bto-Latn-PH", - "btv": "btv-Deva-PK", - "bua": "bua-Cyrl-RU", - "buc": "buc-Latn-YT", - "bug": "bug-Latn-ID", - "bum": "bum-Latn-CM", - "bvb": "bvb-Latn-GQ", - "byn": "byn-Ethi-ER", - "byv": "byv-Latn-CM", - "bze": "bze-Latn-ML", - "ca": "ca-Latn-ES", - "cch": "cch-Latn-NG", - "ccp": "ccp-Beng-IN", - "ccp-Cakm": "ccp-Cakm-BD", - "ce": "ce-Cyrl-RU", - "ceb": "ceb-Latn-PH", - "cgg": "cgg-Latn-UG", - "ch": "ch-Latn-GU", - "chk": "chk-Latn-FM", - "chm": "chm-Cyrl-RU", - "cho": "cho-Latn-US", - "chp": "chp-Latn-CA", - "chr": "chr-Cher-US", - "cja": "cja-Arab-KH", - "cjm": "cjm-Cham-VN", - "ckb": "ckb-Arab-IQ", - "co": "co-Latn-FR", - "cop": "cop-Copt-EG", - "cps": "cps-Latn-PH", - "cr": "cr-Cans-CA", - "crj": "crj-Cans-CA", - "crk": "crk-Cans-CA", - "crl": "crl-Cans-CA", - "crm": "crm-Cans-CA", - "crs": "crs-Latn-SC", - "cs": "cs-Latn-CZ", - "csb": "csb-Latn-PL", - "csw": "csw-Cans-CA", - "ctd": "ctd-Pauc-MM", - "cu": "cu-Cyrl-RU", - "cu-Glag": "cu-Glag-BG", - "cv": "cv-Cyrl-RU", - "cy": "cy-Latn-GB", - "da": "da-Latn-DK", - "dak": "dak-Latn-US", - "dar": "dar-Cyrl-RU", - "dav": "dav-Latn-KE", - "dcc": "dcc-Arab-IN", - "de": "de-Latn-DE", - "den": "den-Latn-CA", - "dgr": "dgr-Latn-CA", - "dje": "dje-Latn-NE", - "dnj": "dnj-Latn-CI", - "doi": "doi-Arab-IN", - "dsb": "dsb-Latn-DE", - "dtm": "dtm-Latn-ML", - "dtp": "dtp-Latn-MY", - "dua": "dua-Latn-CM", - "dv": "dv-Thaa-MV", - "dyo": "dyo-Latn-SN", - "dyu": "dyu-Latn-BF", - "dz": "dz-Tibt-BT", - "ebu": "ebu-Latn-KE", - "ee": "ee-Latn-GH", - "efi": "efi-Latn-NG", - "egl": "egl-Latn-IT", - "egy": "egy-Egyp-EG", - "eky": "eky-Kali-MM", - "el": "el-Grek-GR", - "en": "en-Latn-US", - "en-Shaw": "en-Shaw-GB", - "eo": "eo-Latn-001", - "es": "es-Latn-ES", - "esu": "esu-Latn-US", - "et": "et-Latn-EE", - "ett": "ett-Ital-IT", - "eu": "eu-Latn-ES", - "ewo": "ewo-Latn-CM", - "ext": "ext-Latn-ES", - "fa": "fa-Arab-IR", - "fan": "fan-Latn-GQ", - "ff": "ff-Latn-SN", - "ffm": "ffm-Latn-ML", - "fi": "fi-Latn-FI", - "fil": "fil-Latn-PH", - "fit": "fit-Latn-SE", - "fj": "fj-Latn-FJ", - "fo": "fo-Latn-FO", - "fon": "fon-Latn-BJ", - "fr": "fr-Latn-FR", - "frc": "frc-Latn-US", - "frp": "frp-Latn-FR", - "frr": "frr-Latn-DE", - "frs": "frs-Latn-DE", - "fud": "fud-Latn-WF", - "fuq": "fuq-Latn-NE", - "fur": "fur-Latn-IT", - "fuv": "fuv-Latn-NG", - "fy": "fy-Latn-NL", - "ga": "ga-Latn-IE", - "gaa": "gaa-Latn-GH", - "gag": "gag-Latn-MD", - "gan": "gan-Hans-CN", - "gay": "gay-Latn-ID", - "gbm": "gbm-Deva-IN", - "gbz": "gbz-Arab-IR", - "gcr": "gcr-Latn-GF", - "gd": "gd-Latn-GB", - "gez": "gez-Ethi-ET", - "ggn": "ggn-Deva-NP", - "gil": "gil-Latn-KI", - "gjk": "gjk-Arab-PK", - "gju": "gju-Arab-PK", - "gl": "gl-Latn-ES", - "glk": "glk-Arab-IR", - "gn": "gn-Latn-PY", - "gom": "gom-Deva-IN", - "gon": "gon-Telu-IN", - "gor": "gor-Latn-ID", - "gos": "gos-Latn-NL", - "got": "got-Goth-UA", - "grc": "grc-Cprt-CY", - "grc-Linb": "grc-Linb-GR", - "grt": "grt-Beng-IN", - "gsw": "gsw-Latn-CH", - "gu": "gu-Gujr-IN", - "gub": "gub-Latn-BR", - "guc": "guc-Latn-CO", - "gur": "gur-Latn-GH", - "guz": "guz-Latn-KE", - "gv": "gv-Latn-IM", - "gvr": "gvr-Deva-NP", - "gwi": "gwi-Latn-CA", - "ha": "ha-Latn-NG", - "ha-CM": "ha-Arab-CM", - "ha-SD": "ha-Arab-SD", - "hak": "hak-Hans-CN", - "haw": "haw-Latn-US", - "haz": "haz-Arab-AF", - "he": "he-Hebr-IL", - "hi": "hi-Deva-IN", - "hif": "hif-Deva-FJ", - "hil": "hil-Latn-PH", - "hmd": "hmd-Plrd-CN", - "hnd": "hnd-Arab-PK", - "hne": "hne-Deva-IN", - "hnj": "hnj-Hmng-LA", - "hnn": "hnn-Latn-PH", - "hno": "hno-Arab-PK", - "ho": "ho-Latn-PG", - "hoc": "hoc-Deva-IN", - "hoj": "hoj-Deva-IN", - "hr": "hr-Latn-HR", - "hsb": "hsb-Latn-DE", - "hsn": "hsn-Hans-CN", - "ht": "ht-Latn-HT", - "hu": "hu-Latn-HU", - "hy": "hy-Armn-AM", - "hz": "hz-Latn-NA", - "ia": "ia-Latn-FR", - "iba": "iba-Latn-MY", - "ibb": "ibb-Latn-NG", - "id": "id-Latn-ID", - "ig": "ig-Latn-NG", - "ii": "ii-Yiii-CN", - "ik": "ik-Latn-US", - "ikt": "ikt-Latn-CA", - "ilo": "ilo-Latn-PH", - "in": "in-Latn-ID", - "inh": "inh-Cyrl-RU", - "is": "is-Latn-IS", - "it": "it-Latn-IT", - "iu": "iu-Cans-CA", - "iw": "iw-Hebr-IL", - "izh": "izh-Latn-RU", - "ja": "ja-Jpan-JP", - "jam": "jam-Latn-JM", - "jgo": "jgo-Latn-CM", - "ji": "ji-Hebr-UA", - "jmc": "jmc-Latn-TZ", - "jml": "jml-Deva-NP", - "jut": "jut-Latn-DK", - "jv": "jv-Latn-ID", - "jw": "jw-Latn-ID", - "ka": "ka-Geor-GE", - "kaa": "kaa-Cyrl-UZ", - "kab": "kab-Latn-DZ", - "kac": "kac-Latn-MM", - "kaj": "kaj-Latn-NG", - "kam": "kam-Latn-KE", - "kao": "kao-Latn-ML", - "kbd": "kbd-Cyrl-RU", - "kcg": "kcg-Latn-NG", - "kck": "kck-Latn-ZW", - "kde": "kde-Latn-TZ", - "kdt": "kdt-Thai-TH", - "kea": "kea-Latn-CV", - "ken": "ken-Latn-CM", - "kfo": "kfo-Latn-CI", - "kfr": "kfr-Deva-IN", - "kfy": "kfy-Deva-IN", - "kg": "kg-Latn-CD", - "kge": "kge-Latn-ID", - "kgp": "kgp-Latn-BR", - "kha": "kha-Latn-IN", - "khb": "khb-Talu-CN", - "khn": "khn-Deva-IN", - "khq": "khq-Latn-ML", - "kht": "kht-Mymr-IN", - "khw": "khw-Arab-PK", - "ki": "ki-Latn-KE", - "kiu": "kiu-Latn-TR", - "kj": "kj-Latn-NA", - "kjg": "kjg-Laoo-LA", - "kk": "kk-Cyrl-KZ", - "kk-AF": "kk-Arab-AF", - "kk-Arab": "kk-Arab-CN", - "kk-CN": "kk-Arab-CN", - "kk-IR": "kk-Arab-IR", - "kk-MN": "kk-Arab-MN", - "kkj": "kkj-Latn-CM", - "kl": "kl-Latn-GL", - "kln": "kln-Latn-KE", - "km": "km-Khmr-KH", - "kmb": "kmb-Latn-AO", - "kn": "kn-Knda-IN", - "ko": "ko-Kore-KR", - "koi": "koi-Cyrl-RU", - "kok": "kok-Deva-IN", - "kos": "kos-Latn-FM", - "kpe": "kpe-Latn-LR", - "krc": "krc-Cyrl-RU", - "kri": "kri-Latn-SL", - "krj": "krj-Latn-PH", - "krl": "krl-Latn-RU", - "kru": "kru-Deva-IN", - "ks": "ks-Arab-IN", - "ksb": "ksb-Latn-TZ", - "ksf": "ksf-Latn-CM", - "ksh": "ksh-Latn-DE", - "ku": "ku-Latn-TR", - "ku-Arab": "ku-Arab-IQ", - "ku-LB": "ku-Arab-LB", - "kum": "kum-Cyrl-RU", - "kv": "kv-Cyrl-RU", - "kvr": "kvr-Latn-ID", - "kvx": "kvx-Arab-PK", - "kw": "kw-Latn-GB", - "kxm": "kxm-Thai-TH", - "kxp": "kxp-Arab-PK", - "ky": "ky-Cyrl-KG", - "ky-Arab": "ky-Arab-CN", - "ky-CN": "ky-Arab-CN", - "ky-Latn": "ky-Latn-TR", - "ky-TR": "ky-Latn-TR", - "la": "la-Latn-VA", - "lab": "lab-Lina-GR", - "lad": "lad-Hebr-IL", - "lag": "lag-Latn-TZ", - "lah": "lah-Arab-PK", - "laj": "laj-Latn-UG", - "lb": "lb-Latn-LU", - "lbe": "lbe-Cyrl-RU", - "lbw": "lbw-Latn-ID", - "lcp": "lcp-Thai-CN", - "lep": "lep-Lepc-IN", - "lez": "lez-Cyrl-RU", - "lg": "lg-Latn-UG", - "li": "li-Latn-NL", - "lif": "lif-Deva-NP", - "lif-Limb": "lif-Limb-IN", - "lij": "lij-Latn-IT", - "lis": "lis-Lisu-CN", - "ljp": "ljp-Latn-ID", - "lki": "lki-Arab-IR", - "lkt": "lkt-Latn-US", - "lmn": "lmn-Telu-IN", - "lmo": "lmo-Latn-IT", - "ln": "ln-Latn-CD", - "lo": "lo-Laoo-LA", - "lol": "lol-Latn-CD", - "loz": "loz-Latn-ZM", - "lrc": "lrc-Arab-IR", - "lt": "lt-Latn-LT", - "ltg": "ltg-Latn-LV", - "lu": "lu-Latn-CD", - "lua": "lua-Latn-CD", - "luo": "luo-Latn-KE", - "luy": "luy-Latn-KE", - "luz": "luz-Arab-IR", - "lv": "lv-Latn-LV", - "lwl": "lwl-Thai-TH", - "lzh": "lzh-Hans-CN", - "lzz": "lzz-Latn-TR", - "mad": "mad-Latn-ID", - "maf": "maf-Latn-CM", - "mag": "mag-Deva-IN", - "mai": "mai-Deva-IN", - "mak": "mak-Latn-ID", - "man": "man-Latn-GM", - "man-GN": "man-Nkoo-GN", - "man-Nkoo": "man-Nkoo-GN", - "mas": "mas-Latn-KE", - "maz": "maz-Latn-MX", - "mdf": "mdf-Cyrl-RU", - "mdh": "mdh-Latn-PH", - "mdr": "mdr-Latn-ID", - "men": "men-Latn-SL", - "mer": "mer-Latn-KE", - "mfa": "mfa-Arab-TH", - "mfe": "mfe-Latn-MU", - "mg": "mg-Latn-MG", - "mgh": "mgh-Latn-MZ", - "mgo": "mgo-Latn-CM", - "mgp": "mgp-Deva-NP", - "mgy": "mgy-Latn-TZ", - "mh": "mh-Latn-MH", - "mi": "mi-Latn-NZ", - "min": "min-Latn-ID", - "mk": "mk-Cyrl-MK", - "ml": "ml-Mlym-IN", - "mn": "mn-Cyrl-MN", - "mn-CN": "mn-Mong-CN", - "mn-Mong": "mn-Mong-CN", - "mni": "mni-Beng-IN", - "mnw": "mnw-Mymr-MM", - "moe": "moe-Latn-CA", - "moh": "moh-Latn-CA", - "mos": "mos-Latn-BF", - "mr": "mr-Deva-IN", - "mrd": "mrd-Deva-NP", - "mrj": "mrj-Cyrl-RU", - "mru": "mru-Mroo-BD", - "ms": "ms-Latn-MY", - "ms-CC": "ms-Arab-CC", - "ms-ID": "ms-Arab-ID", - "mt": "mt-Latn-MT", - "mtr": "mtr-Deva-IN", - "mua": "mua-Latn-CM", - "mus": "mus-Latn-US", - "mvy": "mvy-Arab-PK", - "mwk": "mwk-Latn-ML", - "mwr": "mwr-Deva-IN", - "mwv": "mwv-Latn-ID", - "mxc": "mxc-Latn-ZW", - "my": "my-Mymr-MM", - "myv": "myv-Cyrl-RU", - "myx": "myx-Latn-UG", - "myz": "myz-Mand-IR", - "mzn": "mzn-Arab-IR", - "na": "na-Latn-NR", - "nan": "nan-Hans-CN", - "nap": "nap-Latn-IT", - "naq": "naq-Latn-NA", - "nb": "nb-Latn-NO", - "nch": "nch-Latn-MX", - "nd": "nd-Latn-ZW", - "ndc": "ndc-Latn-MZ", - "nds": "nds-Latn-DE", - "ne": "ne-Deva-NP", - "new": "new-Deva-NP", - "ng": "ng-Latn-NA", - "ngl": "ngl-Latn-MZ", - "nhe": "nhe-Latn-MX", - "nhw": "nhw-Latn-MX", - "nij": "nij-Latn-ID", - "niu": "niu-Latn-NU", - "njo": "njo-Latn-IN", - "nl": "nl-Latn-NL", - "nmg": "nmg-Latn-CM", - "nn": "nn-Latn-NO", - "nnh": "nnh-Latn-CM", - "no": "no-Latn-NO", - "nod": "nod-Lana-TH", - "noe": "noe-Deva-IN", - "non": "non-Runr-SE", - "nqo": "nqo-Nkoo-GN", - "nr": "nr-Latn-ZA", - "nsk": "nsk-Cans-CA", - "nso": "nso-Latn-ZA", - "nus": "nus-Latn-SD", - "nv": "nv-Latn-US", - "nxq": "nxq-Latn-CN", - "ny": "ny-Latn-MW", - "nym": "nym-Latn-TZ", - "nyn": "nyn-Latn-UG", - "nzi": "nzi-Latn-GH", - "oc": "oc-Latn-FR", - "om": "om-Latn-ET", - "or": "or-Orya-IN", - "os": "os-Cyrl-GE", - "otk": "otk-Orkh-MN", - "pa": "pa-Guru-IN", - "pa-Arab": "pa-Arab-PK", - "pa-PK": "pa-Arab-PK", - "pag": "pag-Latn-PH", - "pal": "pal-Phli-IR", - "pal-Phlp": "pal-Phlp-CN", - "pam": "pam-Latn-PH", - "pap": "pap-Latn-AW", - "pau": "pau-Latn-PW", - "pcd": "pcd-Latn-FR", - "pcm": "pcm-Latn-NG", - "pdc": "pdc-Latn-US", - "pdt": "pdt-Latn-CA", - "peo": "peo-Xpeo-IR", - "pfl": "pfl-Latn-DE", - "phn": "phn-Phnx-LB", - "pka": "pka-Brah-IN", - "pko": "pko-Latn-KE", - "pl": "pl-Latn-PL", - "pms": "pms-Latn-IT", - "pnt": "pnt-Grek-GR", - "pon": "pon-Latn-FM", - "pra": "pra-Khar-PK", - "prd": "prd-Arab-IR", - "prg": "prg-Latn-001", - "ps": "ps-Arab-AF", - "pt": "pt-Latn-BR", - "puu": "puu-Latn-GA", - "qu": "qu-Latn-PE", - "quc": "quc-Latn-GT", - "qug": "qug-Latn-EC", - "raj": "raj-Latn-IN", - "rcf": "rcf-Latn-RE", - "rej": "rej-Latn-ID", - "rgn": "rgn-Latn-IT", - "ria": "ria-Latn-IN", - "rif": "rif-Tfng-MA", - "rif-NL": "rif-Latn-NL", - "rjs": "rjs-Deva-NP", - "rkt": "rkt-Beng-BD", - "rm": "rm-Latn-CH", - "rmf": "rmf-Latn-FI", - "rmo": "rmo-Latn-CH", - "rmt": "rmt-Arab-IR", - "rmu": "rmu-Latn-SE", - "rn": "rn-Latn-BI", - "rng": "rng-Latn-MZ", - "ro": "ro-Latn-RO", - "rob": "rob-Latn-ID", - "rof": "rof-Latn-TZ", - "rtm": "rtm-Latn-FJ", - "ru": "ru-Cyrl-RU", - "rue": "rue-Cyrl-UA", - "rug": "rug-Latn-SB", - "rw": "rw-Latn-RW", - "rwk": "rwk-Latn-TZ", - "ryu": "ryu-Kana-JP", - "sa": "sa-Deva-IN", - "saf": "saf-Latn-GH", - "sah": "sah-Cyrl-RU", - "saq": "saq-Latn-KE", - "sas": "sas-Latn-ID", - "sat": "sat-Latn-IN", - "saz": "saz-Saur-IN", - "sbp": "sbp-Latn-TZ", - "sc": "sc-Latn-IT", - "sck": "sck-Deva-IN", - "scn": "scn-Latn-IT", - "sco": "sco-Latn-GB", - "scs": "scs-Latn-CA", - "sd": "sd-Arab-PK", - "sd-Deva": "sd-Deva-IN", - "sd-Khoj": "sd-Khoj-IN", - "sd-Sind": "sd-Sind-IN", - "sdc": "sdc-Latn-IT", - "se": "se-Latn-NO", - "sef": "sef-Latn-CI", - "seh": "seh-Latn-MZ", - "sei": "sei-Latn-MX", - "ses": "ses-Latn-ML", - "sg": "sg-Latn-CF", - "sga": "sga-Ogam-IE", - "sgs": "sgs-Latn-LT", - "shi": "shi-Tfng-MA", - "shn": "shn-Mymr-MM", - "si": "si-Sinh-LK", - "sid": "sid-Latn-ET", - "sk": "sk-Latn-SK", - "skr": "skr-Arab-PK", - "sl": "sl-Latn-SI", - "sli": "sli-Latn-PL", - "sly": "sly-Latn-ID", - "sm": "sm-Latn-WS", - "sma": "sma-Latn-SE", - "smj": "smj-Latn-SE", - "smn": "smn-Latn-FI", - "smp": "smp-Samr-IL", - "sms": "sms-Latn-FI", - "sn": "sn-Latn-ZW", - "snk": "snk-Latn-ML", - "so": "so-Latn-SO", - "sou": "sou-Thai-TH", - "sq": "sq-Latn-AL", - "sr": "sr-Cyrl-RS", - "sr-ME": "sr-Latn-ME", - "sr-RO": "sr-Latn-RO", - "sr-RU": "sr-Latn-RU", - "sr-TR": "sr-Latn-TR", - "srb": "srb-Sora-IN", - "srn": "srn-Latn-SR", - "srr": "srr-Latn-SN", - "srx": "srx-Deva-IN", - "ss": "ss-Latn-ZA", - "ssy": "ssy-Latn-ER", - "st": "st-Latn-ZA", - "stq": "stq-Latn-DE", - "su": "su-Latn-ID", - "suk": "suk-Latn-TZ", - "sus": "sus-Latn-GN", - "sv": "sv-Latn-SE", - "sw": "sw-Latn-TZ", - "swb": "swb-Arab-YT", - "swc": "swc-Latn-CD", - "swv": "swv-Deva-IN", - "sxn": "sxn-Latn-ID", - "syl": "syl-Beng-BD", - "syr": "syr-Syrc-IQ", - "szl": "szl-Latn-PL", - "ta": "ta-Taml-IN", - "taj": "taj-Deva-NP", - "tbw": "tbw-Latn-PH", - "tcy": "tcy-Knda-IN", - "tdd": "tdd-Tale-CN", - "tdg": "tdg-Deva-NP", - "tdh": "tdh-Deva-NP", - "te": "te-Telu-IN", - "tem": "tem-Latn-SL", - "teo": "teo-Latn-UG", - "tet": "tet-Latn-TL", - "tg": "tg-Cyrl-TJ", - "tg-Arab": "tg-Arab-PK", - "tg-PK": "tg-Arab-PK", - "th": "th-Thai-TH", - "thl": "thl-Deva-NP", - "thq": "thq-Deva-NP", - "thr": "thr-Deva-NP", - "ti": "ti-Ethi-ET", - "tig": "tig-Ethi-ER", - "tiv": "tiv-Latn-NG", - "tk": "tk-Latn-TM", - "tkl": "tkl-Latn-TK", - "tkr": "tkr-Latn-AZ", - "tkt": "tkt-Deva-NP", - "tl": "tl-Latn-PH", - "tly": "tly-Latn-AZ", - "tmh": "tmh-Latn-NE", - "tn": "tn-Latn-ZA", - "to": "to-Latn-TO", - "tog": "tog-Latn-MW", - "tpi": "tpi-Latn-PG", - "tr": "tr-Latn-TR", - "tru": "tru-Latn-TR", - "trv": "trv-Latn-TW", - "ts": "ts-Latn-ZA", - "tsd": "tsd-Grek-GR", - "tsf": "tsf-Deva-NP", - "tsg": "tsg-Latn-PH", - "tsj": "tsj-Tibt-BT", - "tt": "tt-Cyrl-RU", - "ttj": "ttj-Latn-UG", - "tts": "tts-Thai-TH", - "ttt": "ttt-Latn-AZ", - "tum": "tum-Latn-MW", - "tvl": "tvl-Latn-TV", - "twq": "twq-Latn-NE", - "ty": "ty-Latn-PF", - "tyv": "tyv-Cyrl-RU", - "tzm": "tzm-Latn-MA", - "udm": "udm-Cyrl-RU", - "ug": "ug-Arab-CN", - "ug-Cyrl": "ug-Cyrl-KZ", - "ug-KZ": "ug-Cyrl-KZ", - "ug-MN": "ug-Cyrl-MN", - "uga": "uga-Ugar-SY", - "uk": "uk-Cyrl-UA", - "uli": "uli-Latn-FM", - "umb": "umb-Latn-AO", - "und": "en-Latn-US", - "und-002": "en-Latn-NG", - "und-003": "en-Latn-US", - "und-005": "pt-Latn-BR", - "und-009": "en-Latn-AU", - "und-011": "en-Latn-NG", - "und-013": "es-Latn-MX", - "und-014": "sw-Latn-TZ", - "und-015": "ar-Arab-EG", - "und-017": "sw-Latn-CD", - "und-018": "en-Latn-ZA", - "und-019": "en-Latn-US", - "und-021": "en-Latn-US", - "und-029": "es-Latn-CU", - "und-030": "zh-Hans-CN", - "und-034": "hi-Deva-IN", - "und-035": "id-Latn-ID", - "und-039": "it-Latn-IT", - "und-053": "en-Latn-AU", - "und-054": "en-Latn-PG", - "und-057": "en-Latn-GU", - "und-061": "sm-Latn-WS", - "und-142": "zh-Hans-CN", - "und-143": "uz-Latn-UZ", - "und-145": "ar-Arab-SA", - "und-150": "ru-Cyrl-RU", - "und-151": "ru-Cyrl-RU", - "und-154": "en-Latn-GB", - "und-155": "de-Latn-DE", - "und-419": "es-Latn-419", - "und-AD": "ca-Latn-AD", - "und-AE": "ar-Arab-AE", - "und-AF": "fa-Arab-AF", - "und-AL": "sq-Latn-AL", - "und-AM": "hy-Armn-AM", - "und-AO": "pt-Latn-AO", - "und-AQ": "und-Latn-AQ", - "und-AR": "es-Latn-AR", - "und-AS": "sm-Latn-AS", - "und-AT": "de-Latn-AT", - "und-AW": "nl-Latn-AW", - "und-AX": "sv-Latn-AX", - "und-AZ": "az-Latn-AZ", - "und-Aghb": "lez-Aghb-RU", - "und-Arab": "ar-Arab-EG", - "und-Arab-CC": "ms-Arab-CC", - "und-Arab-CN": "ug-Arab-CN", - "und-Arab-GB": "ks-Arab-GB", - "und-Arab-ID": "ms-Arab-ID", - "und-Arab-IN": "ur-Arab-IN", - "und-Arab-KH": "cja-Arab-KH", - "und-Arab-MN": "kk-Arab-MN", - "und-Arab-MU": "ur-Arab-MU", - "und-Arab-NG": "ha-Arab-NG", - "und-Arab-PK": "ur-Arab-PK", - "und-Arab-TH": "mfa-Arab-TH", - "und-Arab-TJ": "fa-Arab-TJ", - "und-Arab-YT": "swb-Arab-YT", - "und-Armi": "arc-Armi-IR", - "und-Armn": "hy-Armn-AM", - "und-Avst": "ae-Avst-IR", - "und-BA": "bs-Latn-BA", - "und-BD": "bn-Beng-BD", - "und-BE": "nl-Latn-BE", - "und-BF": "fr-Latn-BF", - "und-BG": "bg-Cyrl-BG", - "und-BH": "ar-Arab-BH", - "und-BI": "rn-Latn-BI", - "und-BJ": "fr-Latn-BJ", - "und-BL": "fr-Latn-BL", - "und-BN": "ms-Latn-BN", - "und-BO": "es-Latn-BO", - "und-BQ": "pap-Latn-BQ", - "und-BR": "pt-Latn-BR", - "und-BT": "dz-Tibt-BT", - "und-BV": "und-Latn-BV", - "und-BY": "be-Cyrl-BY", - "und-Bali": "ban-Bali-ID", - "und-Bamu": "bax-Bamu-CM", - "und-Bass": "bsq-Bass-LR", - "und-Batk": "bbc-Batk-ID", - "und-Beng": "bn-Beng-BD", - "und-Bopo": "zh-Bopo-TW", - "und-Brah": "pka-Brah-IN", - "und-Brai": "fr-Brai-FR", - "und-Bugi": "bug-Bugi-ID", - "und-Buhd": "bku-Buhd-PH", - "und-CD": "sw-Latn-CD", - "und-CF": "fr-Latn-CF", - "und-CG": "fr-Latn-CG", - "und-CH": "de-Latn-CH", - "und-CI": "fr-Latn-CI", - "und-CL": "es-Latn-CL", - "und-CM": "fr-Latn-CM", - "und-CN": "zh-Hans-CN", - "und-CO": "es-Latn-CO", - "und-CP": "und-Latn-CP", - "und-CR": "es-Latn-CR", - "und-CU": "es-Latn-CU", - "und-CV": "pt-Latn-CV", - "und-CW": "pap-Latn-CW", - "und-CY": "el-Grek-CY", - "und-CZ": "cs-Latn-CZ", - "und-Cakm": "ccp-Cakm-BD", - "und-Cans": "cr-Cans-CA", - "und-Cari": "xcr-Cari-TR", - "und-Cham": "cjm-Cham-VN", - "und-Cher": "chr-Cher-US", - "und-Copt": "cop-Copt-EG", - "und-Cprt": "grc-Cprt-CY", - "und-Cyrl": "ru-Cyrl-RU", - "und-Cyrl-AL": "mk-Cyrl-AL", - "und-Cyrl-BA": "sr-Cyrl-BA", - "und-Cyrl-GE": "ab-Cyrl-GE", - "und-Cyrl-GR": "mk-Cyrl-GR", - "und-Cyrl-MD": "uk-Cyrl-MD", - "und-Cyrl-PL": "be-Cyrl-PL", - "und-Cyrl-RO": "bg-Cyrl-RO", - "und-Cyrl-SK": "uk-Cyrl-SK", - "und-Cyrl-TR": "kbd-Cyrl-TR", - "und-Cyrl-XK": "sr-Cyrl-XK", - "und-DE": "de-Latn-DE", - "und-DJ": "aa-Latn-DJ", - "und-DK": "da-Latn-DK", - "und-DO": "es-Latn-DO", - "und-DZ": "ar-Arab-DZ", - "und-Deva": "hi-Deva-IN", - "und-Deva-BT": "ne-Deva-BT", - "und-Deva-FJ": "hif-Deva-FJ", - "und-Deva-MU": "bho-Deva-MU", - "und-Deva-PK": "btv-Deva-PK", - "und-Dupl": "fr-Dupl-FR", - "und-EA": "es-Latn-EA", - "und-EC": "es-Latn-EC", - "und-EE": "et-Latn-EE", - "und-EG": "ar-Arab-EG", - "und-EH": "ar-Arab-EH", - "und-ER": "ti-Ethi-ER", - "und-ES": "es-Latn-ES", - "und-ET": "am-Ethi-ET", - "und-EU": "en-Latn-GB", - "und-Egyp": "egy-Egyp-EG", - "und-Elba": "sq-Elba-AL", - "und-Ethi": "am-Ethi-ET", - "und-FI": "fi-Latn-FI", - "und-FO": "fo-Latn-FO", - "und-FR": "fr-Latn-FR", - "und-GA": "fr-Latn-GA", - "und-GE": "ka-Geor-GE", - "und-GF": "fr-Latn-GF", - "und-GH": "ak-Latn-GH", - "und-GL": "kl-Latn-GL", - "und-GN": "fr-Latn-GN", - "und-GP": "fr-Latn-GP", - "und-GQ": "es-Latn-GQ", - "und-GR": "el-Grek-GR", - "und-GS": "und-Latn-GS", - "und-GT": "es-Latn-GT", - "und-GW": "pt-Latn-GW", - "und-Geor": "ka-Geor-GE", - "und-Glag": "cu-Glag-BG", - "und-Goth": "got-Goth-UA", - "und-Gran": "sa-Gran-IN", - "und-Grek": "el-Grek-GR", - "und-Grek-TR": "bgx-Grek-TR", - "und-Gujr": "gu-Gujr-IN", - "und-Guru": "pa-Guru-IN", - "und-HK": "zh-Hant-HK", - "und-HM": "und-Latn-HM", - "und-HN": "es-Latn-HN", - "und-HR": "hr-Latn-HR", - "und-HT": "ht-Latn-HT", - "und-HU": "hu-Latn-HU", - "und-Hang": "ko-Hang-KR", - "und-Hani": "zh-Hani-CN", - "und-Hano": "hnn-Hano-PH", - "und-Hans": "zh-Hans-CN", - "und-Hant": "zh-Hant-TW", - "und-Hebr": "he-Hebr-IL", - "und-Hebr-CA": "yi-Hebr-CA", - "und-Hebr-GB": "yi-Hebr-GB", - "und-Hebr-SE": "yi-Hebr-SE", - "und-Hebr-UA": "yi-Hebr-UA", - "und-Hebr-US": "yi-Hebr-US", - "und-Hira": "ja-Hira-JP", - "und-Hmng": "hnj-Hmng-LA", - "und-IC": "es-Latn-IC", - "und-ID": "id-Latn-ID", - "und-IL": "he-Hebr-IL", - "und-IN": "hi-Deva-IN", - "und-IQ": "ar-Arab-IQ", - "und-IR": "fa-Arab-IR", - "und-IS": "is-Latn-IS", - "und-IT": "it-Latn-IT", - "und-Ital": "ett-Ital-IT", - "und-JO": "ar-Arab-JO", - "und-JP": "ja-Jpan-JP", - "und-Java": "jv-Java-ID", - "und-Jpan": "ja-Jpan-JP", - "und-KE": "sw-Latn-KE", - "und-KG": "ky-Cyrl-KG", - "und-KH": "km-Khmr-KH", - "und-KM": "ar-Arab-KM", - "und-KP": "ko-Kore-KP", - "und-KR": "ko-Kore-KR", - "und-KW": "ar-Arab-KW", - "und-KZ": "ru-Cyrl-KZ", - "und-Kali": "eky-Kali-MM", - "und-Kana": "ja-Kana-JP", - "und-Khar": "pra-Khar-PK", - "und-Khmr": "km-Khmr-KH", - "und-Khoj": "sd-Khoj-IN", - "und-Knda": "kn-Knda-IN", - "und-Kore": "ko-Kore-KR", - "und-Kthi": "bh-Kthi-IN", - "und-LA": "lo-Laoo-LA", - "und-LB": "ar-Arab-LB", - "und-LI": "de-Latn-LI", - "und-LK": "si-Sinh-LK", - "und-LS": "st-Latn-LS", - "und-LT": "lt-Latn-LT", - "und-LU": "fr-Latn-LU", - "und-LV": "lv-Latn-LV", - "und-LY": "ar-Arab-LY", - "und-Lana": "nod-Lana-TH", - "und-Laoo": "lo-Laoo-LA", - "und-Latn-AF": "tk-Latn-AF", - "und-Latn-AM": "ku-Latn-AM", - "und-Latn-CN": "za-Latn-CN", - "und-Latn-CY": "tr-Latn-CY", - "und-Latn-DZ": "fr-Latn-DZ", - "und-Latn-ET": "en-Latn-ET", - "und-Latn-GE": "ku-Latn-GE", - "und-Latn-IR": "tk-Latn-IR", - "und-Latn-KM": "fr-Latn-KM", - "und-Latn-MA": "fr-Latn-MA", - "und-Latn-MK": "sq-Latn-MK", - "und-Latn-MM": "kac-Latn-MM", - "und-Latn-MO": "pt-Latn-MO", - "und-Latn-MR": "fr-Latn-MR", - "und-Latn-RU": "krl-Latn-RU", - "und-Latn-SY": "fr-Latn-SY", - "und-Latn-TN": "fr-Latn-TN", - "und-Latn-TW": "trv-Latn-TW", - "und-Latn-UA": "pl-Latn-UA", - "und-Lepc": "lep-Lepc-IN", - "und-Limb": "lif-Limb-IN", - "und-Lina": "lab-Lina-GR", - "und-Linb": "grc-Linb-GR", - "und-Lisu": "lis-Lisu-CN", - "und-Lyci": "xlc-Lyci-TR", - "und-Lydi": "xld-Lydi-TR", - "und-MA": "ar-Arab-MA", - "und-MC": "fr-Latn-MC", - "und-MD": "ro-Latn-MD", - "und-ME": "sr-Latn-ME", - "und-MF": "fr-Latn-MF", - "und-MG": "mg-Latn-MG", - "und-MK": "mk-Cyrl-MK", - "und-ML": "bm-Latn-ML", - "und-MM": "my-Mymr-MM", - "und-MN": "mn-Cyrl-MN", - "und-MO": "zh-Hant-MO", - "und-MQ": "fr-Latn-MQ", - "und-MR": "ar-Arab-MR", - "und-MT": "mt-Latn-MT", - "und-MU": "mfe-Latn-MU", - "und-MV": "dv-Thaa-MV", - "und-MX": "es-Latn-MX", - "und-MY": "ms-Latn-MY", - "und-MZ": "pt-Latn-MZ", - "und-Mahj": "hi-Mahj-IN", - "und-Mand": "myz-Mand-IR", - "und-Mani": "xmn-Mani-CN", - "und-Mend": "men-Mend-SL", - "und-Merc": "xmr-Merc-SD", - "und-Mero": "xmr-Mero-SD", - "und-Mlym": "ml-Mlym-IN", - "und-Modi": "mr-Modi-IN", - "und-Mong": "mn-Mong-CN", - "und-Mroo": "mru-Mroo-BD", - "und-Mtei": "mni-Mtei-IN", - "und-Mymr": "my-Mymr-MM", - "und-Mymr-IN": "kht-Mymr-IN", - "und-Mymr-TH": "mnw-Mymr-TH", - "und-NA": "af-Latn-NA", - "und-NC": "fr-Latn-NC", - "und-NE": "ha-Latn-NE", - "und-NI": "es-Latn-NI", - "und-NL": "nl-Latn-NL", - "und-NO": "nb-Latn-NO", - "und-NP": "ne-Deva-NP", - "und-Narb": "xna-Narb-SA", - "und-Nbat": "arc-Nbat-JO", - "und-Nkoo": "man-Nkoo-GN", - "und-OM": "ar-Arab-OM", - "und-Ogam": "sga-Ogam-IE", - "und-Olck": "sat-Olck-IN", - "und-Orkh": "otk-Orkh-MN", - "und-Orya": "or-Orya-IN", - "und-Osma": "so-Osma-SO", - "und-PA": "es-Latn-PA", - "und-PE": "es-Latn-PE", - "und-PF": "fr-Latn-PF", - "und-PG": "tpi-Latn-PG", - "und-PH": "fil-Latn-PH", - "und-PK": "ur-Arab-PK", - "und-PL": "pl-Latn-PL", - "und-PM": "fr-Latn-PM", - "und-PR": "es-Latn-PR", - "und-PS": "ar-Arab-PS", - "und-PT": "pt-Latn-PT", - "und-PW": "pau-Latn-PW", - "und-PY": "gn-Latn-PY", - "und-Palm": "arc-Palm-SY", - "und-Pauc": "ctd-Pauc-MM", - "und-Perm": "kv-Perm-RU", - "und-Phag": "lzh-Phag-CN", - "und-Phli": "pal-Phli-IR", - "und-Phlp": "pal-Phlp-CN", - "und-Phnx": "phn-Phnx-LB", - "und-Plrd": "hmd-Plrd-CN", - "und-Prti": "xpr-Prti-IR", - "und-QA": "ar-Arab-QA", - "und-QO": "en-Latn-IO", - "und-RE": "fr-Latn-RE", - "und-RO": "ro-Latn-RO", - "und-RS": "sr-Cyrl-RS", - "und-RU": "ru-Cyrl-RU", - "und-RW": "rw-Latn-RW", - "und-Rjng": "rej-Rjng-ID", - "und-Runr": "non-Runr-SE", - "und-SA": "ar-Arab-SA", - "und-SC": "fr-Latn-SC", - "und-SD": "ar-Arab-SD", - "und-SE": "sv-Latn-SE", - "und-SI": "sl-Latn-SI", - "und-SJ": "nb-Latn-SJ", - "und-SK": "sk-Latn-SK", - "und-SM": "it-Latn-SM", - "und-SN": "fr-Latn-SN", - "und-SO": "so-Latn-SO", - "und-SR": "nl-Latn-SR", - "und-ST": "pt-Latn-ST", - "und-SV": "es-Latn-SV", - "und-SY": "ar-Arab-SY", - "und-Samr": "smp-Samr-IL", - "und-Sarb": "xsa-Sarb-YE", - "und-Saur": "saz-Saur-IN", - "und-Shaw": "en-Shaw-GB", - "und-Shrd": "sa-Shrd-IN", - "und-Sidd": "sa-Sidd-IN", - "und-Sind": "sd-Sind-IN", - "und-Sinh": "si-Sinh-LK", - "und-Sora": "srb-Sora-IN", - "und-Sund": "su-Sund-ID", - "und-Sylo": "syl-Sylo-BD", - "und-Syrc": "syr-Syrc-IQ", - "und-TD": "fr-Latn-TD", - "und-TF": "fr-Latn-TF", - "und-TG": "fr-Latn-TG", - "und-TH": "th-Thai-TH", - "und-TJ": "tg-Cyrl-TJ", - "und-TK": "tkl-Latn-TK", - "und-TL": "pt-Latn-TL", - "und-TM": "tk-Latn-TM", - "und-TN": "ar-Arab-TN", - "und-TO": "to-Latn-TO", - "und-TR": "tr-Latn-TR", - "und-TV": "tvl-Latn-TV", - "und-TW": "zh-Hant-TW", - "und-TZ": "sw-Latn-TZ", - "und-Tagb": "tbw-Tagb-PH", - "und-Takr": "doi-Takr-IN", - "und-Tale": "tdd-Tale-CN", - "und-Talu": "khb-Talu-CN", - "und-Taml": "ta-Taml-IN", - "und-Tavt": "blt-Tavt-VN", - "und-Telu": "te-Telu-IN", - "und-Tfng": "zgh-Tfng-MA", - "und-Tglg": "fil-Tglg-PH", - "und-Thaa": "dv-Thaa-MV", - "und-Thai": "th-Thai-TH", - "und-Thai-CN": "lcp-Thai-CN", - "und-Thai-KH": "kdt-Thai-KH", - "und-Thai-LA": "kdt-Thai-LA", - "und-Tibt": "bo-Tibt-CN", - "und-Tirh": "mai-Tirh-IN", - "und-UA": "uk-Cyrl-UA", - "und-UG": "sw-Latn-UG", - "und-UY": "es-Latn-UY", - "und-UZ": "uz-Latn-UZ", - "und-Ugar": "uga-Ugar-SY", - "und-VA": "it-Latn-VA", - "und-VE": "es-Latn-VE", - "und-VN": "vi-Latn-VN", - "und-VU": "bi-Latn-VU", - "und-Vaii": "vai-Vaii-LR", - "und-WF": "fr-Latn-WF", - "und-WS": "sm-Latn-WS", - "und-Wara": "hoc-Wara-IN", - "und-XK": "sq-Latn-XK", - "und-Xpeo": "peo-Xpeo-IR", - "und-Xsux": "akk-Xsux-IQ", - "und-YE": "ar-Arab-YE", - "und-YT": "fr-Latn-YT", - "und-Yiii": "ii-Yiii-CN", - "und-ZW": "sn-Latn-ZW", - "unr": "unr-Beng-IN", - "unr-Deva": "unr-Deva-NP", - "unr-NP": "unr-Deva-NP", - "unx": "unx-Beng-IN", - "ur": "ur-Arab-PK", - "uz": "uz-Latn-UZ", - "uz-AF": "uz-Arab-AF", - "uz-Arab": "uz-Arab-AF", - "uz-CN": "uz-Cyrl-CN", - "vai": "vai-Vaii-LR", - "ve": "ve-Latn-ZA", - "vec": "vec-Latn-IT", - "vep": "vep-Latn-RU", - "vi": "vi-Latn-VN", - "vic": "vic-Latn-SX", - "vls": "vls-Latn-BE", - "vmf": "vmf-Latn-DE", - "vmw": "vmw-Latn-MZ", - "vo": "vo-Latn-001", - "vot": "vot-Latn-RU", - "vro": "vro-Latn-EE", - "vun": "vun-Latn-TZ", - "wa": "wa-Latn-BE", - "wae": "wae-Latn-CH", - "wal": "wal-Ethi-ET", - "war": "war-Latn-PH", - "wbp": "wbp-Latn-AU", - "wbq": "wbq-Telu-IN", - "wbr": "wbr-Deva-IN", - "wls": "wls-Latn-WF", - "wo": "wo-Latn-SN", - "wtm": "wtm-Deva-IN", - "wuu": "wuu-Hans-CN", - "xav": "xav-Latn-BR", - "xcr": "xcr-Cari-TR", - "xh": "xh-Latn-ZA", - "xlc": "xlc-Lyci-TR", - "xld": "xld-Lydi-TR", - "xmf": "xmf-Geor-GE", - "xmn": "xmn-Mani-CN", - "xmr": "xmr-Merc-SD", - "xna": "xna-Narb-SA", - "xnr": "xnr-Deva-IN", - "xog": "xog-Latn-UG", - "xpr": "xpr-Prti-IR", - "xsa": "xsa-Sarb-YE", - "xsr": "xsr-Deva-NP", - "yao": "yao-Latn-MZ", - "yap": "yap-Latn-FM", - "yav": "yav-Latn-CM", - "ybb": "ybb-Latn-CM", - "yi": "yi-Hebr-001", - "yo": "yo-Latn-NG", - "yrl": "yrl-Latn-BR", - "yua": "yua-Latn-MX", - "za": "za-Latn-CN", - "zdj": "zdj-Arab-KM", - "zea": "zea-Latn-NL", - "zgh": "zgh-Tfng-MA", - "zh": "zh-Hans-CN", - "zh-AU": "zh-Hant-AU", - "zh-BN": "zh-Hant-BN", - "zh-Bopo": "zh-Bopo-TW", - "zh-GB": "zh-Hant-GB", - "zh-GF": "zh-Hant-GF", - "zh-HK": "zh-Hant-HK", - "zh-Hant": "zh-Hant-TW", - "zh-ID": "zh-Hant-ID", - "zh-MO": "zh-Hant-MO", - "zh-MY": "zh-Hant-MY", - "zh-PA": "zh-Hant-PA", - "zh-PF": "zh-Hant-PF", - "zh-PH": "zh-Hant-PH", - "zh-SR": "zh-Hant-SR", - "zh-TH": "zh-Hant-TH", - "zh-TW": "zh-Hant-TW", - "zh-US": "zh-Hant-US", - "zh-VN": "zh-Hant-VN", - "zmi": "zmi-Latn-MY", - "zu": "zu-Latn-ZA", - "zza": "zza-Latn-TR" - } + // Global + factory( root.Globalize ); } -}); +}( this, function( Globalize ) { -Globalize.load({ - "supplemental": { - "version": { - "_unicodeVersion": "7.0.0", - "_number": "$Revision: 11318 $" - }, - "generation": { - "_date": "$Date: 2015-02-25 23:47:56 -0600 (Wed, 25 Feb 2015) $" - }, - "timeData": { - "001": { - "_allowed": "H h", - "_preferred": "H" - }, - "AD": { - "_allowed": "H", - "_preferred": "H" - }, - "AE": { - "_allowed": "H h", - "_preferred": "h" - }, - "AG": { - "_allowed": "H h", - "_preferred": "h" - }, - "AL": { - "_allowed": "H h", - "_preferred": "h" - }, - "AM": { - "_allowed": "H", - "_preferred": "H" - }, - "AO": { - "_allowed": "H", - "_preferred": "H" - }, - "AS": { - "_allowed": "H h", - "_preferred": "h" - }, - "AT": { - "_allowed": "H", - "_preferred": "H" - }, - "AU": { - "_allowed": "H h", - "_preferred": "h" - }, - "AW": { - "_allowed": "H", - "_preferred": "H" - }, - "AX": { - "_allowed": "H", - "_preferred": "H" - }, - "BB": { - "_allowed": "H h", - "_preferred": "h" - }, - "BD": { - "_allowed": "H h", - "_preferred": "h" - }, - "BE": { - "_allowed": "H", - "_preferred": "H" - }, - "BF": { - "_allowed": "H", - "_preferred": "H" - }, - "BH": { - "_allowed": "H h", - "_preferred": "h" - }, - "BJ": { - "_allowed": "H", - "_preferred": "H" - }, - "BL": { - "_allowed": "H", - "_preferred": "H" - }, - "BM": { - "_allowed": "H h", - "_preferred": "h" - }, - "BN": { - "_allowed": "H h", - "_preferred": "h" - }, - "BQ": { - "_allowed": "H", - "_preferred": "H" - }, - "BR": { - "_allowed": "H", - "_preferred": "H" - }, - "BS": { - "_allowed": "H h", - "_preferred": "h" - }, - "BT": { - "_allowed": "H h", - "_preferred": "h" - }, - "BW": { - "_allowed": "H h", - "_preferred": "h" - }, - "CA": { - "_allowed": "H h", - "_preferred": "h" - }, - "CD": { - "_allowed": "H", - "_preferred": "H" - }, - "CG": { - "_allowed": "H", - "_preferred": "H" - }, - "CI": { - "_allowed": "H", - "_preferred": "H" - }, - "CN": { - "_allowed": "H h", - "_preferred": "h" - }, - "CO": { - "_allowed": "H h", - "_preferred": "h" - }, - "CP": { - "_allowed": "H", - "_preferred": "H" - }, - "CV": { - "_allowed": "H", - "_preferred": "H" - }, - "CY": { - "_allowed": "H h", - "_preferred": "h" - }, - "CZ": { - "_allowed": "H", - "_preferred": "H" - }, - "DE": { - "_allowed": "H", - "_preferred": "H" - }, - "DJ": { - "_allowed": "H h", - "_preferred": "h" - }, - "DK": { - "_allowed": "H", - "_preferred": "H" - }, - "DM": { - "_allowed": "H h", - "_preferred": "h" - }, - "DZ": { - "_allowed": "H h", - "_preferred": "h" - }, - "EE": { - "_allowed": "H", - "_preferred": "H" - }, - "EG": { - "_allowed": "H h", - "_preferred": "h" - }, - "EH": { - "_allowed": "H h", - "_preferred": "h" - }, - "ER": { - "_allowed": "H h", - "_preferred": "h" - }, - "ET": { - "_allowed": "H h", - "_preferred": "h" - }, - "FI": { - "_allowed": "H", - "_preferred": "H" - }, - "FJ": { - "_allowed": "H h", - "_preferred": "h" - }, - "FM": { - "_allowed": "H h", - "_preferred": "h" - }, - "FR": { - "_allowed": "H", - "_preferred": "H" - }, - "GA": { - "_allowed": "H", - "_preferred": "H" - }, - "GD": { - "_allowed": "H h", - "_preferred": "h" - }, - "GF": { - "_allowed": "H", - "_preferred": "H" - }, - "GH": { - "_allowed": "H h", - "_preferred": "h" - }, - "GL": { - "_allowed": "H h", - "_preferred": "h" - }, - "GM": { - "_allowed": "H h", - "_preferred": "h" - }, - "GN": { - "_allowed": "H", - "_preferred": "H" - }, - "GP": { - "_allowed": "H", - "_preferred": "H" - }, - "GR": { - "_allowed": "H h", - "_preferred": "h" - }, - "GU": { - "_allowed": "H h", - "_preferred": "h" - }, - "GW": { - "_allowed": "H", - "_preferred": "H" - }, - "GY": { - "_allowed": "H h", - "_preferred": "h" - }, - "HK": { - "_allowed": "H h", - "_preferred": "h" - }, - "HR": { - "_allowed": "H", - "_preferred": "H" - }, - "ID": { - "_allowed": "H", - "_preferred": "H" - }, - "IL": { - "_allowed": "H", - "_preferred": "H" - }, - "IN": { - "_allowed": "H h", - "_preferred": "h" - }, - "IQ": { - "_allowed": "H h", - "_preferred": "h" - }, - "IS": { - "_allowed": "H", - "_preferred": "H" - }, - "IT": { - "_allowed": "H", - "_preferred": "H" - }, - "JM": { - "_allowed": "H h", - "_preferred": "h" - }, - "JO": { - "_allowed": "H h", - "_preferred": "h" - }, - "JP": { - "_allowed": "H K h", - "_preferred": "H" - }, - "KH": { - "_allowed": "H h", - "_preferred": "h" - }, - "KI": { - "_allowed": "H h", - "_preferred": "h" - }, - "KN": { - "_allowed": "H h", - "_preferred": "h" - }, - "KP": { - "_allowed": "H h", - "_preferred": "h" - }, - "KR": { - "_allowed": "H h", - "_preferred": "h" - }, - "KW": { - "_allowed": "H h", - "_preferred": "h" - }, - "KY": { - "_allowed": "H h", - "_preferred": "h" - }, - "LB": { - "_allowed": "H h", - "_preferred": "h" - }, - "LC": { - "_allowed": "H h", - "_preferred": "h" - }, - "LR": { - "_allowed": "H h", - "_preferred": "h" - }, - "LS": { - "_allowed": "H h", - "_preferred": "h" - }, - "LY": { - "_allowed": "H h", - "_preferred": "h" - }, - "MA": { - "_allowed": "H h", - "_preferred": "h" - }, - "MC": { - "_allowed": "H", - "_preferred": "H" - }, - "MD": { - "_allowed": "H", - "_preferred": "H" - }, - "MF": { - "_allowed": "H", - "_preferred": "H" - }, - "MH": { - "_allowed": "H h", - "_preferred": "h" - }, - "ML": { - "_allowed": "H", - "_preferred": "H" - }, - "MO": { - "_allowed": "H h", - "_preferred": "h" - }, - "MP": { - "_allowed": "H h", - "_preferred": "h" - }, - "MQ": { - "_allowed": "H", - "_preferred": "H" - }, - "MR": { - "_allowed": "H h", - "_preferred": "h" - }, - "MW": { - "_allowed": "H h", - "_preferred": "h" - }, - "MY": { - "_allowed": "H h", - "_preferred": "h" - }, - "MZ": { - "_allowed": "H", - "_preferred": "H" - }, - "NA": { - "_allowed": "H h", - "_preferred": "h" - }, - "NC": { - "_allowed": "H", - "_preferred": "H" - }, - "NE": { - "_allowed": "H", - "_preferred": "H" - }, - "NG": { - "_allowed": "H h", - "_preferred": "h" - }, - "NL": { - "_allowed": "H", - "_preferred": "H" - }, - "NZ": { - "_allowed": "H h", - "_preferred": "h" - }, - "OM": { - "_allowed": "H h", - "_preferred": "h" - }, - "PG": { - "_allowed": "H h", - "_preferred": "h" - }, - "PK": { - "_allowed": "H h", - "_preferred": "h" - }, - "PM": { - "_allowed": "H", - "_preferred": "H" - }, - "PR": { - "_allowed": "H h", - "_preferred": "h" - }, - "PS": { - "_allowed": "H h", - "_preferred": "h" - }, - "PT": { - "_allowed": "H", - "_preferred": "H" - }, - "PW": { - "_allowed": "H h", - "_preferred": "h" - }, - "QA": { - "_allowed": "H h", - "_preferred": "h" - }, - "RE": { - "_allowed": "H", - "_preferred": "H" - }, - "RO": { - "_allowed": "H", - "_preferred": "H" - }, - "RU": { - "_allowed": "H", - "_preferred": "H" - }, - "SA": { - "_allowed": "H h", - "_preferred": "h" - }, - "SB": { - "_allowed": "H h", - "_preferred": "h" - }, - "SD": { - "_allowed": "H h", - "_preferred": "h" - }, - "SE": { - "_allowed": "H", - "_preferred": "H" - }, - "SG": { - "_allowed": "H h", - "_preferred": "h" - }, - "SI": { - "_allowed": "H", - "_preferred": "H" - }, - "SJ": { - "_allowed": "H", - "_preferred": "H" - }, - "SK": { - "_allowed": "H", - "_preferred": "H" - }, - "SL": { - "_allowed": "H h", - "_preferred": "h" - }, - "SM": { - "_allowed": "H", - "_preferred": "H" - }, - "SO": { - "_allowed": "H h", - "_preferred": "h" - }, - "SR": { - "_allowed": "H", - "_preferred": "H" - }, - "SS": { - "_allowed": "H h", - "_preferred": "h" - }, - "ST": { - "_allowed": "H", - "_preferred": "H" - }, - "SY": { - "_allowed": "H h", - "_preferred": "h" - }, - "SZ": { - "_allowed": "H h", - "_preferred": "h" - }, - "TC": { - "_allowed": "H h", - "_preferred": "h" - }, - "TD": { - "_allowed": "H h", - "_preferred": "h" - }, - "TG": { - "_allowed": "H", - "_preferred": "H" - }, - "TN": { - "_allowed": "H h", - "_preferred": "h" - }, - "TR": { - "_allowed": "H", - "_preferred": "H" - }, - "TT": { - "_allowed": "H h", - "_preferred": "h" - }, - "TW": { - "_allowed": "H h", - "_preferred": "h" - }, - "UM": { - "_allowed": "H h", - "_preferred": "h" - }, - "US": { - "_allowed": "H h", - "_preferred": "h" - }, - "VC": { - "_allowed": "H h", - "_preferred": "h" - }, - "VG": { - "_allowed": "H h", - "_preferred": "h" - }, - "VI": { - "_allowed": "H h", - "_preferred": "h" - }, - "VU": { - "_allowed": "H h", - "_preferred": "h" - }, - "WF": { - "_allowed": "H", - "_preferred": "H" - }, - "WS": { - "_allowed": "H h", - "_preferred": "h" - }, - "YE": { - "_allowed": "H h", - "_preferred": "h" - }, - "YT": { - "_allowed": "H", - "_preferred": "H" - }, - "ZA": { - "_allowed": "H h", - "_preferred": "h" - }, - "ZM": { - "_allowed": "H h", - "_preferred": "h" - }, - "ZW": { - "_allowed": "H h", - "_preferred": "h" - } - } - } -}); +var validateParameterTypeNumber = Globalize._validateParameterTypeNumber; +var validateParameterPresence = Globalize._validateParameterPresence; +var numberRound = Globalize._numberRound; +var numberFormat = Globalize._numberFormat; +var numberFormatterFn = Globalize._numberFormatterFn; +var validateParameterTypeString = Globalize._validateParameterTypeString; +var numberParse = Globalize._numberParse; +var numberParserFn = Globalize._numberParserFn; +var validateParameterTypeDate = Globalize._validateParameterTypeDate; +var dateFormat = Globalize._dateFormat; +var dateFormatterFn = Globalize._dateFormatterFn; +var dateTokenizer = Globalize._dateTokenizer; +var dateParse = Globalize._dateParse; +var dateParserFn = Globalize._dateParserFn; -Globalize.load({ - "supplemental": { - "version": { - "_unicodeVersion": "7.0.0", - "_number": "$Revision: 11318 $" - }, - "generation": { - "_date": "$Date: 2015-02-25 23:47:56 -0600 (Wed, 25 Feb 2015) $" - }, - "weekData": { - "minDays": { - "001": "1", - "GU": "1", - "UM": "1", - "US": "1", - "VI": "1", - "AD": "4", - "AN": "4", - "AT": "4", - "AX": "4", - "BE": "4", - "BG": "4", - "CH": "4", - "CZ": "4", - "DE": "4", - "DK": "4", - "EE": "4", - "ES": "4", - "FI": "4", - "FJ": "4", - "FO": "4", - "FR": "4", - "GB": "4", - "GF": "4", - "GG": "4", - "GI": "4", - "GP": "4", - "GR": "4", - "HU": "4", - "IE": "4", - "IM": "4", - "IS": "4", - "IT": "4", - "JE": "4", - "LI": "4", - "LT": "4", - "LU": "4", - "MC": "4", - "MQ": "4", - "NL": "4", - "NO": "4", - "PL": "4", - "PT": "4", - "RE": "4", - "SE": "4", - "SJ": "4", - "SK": "4", - "SM": "4", - "VA": "4" - }, - "firstDay": { - "001": "mon", - "AD": "mon", - "AI": "mon", - "AL": "mon", - "AM": "mon", - "AN": "mon", - "AT": "mon", - "AX": "mon", - "AZ": "mon", - "BA": "mon", - "BE": "mon", - "BG": "mon", - "BM": "mon", - "BN": "mon", - "BY": "mon", - "CH": "mon", - "CL": "mon", - "CM": "mon", - "CR": "mon", - "CY": "mon", - "CZ": "mon", - "DE": "mon", - "DK": "mon", - "EC": "mon", - "EE": "mon", - "ES": "mon", - "FI": "mon", - "FJ": "mon", - "FO": "mon", - "FR": "mon", - "GB": "mon", - "GE": "mon", - "GF": "mon", - "GP": "mon", - "GR": "mon", - "HR": "mon", - "HU": "mon", - "IS": "mon", - "IT": "mon", - "KG": "mon", - "KZ": "mon", - "LB": "mon", - "LI": "mon", - "LK": "mon", - "LT": "mon", - "LU": "mon", - "LV": "mon", - "MC": "mon", - "MD": "mon", - "ME": "mon", - "MK": "mon", - "MN": "mon", - "MQ": "mon", - "MY": "mon", - "NL": "mon", - "NO": "mon", - "PL": "mon", - "PT": "mon", - "RE": "mon", - "RO": "mon", - "RS": "mon", - "RU": "mon", - "SE": "mon", - "SI": "mon", - "SK": "mon", - "SM": "mon", - "TJ": "mon", - "TM": "mon", - "TR": "mon", - "UA": "mon", - "UY": "mon", - "UZ": "mon", - "VA": "mon", - "VN": "mon", - "XK": "mon", - "AE": "sat", - "AF": "sat", - "BH": "sat", - "DJ": "sat", - "DZ": "sat", - "EG": "sat", - "IQ": "sat", - "IR": "sat", - "JO": "sat", - "KW": "sat", - "LY": "sat", - "MA": "sat", - "OM": "sat", - "QA": "sat", - "SD": "sat", - "SY": "sat", - "AG": "sun", - "AR": "sun", - "AS": "sun", - "AU": "sun", - "BR": "sun", - "BS": "sun", - "BT": "sun", - "BW": "sun", - "BZ": "sun", - "CA": "sun", - "CN": "sun", - "CO": "sun", - "DM": "sun", - "DO": "sun", - "ET": "sun", - "GT": "sun", - "GU": "sun", - "HK": "sun", - "HN": "sun", - "ID": "sun", - "IE": "sun", - "IL": "sun", - "IN": "sun", - "JM": "sun", - "JP": "sun", - "KE": "sun", - "KH": "sun", - "KR": "sun", - "LA": "sun", - "MH": "sun", - "MM": "sun", - "MO": "sun", - "MT": "sun", - "MX": "sun", - "MZ": "sun", - "NI": "sun", - "NP": "sun", - "NZ": "sun", - "PA": "sun", - "PE": "sun", - "PH": "sun", - "PK": "sun", - "PR": "sun", - "PY": "sun", - "SA": "sun", - "SG": "sun", - "SV": "sun", - "TH": "sun", - "TN": "sun", - "TT": "sun", - "TW": "sun", - "UM": "sun", - "US": "sun", - "VE": "sun", - "VI": "sun", - "WS": "sun", - "YE": "sun", - "ZA": "sun", - "ZW": "sun", - "BD": "fri", - "MV": "fri" - }, - "firstDay-alt-variant": { - "GB": "sun" - }, - "weekendStart": { - "001": "sat", - "AE": "fri", - "BH": "fri", - "DZ": "fri", - "EG": "fri", - "IL": "fri", - "IQ": "fri", - "IR": "fri", - "JO": "fri", - "KW": "fri", - "LY": "fri", - "MA": "fri", - "OM": "fri", - "QA": "fri", - "SA": "fri", - "SD": "fri", - "SY": "fri", - "TN": "fri", - "YE": "fri", - "AF": "thu", - "IN": "sun" - }, - "weekendEnd": { - "001": "sun", - "AE": "sat", - "BH": "sat", - "DZ": "sat", - "EG": "sat", - "IL": "sat", - "IQ": "sat", - "JO": "sat", - "KW": "sat", - "LY": "sat", - "MA": "sat", - "OM": "sat", - "QA": "sat", - "SA": "sat", - "SD": "sat", - "SY": "sat", - "TN": "sat", - "YE": "sat", - "AF": "fri", - "IR": "fri" - } - } - } -}); +Globalize.a126395188 = numberFormatterFn(["",,1,,,,,,,,"","0","-0","-","",numberRound(),"∞","NaN",{".":",",",":".","%":"%","+":"+","-":"-","E":"E","‰":"‰"},]); +Globalize.a1378886668 = numberFormatterFn(["",,1,,,,,,,,"","0","-0","-","",numberRound(),"∞","NaN",{".":".",",":",","%":"%","+":"+","-":"-","E":"E","‰":"‰"},]); +Globalize.b203855544 = numberFormatterFn(["",,2,,,,,,,,"","00","-00","-","",numberRound(),"∞","NaN",{".":".",",":",","%":"%","+":"+","-":"-","E":"E","‰":"‰"},]); +Globalize.a1916379524 = numberFormatterFn(["",,1,,,,,,,,"","0","-0","-","",numberRound(),"∞","ليس رقم",{".":"٫",",":"٬","%":"٪","+":"‏+","-":"‏-","E":"اس","‰":"؉"},"٠١٢٣٤٥٦٧٨٩"]); +Globalize.b376385760 = numberFormatterFn(["",,2,,,,,,,,"","00","-00","-","",numberRound(),"∞","NaN",{".":",",",":".","%":"%","+":"+","-":"-","E":"E","‰":"‰"},]); +Globalize.a1711088039 = numberFormatterFn(["",,1,,,,,,,,"","0","-0","-","",numberRound(),"∞","NaN",{".":".",",":",","%":"%","+":"+","-":"-","E":"E","‰":"‰"},]); +Globalize.b1148906457 = numberFormatterFn(["",,1,,,,,,,,"","0","-0","-","",numberRound(),"∞","NaN",{".":",",",":".","%":"%","+":"+","-":"-","E":"E","‰":"‰"},]); +Globalize.b1256031091 = numberFormatterFn(["",,2,,,,,,,,"","00","-00","-","",numberRound(),"∞","NaN",{".":",",",":".","%":"%","+":"+","-":"-","E":"E","‰":"‰"},]); +Globalize.b1965900303 = numberParserFn(["∞",{".":".",",":",","%":"%","+":"+","-":"-","E":"E","‰":"‰"},"-","",]); +Globalize.b960923264 = numberParserFn(["∞",{".":".",",":",","%":"%","+":"+","-":"-","E":"E","‰":"‰"},"-","",]); +Globalize.b2076722823 = numberParserFn(["∞",{".":"decimal",",":"group","%":"percentSign","+":"plusSign","-":"minusSign","E":"exponential","‰":"perMille","٫":".","٬":",","٪":"%","‏+":"+","‏-":"-","اس":"E","؉":"‰"},"-","",{"0":"invalid","1":"invalid","2":"invalid","3":"invalid","4":"invalid","5":"invalid","6":"invalid","7":"invalid","8":"invalid","9":"invalid","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9"}]); +Globalize.b1370229258 = numberParserFn(["∞",{".":".",",":",","%":"%","+":"+","-":"-","E":"E","‰":"‰"},"-","",]); +Globalize.a1749351181 = numberParserFn(["∞",{".":",",",":".","%":"%","+":"+","-":"-","E":"E","‰":"‰"},"-","",]); +Globalize.b2002841143 = numberParserFn(["∞",{".":",",",":".","%":"%","+":"+","-":"-","E":"E","‰":"‰"},"-","",]); +Globalize.b755631779 = numberParserFn(["∞",{".":"decimal",",":"group","%":"percentSign","+":"plusSign","-":"minusSign","E":"exponential","‰":"perMille","٫":".","٬":",","٪":"%","‏+":"+","‏-":"-","اس":"E","؉":"‰"},"-","",{"0":"invalid","1":"invalid","2":"invalid","3":"invalid","4":"invalid","5":"invalid","6":"invalid","7":"invalid","8":"invalid","9":"invalid","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9"}]); +Globalize.b1293124635 = numberParserFn(["∞",{".":".",",":",","%":"%","+":"+","-":"-","E":"E","‰":"‰"},"-","",]); +Globalize.a474049536 = numberParserFn(["∞",{".":",",",":".","%":"%","+":"+","-":"-","E":"E","‰":"‰"},"-","",]); +Globalize.b1961282698 = numberParserFn(["∞",{".":",",",":".","%":"%","+":"+","-":"-","E":"E","‰":"‰"},"-","",]); +Globalize.a1750470059 = dateFormatterFn({}, {"pattern":"EEEEEE","timeSeparator":":","days":{"E":{"6":{"sun":"الأحد","mon":"الاثنين","tue":"الثلاثاء","wed":"الأربعاء","thu":"الخميس","fri":"الجمعة","sat":"السبت"}}}}); +Globalize.b617625506 = dateFormatterFn({"1":Globalize("en").numberFormatter({"raw":"0"})}, {"pattern":"c","timeSeparator":":","firstDay":0}); +Globalize.b93641787 = dateFormatterFn({"1":Globalize("en").numberFormatter({"raw":"0"}),"2":Globalize("en").numberFormatter({"raw":"00"})}, {"pattern":"M/d/yy","timeSeparator":":"}); +Globalize.b80132650 = dateFormatterFn({"1":Globalize("ar").numberFormatter({"raw":"0"})}, {"pattern":"c","timeSeparator":":","firstDay":6}); +Globalize.a682848010 = dateFormatterFn({"1":Globalize("zh").numberFormatter({"raw":"0"})}, {"pattern":"y/M/d","timeSeparator":":"}); +Globalize.b1836232371 = dateFormatterFn({"1":Globalize("ar").numberFormatter({"raw":"0"})}, {"pattern":"d‏/M‏/y","timeSeparator":":"}); +Globalize.a218160295 = dateFormatterFn({"1":Globalize("en").numberFormatter({"raw":"0"})}, {"pattern":"MMMM d, y","timeSeparator":":","months":{"M":{"4":{"1":"January","2":"February","3":"March","4":"April","5":"May","6":"June","7":"July","8":"August","9":"September","10":"October","11":"November","12":"December"}}}}); +Globalize.b285424135 = dateFormatterFn({"1":Globalize("zh").numberFormatter({"raw":"0"})}, {"pattern":"c","timeSeparator":":","firstDay":0}); +Globalize.a1351587010 = dateFormatterFn({"1":Globalize("zh").numberFormatter({"raw":"0"})}, {"pattern":"y年M月d日","timeSeparator":":"}); +Globalize.b1382770181 = dateFormatterFn({}, {"pattern":"EEEEEE","timeSeparator":":","days":{"E":{"6":{"sun":"So.","mon":"Mo.","tue":"Di.","wed":"Mi.","thu":"Do.","fri":"Fr.","sat":"Sa."}}}}); +Globalize.b1430109660 = dateFormatterFn({}, {"pattern":"EEEEE","timeSeparator":":","days":{"E":{"5":{"sun":"S","mon":"M","tue":"D","wed":"M","thu":"D","fri":"F","sat":"S"}}}}); +Globalize.a1754951899 = dateFormatterFn({}, {"pattern":"EEEE","timeSeparator":":","days":{"E":{"4":{"sun":"Sonntag","mon":"Montag","tue":"Dienstag","wed":"Mittwoch","thu":"Donnerstag","fri":"Freitag","sat":"Samstag"}}}}); +Globalize.a501706459 = dateFormatterFn({}, {"pattern":"MMMM","timeSeparator":":","months":{"M":{"4":{"1":"Januar","2":"Februar","3":"März","4":"April","5":"Mai","6":"Juni","7":"Juli","8":"August","9":"September","10":"Oktober","11":"November","12":"Dezember"}}}}); +Globalize.b1869521166 = dateFormatterFn({"1":Globalize("de").numberFormatter({"raw":"0"})}, {"pattern":"w","timeSeparator":":","firstDay":1,"minDays":4}); +Globalize.a864358539 = dateFormatterFn({}, {"pattern":"EEEE","timeSeparator":":","days":{"E":{"4":{"sun":"الأحد","mon":"الاثنين","tue":"الثلاثاء","wed":"الأربعاء","thu":"الخميس","fri":"الجمعة","sat":"السبت"}}}}); +Globalize.b1870116986 = dateFormatterFn({"1":Globalize("de").numberFormatter({"raw":"0"})}, {"pattern":"c","timeSeparator":":","firstDay":1}); +Globalize.a1026267252 = dateFormatterFn({}, {"pattern":"EEEEE","timeSeparator":":","days":{"E":{"5":{"sun":"ح","mon":"ن","tue":"ث","wed":"ر","thu":"خ","fri":"ج","sat":"س"}}}}); +Globalize.b392241633 = dateFormatterFn({"1":Globalize("ar").numberFormatter({"raw":"0"})}, {"pattern":"d MMMM، y","timeSeparator":":","months":{"M":{"4":{"1":"يناير","2":"فبراير","3":"مارس","4":"أبريل","5":"مايو","6":"يونيو","7":"يوليو","8":"أغسطس","9":"سبتمبر","10":"أكتوبر","11":"نوفمبر","12":"ديسمبر"}}}}); +Globalize.b388886901 = dateFormatterFn({}, {"pattern":"MMMM","timeSeparator":":","months":{"M":{"4":{"1":"يناير","2":"فبراير","3":"مارس","4":"أبريل","5":"مايو","6":"يونيو","7":"يوليو","8":"أغسطس","9":"سبتمبر","10":"أكتوبر","11":"نوفمبر","12":"ديسمبر"}}}}); +Globalize.b79536830 = dateFormatterFn({"1":Globalize("ar").numberFormatter({"raw":"0"})}, {"pattern":"w","timeSeparator":":","firstDay":6,"minDays":1}); +Globalize.a1446348751 = dateFormatterFn({"1":Globalize("de").numberFormatter({"raw":"0"})}, {"pattern":"d. MMMM y","timeSeparator":":","months":{"M":{"4":{"1":"Januar","2":"Februar","3":"März","4":"April","5":"Mai","6":"Juni","7":"Juli","8":"August","9":"September","10":"Oktober","11":"November","12":"Dezember"}}}}); +Globalize.b284828315 = dateFormatterFn({"1":Globalize("zh").numberFormatter({"raw":"0"})}, {"pattern":"w","timeSeparator":":","firstDay":0,"minDays":1}); +Globalize.b801906653 = dateFormatterFn({}, {"pattern":"EEEEEE","timeSeparator":":","days":{"E":{"6":{"sun":"Su","mon":"Mo","tue":"Tu","wed":"We","thu":"Th","fri":"Fr","sat":"Sa"}}}}); +Globalize.b729298712 = dateFormatterFn({}, {"pattern":"EEEEEE","timeSeparator":":","days":{"E":{"6":{"sun":"DO","mon":"LU","tue":"MA","wed":"MI","thu":"JU","fri":"VI","sat":"SA"}}}}); +Globalize.a946274711 = dateFormatterFn({}, {"pattern":"EEEEE","timeSeparator":":","days":{"E":{"5":{"sun":"D","mon":"L","tue":"M","wed":"X","thu":"J","fri":"V","sat":"S"}}}}); +Globalize.b1770621176 = dateFormatterFn({}, {"pattern":"EEEE","timeSeparator":":","days":{"E":{"4":{"sun":"domingo","mon":"lunes","tue":"martes","wed":"miércoles","thu":"jueves","fri":"viernes","sat":"sábado"}}}}); +Globalize.a1271100680 = dateFormatterFn({}, {"pattern":"MMMM","timeSeparator":":","months":{"M":{"4":{"1":"enero","2":"febrero","3":"marzo","4":"abril","5":"mayo","6":"junio","7":"julio","8":"agosto","9":"septiembre","10":"octubre","11":"noviembre","12":"diciembre"}}}}); +Globalize.a1150144485 = dateFormatterFn({"1":Globalize("es").numberFormatter({"raw":"0"})}, {"pattern":"w","timeSeparator":":","firstDay":1,"minDays":4}); +Globalize.a1636669180 = dateFormatterFn({}, {"pattern":"EEEEE","timeSeparator":":","days":{"E":{"5":{"sun":"S","mon":"M","tue":"T","wed":"W","thu":"T","fri":"F","sat":"S"}}}}); +Globalize.a1149548665 = dateFormatterFn({"1":Globalize("es").numberFormatter({"raw":"0"})}, {"pattern":"c","timeSeparator":":","firstDay":1}); +Globalize.b21033846 = dateFormatterFn({"1":Globalize("es").numberFormatter({"raw":"0"}),"2":Globalize("es").numberFormatter({"raw":"00"})}, {"pattern":"d/M/yy","timeSeparator":":"}); +Globalize.a52764931 = dateFormatterFn({}, {"pattern":"EEEE","timeSeparator":":","days":{"E":{"4":{"sun":"Sunday","mon":"Monday","tue":"Tuesday","wed":"Wednesday","thu":"Thursday","fri":"Friday","sat":"Saturday"}}}}); +Globalize.b194087032 = dateFormatterFn({}, {"pattern":"MMMM","timeSeparator":":","months":{"M":{"4":{"1":"一月","2":"二月","3":"三月","4":"四月","5":"五月","6":"六月","7":"七月","8":"八月","9":"九月","10":"十月","11":"十一月","12":"十二月"}}}}); +Globalize.b1200480509 = dateFormatterFn({}, {"pattern":"MMMM","timeSeparator":":","months":{"M":{"4":{"1":"January","2":"February","3":"March","4":"April","5":"May","6":"June","7":"July","8":"August","9":"September","10":"October","11":"November","12":"December"}}}}); +Globalize.b472234174 = dateFormatterFn({"1":Globalize("es").numberFormatter({"raw":"0"})}, {"pattern":"d 'de' MMMM 'de' y","timeSeparator":":","months":{"M":{"4":{"1":"enero","2":"febrero","3":"marzo","4":"abril","5":"mayo","6":"junio","7":"julio","8":"agosto","9":"septiembre","10":"octubre","11":"noviembre","12":"diciembre"}}}}); +Globalize.a1059158408 = dateFormatterFn({}, {"pattern":"EEEE","timeSeparator":":","days":{"E":{"4":{"sun":"星期日","mon":"星期一","tue":"星期二","wed":"星期三","thu":"星期四","fri":"星期五","sat":"星期六"}}}}); +Globalize.b617029686 = dateFormatterFn({"1":Globalize("en").numberFormatter({"raw":"0"})}, {"pattern":"w","timeSeparator":":","firstDay":0,"minDays":1}); +Globalize.b25416856 = dateFormatterFn({}, {"pattern":"EEEEEE","timeSeparator":":","days":{"E":{"6":{"sun":"周日","mon":"周一","tue":"周二","wed":"周三","thu":"周四","fri":"周五","sat":"周六"}}}}); +Globalize.b1524871401 = dateFormatterFn({}, {"pattern":"EEEEE","timeSeparator":":","days":{"E":{"5":{"sun":"日","mon":"一","tue":"二","wed":"三","thu":"四","fri":"五","sat":"六"}}}}); +Globalize.b674505315 = dateFormatterFn({"2":Globalize("de").numberFormatter({"raw":"00"})}, {"pattern":"dd.MM.yy","timeSeparator":":"}); +Globalize.b1518991631 = dateParserFn(Globalize("es").numberParser({"raw":"0"}), {"preferredTimeData":"H"}, {"pattern":"d 'de' MMMM 'de' y","timeSeparator":":","gregorian/months/format/wide":{"1":"enero","2":"febrero","3":"marzo","4":"abril","5":"mayo","6":"junio","7":"julio","8":"agosto","9":"septiembre","10":"octubre","11":"noviembre","12":"diciembre"}}); +Globalize.a399591294 = dateParserFn(Globalize("de").numberParser({"raw":"0"}), {"preferredTimeData":"H"}, {"pattern":"d. MMMM y","timeSeparator":":","gregorian/months/format/wide":{"1":"Januar","2":"Februar","3":"März","4":"April","5":"Mai","6":"Juni","7":"Juli","8":"August","9":"September","10":"Oktober","11":"November","12":"Dezember"}}); +Globalize.a1235751886 = dateParserFn(Globalize("de").numberParser({"raw":"0"}), {"preferredTimeData":"H"}, {"pattern":"dd.MM.yy","timeSeparator":":"}); +Globalize.b828597162 = dateParserFn(Globalize("en").numberParser({"raw":"0"}), {"preferredTimeData":"h"}, {"pattern":"MMMM d, y","timeSeparator":":","gregorian/months/format/wide":{"1":"January","2":"February","3":"March","4":"April","5":"May","6":"June","7":"July","8":"August","9":"September","10":"October","11":"November","12":"December"}}); +Globalize.a1889223355 = dateParserFn(Globalize("es").numberParser({"raw":"0"}), {"preferredTimeData":"H"}, {"pattern":"d/M/yy","timeSeparator":":"}); +Globalize.b1701862085 = dateParserFn(Globalize("zh").numberParser({"raw":"0"}), {"preferredTimeData":"h"}, {"pattern":"y/M/d","timeSeparator":":"}); +Globalize.b1438999090 = dateParserFn(Globalize("ar").numberParser({"raw":"0"}), {"preferredTimeData":"h"}, {"pattern":"d MMMM، y","timeSeparator":":","gregorian/months/format/wide":{"1":"يناير","2":"فبراير","3":"مارس","4":"أبريل","5":"مايو","6":"يونيو","7":"يوليو","8":"أغسطس","9":"سبتمبر","10":"أكتوبر","11":"نوفمبر","12":"ديسمبر"}}); +Globalize.a74024830 = dateParserFn(Globalize("ar").numberParser({"raw":"0"}), {"preferredTimeData":"h"}, {"pattern":"d‏/M‏/y","timeSeparator":":"}); +Globalize.a304829553 = dateParserFn(Globalize("zh").numberParser({"raw":"0"}), {"preferredTimeData":"h"}, {"pattern":"y年M月d日","timeSeparator":":"}); +Globalize.a1816615414 = dateParserFn(Globalize("en").numberParser({"raw":"0"}), {"preferredTimeData":"h"}, {"pattern":"M/d/yy","timeSeparator":":"}); return Globalize; -} ) ); +})); diff --git a/package.json b/package.json index 599efbb5a..1ea3d972b 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,9 @@ }, "dependencies": {}, "devDependencies": { + "cldr-data": ">=26", "commitplease": "2.0.0", + "globalize-compiler": "0.1.1", "grunt": "0.4.2", "grunt-bowercopy": "1.1.0", "grunt-compare-size": "0.4.0", -- 2.39.5