├── .babelrc ├── .editorconfig ├── .eslintrc ├── .gitignore ├── .storybook ├── .babelrc ├── addons.js └── config.js ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── rollup.config.js ├── src ├── default-locales.js ├── locales.js ├── main.js ├── main.test.js └── symbols.js └── stories └── index.stories.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "targets": { 5 | "browsers": ["last 2 versions", "safari >= 7"] 6 | }, 7 | "modules": false 8 | }] 9 | ], 10 | "env": { 11 | "test": { 12 | "presets": ["es2015", "react"] 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [{package.json,*.yml}] 12 | indent_style = space 13 | indent_size = 2 14 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "react-app", 3 | "env": { 4 | "browser": true, 5 | "node": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | node_modules 3 | 4 | # testing 5 | coverage 6 | 7 | # production 8 | dist 9 | 10 | # misc 11 | .DS_Store 12 | npm-debug.log 13 | package-lock.json 14 | yarn.lock 15 | -------------------------------------------------------------------------------- /.storybook/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["env", "react"] 3 | } 4 | -------------------------------------------------------------------------------- /.storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | import '@storybook/addon-knobs/register' 4 | -------------------------------------------------------------------------------- /.storybook/config.js: -------------------------------------------------------------------------------- 1 | import { configure } from '@storybook/react'; 2 | 3 | // automatically import all files ending in *.stories.js 4 | const req = require.context('../stories', true, /.stories.js$/); 5 | function loadStories() { 6 | req.keys().forEach((filename) => req(filename)); 7 | } 8 | 9 | configure(loadStories, module); 10 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '9' 4 | - '8' 5 | - '6' 6 | 7 | cache: 8 | directories: 9 | - node_modules 10 | 11 | branches: 12 | only: 13 | - master 14 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Prerequisites 2 | 3 | [Node.js](http://nodejs.org/) >= v4 must be installed. 4 | 5 | ## Installation 6 | 7 | - Running `npm install` in the components's root directory will install everything you need for development. 8 | 9 | ## Demo Development Server 10 | 11 | - `npm start` will run a development server with the component's demo app at [http://localhost:3000](http://localhost:3000) with hot module reloading. 12 | 13 | ## Running Tests 14 | 15 | - `npm test` will run the tests once. 16 | 17 | - `npm run test:coverage` will run the tests and produce a coverage report in `coverage/`. 18 | 19 | - `npm run test:watch` will run the tests on every change. 20 | 21 | ## Building 22 | 23 | - `npm run build` will build the component for publishing to npm and also bundle the demo app. 24 | 25 | - `npm run clean` will delete built resources. 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Jose Miguel Bejarano (josemiguel.org) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 💵 react currency formatter 2 | 3 | [![npm](https://img.shields.io/npm/dt/react-currency-formatter.svg)](https://www.npmjs.com/package/react-currency-formatter) 4 | [![npm](https://img.shields.io/npm/v/react-currency-formatter.svg)](https://www.npmjs.com/package/react-currency-formatter) 5 | [![David](https://img.shields.io/david/xDae/react-currency-formatter.svg)](https://david-dm.org/xDae/react-currency-formatter) 6 | [![Travis](https://img.shields.io/travis/xDae/react-currency-formatter.svg)](https://travis-ci.org/xDae/react-currency-formatter) 7 | [![license](https://img.shields.io/github/license/mashape/apistatus.svg)]() 8 | 9 | 10 | ### 💻 [DEMO!](https://xdae.github.io/react-currency-formatter/) 11 | 12 | ## Usage 13 | 14 | #### Simple 15 | ```js 16 | import Currency from 'react-currency-formatter'; 17 | 18 | 22 | ``` 23 | 24 | #### Complex 25 | ```js 26 | import Currency from 'react-currency-formatter'; 27 | 28 | 36 | ``` 37 | 38 | #### TypeScript 39 | 40 | ```ts 41 | import * as React from 'react' 42 | import * as CurrencyFormatter from 'react-currency-formatter' 43 | 44 | type Props = { 45 | price: number, 46 | currency: string, 47 | } 48 | 49 | const ProductionPrice: React.SFC = (props: Props) => ( 50 | 51 | ) 52 | 53 | export default ProductionPrice 54 | ``` 55 | 56 | ## Support 57 | 58 | Please [open an issue](https://github.com/xDae/react-currency-formatter/issues/new) for support. 59 | 60 | ## Contributing 61 | 62 | Please contribute using [Github Flow](https://guides.github.com/introduction/flow/). Create a branch, add commits, and [open a pull request](https://github.com/xDae/react-currency-formatter/compare/). 63 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-currency-formatter", 3 | "version": "1.1.0", 4 | "description": "react currency formatter Component", 5 | "keywords": [ 6 | "currency", 7 | "formatter", 8 | "react-component" 9 | ], 10 | "license": "MIT", 11 | "author": "Jose Miguel Bejarano", 12 | "files": [ 13 | "dist" 14 | ], 15 | "main": "dist/react-currency-formatter.cjs.js", 16 | "module": "dist/react-currency-formatter.esm.js", 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/xDae/react-currency-formatter.git" 20 | }, 21 | "scripts": { 22 | "build": "rimraf dist && rollup -c", 23 | "build-storybook": "build-storybook", 24 | "dev": "rollup -c -w", 25 | "storybook": "start-storybook -p 6006", 26 | "pretest": "npm run build", 27 | "test": "jest", 28 | "test:watch": "jest --watch" 29 | }, 30 | "browser": "dist/react-currency-formatter.umd.js", 31 | "dependencies": { 32 | "prop-types": "^15.6.0" 33 | }, 34 | "devDependencies": { 35 | "@storybook/addon-actions": "^3.3.3", 36 | "@storybook/addon-info": "^3.3.3", 37 | "@storybook/addon-knobs": "^3.3.3", 38 | "@storybook/addon-links": "^3.3.3", 39 | "@storybook/react": "^3.3.3", 40 | "babel-core": "^6.26.0", 41 | "babel-jest": "^22.0.4", 42 | "babel-preset-env": "^1.6.1", 43 | "babel-preset-es2015": "^6.24.1", 44 | "babel-preset-react": "^6.24.1", 45 | "enzyme": "^3.3.0", 46 | "enzyme-adapter-react-16": "^1.1.1", 47 | "jest": "^22.0.4", 48 | "lodash.values": "^4.3.0", 49 | "react": "^16.2.0", 50 | "react-dom": "^16.2.0", 51 | "regenerator-runtime": "^0.11.1", 52 | "rimraf": "^2.6.2", 53 | "rollup": "^0.53.2", 54 | "rollup-plugin-babel": "^3.0.3", 55 | "rollup-plugin-commonjs": "^8.2.6", 56 | "rollup-plugin-node-resolve": "^3.0.0" 57 | }, 58 | "peerDependencies": { 59 | "react": "16.x" 60 | }, 61 | "jest": { 62 | "moduleFileExtensions": [ 63 | "jsx", 64 | "js", 65 | "json" 66 | ], 67 | "testPathIgnorePatterns": [ 68 | "/(dist|docs|node_modules)/" 69 | ] 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import resolve from 'rollup-plugin-node-resolve'; 2 | import commonjs from 'rollup-plugin-commonjs'; 3 | import babel from 'rollup-plugin-babel'; 4 | import pkg from './package.json'; 5 | 6 | const globals = { 7 | 'react': 'React', 8 | 'prop-types': 'PropTypes' 9 | }; 10 | 11 | const external = ['react', 'prop-types']; 12 | 13 | export default [ 14 | // browser-friendly UMD build 15 | { 16 | input: 'src/main.js', 17 | output: { 18 | name: 'reactCurrencyFormatter', 19 | file: pkg.browser, 20 | format: 'umd', 21 | globals 22 | }, 23 | external, 24 | plugins: [ 25 | resolve(), // so Rollup can find `ms` 26 | commonjs(), // so Rollup can convert `ms` to an ES module 27 | babel({ 28 | exclude: ['node_modules/**'] 29 | }) 30 | ] 31 | }, 32 | 33 | // CommonJS (for Node) and ES module (for bundlers) build. 34 | // (We could have three entries in the configuration array 35 | // instead of two, but it's quicker to generate multiple 36 | // builds from a single configuration where possible, using 37 | // an array for the `output` option, where we can specify 38 | // `file` and `format` for each target) 39 | { 40 | input: 'src/main.js', 41 | external, 42 | output: [ 43 | { file: pkg.main, format: 'cjs', globals }, 44 | { file: pkg.module, format: 'es', globals } 45 | ], 46 | plugins: [ 47 | babel({ 48 | exclude: ['node_modules/**'] 49 | }) 50 | ] 51 | } 52 | ]; 53 | -------------------------------------------------------------------------------- /src/default-locales.js: -------------------------------------------------------------------------------- 1 | export default { 2 | AED: 'ar_AE', 3 | AFN: 'fa_AF', 4 | ALL: 'sq', 5 | AMD: 'hy', 6 | ANG: 'nl', 7 | AOA: 'pt_AO', 8 | ARS: 'es_AR', 9 | AUD: 'en', 10 | AWG: 'nl_AW', 11 | AZN: 'az', 12 | BAM: 'bs', 13 | BBD: 'en_BB', 14 | BDT: 'bn_BD', 15 | BGN: 'bg', 16 | BHD: 'ar_BH', 17 | BIF: 'fr_BI', 18 | BMD: 'en_BM', 19 | BND: 'ms_BN', 20 | BOB: 'es_BO', 21 | BRL: 'pt_BR', 22 | BSD: 'en_BS', 23 | BTN: 'dz', 24 | BWP: 'en_BW', 25 | BYR: 'be', 26 | BZD: 'en_BZ', 27 | CAD: 'en_CA', 28 | CDF: 'fr_CD', 29 | CHF: 'de_CH', 30 | CLP: 'es_CL', 31 | CNY: 'zh_Hans_CN', 32 | COP: 'es_CO', 33 | CRC: 'es_CR', 34 | CUP: 'es_CU', 35 | CVE: 'pt_CV', 36 | CZK: 'cs', 37 | DJF: 'fr_DJ', 38 | DKK: 'da_DK', 39 | DOP: 'es_DO', 40 | DZD: 'ar_DZ', 41 | EGP: 'ar_EG', 42 | ERN: 'ti_ER', 43 | ETB: 'am', 44 | EUR: 'de', 45 | FJD: 'en_FJ', 46 | FKP: 'en_FK', 47 | GBP: 'en', 48 | GEL: 'ka', 49 | GHS: 'en_GH', 50 | GIP: 'en_GI', 51 | GMD: 'en_GM', 52 | GNF: 'fr_GN', 53 | GTQ: 'es_GT', 54 | GYD: 'en_GY', 55 | HKD: 'zh_Hans_HK', 56 | HNL: 'es_HN', 57 | HRK: 'hr_HR', 58 | HTG: 'en', 59 | HUF: 'hu_HU', 60 | IDR: 'id', 61 | ILS: 'he', 62 | INR: 'en_IN', 63 | IQD: 'ar_IQ', 64 | IRR: 'fa_IR', 65 | ISK: 'is', 66 | JMD: 'en_JM', 67 | JOD: 'ar_JO', 68 | JPY: 'ja', 69 | KES: 'en_KE', 70 | KGS: 'ky', 71 | KHR: 'km', 72 | KMF: 'ar', 73 | KPW: 'ko_KP', 74 | KRW: 'ko_KR', 75 | KWD: 'ar_KW', 76 | KYD: 'en_KY', 77 | KZT: 'kk', 78 | LAK: 'lo', 79 | LBP: 'ar_LB', 80 | LKR: 'si', 81 | LRD: 'en_LR', 82 | LSL: 'en_LS', 83 | LYD: 'ar_LY', 84 | MAD: 'ar', 85 | MDL: 'ro', 86 | MGA: 'fr_MG', 87 | MKD: 'mk', 88 | MMK: 'my', 89 | MNT: 'mn', 90 | MOP: 'zh', 91 | MRO: 'ar_MR', 92 | MUR: 'en_MU', 93 | MVR: 'en', 94 | MWK: 'en', 95 | MXN: 'es_MX', 96 | MYR: 'ms_MY', 97 | MZN: 'pt_MZ', 98 | NAD: 'en_NA', 99 | NGN: 'en_NG', 100 | NIO: 'es_NI', 101 | NOK: 'nb_NO', 102 | NPR: 'ne', 103 | NZD: 'en_NZ', 104 | OMR: 'ar_OM', 105 | PAB: 'es_PA', 106 | PEN: 'es_PE', 107 | PGK: 'en_PG', 108 | PHP: 'fil', 109 | PKR: 'ur_PK', 110 | PLN: 'pl', 111 | PYG: 'es_PY', 112 | QAR: 'ar_QA', 113 | RON: 'ro', 114 | RSD: 'sr', 115 | RUB: 'ru', 116 | RWF: 'rw', 117 | SAR: 'ar_SA', 118 | SBD: 'en_SB', 119 | SCR: 'en_SC', 120 | SDG: 'ar_SD', 121 | SEK: 'sv_SE', 122 | SGD: 'en_SG', 123 | SHP: 'en_SH', 124 | SLL: 'en_SL', 125 | SOS: 'so_SO', 126 | SRD: 'nl_SR', 127 | SSP: 'en', 128 | STD: 'pt_ST', 129 | SYP: 'ar_SY', 130 | SZL: 'en_SZ', 131 | THB: 'th', 132 | TJS: 'en', 133 | TMT: 'tk', 134 | TND: 'ar_TN', 135 | TOP: 'to', 136 | TRY: 'tr_TR', 137 | TTD: 'en_TT', 138 | TWD: 'zh_Hant_TW', 139 | TZS: 'sw_TZ', 140 | UAH: 'uk', 141 | UGX: 'en_UG', 142 | USD: 'en_US', 143 | UYU: 'es_UY', 144 | UZS: 'uz', 145 | VEF: 'es_VE', 146 | VND: 'vi', 147 | VUV: 'en_BI', 148 | WST: 'en_AS', 149 | XAF: 'fr', 150 | XCD: 'en', 151 | XOF: 'fr', 152 | XPF: 'fr_PF', 153 | YER: 'ar_YE', 154 | ZAR: 'zu', 155 | ZMW: 'en_ZM', 156 | ZWL: 'en_ZW' 157 | }; 158 | -------------------------------------------------------------------------------- /src/locales.js: -------------------------------------------------------------------------------- 1 | export default { 2 | af: { 3 | p: '!#,##0.00', 4 | g: ' ', 5 | d: ',' 6 | }, 7 | af_NA: { 8 | h: 'af' 9 | }, 10 | af_ZA: { 11 | h: 'af' 12 | }, 13 | agq: { 14 | p: '#,##0.00!', 15 | g: ' ', 16 | d: ',' 17 | }, 18 | agq_CM: { 19 | h: 'agq' 20 | }, 21 | ak: { 22 | p: '!#,##0.00', 23 | g: ',', 24 | d: '.' 25 | }, 26 | ak_GH: { 27 | h: 'ak' 28 | }, 29 | am: { 30 | p: '!#,##0.00', 31 | g: ',', 32 | d: '.' 33 | }, 34 | am_ET: { 35 | h: 'am' 36 | }, 37 | ar: { 38 | p: '! #,##0.00', 39 | g: ',', 40 | d: '.' 41 | }, 42 | ar_001: { 43 | h: 'ar' 44 | }, 45 | ar_AE: { 46 | h: 'ar' 47 | }, 48 | ar_BH: { 49 | h: 'ar' 50 | }, 51 | ar_DJ: { 52 | h: 'ar' 53 | }, 54 | ar_DZ: { 55 | p: '! #,##0.00', 56 | g: '.', 57 | d: ',' 58 | }, 59 | ar_EG: { 60 | h: 'ar' 61 | }, 62 | ar_EH: { 63 | h: 'ar' 64 | }, 65 | ar_ER: { 66 | h: 'ar' 67 | }, 68 | ar_IL: { 69 | h: 'ar' 70 | }, 71 | ar_IQ: { 72 | h: 'ar' 73 | }, 74 | ar_JO: { 75 | h: 'ar' 76 | }, 77 | ar_KM: { 78 | h: 'ar' 79 | }, 80 | ar_KW: { 81 | h: 'ar' 82 | }, 83 | ar_LB: { 84 | p: '! #,##0.00', 85 | g: '.', 86 | d: ',' 87 | }, 88 | ar_LY: { 89 | p: '! #,##0.00', 90 | g: '.', 91 | d: ',' 92 | }, 93 | ar_MA: { 94 | p: '! #,##0.00', 95 | g: '.', 96 | d: ',' 97 | }, 98 | ar_MR: { 99 | p: '! #,##0.00', 100 | g: '.', 101 | d: ',' 102 | }, 103 | ar_OM: { 104 | h: 'ar' 105 | }, 106 | ar_PS: { 107 | h: 'ar' 108 | }, 109 | ar_QA: { 110 | h: 'ar' 111 | }, 112 | ar_SA: { 113 | h: 'ar' 114 | }, 115 | ar_SD: { 116 | h: 'ar' 117 | }, 118 | ar_SO: { 119 | h: 'ar' 120 | }, 121 | ar_SS: { 122 | h: 'ar' 123 | }, 124 | ar_SY: { 125 | h: 'ar' 126 | }, 127 | ar_TD: { 128 | h: 'ar' 129 | }, 130 | ar_TN: { 131 | p: '! #,##0.00', 132 | g: '.', 133 | d: ',' 134 | }, 135 | ar_YE: { 136 | h: 'ar' 137 | }, 138 | as: { 139 | p: '! #,##,##0.00', 140 | g: ',', 141 | d: '.' 142 | }, 143 | as_IN: { 144 | h: 'as' 145 | }, 146 | asa: { 147 | p: '#,##0.00 !', 148 | g: ',', 149 | d: '.' 150 | }, 151 | asa_TZ: { 152 | h: 'asa' 153 | }, 154 | ast: { 155 | p: '#,##0.00 !', 156 | g: '.', 157 | d: ',' 158 | }, 159 | ast_ES: { 160 | h: 'ast' 161 | }, 162 | az: { 163 | p: '! #,##0.00', 164 | g: '.', 165 | d: ',' 166 | }, 167 | az_Cyrl: { 168 | h: 'az' 169 | }, 170 | az_Cyrl_AZ: { 171 | h: 'az' 172 | }, 173 | az_Latn: { 174 | h: 'az' 175 | }, 176 | az_Latn_AZ: { 177 | h: 'az' 178 | }, 179 | bas: { 180 | p: '#,##0.00 !', 181 | g: ' ', 182 | d: ',' 183 | }, 184 | bas_CM: { 185 | h: 'bas' 186 | }, 187 | be: { 188 | p: '#,##0.00 !', 189 | g: ' ', 190 | d: ',' 191 | }, 192 | be_BY: { 193 | h: 'be' 194 | }, 195 | bem: { 196 | p: '!#,##0.00', 197 | g: ',', 198 | d: '.' 199 | }, 200 | bem_ZM: { 201 | h: 'bem' 202 | }, 203 | bez: { 204 | p: '#,##0.00!', 205 | g: ',', 206 | d: '.' 207 | }, 208 | bez_TZ: { 209 | h: 'bez' 210 | }, 211 | bg: { 212 | p: '#,##0.00 !', 213 | g: ' ', 214 | d: ',' 215 | }, 216 | bg_BG: { 217 | h: 'bg' 218 | }, 219 | bm: { 220 | p: '!#,##0.00', 221 | g: ',', 222 | d: '.' 223 | }, 224 | bm_ML: { 225 | h: 'bm' 226 | }, 227 | bn: { 228 | p: '#,##,##0.00!', 229 | g: ',', 230 | d: '.' 231 | }, 232 | bn_BD: { 233 | h: 'bn' 234 | }, 235 | bn_IN: { 236 | h: 'bn' 237 | }, 238 | bo: { 239 | p: '! #,##0.00', 240 | g: ',', 241 | d: '.' 242 | }, 243 | bo_CN: { 244 | h: 'bo' 245 | }, 246 | bo_IN: { 247 | h: 'bo' 248 | }, 249 | br: { 250 | p: '#,##0.00 !', 251 | g: ' ', 252 | d: ',' 253 | }, 254 | br_FR: { 255 | h: 'br' 256 | }, 257 | brx: { 258 | p: '! #,##,##0.00', 259 | g: ',', 260 | d: '.' 261 | }, 262 | brx_IN: { 263 | h: 'brx' 264 | }, 265 | bs: { 266 | p: '#,##0.00 !', 267 | g: '.', 268 | d: ',' 269 | }, 270 | bs_Cyrl: { 271 | h: 'bs' 272 | }, 273 | bs_Cyrl_BA: { 274 | h: 'bs' 275 | }, 276 | bs_Latn: { 277 | h: 'bs' 278 | }, 279 | bs_Latn_BA: { 280 | h: 'bs' 281 | }, 282 | ca: { 283 | p: '#,##0.00 !', 284 | g: '.', 285 | d: ',' 286 | }, 287 | ca_AD: { 288 | h: 'ca' 289 | }, 290 | ca_ES: { 291 | h: 'ca' 292 | }, 293 | ca_ES_VALENCIA: { 294 | h: 'ca' 295 | }, 296 | ca_FR: { 297 | h: 'ca' 298 | }, 299 | ca_IT: { 300 | h: 'ca' 301 | }, 302 | ce: { 303 | p: '#,##0.00 !', 304 | g: ',', 305 | d: '.' 306 | }, 307 | ce_RU: { 308 | h: 'ce' 309 | }, 310 | cgg: { 311 | p: '!#,##0.00', 312 | g: ',', 313 | d: '.' 314 | }, 315 | cgg_UG: { 316 | h: 'cgg' 317 | }, 318 | chr: { 319 | p: '!#,##0.00', 320 | g: ',', 321 | d: '.' 322 | }, 323 | chr_US: { 324 | h: 'chr' 325 | }, 326 | ckb: { 327 | p: '!#,##0.00', 328 | g: ',', 329 | d: '.' 330 | }, 331 | ckb_IQ: { 332 | h: 'ckb' 333 | }, 334 | ckb_IR: { 335 | h: 'ckb' 336 | }, 337 | cs: { 338 | p: '#,##0.00 !', 339 | g: ' ', 340 | d: ',' 341 | }, 342 | cs_CZ: { 343 | h: 'cs' 344 | }, 345 | cu: { 346 | p: '#,##0.00 !', 347 | g: ' ', 348 | d: ',' 349 | }, 350 | cu_RU: { 351 | h: 'cu' 352 | }, 353 | cy: { 354 | p: '!#,##0.00', 355 | g: ',', 356 | d: '.' 357 | }, 358 | cy_GB: { 359 | h: 'cy' 360 | }, 361 | da: { 362 | p: '#,##0.00 !', 363 | g: '.', 364 | d: ',' 365 | }, 366 | da_DK: { 367 | h: 'da' 368 | }, 369 | da_GL: { 370 | h: 'da' 371 | }, 372 | dav: { 373 | p: '!#,##0.00', 374 | g: ',', 375 | d: '.' 376 | }, 377 | dav_KE: { 378 | h: 'dav' 379 | }, 380 | de: { 381 | p: '#,##0.00 !', 382 | g: '.', 383 | d: ',' 384 | }, 385 | de_AT: { 386 | p: '! #,##0.00', 387 | g: ' ', 388 | d: ',' 389 | }, 390 | de_BE: { 391 | h: 'de' 392 | }, 393 | de_CH: { 394 | p: '! #,##0.00;!-#,##0.00', 395 | g: '\'', 396 | d: '.' 397 | }, 398 | de_DE: { 399 | h: 'de' 400 | }, 401 | de_LI: { 402 | p: '! #,##0.00', 403 | g: '\'', 404 | d: '.' 405 | }, 406 | de_LU: { 407 | h: 'de' 408 | }, 409 | dje: { 410 | p: '#,##0.00!', 411 | g: ' ', 412 | d: '.' 413 | }, 414 | dje_NE: { 415 | h: 'dje' 416 | }, 417 | dsb: { 418 | p: '#,##0.00 !', 419 | g: '.', 420 | d: ',' 421 | }, 422 | dsb_DE: { 423 | h: 'dsb' 424 | }, 425 | dua: { 426 | p: '#,##0.00 !', 427 | g: ' ', 428 | d: ',' 429 | }, 430 | dua_CM: { 431 | h: 'dua' 432 | }, 433 | dyo: { 434 | p: '#,##0.00 !', 435 | g: ' ', 436 | d: ',' 437 | }, 438 | dyo_SN: { 439 | h: 'dyo' 440 | }, 441 | dz: { 442 | p: '!#,##,##0.00', 443 | g: ',', 444 | d: '.' 445 | }, 446 | dz_BT: { 447 | h: 'dz' 448 | }, 449 | ebu: { 450 | p: '!#,##0.00', 451 | g: ',', 452 | d: '.' 453 | }, 454 | ebu_KE: { 455 | h: 'ebu' 456 | }, 457 | ee: { 458 | p: '!#,##0.00', 459 | g: ',', 460 | d: '.' 461 | }, 462 | ee_GH: { 463 | h: 'ee' 464 | }, 465 | ee_TG: { 466 | h: 'ee' 467 | }, 468 | el: { 469 | p: '#,##0.00 !', 470 | g: '.', 471 | d: ',' 472 | }, 473 | el_CY: { 474 | h: 'el' 475 | }, 476 | el_GR: { 477 | h: 'el' 478 | }, 479 | en: { 480 | p: '!#,##0.00', 481 | g: ',', 482 | d: '.' 483 | }, 484 | en_001: { 485 | h: 'en' 486 | }, 487 | en_150: { 488 | p: '#,##0.00 !', 489 | g: '.', 490 | d: ',' 491 | }, 492 | en_AG: { 493 | h: 'en' 494 | }, 495 | en_AI: { 496 | h: 'en' 497 | }, 498 | en_AS: { 499 | h: 'en' 500 | }, 501 | en_AT: { 502 | p: '! #,##0.00', 503 | g: ',', 504 | d: '.' 505 | }, 506 | en_AU: { 507 | h: 'en' 508 | }, 509 | en_BB: { 510 | h: 'en' 511 | }, 512 | en_BE: { 513 | p: '#,##0.00 !', 514 | g: '.', 515 | d: ',' 516 | }, 517 | en_BI: { 518 | h: 'en' 519 | }, 520 | en_BM: { 521 | h: 'en' 522 | }, 523 | en_BS: { 524 | h: 'en' 525 | }, 526 | en_BW: { 527 | h: 'en' 528 | }, 529 | en_BZ: { 530 | h: 'en' 531 | }, 532 | en_CA: { 533 | h: 'en' 534 | }, 535 | en_CC: { 536 | h: 'en' 537 | }, 538 | en_CH: { 539 | p: '! #,##0.00;!-#,##0.00', 540 | g: ',', 541 | d: '.' 542 | }, 543 | en_CK: { 544 | h: 'en' 545 | }, 546 | en_CM: { 547 | h: 'en' 548 | }, 549 | en_CX: { 550 | h: 'en' 551 | }, 552 | en_CY: { 553 | h: 'en' 554 | }, 555 | en_DE: { 556 | h: 'en' 557 | }, 558 | en_DG: { 559 | h: 'en' 560 | }, 561 | en_DK: { 562 | h: 'en' 563 | }, 564 | en_DM: { 565 | h: 'en' 566 | }, 567 | en_ER: { 568 | h: 'en' 569 | }, 570 | en_FI: { 571 | p: '!#,##0.00', 572 | g: ' ', 573 | d: '.' 574 | }, 575 | en_FJ: { 576 | h: 'en' 577 | }, 578 | en_FK: { 579 | h: 'en' 580 | }, 581 | en_FM: { 582 | h: 'en' 583 | }, 584 | en_GB: { 585 | h: 'en' 586 | }, 587 | en_GD: { 588 | h: 'en' 589 | }, 590 | en_GG: { 591 | h: 'en' 592 | }, 593 | en_GH: { 594 | h: 'en' 595 | }, 596 | en_GI: { 597 | h: 'en' 598 | }, 599 | en_GM: { 600 | h: 'en' 601 | }, 602 | en_GU: { 603 | h: 'en' 604 | }, 605 | en_GY: { 606 | h: 'en' 607 | }, 608 | en_HK: { 609 | h: 'en' 610 | }, 611 | en_IE: { 612 | h: 'en' 613 | }, 614 | en_IL: { 615 | h: 'en' 616 | }, 617 | en_IM: { 618 | h: 'en' 619 | }, 620 | en_IN: { 621 | p: '! #,##,##0.00', 622 | g: ',', 623 | d: '.' 624 | }, 625 | en_IO: { 626 | h: 'en' 627 | }, 628 | en_JE: { 629 | h: 'en' 630 | }, 631 | en_JM: { 632 | h: 'en' 633 | }, 634 | en_KE: { 635 | h: 'en' 636 | }, 637 | en_KI: { 638 | h: 'en' 639 | }, 640 | en_KN: { 641 | h: 'en' 642 | }, 643 | en_KY: { 644 | h: 'en' 645 | }, 646 | en_LC: { 647 | h: 'en' 648 | }, 649 | en_LR: { 650 | h: 'en' 651 | }, 652 | en_LS: { 653 | h: 'en' 654 | }, 655 | en_MG: { 656 | h: 'en' 657 | }, 658 | en_MH: { 659 | h: 'en' 660 | }, 661 | en_MO: { 662 | h: 'en' 663 | }, 664 | en_MP: { 665 | h: 'en' 666 | }, 667 | en_MS: { 668 | h: 'en' 669 | }, 670 | en_MT: { 671 | h: 'en' 672 | }, 673 | en_MU: { 674 | h: 'en' 675 | }, 676 | en_MW: { 677 | h: 'en' 678 | }, 679 | en_MY: { 680 | h: 'en' 681 | }, 682 | en_NA: { 683 | h: 'en' 684 | }, 685 | en_NF: { 686 | h: 'en' 687 | }, 688 | en_NG: { 689 | h: 'en' 690 | }, 691 | en_NL: { 692 | p: '! #,##0.00;! -#,##0.00', 693 | g: ',', 694 | d: '.' 695 | }, 696 | en_NR: { 697 | h: 'en' 698 | }, 699 | en_NU: { 700 | h: 'en' 701 | }, 702 | en_NZ: { 703 | h: 'en' 704 | }, 705 | en_PG: { 706 | h: 'en' 707 | }, 708 | en_PH: { 709 | h: 'en' 710 | }, 711 | en_PK: { 712 | h: 'en' 713 | }, 714 | en_PN: { 715 | h: 'en' 716 | }, 717 | en_PR: { 718 | h: 'en' 719 | }, 720 | en_PW: { 721 | h: 'en' 722 | }, 723 | en_RW: { 724 | h: 'en' 725 | }, 726 | en_SB: { 727 | h: 'en' 728 | }, 729 | en_SC: { 730 | h: 'en' 731 | }, 732 | en_SD: { 733 | h: 'en' 734 | }, 735 | en_SE: { 736 | p: '!#,##0.00', 737 | g: ' ', 738 | d: '.' 739 | }, 740 | en_SG: { 741 | h: 'en' 742 | }, 743 | en_SH: { 744 | h: 'en' 745 | }, 746 | en_SI: { 747 | h: 'en' 748 | }, 749 | en_SL: { 750 | h: 'en' 751 | }, 752 | en_SS: { 753 | h: 'en' 754 | }, 755 | en_SX: { 756 | h: 'en' 757 | }, 758 | en_SZ: { 759 | h: 'en' 760 | }, 761 | en_TC: { 762 | h: 'en' 763 | }, 764 | en_TK: { 765 | h: 'en' 766 | }, 767 | en_TO: { 768 | h: 'en' 769 | }, 770 | en_TT: { 771 | h: 'en' 772 | }, 773 | en_TV: { 774 | h: 'en' 775 | }, 776 | en_TZ: { 777 | h: 'en' 778 | }, 779 | en_UG: { 780 | h: 'en' 781 | }, 782 | en_UM: { 783 | h: 'en' 784 | }, 785 | en_US: { 786 | h: 'en' 787 | }, 788 | en_US_POSIX: { 789 | p: '! #0.00', 790 | g: ',', 791 | d: '.' 792 | }, 793 | en_VC: { 794 | h: 'en' 795 | }, 796 | en_VG: { 797 | h: 'en' 798 | }, 799 | en_VI: { 800 | h: 'en' 801 | }, 802 | en_VU: { 803 | h: 'en' 804 | }, 805 | en_WS: { 806 | h: 'en' 807 | }, 808 | en_ZA: { 809 | p: '!#,##0.00', 810 | g: ' ', 811 | d: ',' 812 | }, 813 | en_ZM: { 814 | h: 'en' 815 | }, 816 | en_ZW: { 817 | h: 'en' 818 | }, 819 | eo: { 820 | p: '!#,##0.00', 821 | g: ' ', 822 | d: ',' 823 | }, 824 | eo_001: { 825 | h: 'eo' 826 | }, 827 | es: { 828 | p: '#,##0.00 !', 829 | g: '.', 830 | d: ',' 831 | }, 832 | es_419: { 833 | p: '!#,##0.00', 834 | g: ',', 835 | d: '.' 836 | }, 837 | es_AR: { 838 | p: '! #,##0.00', 839 | g: '.', 840 | d: ',' 841 | }, 842 | es_BO: { 843 | h: 'es' 844 | }, 845 | es_BR: { 846 | h: 'es' 847 | }, 848 | es_CL: { 849 | p: '!#,##0.00;!-#,##0.00', 850 | g: '.', 851 | d: ',' 852 | }, 853 | es_CO: { 854 | p: '! #,##0.00', 855 | g: '.', 856 | d: ',' 857 | }, 858 | es_CR: { 859 | p: '#,##0.00 !', 860 | g: ' ', 861 | d: ',' 862 | }, 863 | es_CU: { 864 | h: 'es' 865 | }, 866 | es_DO: { 867 | h: 'es' 868 | }, 869 | es_EA: { 870 | h: 'es' 871 | }, 872 | es_EC: { 873 | p: '!#,##0.00;!-#,##0.00', 874 | g: '.', 875 | d: ',' 876 | }, 877 | es_ES: { 878 | h: 'es' 879 | }, 880 | es_GQ: { 881 | p: '!#,##0.00', 882 | g: '.', 883 | d: ',' 884 | }, 885 | es_GT: { 886 | h: 'es' 887 | }, 888 | es_HN: { 889 | h: 'es' 890 | }, 891 | es_IC: { 892 | h: 'es' 893 | }, 894 | es_MX: { 895 | h: 'es' 896 | }, 897 | es_NI: { 898 | h: 'es' 899 | }, 900 | es_PA: { 901 | h: 'es' 902 | }, 903 | es_PE: { 904 | h: 'es' 905 | }, 906 | es_PH: { 907 | h: 'es' 908 | }, 909 | es_PR: { 910 | h: 'es' 911 | }, 912 | es_PY: { 913 | p: '! #,##0.00;! -#,##0.00', 914 | g: '.', 915 | d: ',' 916 | }, 917 | es_SV: { 918 | h: 'es' 919 | }, 920 | es_US: { 921 | h: 'es' 922 | }, 923 | es_UY: { 924 | p: '! #,##0.00', 925 | g: '.', 926 | d: ',' 927 | }, 928 | es_VE: { 929 | p: '!#,##0.00;!-#,##0.00', 930 | g: '.', 931 | d: ',' 932 | }, 933 | et: { 934 | p: '#,##0.00 !', 935 | g: ' ', 936 | d: ',' 937 | }, 938 | et_EE: { 939 | h: 'et' 940 | }, 941 | eu: { 942 | p: '#,##0.00 !', 943 | g: '.', 944 | d: ',' 945 | }, 946 | eu_ES: { 947 | h: 'eu' 948 | }, 949 | ewo: { 950 | p: '#,##0.00 !', 951 | g: ' ', 952 | d: ',' 953 | }, 954 | ewo_CM: { 955 | h: 'ewo' 956 | }, 957 | fa: { 958 | p: '‎!#,##0.00', 959 | g: ',', 960 | d: '.' 961 | }, 962 | fa_AF: { 963 | h: 'fa' 964 | }, 965 | fa_IR: { 966 | h: 'fa' 967 | }, 968 | ff: { 969 | p: '#,##0.00 !', 970 | g: ' ', 971 | d: ',' 972 | }, 973 | ff_CM: { 974 | h: 'ff' 975 | }, 976 | ff_GN: { 977 | h: 'ff' 978 | }, 979 | ff_MR: { 980 | h: 'ff' 981 | }, 982 | ff_SN: { 983 | h: 'ff' 984 | }, 985 | fi: { 986 | p: '#,##0.00 !', 987 | g: ' ', 988 | d: ',' 989 | }, 990 | fi_FI: { 991 | h: 'fi' 992 | }, 993 | fil: { 994 | p: '!#,##0.00', 995 | g: ',', 996 | d: '.' 997 | }, 998 | fil_PH: { 999 | h: 'fil' 1000 | }, 1001 | fo: { 1002 | p: '#,##0.00 !', 1003 | g: '.', 1004 | d: ',' 1005 | }, 1006 | fo_DK: { 1007 | h: 'fo' 1008 | }, 1009 | fo_FO: { 1010 | h: 'fo' 1011 | }, 1012 | fr: { 1013 | p: '#,##0.00 !', 1014 | g: ' ', 1015 | d: ',' 1016 | }, 1017 | fr_BE: { 1018 | p: '#,##0.00 !', 1019 | g: '.', 1020 | d: ',' 1021 | }, 1022 | fr_BF: { 1023 | h: 'fr' 1024 | }, 1025 | fr_BI: { 1026 | h: 'fr' 1027 | }, 1028 | fr_BJ: { 1029 | h: 'fr' 1030 | }, 1031 | fr_BL: { 1032 | h: 'fr' 1033 | }, 1034 | fr_CA: { 1035 | h: 'fr' 1036 | }, 1037 | fr_CD: { 1038 | h: 'fr' 1039 | }, 1040 | fr_CF: { 1041 | h: 'fr' 1042 | }, 1043 | fr_CG: { 1044 | h: 'fr' 1045 | }, 1046 | fr_CH: { 1047 | p: '! #,##0.00;!-#,##0.00', 1048 | g: ' ', 1049 | d: '.' 1050 | }, 1051 | fr_CI: { 1052 | h: 'fr' 1053 | }, 1054 | fr_CM: { 1055 | h: 'fr' 1056 | }, 1057 | fr_DJ: { 1058 | h: 'fr' 1059 | }, 1060 | fr_DZ: { 1061 | h: 'fr' 1062 | }, 1063 | fr_FR: { 1064 | h: 'fr' 1065 | }, 1066 | fr_GA: { 1067 | h: 'fr' 1068 | }, 1069 | fr_GF: { 1070 | h: 'fr' 1071 | }, 1072 | fr_GN: { 1073 | h: 'fr' 1074 | }, 1075 | fr_GP: { 1076 | h: 'fr' 1077 | }, 1078 | fr_GQ: { 1079 | h: 'fr' 1080 | }, 1081 | fr_HT: { 1082 | h: 'fr' 1083 | }, 1084 | fr_KM: { 1085 | h: 'fr' 1086 | }, 1087 | fr_LU: { 1088 | p: '#,##0.00 !', 1089 | g: '.', 1090 | d: ',' 1091 | }, 1092 | fr_MA: { 1093 | p: '#,##0.00 !', 1094 | g: '.', 1095 | d: ',' 1096 | }, 1097 | fr_MC: { 1098 | h: 'fr' 1099 | }, 1100 | fr_MF: { 1101 | h: 'fr' 1102 | }, 1103 | fr_MG: { 1104 | h: 'fr' 1105 | }, 1106 | fr_ML: { 1107 | h: 'fr' 1108 | }, 1109 | fr_MQ: { 1110 | h: 'fr' 1111 | }, 1112 | fr_MR: { 1113 | h: 'fr' 1114 | }, 1115 | fr_MU: { 1116 | h: 'fr' 1117 | }, 1118 | fr_NC: { 1119 | h: 'fr' 1120 | }, 1121 | fr_NE: { 1122 | h: 'fr' 1123 | }, 1124 | fr_PF: { 1125 | h: 'fr' 1126 | }, 1127 | fr_PM: { 1128 | h: 'fr' 1129 | }, 1130 | fr_RE: { 1131 | h: 'fr' 1132 | }, 1133 | fr_RW: { 1134 | h: 'fr' 1135 | }, 1136 | fr_SC: { 1137 | h: 'fr' 1138 | }, 1139 | fr_SN: { 1140 | h: 'fr' 1141 | }, 1142 | fr_SY: { 1143 | h: 'fr' 1144 | }, 1145 | fr_TD: { 1146 | h: 'fr' 1147 | }, 1148 | fr_TG: { 1149 | h: 'fr' 1150 | }, 1151 | fr_TN: { 1152 | h: 'fr' 1153 | }, 1154 | fr_VU: { 1155 | h: 'fr' 1156 | }, 1157 | fr_WF: { 1158 | h: 'fr' 1159 | }, 1160 | fr_YT: { 1161 | h: 'fr' 1162 | }, 1163 | fur: { 1164 | p: '! #,##0.00', 1165 | g: '.', 1166 | d: ',' 1167 | }, 1168 | fur_IT: { 1169 | h: 'fur' 1170 | }, 1171 | fy: { 1172 | p: '! #,##0.00;! #,##0.00-', 1173 | g: '.', 1174 | d: ',' 1175 | }, 1176 | fy_NL: { 1177 | h: 'fy' 1178 | }, 1179 | ga: { 1180 | p: '!#,##0.00', 1181 | g: ',', 1182 | d: '.' 1183 | }, 1184 | ga_IE: { 1185 | h: 'ga' 1186 | }, 1187 | gd: { 1188 | p: '!#,##0.00', 1189 | g: ',', 1190 | d: '.' 1191 | }, 1192 | gd_GB: { 1193 | h: 'gd' 1194 | }, 1195 | gl: { 1196 | p: '#,##0.00 !', 1197 | g: '.', 1198 | d: ',' 1199 | }, 1200 | gl_ES: { 1201 | h: 'gl' 1202 | }, 1203 | gsw: { 1204 | p: '#,##0.00 !', 1205 | g: '’', 1206 | d: '.' 1207 | }, 1208 | gsw_CH: { 1209 | h: 'gsw' 1210 | }, 1211 | gsw_FR: { 1212 | h: 'gsw' 1213 | }, 1214 | gsw_LI: { 1215 | h: 'gsw' 1216 | }, 1217 | gu: { 1218 | p: '!#,##,##0.00', 1219 | g: ',', 1220 | d: '.' 1221 | }, 1222 | gu_IN: { 1223 | h: 'gu' 1224 | }, 1225 | guz: { 1226 | p: '!#,##0.00', 1227 | g: ',', 1228 | d: '.' 1229 | }, 1230 | guz_KE: { 1231 | h: 'guz' 1232 | }, 1233 | gv: { 1234 | p: '!#,##0.00', 1235 | g: ',', 1236 | d: '.' 1237 | }, 1238 | gv_IM: { 1239 | h: 'gv' 1240 | }, 1241 | ha: { 1242 | p: '! #,##0.00', 1243 | g: ',', 1244 | d: '.' 1245 | }, 1246 | ha_GH: { 1247 | h: 'ha' 1248 | }, 1249 | ha_NE: { 1250 | h: 'ha' 1251 | }, 1252 | ha_NG: { 1253 | h: 'ha' 1254 | }, 1255 | haw: { 1256 | p: '!#,##0.00', 1257 | g: ',', 1258 | d: '.' 1259 | }, 1260 | haw_US: { 1261 | h: 'haw' 1262 | }, 1263 | he: { 1264 | p: '#,##0.00 !', 1265 | g: ',', 1266 | d: '.' 1267 | }, 1268 | he_IL: { 1269 | h: 'he' 1270 | }, 1271 | hi: { 1272 | p: '!#,##,##0.00', 1273 | g: ',', 1274 | d: '.' 1275 | }, 1276 | hi_IN: { 1277 | h: 'hi' 1278 | }, 1279 | hr: { 1280 | p: '#,##0.00 !', 1281 | g: '.', 1282 | d: ',' 1283 | }, 1284 | hr_BA: { 1285 | h: 'hr' 1286 | }, 1287 | hr_HR: { 1288 | h: 'hr' 1289 | }, 1290 | hsb: { 1291 | p: '#,##0.00 !', 1292 | g: '.', 1293 | d: ',' 1294 | }, 1295 | hsb_DE: { 1296 | h: 'hsb' 1297 | }, 1298 | hu: { 1299 | p: '#,##0.00 !', 1300 | g: ' ', 1301 | d: ',' 1302 | }, 1303 | hu_HU: { 1304 | h: 'hu' 1305 | }, 1306 | hy: { 1307 | p: '! #,##0.00', 1308 | g: '.', 1309 | d: ',' 1310 | }, 1311 | hy_AM: { 1312 | h: 'hy' 1313 | }, 1314 | id: { 1315 | p: '!#,##0.00', 1316 | g: '.', 1317 | d: ',' 1318 | }, 1319 | id_ID: { 1320 | h: 'id' 1321 | }, 1322 | ig: { 1323 | p: '!#,##0.00', 1324 | g: ',', 1325 | d: '.' 1326 | }, 1327 | ig_NG: { 1328 | h: 'ig' 1329 | }, 1330 | ii: { 1331 | p: '!#,##0.00', 1332 | g: ',', 1333 | d: '.' 1334 | }, 1335 | ii_CN: { 1336 | h: 'ii' 1337 | }, 1338 | is: { 1339 | p: '#,##0.00 !', 1340 | g: '.', 1341 | d: ',' 1342 | }, 1343 | is_IS: { 1344 | h: 'is' 1345 | }, 1346 | it: { 1347 | p: '#,##0.00 !', 1348 | g: '.', 1349 | d: ',' 1350 | }, 1351 | it_CH: { 1352 | p: '! #,##0.00;!-#,##0.00', 1353 | g: '\'', 1354 | d: '.' 1355 | }, 1356 | it_IT: { 1357 | h: 'it' 1358 | }, 1359 | it_SM: { 1360 | h: 'it' 1361 | }, 1362 | ja: { 1363 | p: '!#,##0.00', 1364 | g: ',', 1365 | d: '.' 1366 | }, 1367 | ja_JP: { 1368 | h: 'ja' 1369 | }, 1370 | jgo: { 1371 | p: '! #,##0.00', 1372 | g: '.', 1373 | d: ',' 1374 | }, 1375 | jgo_CM: { 1376 | h: 'jgo' 1377 | }, 1378 | jmc: { 1379 | p: '!#,##0.00', 1380 | g: ',', 1381 | d: '.' 1382 | }, 1383 | jmc_TZ: { 1384 | h: 'jmc' 1385 | }, 1386 | ka: { 1387 | p: '#,##0.00 !', 1388 | g: ' ', 1389 | d: ',' 1390 | }, 1391 | ka_GE: { 1392 | h: 'ka' 1393 | }, 1394 | kab: { 1395 | p: '#,##0.00!', 1396 | g: ' ', 1397 | d: ',' 1398 | }, 1399 | kab_DZ: { 1400 | h: 'kab' 1401 | }, 1402 | kam: { 1403 | p: '!#,##0.00', 1404 | g: ',', 1405 | d: '.' 1406 | }, 1407 | kam_KE: { 1408 | h: 'kam' 1409 | }, 1410 | kde: { 1411 | p: '!#,##0.00', 1412 | g: ',', 1413 | d: '.' 1414 | }, 1415 | kde_TZ: { 1416 | h: 'kde' 1417 | }, 1418 | kea: { 1419 | p: '#,##0.00 !', 1420 | g: ' ', 1421 | d: ',' 1422 | }, 1423 | kea_CV: { 1424 | h: 'kea' 1425 | }, 1426 | khq: { 1427 | p: '#,##0.00!', 1428 | g: ' ', 1429 | d: '.' 1430 | }, 1431 | khq_ML: { 1432 | h: 'khq' 1433 | }, 1434 | ki: { 1435 | p: '!#,##0.00', 1436 | g: ',', 1437 | d: '.' 1438 | }, 1439 | ki_KE: { 1440 | h: 'ki' 1441 | }, 1442 | kk: { 1443 | p: '#,##0.00 !', 1444 | g: ' ', 1445 | d: ',' 1446 | }, 1447 | kk_KZ: { 1448 | h: 'kk' 1449 | }, 1450 | kkj: { 1451 | p: '!#,##0.00', 1452 | g: '.', 1453 | d: ',' 1454 | }, 1455 | kkj_CM: { 1456 | h: 'kkj' 1457 | }, 1458 | kl: { 1459 | p: '!#,##0.00;!-#,##0.00', 1460 | g: '.', 1461 | d: ',' 1462 | }, 1463 | kl_GL: { 1464 | h: 'kl' 1465 | }, 1466 | kln: { 1467 | p: '!#,##0.00', 1468 | g: ',', 1469 | d: '.' 1470 | }, 1471 | kln_KE: { 1472 | h: 'kln' 1473 | }, 1474 | km: { 1475 | p: '!#,##0.00', 1476 | g: '.', 1477 | d: ',' 1478 | }, 1479 | km_KH: { 1480 | h: 'km' 1481 | }, 1482 | kn: { 1483 | p: '!#,##0.00', 1484 | g: ',', 1485 | d: '.' 1486 | }, 1487 | kn_IN: { 1488 | h: 'kn' 1489 | }, 1490 | ko: { 1491 | p: '!#,##0.00', 1492 | g: ',', 1493 | d: '.' 1494 | }, 1495 | ko_KP: { 1496 | h: 'ko' 1497 | }, 1498 | ko_KR: { 1499 | h: 'ko' 1500 | }, 1501 | kok: { 1502 | p: '! #,##,##0.00', 1503 | g: ',', 1504 | d: '.' 1505 | }, 1506 | kok_IN: { 1507 | h: 'kok' 1508 | }, 1509 | ks: { 1510 | p: '! #,##,##0.00', 1511 | g: ',', 1512 | d: '.' 1513 | }, 1514 | ks_IN: { 1515 | h: 'ks' 1516 | }, 1517 | ksb: { 1518 | p: '#,##0.00!', 1519 | g: ',', 1520 | d: '.' 1521 | }, 1522 | ksb_TZ: { 1523 | h: 'ksb' 1524 | }, 1525 | ksf: { 1526 | p: '#,##0.00 !', 1527 | g: ' ', 1528 | d: ',' 1529 | }, 1530 | ksf_CM: { 1531 | h: 'ksf' 1532 | }, 1533 | ksh: { 1534 | p: '#,##0.00 !', 1535 | g: ' ', 1536 | d: ',' 1537 | }, 1538 | ksh_DE: { 1539 | h: 'ksh' 1540 | }, 1541 | kw: { 1542 | p: '!#,##0.00', 1543 | g: ',', 1544 | d: '.' 1545 | }, 1546 | kw_GB: { 1547 | h: 'kw' 1548 | }, 1549 | ky: { 1550 | p: '#,##0.00 !', 1551 | g: ' ', 1552 | d: ',' 1553 | }, 1554 | ky_KG: { 1555 | h: 'ky' 1556 | }, 1557 | lag: { 1558 | p: '!#,##0.00', 1559 | g: ',', 1560 | d: '.' 1561 | }, 1562 | lag_TZ: { 1563 | h: 'lag' 1564 | }, 1565 | lb: { 1566 | p: '#,##0.00 !', 1567 | g: '.', 1568 | d: ',' 1569 | }, 1570 | lb_LU: { 1571 | h: 'lb' 1572 | }, 1573 | lg: { 1574 | p: '#,##0.00!', 1575 | g: ',', 1576 | d: '.' 1577 | }, 1578 | lg_UG: { 1579 | h: 'lg' 1580 | }, 1581 | lkt: { 1582 | p: '!#,##0.00', 1583 | g: ',', 1584 | d: '.' 1585 | }, 1586 | lkt_US: { 1587 | h: 'lkt' 1588 | }, 1589 | ln: { 1590 | p: '#,##0.00 !', 1591 | g: '.', 1592 | d: ',' 1593 | }, 1594 | ln_AO: { 1595 | h: 'ln' 1596 | }, 1597 | ln_CD: { 1598 | h: 'ln' 1599 | }, 1600 | ln_CF: { 1601 | h: 'ln' 1602 | }, 1603 | ln_CG: { 1604 | h: 'ln' 1605 | }, 1606 | lo: { 1607 | p: '!#,##0.00;!-#,##0.00', 1608 | g: '.', 1609 | d: ',' 1610 | }, 1611 | lo_LA: { 1612 | h: 'lo' 1613 | }, 1614 | lrc: { 1615 | p: '! #,##0.00', 1616 | g: ',', 1617 | d: '.' 1618 | }, 1619 | lrc_IQ: { 1620 | h: 'lrc' 1621 | }, 1622 | lrc_IR: { 1623 | h: 'lrc' 1624 | }, 1625 | lt: { 1626 | p: '#,##0.00 !', 1627 | g: ' ', 1628 | d: ',' 1629 | }, 1630 | lt_LT: { 1631 | h: 'lt' 1632 | }, 1633 | lu: { 1634 | p: '#,##0.00!', 1635 | g: '.', 1636 | d: ',' 1637 | }, 1638 | lu_CD: { 1639 | h: 'lu' 1640 | }, 1641 | luo: { 1642 | p: '#,##0.00!', 1643 | g: ',', 1644 | d: '.' 1645 | }, 1646 | luo_KE: { 1647 | h: 'luo' 1648 | }, 1649 | luy: { 1650 | p: '!#,##0.00;!- #,##0.00', 1651 | g: ',', 1652 | d: '.' 1653 | }, 1654 | luy_KE: { 1655 | h: 'luy' 1656 | }, 1657 | lv: { 1658 | p: '#0.00 !', 1659 | g: ' ', 1660 | d: ',' 1661 | }, 1662 | lv_LV: { 1663 | h: 'lv' 1664 | }, 1665 | mas: { 1666 | p: '!#,##0.00', 1667 | g: ',', 1668 | d: '.' 1669 | }, 1670 | mas_KE: { 1671 | h: 'mas' 1672 | }, 1673 | mas_TZ: { 1674 | h: 'mas' 1675 | }, 1676 | mer: { 1677 | p: '!#,##0.00', 1678 | g: ',', 1679 | d: '.' 1680 | }, 1681 | mer_KE: { 1682 | h: 'mer' 1683 | }, 1684 | mfe: { 1685 | p: '!#,##0.00', 1686 | g: ' ', 1687 | d: '.' 1688 | }, 1689 | mfe_MU: { 1690 | h: 'mfe' 1691 | }, 1692 | mg: { 1693 | p: '!#,##0.00', 1694 | g: ',', 1695 | d: '.' 1696 | }, 1697 | mg_MG: { 1698 | h: 'mg' 1699 | }, 1700 | mgh: { 1701 | p: '!#,##0.00', 1702 | g: '.', 1703 | d: ',' 1704 | }, 1705 | mgh_MZ: { 1706 | h: 'mgh' 1707 | }, 1708 | mgo: { 1709 | p: '! #,##0.00', 1710 | g: ',', 1711 | d: '.' 1712 | }, 1713 | mgo_CM: { 1714 | h: 'mgo' 1715 | }, 1716 | mk: { 1717 | p: '! #,##0.00', 1718 | g: '.', 1719 | d: ',' 1720 | }, 1721 | mk_MK: { 1722 | h: 'mk' 1723 | }, 1724 | ml: { 1725 | p: '!#,##0.00', 1726 | g: ',', 1727 | d: '.' 1728 | }, 1729 | ml_IN: { 1730 | h: 'ml' 1731 | }, 1732 | mn: { 1733 | p: '! #,##0.00', 1734 | g: ',', 1735 | d: '.' 1736 | }, 1737 | mn_MN: { 1738 | h: 'mn' 1739 | }, 1740 | mr: { 1741 | p: '!#,##0.00', 1742 | g: ',', 1743 | d: '.' 1744 | }, 1745 | mr_IN: { 1746 | h: 'mr' 1747 | }, 1748 | ms: { 1749 | p: '!#,##0.00', 1750 | g: ',', 1751 | d: '.' 1752 | }, 1753 | ms_BN: { 1754 | p: '! #,##0.00', 1755 | g: '.', 1756 | d: ',' 1757 | }, 1758 | ms_MY: { 1759 | h: 'ms' 1760 | }, 1761 | ms_SG: { 1762 | h: 'ms' 1763 | }, 1764 | mt: { 1765 | p: '!#,##0.00', 1766 | g: ',', 1767 | d: '.' 1768 | }, 1769 | mt_MT: { 1770 | h: 'mt' 1771 | }, 1772 | mua: { 1773 | p: '!#,##0.00', 1774 | g: '.', 1775 | d: ',' 1776 | }, 1777 | mua_CM: { 1778 | h: 'mua' 1779 | }, 1780 | my: { 1781 | p: '! #,##0.00', 1782 | g: ',', 1783 | d: '.' 1784 | }, 1785 | my_MM: { 1786 | h: 'my' 1787 | }, 1788 | mzn: { 1789 | p: '!#,##0.00', 1790 | g: ',', 1791 | d: '.' 1792 | }, 1793 | mzn_IR: { 1794 | h: 'mzn' 1795 | }, 1796 | naq: { 1797 | p: '!#,##0.00', 1798 | g: ',', 1799 | d: '.' 1800 | }, 1801 | naq_NA: { 1802 | h: 'naq' 1803 | }, 1804 | nb: { 1805 | p: '! #,##0.00', 1806 | g: ' ', 1807 | d: ',' 1808 | }, 1809 | nb_NO: { 1810 | h: 'nb' 1811 | }, 1812 | nb_SJ: { 1813 | h: 'nb' 1814 | }, 1815 | nd: { 1816 | p: '!#,##0.00', 1817 | g: ',', 1818 | d: '.' 1819 | }, 1820 | nd_ZW: { 1821 | h: 'nd' 1822 | }, 1823 | ne: { 1824 | p: '! #,##0.00', 1825 | g: ',', 1826 | d: '.' 1827 | }, 1828 | ne_IN: { 1829 | h: 'ne' 1830 | }, 1831 | ne_NP: { 1832 | h: 'ne' 1833 | }, 1834 | nl: { 1835 | p: '! #,##0.00;! -#,##0.00', 1836 | g: '.', 1837 | d: ',' 1838 | }, 1839 | nl_AW: { 1840 | h: 'nl' 1841 | }, 1842 | nl_BE: { 1843 | p: '#,##0.00 !', 1844 | g: '.', 1845 | d: ',' 1846 | }, 1847 | nl_BQ: { 1848 | h: 'nl' 1849 | }, 1850 | nl_CW: { 1851 | h: 'nl' 1852 | }, 1853 | nl_NL: { 1854 | h: 'nl' 1855 | }, 1856 | nl_SR: { 1857 | h: 'nl' 1858 | }, 1859 | nl_SX: { 1860 | h: 'nl' 1861 | }, 1862 | nmg: { 1863 | p: '#,##0.00 !', 1864 | g: ' ', 1865 | d: ',' 1866 | }, 1867 | nmg_CM: { 1868 | h: 'nmg' 1869 | }, 1870 | nn: { 1871 | p: '#,##0.00 !', 1872 | g: ' ', 1873 | d: ',' 1874 | }, 1875 | nn_NO: { 1876 | h: 'nn' 1877 | }, 1878 | nnh: { 1879 | p: '! #,##0.00', 1880 | g: '.', 1881 | d: ',' 1882 | }, 1883 | nnh_CM: { 1884 | h: 'nnh' 1885 | }, 1886 | nus: { 1887 | p: '!#,##0.00', 1888 | g: ',', 1889 | d: '.' 1890 | }, 1891 | nus_SS: { 1892 | h: 'nus' 1893 | }, 1894 | nyn: { 1895 | p: '!#,##0.00', 1896 | g: ',', 1897 | d: '.' 1898 | }, 1899 | nyn_UG: { 1900 | h: 'nyn' 1901 | }, 1902 | om: { 1903 | p: '!#,##0.00', 1904 | g: ',', 1905 | d: '.' 1906 | }, 1907 | om_ET: { 1908 | h: 'om' 1909 | }, 1910 | om_KE: { 1911 | h: 'om' 1912 | }, 1913 | or: { 1914 | p: '! #,##,##0.00', 1915 | g: ',', 1916 | d: '.' 1917 | }, 1918 | or_IN: { 1919 | h: 'or' 1920 | }, 1921 | os: { 1922 | p: '! #,##0.00', 1923 | g: ' ', 1924 | d: ',' 1925 | }, 1926 | os_GE: { 1927 | h: 'os' 1928 | }, 1929 | os_RU: { 1930 | h: 'os' 1931 | }, 1932 | pa: { 1933 | p: '! #,##,##0.00', 1934 | g: ',', 1935 | d: '.' 1936 | }, 1937 | pa_Arab: { 1938 | h: 'pa' 1939 | }, 1940 | pa_Arab_PK: { 1941 | h: 'pa' 1942 | }, 1943 | pa_Guru: { 1944 | h: 'pa' 1945 | }, 1946 | pa_Guru_IN: { 1947 | h: 'pa' 1948 | }, 1949 | pl: { 1950 | p: '#,##0.00 !', 1951 | g: ' ', 1952 | d: ',' 1953 | }, 1954 | pl_PL: { 1955 | h: 'pl' 1956 | }, 1957 | prg: { 1958 | p: '#,##0.00 !', 1959 | g: ' ', 1960 | d: ',' 1961 | }, 1962 | prg_001: { 1963 | h: 'prg' 1964 | }, 1965 | ps: { 1966 | p: '#,##0.00 !', 1967 | g: '.', 1968 | d: ',' 1969 | }, 1970 | ps_AF: { 1971 | h: 'ps' 1972 | }, 1973 | pt: { 1974 | p: '!#,##0.00', 1975 | g: '.', 1976 | d: ',' 1977 | }, 1978 | pt_AO: { 1979 | h: 'pt' 1980 | }, 1981 | pt_BR: { 1982 | h: 'pt' 1983 | }, 1984 | pt_CH: { 1985 | h: 'pt' 1986 | }, 1987 | pt_CV: { 1988 | h: 'pt' 1989 | }, 1990 | pt_GQ: { 1991 | h: 'pt' 1992 | }, 1993 | pt_GW: { 1994 | h: 'pt' 1995 | }, 1996 | pt_LU: { 1997 | h: 'pt' 1998 | }, 1999 | pt_MO: { 2000 | h: 'pt' 2001 | }, 2002 | pt_MZ: { 2003 | h: 'pt' 2004 | }, 2005 | pt_PT: { 2006 | p: '#,##0.00 !', 2007 | g: ' ', 2008 | d: ',' 2009 | }, 2010 | pt_ST: { 2011 | h: 'pt' 2012 | }, 2013 | pt_TL: { 2014 | h: 'pt' 2015 | }, 2016 | qu: { 2017 | p: '! #,##0.00', 2018 | g: ',', 2019 | d: '.' 2020 | }, 2021 | qu_BO: { 2022 | p: '! #,##0.00', 2023 | g: '.', 2024 | d: ',' 2025 | }, 2026 | qu_EC: { 2027 | h: 'qu' 2028 | }, 2029 | qu_PE: { 2030 | h: 'qu' 2031 | }, 2032 | rm: { 2033 | p: '#,##0.00 !', 2034 | g: '’', 2035 | d: '.' 2036 | }, 2037 | rm_CH: { 2038 | h: 'rm' 2039 | }, 2040 | rn: { 2041 | p: '#,##0.00!', 2042 | g: '.', 2043 | d: ',' 2044 | }, 2045 | rn_BI: { 2046 | h: 'rn' 2047 | }, 2048 | ro: { 2049 | p: '#,##0.00 !', 2050 | g: '.', 2051 | d: ',' 2052 | }, 2053 | ro_MD: { 2054 | h: 'ro' 2055 | }, 2056 | ro_RO: { 2057 | h: 'ro' 2058 | }, 2059 | rof: { 2060 | p: '!#,##0.00', 2061 | g: ',', 2062 | d: '.' 2063 | }, 2064 | rof_TZ: { 2065 | h: 'rof' 2066 | }, 2067 | root: { 2068 | p: '! #,##0.00', 2069 | g: ',', 2070 | d: '.' 2071 | }, 2072 | ru: { 2073 | p: '#,##0.00 !', 2074 | g: ' ', 2075 | d: ',' 2076 | }, 2077 | ru_BY: { 2078 | h: 'ru' 2079 | }, 2080 | ru_KG: { 2081 | h: 'ru' 2082 | }, 2083 | ru_KZ: { 2084 | h: 'ru' 2085 | }, 2086 | ru_MD: { 2087 | h: 'ru' 2088 | }, 2089 | ru_RU: { 2090 | h: 'ru' 2091 | }, 2092 | ru_UA: { 2093 | h: 'ru' 2094 | }, 2095 | rw: { 2096 | p: '!#,##0.00', 2097 | g: '.', 2098 | d: ',' 2099 | }, 2100 | rw_RW: { 2101 | h: 'rw' 2102 | }, 2103 | rwk: { 2104 | p: '#,##0.00!', 2105 | g: ',', 2106 | d: '.' 2107 | }, 2108 | rwk_TZ: { 2109 | h: 'rwk' 2110 | }, 2111 | sah: { 2112 | p: '!#,##0.00', 2113 | g: ',', 2114 | d: '.' 2115 | }, 2116 | sah_RU: { 2117 | h: 'sah' 2118 | }, 2119 | saq: { 2120 | p: '!#,##0.00', 2121 | g: ',', 2122 | d: '.' 2123 | }, 2124 | saq_KE: { 2125 | h: 'saq' 2126 | }, 2127 | sbp: { 2128 | p: '#,##0.00!', 2129 | g: ',', 2130 | d: '.' 2131 | }, 2132 | sbp_TZ: { 2133 | h: 'sbp' 2134 | }, 2135 | se: { 2136 | p: '#,##0.00 !', 2137 | g: ' ', 2138 | d: ',' 2139 | }, 2140 | se_FI: { 2141 | h: 'se' 2142 | }, 2143 | se_NO: { 2144 | h: 'se' 2145 | }, 2146 | se_SE: { 2147 | h: 'se' 2148 | }, 2149 | seh: { 2150 | p: '#,##0.00!', 2151 | g: '.', 2152 | d: ',' 2153 | }, 2154 | seh_MZ: { 2155 | h: 'seh' 2156 | }, 2157 | ses: { 2158 | p: '#,##0.00!', 2159 | g: ' ', 2160 | d: '.' 2161 | }, 2162 | ses_ML: { 2163 | h: 'ses' 2164 | }, 2165 | sg: { 2166 | p: '!#,##0.00;!-#,##0.00', 2167 | g: '.', 2168 | d: ',' 2169 | }, 2170 | sg_CF: { 2171 | h: 'sg' 2172 | }, 2173 | shi: { 2174 | p: '#,##0.00!', 2175 | g: ' ', 2176 | d: ',' 2177 | }, 2178 | shi_Latn: { 2179 | h: 'shi' 2180 | }, 2181 | shi_Latn_MA: { 2182 | h: 'shi' 2183 | }, 2184 | shi_Tfng: { 2185 | h: 'shi' 2186 | }, 2187 | shi_Tfng_MA: { 2188 | h: 'shi' 2189 | }, 2190 | si: { 2191 | p: '!#,##0.00', 2192 | g: ',', 2193 | d: '.' 2194 | }, 2195 | si_LK: { 2196 | h: 'si' 2197 | }, 2198 | sk: { 2199 | p: '#,##0.00 !', 2200 | g: ' ', 2201 | d: ',' 2202 | }, 2203 | sk_SK: { 2204 | h: 'sk' 2205 | }, 2206 | sl: { 2207 | p: '#,##0.00 !', 2208 | g: '.', 2209 | d: ',' 2210 | }, 2211 | sl_SI: { 2212 | h: 'sl' 2213 | }, 2214 | smn: { 2215 | p: '!#,##0.00', 2216 | g: ',', 2217 | d: '.' 2218 | }, 2219 | smn_FI: { 2220 | h: 'smn' 2221 | }, 2222 | sn: { 2223 | p: '!#,##0.00', 2224 | g: ',', 2225 | d: '.' 2226 | }, 2227 | sn_ZW: { 2228 | h: 'sn' 2229 | }, 2230 | so: { 2231 | p: '!#,##0.00', 2232 | g: ',', 2233 | d: '.' 2234 | }, 2235 | so_DJ: { 2236 | h: 'so' 2237 | }, 2238 | so_ET: { 2239 | h: 'so' 2240 | }, 2241 | so_KE: { 2242 | h: 'so' 2243 | }, 2244 | so_SO: { 2245 | h: 'so' 2246 | }, 2247 | sq: { 2248 | p: '#,##0.00 !', 2249 | g: ' ', 2250 | d: ',' 2251 | }, 2252 | sq_AL: { 2253 | h: 'sq' 2254 | }, 2255 | sq_MK: { 2256 | h: 'sq' 2257 | }, 2258 | sq_XK: { 2259 | h: 'sq' 2260 | }, 2261 | sr: { 2262 | p: '#,##0.00 !', 2263 | g: '.', 2264 | d: ',' 2265 | }, 2266 | sr_Cyrl: { 2267 | h: 'sr' 2268 | }, 2269 | sr_Cyrl_BA: { 2270 | h: 'sr' 2271 | }, 2272 | sr_Cyrl_ME: { 2273 | h: 'sr' 2274 | }, 2275 | sr_Cyrl_RS: { 2276 | h: 'sr' 2277 | }, 2278 | sr_Cyrl_XK: { 2279 | h: 'sr' 2280 | }, 2281 | sr_Latn: { 2282 | h: 'sr' 2283 | }, 2284 | sr_Latn_BA: { 2285 | h: 'sr' 2286 | }, 2287 | sr_Latn_ME: { 2288 | h: 'sr' 2289 | }, 2290 | sr_Latn_RS: { 2291 | h: 'sr' 2292 | }, 2293 | sr_Latn_XK: { 2294 | h: 'sr' 2295 | }, 2296 | sv: { 2297 | p: '#,##0.00 !', 2298 | g: ' ', 2299 | d: ',' 2300 | }, 2301 | sv_AX: { 2302 | h: 'sv' 2303 | }, 2304 | sv_FI: { 2305 | h: 'sv' 2306 | }, 2307 | sv_SE: { 2308 | h: 'sv' 2309 | }, 2310 | sw: { 2311 | p: '!#,##0.00', 2312 | g: ',', 2313 | d: '.' 2314 | }, 2315 | sw_CD: { 2316 | p: '!#,##0.00', 2317 | g: '.', 2318 | d: ',' 2319 | }, 2320 | sw_KE: { 2321 | h: 'sw' 2322 | }, 2323 | sw_TZ: { 2324 | h: 'sw' 2325 | }, 2326 | sw_UG: { 2327 | h: 'sw' 2328 | }, 2329 | ta: { 2330 | p: '! #,##,##0.00', 2331 | g: ',', 2332 | d: '.' 2333 | }, 2334 | ta_IN: { 2335 | h: 'ta' 2336 | }, 2337 | ta_LK: { 2338 | h: 'ta' 2339 | }, 2340 | ta_MY: { 2341 | p: '! #,##0.00', 2342 | g: ',', 2343 | d: '.' 2344 | }, 2345 | ta_SG: { 2346 | p: '! #,##0.00', 2347 | g: ',', 2348 | d: '.' 2349 | }, 2350 | te: { 2351 | p: '!#,##,##0.00', 2352 | g: ',', 2353 | d: '.' 2354 | }, 2355 | te_IN: { 2356 | h: 'te' 2357 | }, 2358 | teo: { 2359 | p: '!#,##0.00', 2360 | g: ',', 2361 | d: '.' 2362 | }, 2363 | teo_KE: { 2364 | h: 'teo' 2365 | }, 2366 | teo_UG: { 2367 | h: 'teo' 2368 | }, 2369 | th: { 2370 | p: '!#,##0.00', 2371 | g: ',', 2372 | d: '.' 2373 | }, 2374 | th_TH: { 2375 | h: 'th' 2376 | }, 2377 | ti: { 2378 | p: '!#,##0.00', 2379 | g: ',', 2380 | d: '.' 2381 | }, 2382 | ti_ER: { 2383 | h: 'ti' 2384 | }, 2385 | ti_ET: { 2386 | h: 'ti' 2387 | }, 2388 | tk: { 2389 | p: '#,##0.00 !', 2390 | g: ' ', 2391 | d: ',' 2392 | }, 2393 | tk_TM: { 2394 | h: 'tk' 2395 | }, 2396 | to: { 2397 | p: '! #,##0.00', 2398 | g: ',', 2399 | d: '.' 2400 | }, 2401 | to_TO: { 2402 | h: 'to' 2403 | }, 2404 | tr: { 2405 | p: '#,##0.00 !', 2406 | g: '.', 2407 | d: ',' 2408 | }, 2409 | tr_CY: { 2410 | h: 'tr' 2411 | }, 2412 | tr_TR: { 2413 | h: 'tr' 2414 | }, 2415 | twq: { 2416 | p: '#,##0.00!', 2417 | g: ' ', 2418 | d: '.' 2419 | }, 2420 | twq_NE: { 2421 | h: 'twq' 2422 | }, 2423 | tzm: { 2424 | p: '#,##0.00 !', 2425 | g: ' ', 2426 | d: ',' 2427 | }, 2428 | tzm_MA: { 2429 | h: 'tzm' 2430 | }, 2431 | ug: { 2432 | p: '!#,##0.00', 2433 | g: ',', 2434 | d: '.' 2435 | }, 2436 | ug_CN: { 2437 | h: 'ug' 2438 | }, 2439 | uk: { 2440 | p: '#,##0.00 !', 2441 | g: ' ', 2442 | d: ',' 2443 | }, 2444 | uk_UA: { 2445 | h: 'uk' 2446 | }, 2447 | ur: { 2448 | p: '! #,##,##0.00', 2449 | g: ',', 2450 | d: '.' 2451 | }, 2452 | ur_IN: { 2453 | h: 'ur' 2454 | }, 2455 | ur_PK: { 2456 | h: 'ur' 2457 | }, 2458 | uz: { 2459 | p: '#,##0.00 !', 2460 | g: ' ', 2461 | d: ',' 2462 | }, 2463 | uz_Arab: { 2464 | p: '#,##0.00 !', 2465 | g: '.', 2466 | d: ',' 2467 | }, 2468 | uz_Arab_AF: { 2469 | h: 'uz' 2470 | }, 2471 | uz_Cyrl: { 2472 | p: '! #,##0.00', 2473 | g: ' ', 2474 | d: ',' 2475 | }, 2476 | uz_Cyrl_UZ: { 2477 | h: 'uz' 2478 | }, 2479 | uz_Latn: { 2480 | h: 'uz' 2481 | }, 2482 | uz_Latn_UZ: { 2483 | h: 'uz' 2484 | }, 2485 | vai: { 2486 | p: '!#,##0.00', 2487 | g: ',', 2488 | d: '.' 2489 | }, 2490 | vai_Latn: { 2491 | h: 'vai' 2492 | }, 2493 | vai_Latn_LR: { 2494 | h: 'vai' 2495 | }, 2496 | vai_Vaii: { 2497 | h: 'vai' 2498 | }, 2499 | vai_Vaii_LR: { 2500 | h: 'vai' 2501 | }, 2502 | vi: { 2503 | p: '! #,##0.00', 2504 | g: '.', 2505 | d: ',' 2506 | }, 2507 | vi_VN: { 2508 | h: 'vi' 2509 | }, 2510 | vo: { 2511 | p: '!#,##0.00', 2512 | g: ',', 2513 | d: '.' 2514 | }, 2515 | vo_001: { 2516 | h: 'vo' 2517 | }, 2518 | vun: { 2519 | p: '!#,##0.00', 2520 | g: ',', 2521 | d: '.' 2522 | }, 2523 | vun_TZ: { 2524 | h: 'vun' 2525 | }, 2526 | wae: { 2527 | p: '!#,##0.00', 2528 | g: '’', 2529 | d: ',' 2530 | }, 2531 | wae_CH: { 2532 | h: 'wae' 2533 | }, 2534 | xog: { 2535 | p: '#,##0.00 !', 2536 | g: ',', 2537 | d: '.' 2538 | }, 2539 | xog_UG: { 2540 | h: 'xog' 2541 | }, 2542 | yav: { 2543 | p: '#,##0.00 !', 2544 | g: ' ', 2545 | d: ',' 2546 | }, 2547 | yav_CM: { 2548 | h: 'yav' 2549 | }, 2550 | yi: { 2551 | p: '!#,##0.00', 2552 | g: ',', 2553 | d: '.' 2554 | }, 2555 | yi_001: { 2556 | h: 'yi' 2557 | }, 2558 | yo: { 2559 | p: '!#,##0.00', 2560 | g: ',', 2561 | d: '.' 2562 | }, 2563 | yo_BJ: { 2564 | h: 'yo' 2565 | }, 2566 | yo_NG: { 2567 | h: 'yo' 2568 | }, 2569 | yue: { 2570 | p: '!#,##0.00', 2571 | g: ',', 2572 | d: '.' 2573 | }, 2574 | yue_HK: { 2575 | h: 'yue' 2576 | }, 2577 | zgh: { 2578 | p: '#,##0.00!', 2579 | g: ' ', 2580 | d: ',' 2581 | }, 2582 | zgh_MA: { 2583 | h: 'zgh' 2584 | }, 2585 | zh: { 2586 | p: '!#,##0.00', 2587 | g: ',', 2588 | d: '.' 2589 | }, 2590 | zh_Hans: { 2591 | h: 'zh' 2592 | }, 2593 | zh_Hans_CN: { 2594 | h: 'zh' 2595 | }, 2596 | zh_Hans_HK: { 2597 | h: 'zh' 2598 | }, 2599 | zh_Hans_MO: { 2600 | h: 'zh' 2601 | }, 2602 | zh_Hans_SG: { 2603 | h: 'zh' 2604 | }, 2605 | zh_Hant: { 2606 | h: 'zh' 2607 | }, 2608 | zh_Hant_HK: { 2609 | h: 'zh' 2610 | }, 2611 | zh_Hant_MO: { 2612 | h: 'zh' 2613 | }, 2614 | zh_Hant_TW: { 2615 | h: 'zh' 2616 | }, 2617 | zu: { 2618 | p: '!#,##0.00', 2619 | g: ',', 2620 | d: '.' 2621 | }, 2622 | zu_ZA: { 2623 | h: 'zu' 2624 | } 2625 | }; 2626 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | 4 | import locales from './locales'; 5 | import defaultLocales from './default-locales'; 6 | import symbols from './symbols'; 7 | 8 | const ReactCurrencyFormatter = props => { 9 | const getFormatter = options => { 10 | let locale, currency, symbol, pattern, decimal, group; 11 | 12 | // Helper Functions 13 | const isUndefined = o => typeof o === 'undefined'; 14 | 15 | const toFixed = (n, precision) => (+(Math.round(+(n + 'e' + precision)) + 'e' + -precision)).toFixed(precision); 16 | 17 | // Perform checks on inputs and set up defaults as needed (defaults to en, USD) 18 | if(isUndefined(options)) { options = {}; } 19 | 20 | currency = isUndefined(options.currency)? 'USD' : options.currency.toUpperCase(); 21 | locale = isUndefined(options.locale) ? locales[defaultLocales[currency]] : locales[options.locale]; 22 | 23 | if (!isUndefined(locale.h)) locale = locales[locale.h]; // Locale inheritance 24 | 25 | symbol = isUndefined(options.symbol) ? symbols[currency] : options.symbol; 26 | 27 | if (isUndefined(symbol)) symbol = currency; // In case we don't have the symbol, just use the ccy code 28 | 29 | pattern = isUndefined(options.pattern) ? locale.p : options.pattern; 30 | decimal = isUndefined(options.decimal) ? locale.d : options.decimal; 31 | group = isUndefined(options.group) ? locale.g : options.group; 32 | 33 | //console.log(locale); 34 | 35 | // encodePattern Function - returns a few simple characteristics of the pattern provided 36 | const encodePattern = pattern => { 37 | let decimalPlaces = 0; 38 | let frontPadding = ''; 39 | let backPadding = ''; 40 | let groupLengths = []; 41 | 42 | //console.log(pattern); 43 | 44 | let patternStarted = false; 45 | let decimalsStarted = false; 46 | let patternEnded = false; 47 | 48 | let currentGroupLength = 0; 49 | let zeroLength = 0; 50 | 51 | for(var i = 0; i < pattern.length; ++i ) { 52 | var c = pattern[i]; 53 | 54 | if(!patternStarted && ['#','0',',','.'].indexOf(c) > -1) { 55 | patternStarted = true; 56 | } 57 | 58 | if(!patternStarted) { frontPadding += c; } 59 | 60 | switch (c) { 61 | case '#': 62 | ++currentGroupLength; 63 | break; 64 | 65 | case '0': 66 | if(decimalsStarted) { ++decimalPlaces; } 67 | else { ++currentGroupLength; ++zeroLength; } 68 | break; 69 | 70 | case ',': 71 | groupLengths.push(currentGroupLength); 72 | currentGroupLength = 0; 73 | break; 74 | 75 | case '.': 76 | groupLengths.push(currentGroupLength); 77 | decimalsStarted = true; 78 | break; 79 | } 80 | 81 | if(patternStarted && !(['#','0',',','.'].indexOf(c) > -1)) { 82 | patternEnded = true; 83 | 84 | if(!decimalsStarted) { 85 | groupLengths.push(currentGroupLength); 86 | } 87 | } 88 | 89 | if(patternEnded) { backPadding += c; } 90 | } 91 | 92 | const encodedPattern = { 93 | decimalPlaces, 94 | frontPadding, 95 | backPadding, 96 | groupLengths, 97 | zeroLength 98 | }; 99 | 100 | return encodedPattern; 101 | }; 102 | 103 | // Zero Padding helper function 104 | var pad = (n, width) => { 105 | n = n + ''; 106 | return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n; 107 | } 108 | 109 | // Format function 110 | const format = (n, f) => { 111 | var formattedNumber = toFixed(Math.abs(n), f.decimalPlaces); 112 | 113 | var splitNumber = formattedNumber.split("."); 114 | 115 | // i.e. we actually have some sort of grouping in the values 116 | if(f.groupLengths.length > 1) { 117 | var segment = ""; 118 | var cursor = splitNumber[0].length; 119 | var groupIndex = f.groupLengths.length - 1; 120 | 121 | while(cursor > 0) { 122 | if(groupIndex <= 0) { groupIndex = 1; } // Always reset to the first group length if the number is big 123 | 124 | var currentGroupLength = f.groupLengths[groupIndex]; 125 | 126 | var start = cursor-currentGroupLength; 127 | 128 | segment = splitNumber[0].substring(start, cursor) + f.group + segment; 129 | 130 | cursor -= currentGroupLength; 131 | 132 | --groupIndex; 133 | } 134 | 135 | segment = segment.substring(0, segment.length-1); 136 | //console.log(segment); 137 | } 138 | 139 | if(segment.length < f.zeroLength) { segment = pad(segment, f.zeroLength); } 140 | 141 | var formattedNumber = f.frontPadding + segment + ( isUndefined(splitNumber[1]) ? '' : (f.decimal + splitNumber[1]) ) + f.backPadding; 142 | 143 | return formattedNumber.replace('!', symbol); 144 | }; 145 | 146 | // Use encode function to work out pattern 147 | var patternArray = pattern.split(";"); 148 | var positiveFormat = encodePattern(patternArray[0]); 149 | 150 | positiveFormat.symbol = symbol; 151 | positiveFormat.decimal = decimal; 152 | positiveFormat.group = group; 153 | 154 | var negativeFormat = isUndefined(patternArray[1]) ? encodePattern("-" + patternArray[0]) : encodePattern(patternArray[1]); 155 | 156 | negativeFormat.symbol = symbol; 157 | negativeFormat.decimal = decimal; 158 | negativeFormat.group = group; 159 | 160 | var zero = isUndefined(patternArray[2]) ? format(0, positiveFormat) : patternArray[2]; 161 | 162 | if(!isUndefined(patternArray[2])) { zeroFormat = patternArray[2]; } 163 | 164 | return n => { 165 | let formattedNumber; 166 | n = Number(n); 167 | if(n > 0) { formattedNumber = format(n, positiveFormat); } 168 | else if(n == 0) { formattedNumber = zero.replace('!', symbol); } 169 | else { formattedNumber = format(n, negativeFormat); } 170 | return formattedNumber; 171 | }; 172 | }; 173 | 174 | const format = (number, options) => { 175 | const formatterFunction = getFormatter(options); 176 | 177 | return formatterFunction(number); 178 | } 179 | 180 | const { 181 | quantity, 182 | currency, 183 | symbol, 184 | locale, 185 | decimal, 186 | group, 187 | pattern 188 | } = props; 189 | 190 | return (format(props.quantity, { 191 | currency, 192 | symbol, 193 | locale, 194 | decimal, 195 | group, 196 | pattern 197 | })); 198 | }; 199 | 200 | ReactCurrencyFormatter.defaultProps = { 201 | currency: 'USD' 202 | }; 203 | 204 | ReactCurrencyFormatter.propTypes = { 205 | quantity: PropTypes.number.isRequired, 206 | currency: PropTypes.string, 207 | symbol: PropTypes.string, 208 | locale: PropTypes.string, 209 | decimal: PropTypes.string, 210 | group: PropTypes.string, 211 | pattern: PropTypes.string 212 | }; 213 | 214 | export default ReactCurrencyFormatter; 215 | -------------------------------------------------------------------------------- /src/main.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Enzyme, { shallow } from 'enzyme'; 3 | import Adapter from 'enzyme-adapter-react-16'; 4 | 5 | import Currency from './main'; 6 | 7 | Enzyme.configure({ adapter: new Adapter() }); 8 | 9 | it('renders without crashing', () => { 10 | const wrapper = shallow( 11 | 14 | ); 15 | 16 | expect(wrapper.text()).toEqual('$89.00'); 17 | }); 18 | -------------------------------------------------------------------------------- /src/symbols.js: -------------------------------------------------------------------------------- 1 | export default { 2 | 'AED': 'د.إ', 3 | 'AFN': '؋', 4 | 'ALL': 'L', 5 | 'AMD': 'AMD', 6 | 'ANG': 'ƒ', 7 | 'AOA': 'Kz', 8 | 'ARS': '$', 9 | 'AUD': '$', 10 | 'AWG': 'ƒ', 11 | 'AZN': '₼', 12 | 'BAM': 'KM', 13 | 'BBD': '$', 14 | 'BDT': '৳', 15 | 'BGN': 'лв', 16 | 'BHD': '.د.ب', 17 | 'BIF': 'FBu', 18 | 'BMD': '$', 19 | 'BND': '$', 20 | 'BOB': 'Bs.', 21 | 'BRL': 'R$', 22 | 'BSD': '$', 23 | 'BTC': '฿', 24 | 'BTN': 'Nu.', 25 | 'BWP': 'P', 26 | 'BYR': 'p.', 27 | 'BZD': 'BZ$', 28 | 'CAD': '$', 29 | 'CDF': 'FC', 30 | 'CHF': 'Fr.', 31 | 'CLP': '$', 32 | 'CNY': '¥', 33 | 'COP': '$', 34 | 'CRC': '₡', 35 | 'CUC': '$', 36 | 'CUP': '₱', 37 | 'CVE': '$', 38 | 'CZK': 'Kč', 39 | 'DJF': 'Fdj', 40 | 'DKK': 'kr', 41 | 'DOP': 'RD$', 42 | 'DZD': 'دج', 43 | 'EEK': 'kr', 44 | 'EGP': '£', 45 | 'ERN': 'Nfk', 46 | 'ETB': 'Br', 47 | 'ETH': 'Ξ', 48 | 'EUR': '€', 49 | 'FJD': '$', 50 | 'FKP': '£', 51 | 'GBP': '£', 52 | 'GEL': '₾', 53 | 'GGP': '£', 54 | 'GHC': '₵', 55 | 'GHS': 'GH₵', 56 | 'GIP': '£', 57 | 'GMD': 'D', 58 | 'GNF': 'FG', 59 | 'GTQ': 'Q', 60 | 'GYD': '$', 61 | 'HKD': '$', 62 | 'HNL': 'L', 63 | 'HRK': 'kn', 64 | 'HTG': 'G', 65 | 'HUF': 'Ft', 66 | 'IDR': 'Rp', 67 | 'ILS': '₪', 68 | 'IMP': '£', 69 | 'INR': '₹', 70 | 'IQD': 'ع.د', 71 | 'IRR': '﷼', 72 | 'ISK': 'kr', 73 | 'JEP': '£', 74 | 'JMD': 'J$', 75 | 'JOD': 'JD', 76 | 'JPY': '¥', 77 | 'KES': 'KSh', 78 | 'KGS': 'лв', 79 | 'KHR': '៛', 80 | 'KMF': 'CF', 81 | 'KPW': '₩', 82 | 'KRW': '₩', 83 | 'KWD': 'KD', 84 | 'KYD': '$', 85 | 'KZT': '₸', 86 | 'LAK': '₭', 87 | 'LBP': '£', 88 | 'LKR': '₨', 89 | 'LRD': '$', 90 | 'LSL': 'M', 91 | 'LTC': 'Ł', 92 | 'LTL': 'Lt', 93 | 'LVL': 'Ls', 94 | 'LYD': 'LD', 95 | 'MAD': 'MAD', 96 | 'MDL': 'lei', 97 | 'MGA': 'Ar', 98 | 'MKD': 'ден', 99 | 'MMK': 'K', 100 | 'MNT': '₮', 101 | 'MOP': 'MOP$', 102 | 'MUR': '₨', 103 | 'MVR': 'Rf', 104 | 'MWK': 'MK', 105 | 'MXN': '$', 106 | 'MYR': 'RM', 107 | 'MZN': 'MT', 108 | 'NAD': '$', 109 | 'NGN': '₦', 110 | 'NIO': 'C$', 111 | 'NOK': 'kr', 112 | 'NPR': '₨', 113 | 'NZD': '$', 114 | 'OMR': '﷼', 115 | 'PAB': 'B/.', 116 | 'PEN': 'S/.', 117 | 'PGK': 'K', 118 | 'PHP': '₱', 119 | 'PKR': '₨', 120 | 'PLN': 'zł', 121 | 'PYG': 'Gs', 122 | 'QAR': '﷼', 123 | 'RMB': '¥', 124 | 'RON': 'lei', 125 | 'RSD': 'Дин.', 126 | 'RUB': '₽', 127 | 'RWF': 'R₣', 128 | 'SAR': '﷼', 129 | 'SBD': '$', 130 | 'SCR': '₨', 131 | 'SDG': 'ج.س.', 132 | 'SEK': 'kr', 133 | 'SGD': '$', 134 | 'SHP': '£', 135 | 'SLL': 'Le', 136 | 'SOS': 'S', 137 | 'SRD': '$', 138 | 'SSP': '£', 139 | 'STD': 'Db', 140 | 'SVC': '$', 141 | 'SYP': '£', 142 | 'SZL': 'E', 143 | 'THB': '฿', 144 | 'TJS': 'SM', 145 | 'TMT': 'T', 146 | 'TND': 'د.ت', 147 | 'TOP': 'T$', 148 | 'TRL': '₤', 149 | 'TRY': '₺', 150 | 'TTD': 'TT$', 151 | 'TVD': '$', 152 | 'TWD': 'NT$', 153 | 'TZS': 'TSh', 154 | 'UAH': '₴', 155 | 'UGX': 'USh', 156 | 'USD': '$', 157 | 'UYU': '$U', 158 | 'UZS': 'лв', 159 | 'VEF': 'Bs', 160 | 'VND': '₫', 161 | 'VUV': 'VT', 162 | 'WST': 'WS$', 163 | 'XAF': 'FCFA', 164 | 'XBT': 'Ƀ', 165 | 'XCD': '$', 166 | 'XOF': 'CFA', 167 | 'XPF': '₣', 168 | 'YER': '﷼', 169 | 'ZAR': 'R', 170 | 'ZWD': 'Z$' 171 | } 172 | -------------------------------------------------------------------------------- /stories/index.stories.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { storiesOf } from '@storybook/react'; 3 | import { withInfo } from '@storybook/addon-info'; 4 | import { withKnobs, text, boolean, number, select } from '@storybook/addon-knobs/react'; 5 | 6 | import values from 'lodash.values'; 7 | 8 | import symbolsArray from '../src/symbols' 9 | import defaultLocales from '../src/default-locales'; 10 | 11 | import Currency from '../src/main'; 12 | 13 | const stories = storiesOf('Currency Formatter', module); 14 | stories.addDecorator((story, context) => withInfo('common info')(story)(context)); 15 | stories.addDecorator(withKnobs); 16 | 17 | const currencyList = {}; 18 | Object.keys(symbolsArray).map(currency => currencyList[currency] = currency); 19 | 20 | const locales = {}; 21 | values(defaultLocales).map(locale => locales[locale] = locale); 22 | 23 | stories.add('Default', () => ( 24 | 32 | )); 33 | 34 | stories.add('EUR Currency', () => ( 35 | 39 | )); 40 | 41 | stories.add('GBP Currency', () => ( 42 | 46 | )); 47 | 48 | stories.add('Customized symbol', () => ( 49 | 53 | )); 54 | 55 | stories.add('Changing pattern', () => ( 56 | 60 | )); 61 | --------------------------------------------------------------------------------