UNPKG

argon-formatter

Version:

A universal Javascript utility for formatting currency

1,973 lines (1,917 loc) 65.5 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = global || self, factory(global.argonFormatter = {})); }(this, (function (exports) { 'use strict'; function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } var check = function (it) { return it && it.Math == Math && it; }; var global_1 = check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof commonjsGlobal == 'object' && commonjsGlobal) || Function('return this')(); var fails = function (exec) { try { return !!exec(); } catch (error) { return true; } }; var descriptors = !fails(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); var nativePropertyIsEnumerable = {}.propertyIsEnumerable; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); var f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; } : nativePropertyIsEnumerable; var objectPropertyIsEnumerable = { f: f }; var createPropertyDescriptor = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; var toString = {}.toString; var classofRaw = function (it) { return toString.call(it).slice(8, -1); }; var split = ''.split; var indexedObject = fails(function () { return !Object('z').propertyIsEnumerable(0); }) ? function (it) { return classofRaw(it) == 'String' ? split.call(it, '') : Object(it); } : Object; var requireObjectCoercible = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; var toIndexedObject = function (it) { return indexedObject(requireObjectCoercible(it)); }; var isObject = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; var toPrimitive = function (input, PREFERRED_STRING) { if (!isObject(input)) return input; var fn, val; if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; throw TypeError("Can't convert object to primitive value"); }; var hasOwnProperty = {}.hasOwnProperty; var has = function (it, key) { return hasOwnProperty.call(it, key); }; var document = global_1.document; var EXISTS = isObject(document) && isObject(document.createElement); var documentCreateElement = function (it) { return EXISTS ? document.createElement(it) : {}; }; var ie8DomDefine = !descriptors && !fails(function () { return Object.defineProperty(documentCreateElement('div'), 'a', { get: function () { return 7; } }).a != 7; }); var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; var f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPrimitive(P, true); if (ie8DomDefine) try { return nativeGetOwnPropertyDescriptor(O, P); } catch (error) { } if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]); }; var objectGetOwnPropertyDescriptor = { f: f$1 }; var anObject = function (it) { if (!isObject(it)) { throw TypeError(String(it) + ' is not an object'); } return it; }; var nativeDefineProperty = Object.defineProperty; var f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (ie8DomDefine) try { return nativeDefineProperty(O, P, Attributes); } catch (error) { } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; var objectDefineProperty = { f: f$2 }; var createNonEnumerableProperty = descriptors ? function (object, key, value) { return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; return object; }; var setGlobal = function (key, value) { try { createNonEnumerableProperty(global_1, key, value); } catch (error) { global_1[key] = value; } return value; }; var SHARED = '__core-js_shared__'; var store = global_1[SHARED] || setGlobal(SHARED, {}); var sharedStore = store; var functionToString = Function.toString; if (typeof sharedStore.inspectSource != 'function') { sharedStore.inspectSource = function (it) { return functionToString.call(it); }; } var inspectSource = sharedStore.inspectSource; var WeakMap = global_1.WeakMap; var nativeWeakMap = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); var shared = createCommonjsModule(function (module) { (module.exports = function (key, value) { return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {}); })('versions', []).push({ version: '3.5.0', mode: 'global', copyright: '© 2019 Denis Pushkarev (zloirock.ru)' }); }); var id = 0; var postfix = Math.random(); var uid = function (key) { return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); }; var keys = shared('keys'); var sharedKey = function (key) { return keys[key] || (keys[key] = uid(key)); }; var hiddenKeys = {}; var WeakMap$1 = global_1.WeakMap; var set, get, has$1; var enforce = function (it) { return has$1(it) ? get(it) : set(it, {}); }; var getterFor = function (TYPE) { return function (it) { var state; if (!isObject(it) || (state = get(it)).type !== TYPE) { throw TypeError('Incompatible receiver, ' + TYPE + ' required'); } return state; }; }; if (nativeWeakMap) { var store$1 = new WeakMap$1(); var wmget = store$1.get; var wmhas = store$1.has; var wmset = store$1.set; set = function (it, metadata) { wmset.call(store$1, it, metadata); return metadata; }; get = function (it) { return wmget.call(store$1, it) || {}; }; has$1 = function (it) { return wmhas.call(store$1, it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function (it, metadata) { createNonEnumerableProperty(it, STATE, metadata); return metadata; }; get = function (it) { return has(it, STATE) ? it[STATE] : {}; }; has$1 = function (it) { return has(it, STATE); }; } var internalState = { set: set, get: get, has: has$1, enforce: enforce, getterFor: getterFor }; var redefine = createCommonjsModule(function (module) { var getInternalState = internalState.get; var enforceInternalState = internalState.enforce; var TEMPLATE = String(String).split('String'); (module.exports = function (O, key, value, options) { var unsafe = options ? !!options.unsafe : false; var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == 'function') { if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); } if (O === global_1) { if (simple) O[key] = value; else setGlobal(key, value); return; } else if (!unsafe) { delete O[key]; } else if (!noTargetGet && O[key]) { simple = true; } if (simple) O[key] = value; else createNonEnumerableProperty(O, key, value); })(Function.prototype, 'toString', function toString() { return typeof this == 'function' && getInternalState(this).source || inspectSource(this); }); }); var path = global_1; var aFunction = function (variable) { return typeof variable == 'function' ? variable : undefined; }; var getBuiltIn = function (namespace, method) { return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace]) : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method]; }; var ceil = Math.ceil; var floor = Math.floor; var toInteger = function (argument) { return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); }; var min = Math.min; var toLength = function (argument) { return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; }; var max = Math.max; var min$1 = Math.min; var toAbsoluteIndex = function (index, length) { var integer = toInteger(index); return integer < 0 ? max(integer + length, 0) : min$1(integer, length); }; var createMethod = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; if (value != value) return true; } else for (;length > index; index++) { if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; var arrayIncludes = { includes: createMethod(true), indexOf: createMethod(false) }; var indexOf = arrayIncludes.indexOf; var objectKeysInternal = function (object, names) { var O = toIndexedObject(object); var i = 0; var result = []; var key; for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); while (names.length > i) if (has(O, key = names[i++])) { ~indexOf(result, key) || result.push(key); } return result; }; var enumBugKeys = [ 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]; var hiddenKeys$1 = enumBugKeys.concat('length', 'prototype'); var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return objectKeysInternal(O, hiddenKeys$1); }; var objectGetOwnPropertyNames = { f: f$3 }; var f$4 = Object.getOwnPropertySymbols; var objectGetOwnPropertySymbols = { f: f$4 }; var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { var keys = objectGetOwnPropertyNames.f(anObject(it)); var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; }; var copyConstructorProperties = function (target, source) { var keys = ownKeys(source); var defineProperty = objectDefineProperty.f; var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } }; var replacement = /#|\.prototype\./; var isForced = function (feature, detection) { var value = data[normalize(feature)]; return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; }; var normalize = isForced.normalize = function (string) { return String(string).replace(replacement, '.').toLowerCase(); }; var data = isForced.data = {}; var NATIVE = isForced.NATIVE = 'N'; var POLYFILL = isForced.POLYFILL = 'P'; var isForced_1 = isForced; var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; var _export = function (options, source) { var TARGET = options.target; var GLOBAL = options.global; var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { target = global_1; } else if (STATIC) { target = global_1[TARGET] || setGlobal(TARGET, {}); } else { target = (global_1[TARGET] || {}).prototype; } if (target) for (key in source) { sourceProperty = source[key]; if (options.noTargetGet) { descriptor = getOwnPropertyDescriptor$1(target, key); targetProperty = descriptor && descriptor.value; } else targetProperty = target[key]; FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); if (!FORCED && targetProperty !== undefined) { if (typeof sourceProperty === typeof targetProperty) continue; copyConstructorProperties(sourceProperty, targetProperty); } if (options.sham || (targetProperty && targetProperty.sham)) { createNonEnumerableProperty(sourceProperty, 'sham', true); } redefine(target, key, sourceProperty, options); } }; var objectKeys = Object.keys || function keys(O) { return objectKeysInternal(O, enumBugKeys); }; var toObject = function (argument) { return Object(requireObjectCoercible(argument)); }; var nativeAssign = Object.assign; var defineProperty = Object.defineProperty; var objectAssign = !nativeAssign || fails(function () { if (descriptors && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', { enumerable: true, get: function () { defineProperty(this, 'b', { value: 3, enumerable: false }); } }), { b: 2 })).b !== 1) return true; var A = {}; var B = {}; var symbol = Symbol(); var alphabet = 'abcdefghijklmnopqrst'; A[symbol] = 7; alphabet.split('').forEach(function (chr) { B[chr] = chr; }); return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; }) ? function assign(target, source) { var T = toObject(target); var argumentsLength = arguments.length; var index = 1; var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; var propertyIsEnumerable = objectPropertyIsEnumerable.f; while (argumentsLength > index) { var S = indexedObject(arguments[index++]); var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); var length = keys.length; var j = 0; var key; while (length > j) { key = keys[j++]; if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key]; } } return T; } : nativeAssign; _export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, { assign: objectAssign }); var assign = path.Object.assign; var accounting = createCommonjsModule(function (module, exports) { /*! * accounting.js v0.4.1 * Copyright 2014 Open Exchange Rates * * Freely distributable under the MIT license. * Portions of accounting.js are inspired or borrowed from underscore.js * * Full details and documentation: * http://openexchangerates.github.io/accounting.js/ */ (function(root, undefined$1) { var lib = {}; lib.version = '0.4.1'; lib.settings = { currency: { symbol : "$", format : "%s%v", decimal : ".", thousand : ",", precision : 2, grouping : 3 }, number: { precision : 0, grouping : 3, thousand : ",", decimal : "." } }; var nativeMap = Array.prototype.map, nativeIsArray = Array.isArray, toString = Object.prototype.toString; function isString(obj) { return !!(obj === '' || (obj && obj.charCodeAt && obj.substr)); } function isArray(obj) { return nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]'; } function isObject(obj) { return obj && toString.call(obj) === '[object Object]'; } function defaults(object, defs) { var key; object = object || {}; defs = defs || {}; for (key in defs) { if (defs.hasOwnProperty(key)) { if (object[key] == null) object[key] = defs[key]; } } return object; } function map(obj, iterator, context) { var results = [], i, j; if (!obj) return results; if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); for (i = 0, j = obj.length; i < j; i++ ) { results[i] = iterator.call(context, obj[i], i, obj); } return results; } function checkPrecision(val, base) { val = Math.round(Math.abs(val)); return isNaN(val)? base : val; } function checkCurrencyFormat(format) { var defaults = lib.settings.currency.format; if ( typeof format === "function" ) format = format(); if ( isString( format ) && format.match("%v") ) { return { pos : format, neg : format.replace("-", "").replace("%v", "-%v"), zero : format }; } else if ( !format || !format.pos || !format.pos.match("%v") ) { return ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = { pos : defaults, neg : defaults.replace("%v", "-%v"), zero : defaults }; } return format; } var unformat = lib.unformat = lib.parse = function(value, decimal) { if (isArray(value)) { return map(value, function(val) { return unformat(val, decimal); }); } value = value || 0; if (typeof value === "number") return value; decimal = decimal || lib.settings.number.decimal; var regex = new RegExp("[^0-9-" + decimal + "]", ["g"]), unformatted = parseFloat( ("" + value) .replace(/\((.*)\)/, "-$1") .replace(regex, '') .replace(decimal, '.') ); return !isNaN(unformatted) ? unformatted : 0; }; var toFixed = lib.toFixed = function(value, precision) { precision = checkPrecision(precision, lib.settings.number.precision); var power = Math.pow(10, precision); return (Math.round(lib.unformat(value) * power) / power).toFixed(precision); }; var formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) { if (isArray(number)) { return map(number, function(val) { return formatNumber(val, precision, thousand, decimal); }); } number = unformat(number); var opts = defaults( (isObject(precision) ? precision : { precision : precision, thousand : thousand, decimal : decimal }), lib.settings.number ), usePrecision = checkPrecision(opts.precision), negative = number < 0 ? "-" : "", base = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + "", mod = base.length > 3 ? base.length % 3 : 0; return negative + (mod ? base.substr(0, mod) + opts.thousand : "") + base.substr(mod).replace(/(\d{3})(?=\d)/g, "$1" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : ""); }; var formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) { if (isArray(number)) { return map(number, function(val){ return formatMoney(val, symbol, precision, thousand, decimal, format); }); } number = unformat(number); var opts = defaults( (isObject(symbol) ? symbol : { symbol : symbol, precision : precision, thousand : thousand, decimal : decimal, format : format }), lib.settings.currency ), formats = checkCurrencyFormat(opts.format), useFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero; return useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal)); }; lib.formatColumn = function(list, symbol, precision, thousand, decimal, format) { if (!list) return []; var opts = defaults( (isObject(symbol) ? symbol : { symbol : symbol, precision : precision, thousand : thousand, decimal : decimal, format : format }), lib.settings.currency ), formats = checkCurrencyFormat(opts.format), padAfterSymbol = formats.pos.indexOf("%s") < formats.pos.indexOf("%v") ? true : false, maxLength = 0, formatted = map(list, function(val, i) { if (isArray(val)) { return lib.formatColumn(val, opts); } else { val = unformat(val); var useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero, fVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal)); if (fVal.length > maxLength) maxLength = fVal.length; return fVal; } }); return map(formatted, function(val, i) { if (isString(val) && val.length < maxLength) { return padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(" "))) : (new Array(maxLength - val.length + 1).join(" ")) + val; } return val; }); }; { if ( module.exports) { exports = module.exports = lib; } exports.accounting = lib; } }()); }); var accounting_1 = accounting.accounting; var map = { AD: 'EUR', AE: 'AED', AF: 'AFN', AG: 'XCD', AI: 'XCD', AL: 'ALL', AM: 'AMD', AN: 'ANG', AO: 'AOA', AR: 'ARS', AS: 'USD', AT: 'EUR', AU: 'AUD', AW: 'AWG', AX: 'EUR', AZ: 'AZN', BA: 'BAM', BB: 'BBD', BD: 'BDT', BE: 'EUR', BF: 'XOF', BG: 'BGN', BH: 'BHD', BI: 'BIF', BJ: 'XOF', BL: 'EUR', BM: 'BMD', BN: 'BND', BO: 'BOB', BQ: 'USD', BR: 'BRL', BS: 'BSD', BT: 'BTN', BV: 'NOK', BW: 'BWP', BY: 'BYR', BZ: 'BZD', CA: 'CAD', CC: 'AUD', CD: 'CDF', CF: 'XAF', CG: 'XAF', CH: 'CHF', CI: 'XOF', CK: 'NZD', CL: 'CLP', CM: 'XAF', CN: 'CNY', CO: 'COP', CR: 'CRC', CU: 'CUP', CV: 'CVE', CW: 'ANG', CX: 'AUD', CY: 'EUR', CZ: 'CZK', DE: 'EUR', DJ: 'DJF', DK: 'DKK', DM: 'XCD', DO: 'DOP', DZ: 'DZD', EC: 'USD', EE: 'EUR', EG: 'EGP', EH: 'MAD', ER: 'ERN', ES: 'EUR', ET: 'ETB', FI: 'EUR', FJ: 'FJD', FK: 'FKP', FM: 'USD', FO: 'DKK', FR: 'EUR', GA: 'XAF', GB: 'GBP', GD: 'XCD', GE: 'GEL', GF: 'EUR', GG: 'GBP', GH: 'GHS', GI: 'GIP', GL: 'DKK', GM: 'GMD', GN: 'GNF', GP: 'EUR', GQ: 'XAF', GR: 'EUR', GS: 'GBP', GT: 'GTQ', GU: 'USD', GW: 'XOF', GY: 'GYD', HK: 'HKD', HM: 'AUD', HN: 'HNL', HR: 'HRK', HT: 'HTG', HU: 'HUF', ID: 'IDR', IE: 'EUR', IL: 'ILS', IM: 'GBP', IN: 'INR', IO: 'USD', IQ: 'IQD', IR: 'IRR', IS: 'ISK', IT: 'EUR', JE: 'GBP', JM: 'JMD', JO: 'JOD', JP: 'JPY', KE: 'KES', KG: 'KGS', KH: 'KHR', KI: 'AUD', KM: 'KMF', KN: 'XCD', KP: 'KPW', KR: 'KRW', KW: 'KWD', KY: 'KYD', KZ: 'KZT', LA: 'LAK', LB: 'LBP', LC: 'XCD', LI: 'CHF', LK: 'LKR', LR: 'LRD', LS: 'LSL', LT: 'LTL', LU: 'EUR', LV: 'LVL', LY: 'LYD', MA: 'MAD', MC: 'EUR', MD: 'MDL', ME: 'EUR', MF: 'EUR', MG: 'MGA', MH: 'USD', MK: 'MKD', ML: 'XOF', MM: 'MMK', MN: 'MNT', MO: 'MOP', MP: 'USD', MQ: 'EUR', MR: 'MRO', MS: 'XCD', MT: 'EUR', MU: 'MUR', MV: 'MVR', MW: 'MWK', MX: 'MXN', MY: 'MYR', MZ: 'MZN', NA: 'NAD', NC: 'XPF', NE: 'XOF', NF: 'AUD', NG: 'NGN', NI: 'NIO', NL: 'EUR', NO: 'NOK', NP: 'NPR', NR: 'AUD', NU: 'NZD', NZ: 'NZD', OM: 'OMR', PA: 'PAB', PE: 'PEN', PF: 'XPF', PG: 'PGK', PH: 'PHP', PK: 'PKR', PL: 'PLN', PM: 'EUR', PN: 'NZD', PR: 'USD', PS: 'ILS', PT: 'EUR', PW: 'USD', PY: 'PYG', QA: 'QAR', RE: 'EUR', RO: 'RON', RS: 'RSD', RU: 'RUB', RW: 'RWF', SA: 'SAR', SB: 'SBD', SC: 'SCR', SD: 'SDG', SE: 'SEK', SG: 'SGD', SH: 'SHP', SI: 'EUR', SJ: 'NOK', SK: 'EUR', SL: 'SLL', SM: 'EUR', SN: 'XOF', SO: 'SOS', SR: 'SRD', ST: 'STD', SV: 'SVC', SX: 'ANG', SY: 'SYP', SZ: 'SZL', TC: 'USD', TD: 'XAF', TF: 'EUR', TG: 'XOF', TH: 'THB', TJ: 'TJS', TK: 'NZD', TL: 'USD', TM: 'TMT', TN: 'TND', TO: 'TOP', TR: 'TRY', TT: 'TTD', TV: 'AUD', TW: 'TWD', TZ: 'TZS', UA: 'UAH', UG: 'UGX', UM: 'USD', US: 'USD', UY: 'UYU', UZ: 'UZS', VA: 'EUR', VC: 'XCD', VE: 'VEF', VG: 'USD', VI: 'USD', VN: 'VND', VU: 'VUV', WF: 'XPF', WS: 'WST', YE: 'YER', YT: 'EUR', ZA: 'ZAR', ZM: 'ZMK', ZW: 'ZWL' }; var map_1 = map; var getCountryCode = function(localeString) { var components = localeString.split("_"); if (components.length == 2) { return components.pop(); } components = localeString.split("-"); if (components.length == 2) { return components.pop(); } return localeString; }; var getCurrency = function(locale) { var countryCode = getCountryCode(locale).toUpperCase(); if (countryCode in map_1) { return map_1[countryCode]; } return null; }; var getLocales = function(currencyCode) { currencyCode = currencyCode.toUpperCase(); var locales = []; for (countryCode in map_1) { if (map_1[countryCode] === currencyCode) { locales.push(countryCode); } } return locales; }; var localeCurrency = { getCurrency: getCurrency, getLocales: getLocales }; var currencies = { AED: { code: "AED", symbol: "د.إ.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, AFN: { code: "AFN", symbol: "؋", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, ALL: { code: "ALL", symbol: "Lek", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, AMD: { code: "AMD", symbol: "֏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, ANG: { code: "ANG", symbol: "ƒ", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, AOA: { code: "AOA", symbol: "Kz", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, ARS: { code: "ARS", symbol: "$", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, AUD: { code: "AUD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, AWG: { code: "AWG", symbol: "ƒ", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, AZN: { code: "AZN", symbol: "₼", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, BAM: { code: "BAM", symbol: "КМ", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, BBD: { code: "BBD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, BDT: { code: "BDT", symbol: "৳", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 0 }, BGN: { code: "BGN", symbol: "лв.", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, BHD: { code: "BHD", symbol: "د.ب.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 3 }, BIF: { code: "BIF", symbol: "FBu", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, BMD: { code: "BMD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, BND: { code: "BND", symbol: "$", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, BOB: { code: "BOB", symbol: "Bs", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, BRL: { code: "BRL", symbol: "R$", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, BSD: { code: "BSD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, BTC: { code: "BTC", symbol: "Ƀ", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 8 }, BTN: { code: "BTN", symbol: "Nu.", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 1 }, BWP: { code: "BWP", symbol: "P", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, BYR: { code: "BYR", symbol: "р.", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, BZD: { code: "BZD", symbol: "BZ$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, CAD: { code: "CAD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, CDF: { code: "CDF", symbol: "FC", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, CHF: { code: "CHF", symbol: "CHF", thousandsSeparator: "'", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, CLP: { code: "CLP", symbol: "$", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, CNY: { code: "CNY", symbol: "¥", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, COP: { code: "COP", symbol: "$", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, CRC: { code: "CRC", symbol: "₡", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, CUC: { code: "CUC", symbol: "CUC", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, CUP: { code: "CUP", symbol: "$MN", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, CVE: { code: "CVE", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, CZK: { code: "CZK", symbol: "Kč", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, DJF: { code: "DJF", symbol: "Fdj", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, DKK: { code: "DKK", symbol: "kr.", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, DOP: { code: "DOP", symbol: "RD$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, DZD: { code: "DZD", symbol: "د.ج.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, EGP: { code: "EGP", symbol: "ج.م.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, ERN: { code: "ERN", symbol: "Nfk", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, ETB: { code: "ETB", symbol: "ETB", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, EUR: { code: "EUR", symbol: "€", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, FJD: { code: "FJD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, FKP: { code: "FKP", symbol: "£", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, GBP: { code: "GBP", symbol: "£", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, GEL: { code: "GEL", symbol: "Lari", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, GHS: { code: "GHS", symbol: "₵", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, GIP: { code: "GIP", symbol: "£", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, GMD: { code: "GMD", symbol: "D", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, GNF: { code: "GNF", symbol: "FG", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, GTQ: { code: "GTQ", symbol: "Q", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, GYD: { code: "GYD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, HKD: { code: "HKD", symbol: "HK$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, HNL: { code: "HNL", symbol: "L.", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, HRK: { code: "HRK", symbol: "kn", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, HTG: { code: "HTG", symbol: "G", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, HUF: { code: "HUF", symbol: "Ft", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, IDR: { code: "IDR", symbol: "Rp", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, ILS: { code: "ILS", symbol: "₪", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, INR: { code: "INR", symbol: "₹", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, IQD: { code: "IQD", symbol: "د.ع.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, IRR: { code: "IRR", symbol: "﷼", thousandsSeparator: ",", decimalSeparator: "/", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, ISK: { code: "ISK", symbol: "kr.", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 0 }, JMD: { code: "JMD", symbol: "J$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, JOD: { code: "JOD", symbol: "د.ا.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 3 }, JPY: { code: "JPY", symbol: "¥", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, KES: { code: "KES", symbol: "KSh", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, KGS: { code: "KGS", symbol: "сом", thousandsSeparator: " ", decimalSeparator: "-", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, KHR: { code: "KHR", symbol: "៛", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, KMF: { code: "KMF", symbol: "CF", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, KPW: { code: "KPW", symbol: "₩", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, KRW: { code: "KRW", symbol: "₩", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, KWD: { code: "KWD", symbol: "د.ك.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 3 }, KYD: { code: "KYD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, KZT: { code: "KZT", symbol: "₸", thousandsSeparator: " ", decimalSeparator: "-", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, LAK: { code: "LAK", symbol: "₭", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, LBP: { code: "LBP", symbol: "ل.ل.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, LKR: { code: "LKR", symbol: "₨", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 0 }, LRD: { code: "LRD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, LSL: { code: "LSL", symbol: "M", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, LYD: { code: "LYD", symbol: "د.ل.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 3 }, MAD: { code: "MAD", symbol: "د.م.‏", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, MDL: { code: "MDL", symbol: "lei", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, MGA: { code: "MGA", symbol: "Ar", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, MKD: { code: "MKD", symbol: "ден.", thousandsSeparator: ".", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, MMK: { code: "MMK", symbol: "K", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, MNT: { code: "MNT", symbol: "₮", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, MOP: { code: "MOP", symbol: "MOP$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, MRO: { code: "MRO", symbol: "UM", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, MTL: { code: "MTL", symbol: "₤", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, MUR: { code: "MUR", symbol: "₨", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, MVR: { code: "MVR", symbol: "MVR", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 1 }, MWK: { code: "MWK", symbol: "MK", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, MXN: { code: "MXN", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, MYR: { code: "MYR", symbol: "RM", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, MZN: { code: "MZN", symbol: "MT", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 0 }, NAD: { code: "NAD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, NGN: { code: "NGN", symbol: "₦", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, NIO: { code: "NIO", symbol: "C$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, NOK: { code: "NOK", symbol: "kr", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, NPR: { code: "NPR", symbol: "₨", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, NZD: { code: "NZD", symbol: "$", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, OMR: { code: "OMR", symbol: "﷼", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 3 }, PAB: { code: "PAB", symbol: "B/.", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, PEN: { code: "PEN", symbol: "S/.", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, PGK: { code: "PGK", symbol: "K", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, PHP: { code: "PHP", symbol: "₱", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, PKR: { code: "PKR", symbol: "₨", thousandsSeparator: ",", decimalSeparator: ".", symbolOnLeft: true, spaceBetweenAmountAndSymbol: false, decimalDigits: 2 }, PLN: { code: "PLN", symbol: "zł", thousandsSeparator: " ", decimalSeparator: ",", symbolOnLeft: false, spaceBetweenAmountAndSymbol: true, decimalDigits: 2 }, PYG: { code: "PYG", symbol: "₲",