twitter_cldr
Version:
JavaScript implementation of the ICU (International Components for Unicode) that uses the Common Locale Data Repository to format dates, plurals, and more. Based on twitter-cldr-rb
966 lines (860 loc) • 239 kB
JavaScript
/*
// Copyright 2012 Twitter, Inc
// http://www.apache.org/licenses/LICENSE-2.0
// TwitterCLDR (JavaScript) v3.3.0
// Authors: Cameron Dutro [@camertron]
Kirill Lashuk [@KL_7]
portions by Sven Fuchs [@svenfuchs]
// Homepage: https://twitter.com
// Description: Provides date, time, number, and list formatting functionality for various Twitter-supported locales in Javascript.
*/
/*-module-*/
/*_lib/twitter_cldr_*/
(function() {
var TwitterCldr, get_with_data_isolation, key, obj, proxy_or_primitive, root, with_data_isolation,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
__slice = [].slice;
TwitterCldr = {};
TwitterCldr.Utilities = (function() {
function Utilities() {}
Utilities.from_char_code = function(code_point) {
if (code_point > 0xFFFF) {
code_point -= 0x10000;
return String.fromCharCode(0xD800 + (code_point >> 10), 0xDC00 + (code_point & 0x3FF));
} else {
return String.fromCharCode(code_point);
}
};
Utilities.char_code_at = function(str, idx) {
var code, end, hi, li, low, surrogatePairs;
str += '';
end = str.length;
surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
while (surrogatePairs.exec(str) !== null) {
li = surrogatePairs.lastIndex;
if (li - 2 < idx) {
idx += 1;
} else {
break;
}
}
if ((idx >= end) || (idx < 0)) {
return NaN;
}
code = str.charCodeAt(idx);
if ((0xD800 <= code) && (code <= 0xDBFF)) {
hi = code;
low = str.charCodeAt(idx + 1);
return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
}
return code;
};
Utilities.unpack_string = function(str) {
var code_point, idx, result, _i, _ref;
result = [];
for (idx = _i = 0, _ref = str.length; 0 <= _ref ? _i < _ref : _i > _ref; idx = 0 <= _ref ? ++_i : --_i) {
code_point = this.char_code_at(str, idx);
if (!code_point) {
break;
}
result.push(code_point);
}
return result;
};
Utilities.pack_array = function(char_arr) {
var cur_char;
return ((function() {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = char_arr.length; _i < _len; _i++) {
cur_char = char_arr[_i];
_results.push(this.from_char_code(cur_char));
}
return _results;
}).call(this)).join("");
};
Utilities.arraycopy = function(orig, orig_index, dest, dest_index, length) {
var count, elem, _i, _len, _ref;
_ref = orig.slice(orig_index, orig_index + length);
for (count = _i = 0, _len = _ref.length; _i < _len; count = ++_i) {
elem = _ref[count];
dest[dest_index + count] = elem;
}
};
Utilities.max = function(arr) {
var elem, i, max, start_index, _i, _j, _len, _ref;
max = null;
for (start_index = _i = 0, _len = arr.length; _i < _len; start_index = ++_i) {
elem = arr[start_index];
if (elem != null) {
max = elem;
break;
}
}
for (i = _j = start_index, _ref = arr.length; start_index <= _ref ? _j <= _ref : _j >= _ref; i = start_index <= _ref ? ++_j : --_j) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
};
Utilities.min = function(arr) {
var elem, i, min, start_index, _i, _j, _len, _ref;
min = null;
for (start_index = _i = 0, _len = arr.length; _i < _len; start_index = ++_i) {
elem = arr[start_index];
if (elem != null) {
min = elem;
break;
}
}
for (i = _j = start_index, _ref = arr.length; start_index <= _ref ? _j <= _ref : _j >= _ref; i = start_index <= _ref ? ++_j : --_j) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
};
Utilities.is_even = function(num) {
return num % 2 === 0;
};
Utilities.is_odd = function(num) {
return num % 2 === 1;
};
Utilities.remove_duplicates = function(arr) {
return arr.reduce((function(u, elem) {
if (u.indexOf(elem) < 0) {
u.push(elem);
}
return u;
}), []);
};
Utilities.regex_escape = function(s) {
return s.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
};
Utilities.trim_string = function(s) {
return s.replace(/^\s+|\s+$/g, '');
};
Utilities.clone = function(obj) {
var flags, key, newInstance;
if ((obj == null) || typeof obj !== 'object') {
return obj;
}
if (obj instanceof Date) {
return new Date(obj.getTime());
}
if (obj instanceof RegExp) {
flags = '';
if (obj.global != null) {
flags += 'g';
}
if (obj.ignoreCase != null) {
flags += 'i';
}
if (obj.multiline != null) {
flags += 'm';
}
if (obj.sticky != null) {
flags += 'y';
}
return new RegExp(obj.source, flags);
}
newInstance = new obj.constructor();
for (key in obj) {
newInstance[key] = this.clone(obj[key]);
}
return newInstance;
};
Utilities.compute_cache_key = function(pieces) {
if ((pieces != null) && pieces.length > 0) {
return pieces.join("|");
}
return null;
};
Utilities.traverse_object = function(obj, path) {
var key, value, _i, _len;
value = obj;
if (path.length === 0) {
return null;
}
for (_i = 0, _len = path.length; _i < _len; _i++) {
key = path[_i];
if ((value != null) && value.hasOwnProperty(key)) {
value = value[key];
} else {
return null;
}
}
return value;
};
return Utilities;
})();
TwitterCldr.NotImplementedException = (function(_super) {
__extends(NotImplementedException, _super);
function NotImplementedException(message) {
this.message = message != null ? message : "";
NotImplementedException.__super__.constructor.apply(this, arguments);
}
return NotImplementedException;
})(Error);
TwitterCldr.Settings = (function() {
function Settings() {}
Settings.is_rtl = function() {
return TwitterCldr.get_data().Settings.is_rtl;
};
Settings.locale = function() {
return TwitterCldr.get_data().Settings.locale;
};
return Settings;
})();
TwitterCldr.PluralRules = (function() {
function PluralRules() {}
PluralRules.runtime = (function(context) {
this.buildArgsFor = function(num_str) {
return [
this.n(num_str), this.i(num_str), this.f(num_str),
this.t(num_str), this.v(num_str), this.w(num_str)
];
}
this.n = function(str) {
if (str.indexOf('.') > -1) {
return this.toNum(this._n(str).replace(/([0]+\.$)/, ''));
} else {
return this.toNum(this._n(str));
}
}
this.i = function(str) {
return this.toNum(this._i(str));
}
this.f = function(str) {
return this.toNum(this._f(str));
}
this.t = function(str) {
return this.toNum(this._t(str));
}
this.v = function(str) {
return this.toNum(this._v(str));
}
this.w = function(str) {
return this.toNum(this._w(str));
}
// private
this.toNum = function(str) {
if (str.length == 0) {
return 0;
} else {
return str.indexOf('.') > -1 ? parseFloat(str) : parseInt(str);
}
}
// absolute value of the source number (integer and decimals).
this._n = function(str) {
return /(-)?(.*)/.exec(str)[2];
}
/// integer digits of n.
this._i = function(str) {
return /([\d]+)(\..*)?/.exec(this._n(str))[1];
}
// visible fractional digits in n, with trailing zeros.
this._f = function(str) {
return /([\d]+\.?)(.*)/.exec(this._n(str))[2];
}
// visible fractional digits in n, without trailing zeros.
this._t = function(str) {
return this._f(str).replace(/([0]+$)/, '');
}
// number of visible fraction digits in n, with trailing zeros.
this._v = function(str) {
return this._f(str).length.toString();
}
// number of visible fraction digits in n, without trailing zeros.
this._w = function(str) {
return this._t(str).length.toString();
}
return this;
}).call({})
;
PluralRules.data = function() {
return TwitterCldr.get_data().PluralRules;
};
PluralRules.all = function(type) {
if (type == null) {
type = 'cardinal';
}
return this.data().names[type];
};
PluralRules.rule_for = function(number, type) {
var error;
if (type == null) {
type = 'cardinal';
}
try {
return eval(this.data().rules[type])(number.toString(), this.runtime);
} catch (_error) {
error = _error;
return "other";
}
};
return PluralRules;
})();
TwitterCldr.TimespanFormatter = (function() {
function TimespanFormatter() {
this.approximate_multiplier = 0.75;
this.default_type = "default";
this.time_in_seconds = {
"second": 1,
"minute": 60,
"hour": 3600,
"day": 86400,
"week": 604800,
"month": 2629743.83,
"year": 31556926
};
}
TimespanFormatter.data = function() {
return TwitterCldr.get_data().TimespanFormatter;
};
TimespanFormatter.prototype.patterns = function() {
return this.constructor.data().patterns;
};
TimespanFormatter.prototype.format = function(seconds, fmt_options) {
var key, number, obj, options;
if (fmt_options == null) {
fmt_options = {};
}
options = {};
for (key in fmt_options) {
obj = fmt_options[key];
options[key] = obj;
}
options["direction"] || (options["direction"] = (seconds < 0 ? "ago" : "until"));
if (options["unit"] === null || options["unit"] === void 0) {
options["unit"] = this.calculate_unit(Math.abs(seconds), options);
}
options["type"] || (options["type"] = this.default_type);
options["number"] = this.calculate_time(Math.abs(seconds), options["unit"]);
number = this.calculate_time(Math.abs(seconds), options["unit"]);
options["rule"] = TwitterCldr.PluralRules.rule_for(number);
return this.patterns()[options["direction"]][options["unit"]][options["type"]][options["rule"]].replace(/\{[0-9]\}/, number.toString());
};
TimespanFormatter.prototype.calculate_unit = function(seconds, unit_options) {
var key, multiplier, obj, options;
if (unit_options == null) {
unit_options = {};
}
options = {};
for (key in unit_options) {
obj = unit_options[key];
options[key] = obj;
}
if (options.approximate == null) {
options["approximate"] = false;
}
multiplier = options.approximate ? this.approximate_multiplier : 1;
if (seconds < (this.time_in_seconds.minute * multiplier)) {
return "second";
} else if (seconds < (this.time_in_seconds.hour * multiplier)) {
return "minute";
} else if (seconds < (this.time_in_seconds.day * multiplier)) {
return "hour";
} else if (seconds < (this.time_in_seconds.week * multiplier)) {
return "day";
} else if (seconds < (this.time_in_seconds.month * multiplier)) {
return "week";
} else if (seconds < (this.time_in_seconds.year * multiplier)) {
return "month";
} else {
return "year";
}
};
TimespanFormatter.prototype.calculate_time = function(seconds, unit) {
return Math.round(seconds / this.time_in_seconds[unit]);
};
return TimespanFormatter;
})();
TwitterCldr.DateTimeFormatter = (function() {
function DateTimeFormatter() {
this.weekday_keys = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
this.methods = {
'G': 'era',
'y': 'year',
'Y': 'year_of_week_of_year',
'Q': 'quarter',
'q': 'quarter_stand_alone',
'M': 'month',
'L': 'month_stand_alone',
'w': 'week_of_year',
'W': 'week_of_month',
'd': 'day',
'D': 'day_of_month',
'F': 'day_of_week_in_month',
'E': 'weekday',
'e': 'weekday_local',
'c': 'weekday_local_stand_alone',
'a': 'period',
'h': 'hour',
'H': 'hour',
'K': 'hour',
'k': 'hour',
'm': 'minute',
's': 'second',
'S': 'second_fraction',
'z': 'timezone',
'Z': 'timezone',
'v': 'timezone_generic_non_location',
'V': 'timezone_metazone'
};
}
DateTimeFormatter.data = function() {
return TwitterCldr.get_data().DateTimeFormatter;
};
DateTimeFormatter.prototype.tokens = function() {
return this.constructor.data().tokens;
};
DateTimeFormatter.prototype.format = function(obj, options) {
var format_token, token, tokens;
format_token = (function(_this) {
return function(token) {
var result;
result = "";
switch (token.type) {
case "pattern":
return _this.result_for_token(token, obj);
default:
return token.value.replace(/'([^']+)'/g, '$1');
}
};
})(this);
tokens = this.get_tokens(obj, options);
return ((function() {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = tokens.length; _i < _len; _i++) {
token = tokens[_i];
_results.push(format_token(token));
}
return _results;
})()).join("");
};
DateTimeFormatter.prototype.get_tokens = function(obj, options) {
var format, type;
format = options.format || "date_time";
type = options.type || "default";
if (format === "additional") {
return this.tokens()["date_time"][format][this.additional_format_selector().find_closest(options.type)];
} else {
return this.tokens()[format][type];
}
};
DateTimeFormatter.prototype.result_for_token = function(token, date) {
return this[this.methods[token.value[0]]](date, token.value, token.value.length);
};
DateTimeFormatter.prototype.additional_format_selector = function() {
return new TwitterCldr.AdditionalDateFormatSelector(this.tokens()["date_time"]["additional"]);
};
DateTimeFormatter.additional_formats = function() {
return new TwitterCldr.DateTimeFormatter().additional_format_selector().patterns();
};
DateTimeFormatter.prototype.era = function(date, pattern, length) {
var choices, index, result;
switch (length) {
case 0:
choices = ["", ""];
break;
case 1:
case 2:
case 3:
choices = TwitterCldr.Calendar.calendar()["eras"]["abbr"];
break;
default:
choices = TwitterCldr.Calendar.calendar()["eras"]["name"];
}
index = date.getFullYear() < 0 ? 0 : 1;
result = choices[index];
if (result != null) {
return result;
} else {
return this.era(date, pattern.slice(0, -1), length - 1);
}
};
DateTimeFormatter.prototype.year = function(date, pattern, length) {
var year;
year = date.getFullYear().toString();
if (length === 2) {
if (year.length !== 1) {
year = year.slice(-2);
}
}
if (length > 1) {
year = ("0000" + year).slice(-length);
}
return year;
};
DateTimeFormatter.prototype.year_of_week_of_year = function(date, pattern, length) {
throw 'not implemented';
};
DateTimeFormatter.prototype.day_of_week_in_month = function(date, pattern, length) {
throw 'not implemented';
};
DateTimeFormatter.prototype.quarter = function(date, pattern, length) {
var quarter;
quarter = ((date.getMonth() / 3) | 0) + 1;
switch (length) {
case 1:
return quarter.toString();
case 2:
return ("0000" + quarter.toString()).slice(-length);
case 3:
return TwitterCldr.Calendar.quarters({
format: 'format',
names_form: 'abbreviated'
})[quarter];
case 4:
return TwitterCldr.Calendar.quarters({
format: 'format',
names_form: 'wide'
})[quarter];
}
};
DateTimeFormatter.prototype.quarter_stand_alone = function(date, pattern, length) {
var quarter;
quarter = (date.getMonth() - 1) / 3 + 1;
switch (length) {
case 1:
return quarter.toString();
case 2:
return ("0000" + quarter.toString()).slice(-length);
case 3:
throw 'not yet implemented (requires cldr\'s "multiple inheritance")';
break;
case 4:
throw 'not yet implemented (requires cldr\'s "multiple inheritance")';
break;
case 5:
return TwitterCldr.Calendar.quarters({
format: 'stand-alone',
names_form: 'narrow'
})[quarter];
}
};
DateTimeFormatter.prototype.month = function(date, pattern, length) {
var month, month_str;
month = date.getMonth();
month_str = (month + 1).toString();
switch (length) {
case 1:
return month_str;
case 2:
return ("0000" + month_str).slice(-length);
case 3:
return TwitterCldr.Calendar.months({
format: 'format',
names_form: 'abbreviated'
})[month];
case 4:
return TwitterCldr.Calendar.months({
format: 'format',
names_form: 'wide'
})[month];
case 5:
throw 'not yet implemented (requires cldr\'s "multiple inheritance")';
break;
default:
throw "Unknown date format";
}
};
DateTimeFormatter.prototype.month_stand_alone = function(date, pattern, length) {
var month, month_str;
month = date.getMonth();
month_str = (month + 1).toString();
switch (length) {
case 1:
return month_str;
case 2:
return ("0000" + month_str).slice(-length);
case 3:
return TwitterCldr.Calendar.months({
format: 'stand-alone',
names_form: 'abbreviated'
})[month];
case 4:
return TwitterCldr.Calendar.months({
format: 'stand-alone',
names_form: 'wide'
})[month];
case 5:
return TwitterCldr.Calendar.months({
format: 'stand-alone',
names_form: 'narrow'
})[month];
default:
throw "Unknown date format";
}
};
DateTimeFormatter.prototype.day = function(date, pattern, length) {
switch (length) {
case 1:
return date.getDate().toString();
case 2:
return ("0000" + date.getDate().toString()).slice(-length);
}
};
DateTimeFormatter.prototype.weekday = function(date, pattern, length) {
var key;
key = this.weekday_keys[date.getDay()];
switch (length) {
case 1:
case 2:
case 3:
return TwitterCldr.Calendar.weekdays({
format: 'format',
names_form: 'abbreviated'
})[key];
case 4:
return TwitterCldr.Calendar.weekdays({
format: 'format',
names_form: 'wide'
})[key];
case 5:
return TwitterCldr.Calendar.weekdays({
format: 'stand-alone',
names_form: 'narrow'
})[key];
}
};
DateTimeFormatter.prototype.weekday_local = function(date, pattern, length) {
var day;
switch (length) {
case 1:
case 2:
day = date.getDay();
if (day === 0) {
return "7";
} else {
return day.toString();
}
break;
default:
return this.weekday(date, pattern, length);
}
};
DateTimeFormatter.prototype.weekday_local_stand_alone = function(date, pattern, length) {
switch (length) {
case 1:
return this.weekday_local(date, pattern, length);
default:
return this.weekday(date, pattern, length);
}
};
DateTimeFormatter.prototype.period = function(time, pattern, length) {
if (time.getHours() > 11) {
return TwitterCldr.Calendar.periods({
format: 'format',
names_form: 'wide'
})["pm"];
} else {
return TwitterCldr.Calendar.periods({
format: 'format',
names_form: 'wide'
})["am"];
}
};
DateTimeFormatter.prototype.hour = function(time, pattern, length) {
var hour;
hour = time.getHours();
switch (pattern[0]) {
case 'h':
if (hour > 12) {
hour = hour - 12;
} else if (hour === 0) {
hour = 12;
}
break;
case 'K':
if (hour > 11) {
hour = hour - 12;
}
break;
case 'k':
if (hour === 0) {
hour = 24;
}
}
if (length === 1) {
return hour.toString();
} else {
return ("000000" + hour.toString()).slice(-length);
}
};
DateTimeFormatter.prototype.minute = function(time, pattern, length) {
if (length === 1) {
return time.getMinutes().toString();
} else {
return ("000000" + time.getMinutes().toString()).slice(-length);
}
};
DateTimeFormatter.prototype.second = function(time, pattern, length) {
if (length === 1) {
return time.getSeconds().toString();
} else {
return ("000000" + time.getSeconds().toString()).slice(-length);
}
};
DateTimeFormatter.prototype.second_fraction = function(time, pattern, length) {
if (length > 6) {
throw 'can not use the S format with more than 6 digits';
}
return ("000000" + Math.round(Math.pow(time.getMilliseconds() * 100.0, 6 - length)).toString()).slice(-length);
};
DateTimeFormatter.prototype.timezone = function(time, pattern, length) {
var hours, minutes, offset, offsetString, sign;
offset = time.getTimezoneOffset();
hours = ("00" + (Math.floor(Math.abs(offset) / 60)).toString()).slice(-2);
minutes = ("00" + (Math.abs(offset) % 60).toString()).slice(-2);
sign = offset > 0 ? "-" : "+";
offsetString = sign + hours + ":" + minutes;
switch (length) {
case 1:
case 2:
case 3:
return offsetString;
default:
return "UTC" + offsetString;
}
};
DateTimeFormatter.prototype.timezone_generic_non_location = function(time, pattern, length) {
throw 'not yet implemented (requires timezone translation data")';
};
return DateTimeFormatter;
})();
TwitterCldr.AdditionalDateFormatSelector = (function() {
function AdditionalDateFormatSelector(pattern_hash) {
this.pattern_hash = pattern_hash;
}
AdditionalDateFormatSelector.prototype.find_closest = function(goal_pattern) {
var key, min_key, min_rank, rank, ranks;
if ((goal_pattern == null) || goal_pattern.replace(/^\s+|\s+$/g, "").length === 0) {
return null;
} else {
ranks = this.rank(goal_pattern);
min_rank = 100;
min_key = null;
for (key in ranks) {
rank = ranks[key];
if (rank < min_rank) {
min_rank = rank;
min_key = key;
}
}
return min_key;
}
};
AdditionalDateFormatSelector.prototype.patterns = function() {
var key, _results;
_results = [];
for (key in this.pattern_hash) {
_results.push(key);
}
return _results;
};
AdditionalDateFormatSelector.prototype.separate = function(pattern_key) {
var cur_char, last_char, result, _i, _len;
last_char = "";
result = [];
for (_i = 0, _len = pattern_key.length; _i < _len; _i++) {
cur_char = pattern_key[_i];
if (cur_char === last_char) {
result[result.length - 1] += cur_char;
} else {
result.push(cur_char);
}
last_char = cur_char;
}
return result;
};
AdditionalDateFormatSelector.prototype.all_separated_patterns = function() {
var key, _results;
_results = [];
for (key in this.pattern_hash) {
_results.push(this.separate(key));
}
return _results;
};
AdditionalDateFormatSelector.prototype.score = function(entities, goal_entities) {
var score;
score = this.exist_score(entities, goal_entities) * 2;
score += this.position_score(entities, goal_entities);
return score + this.count_score(entities, goal_entities);
};
AdditionalDateFormatSelector.prototype.position_score = function(entities, goal_entities) {
var found, goal_entity, index, sum;
sum = 0;
for (index in goal_entities) {
goal_entity = goal_entities[index];
found = entities.indexOf(goal_entity);
if (found > -1) {
sum += Math.abs(found - index);
}
}
return sum;
};
AdditionalDateFormatSelector.prototype.exist_score = function(entities, goal_entities) {
var count, entity, goal_entity, _i, _len;
count = 0;
for (_i = 0, _len = goal_entities.length; _i < _len; _i++) {
goal_entity = goal_entities[_i];
if (!(((function() {
var _j, _len1, _results;
_results = [];
for (_j = 0, _len1 = entities.length; _j < _len1; _j++) {
entity = entities[_j];
if (entity[0] === goal_entity[0]) {
_results.push(entity);
}
}
return _results;
})()).length > 0)) {
count += 1;
}
}
return count;
};
AdditionalDateFormatSelector.prototype.count_score = function(entities, goal_entities) {
var entity, found_entity, goal_entity, sum, _i, _len;
sum = 0;
for (_i = 0, _len = goal_entities.length; _i < _len; _i++) {
goal_entity = goal_entities[_i];
found_entity = ((function() {
var _j, _len1, _results;
_results = [];
for (_j = 0, _len1 = entities.length; _j < _len1; _j++) {
entity = entities[_j];
if (entity[0] === goal_entity[0]) {
_results.push(entity);
}
}
return _results;
})())[0];
if (found_entity != null) {
sum += Math.abs(found_entity.length - goal_entity.length);
}
}
return sum;
};
AdditionalDateFormatSelector.prototype.rank = function(goal_pattern) {
var result, separated_goal_pattern, separated_pattern, _i, _len, _ref;
separated_goal_pattern = this.separate(goal_pattern);
result = {};
_ref = this.all_separated_patterns();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
separated_pattern = _ref[_i];
result[separated_pattern.join("")] = this.score(separated_pattern, separated_goal_pattern);
}
return result;
};
return AdditionalDateFormatSelector;
})();
TwitterCldr.Currencies = (function() {
function Currencies() {}
Currencies.currencies = {"ADP":{"currency":"ADP","name":"Andorran peseta","cldr_symbol":"ADP","symbol":"ADP","code_points":[65,68,80]},"AED":{"currency":"AED","name":"UAE dirham","cldr_symbol":"AED","symbol":"AED","code_points":[65,69,68]},"AFA":{"currency":"AFA","name":"Afghan afghani (1927–2002)","cldr_symbol":"AFA","symbol":"AFA","code_points":[65,70,65]},"AFN":{"currency":"AFN","name":"Afghan Afghani","cldr_symbol":"AFN","symbol":"؋","code_points":[1547]},"ALK":{"currency":"ALK","name":"Albanian lek (1946–1965)","cldr_symbol":"ALK","symbol":"ALK","code_points":[65,76,75]},"ALL":{"currency":"ALL","name":"Albanian lek","cldr_symbol":"ALL","symbol":"LEK","code_points":[76,69,75]},"AMD":{"currency":"AMD","name":"Armenian dram","cldr_symbol":"AMD","symbol":"AMD","code_points":[65,77,68]},"ANG":{"currency":"ANG","name":"Netherlands Antillean guilder","cldr_symbol":"ANG","symbol":"ƒ","code_points":[402]},"AOA":{"currency":"AOA","name":"Angolan kwanza","cldr_symbol":"Kz","symbol":"Kz","code_points":[75,122]},"AOK":{"currency":"AOK","name":"Angolan kwanza (1977–1991)","cldr_symbol":"AOK","symbol":"AOK","code_points":[65,79,75]},"AON":{"currency":"AON","name":"Angolan new kwanza (1990–2000)","cldr_symbol":"AON","symbol":"AON","code_points":[65,79,78]},"AOR":{"currency":"AOR","name":"Angolan readjusted kwanza (1995–1999)","cldr_symbol":"AOR","symbol":"AOR","code_points":[65,79,82]},"ARA":{"currency":"ARA","name":"Argentine austral","cldr_symbol":"ARA","symbol":"ARA","code_points":[65,82,65]},"ARL":{"currency":"ARL","name":"Argentine peso ley (1970–1983)","cldr_symbol":"ARL","symbol":"ARL","code_points":[65,82,76]},"ARM":{"currency":"ARM","name":"Argentine peso (1881–1970)","cldr_symbol":"ARM","symbol":"ARM","code_points":[65,82,77]},"ARP":{"currency":"ARP","name":"Argentine peso (1983–1985)","cldr_symbol":"ARP","symbol":"ARP","code_points":[65,82,80]},"ARS":{"currency":"ARS","name":"Argentine peso","cldr_symbol":"$","symbol":"$","code_points":[36]},"ATS":{"currency":"ATS","name":"Austrian schilling","cldr_symbol":"ATS","symbol":"ATS","code_points":[65,84,83]},"AUD":{"currency":"AUD","name":"Australian dollar","cldr_symbol":"A$","symbol":"$","code_points":[36]},"AWG":{"currency":"AWG","name":"Aruban florin","cldr_symbol":"AWG","symbol":"ƒ","code_points":[402],"alt_name":"Florins"},"AZM":{"currency":"AZM","name":"Azerbaijani manat (1993–2006)","cldr_symbol":"AZM","symbol":"AZM","code_points":[65,90,77]},"AZN":{"currency":"AZN","name":"Azerbaijani manat","cldr_symbol":"AZN","symbol":"ман","code_points":[1084,1072,1085]},"BAD":{"currency":"BAD","name":"Bosnia-Herzegovina dinar (1992–1994)","cldr_symbol":"BAD","symbol":"BAD","code_points":[66,65,68]},"BAM":{"currency":"BAM","name":"Bosnia-Herzegovina convertible mark","cldr_symbol":"KM","symbol":"KM","code_points":[75,77]},"BAN":{"currency":"BAN","name":"Bosnia-Herzegovina new dinar (1994–1997)","cldr_symbol":"BAN","symbol":"BAN","code_points":[66,65,78]},"BBD":{"currency":"BBD","name":"Barbadian dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"BDT":{"currency":"BDT","name":"Bangladeshi taka","cldr_symbol":"৳","symbol":"৳","code_points":[2547]},"BEC":{"currency":"BEC","name":"Belgian franc (convertible)","cldr_symbol":"BEC","symbol":"BEC","code_points":[66,69,67]},"BEF":{"currency":"BEF","name":"Belgian franc","cldr_symbol":"BEF","symbol":"BEF","code_points":[66,69,70]},"BEL":{"currency":"BEL","name":"Belgian franc (financial)","cldr_symbol":"BEL","symbol":"BEL","code_points":[66,69,76]},"BGL":{"currency":"BGL","name":"Bulgarian hard lev","cldr_symbol":"BGL","symbol":"BGL","code_points":[66,71,76]},"BGM":{"currency":"BGM","name":"Bulgarian socialist lev","cldr_symbol":"BGM","symbol":"BGM","code_points":[66,71,77]},"BGN":{"currency":"BGN","name":"Bulgarian lev","cldr_symbol":"BGN","symbol":"лв","code_points":[1083,1074]},"BGO":{"currency":"BGO","name":"Bulgarian lev (1879–1952)","cldr_symbol":"BGO","symbol":"BGO","code_points":[66,71,79]},"BHD":{"currency":"BHD","name":"Bahraini dinar","cldr_symbol":"BHD","symbol":"BHD","code_points":[66,72,68]},"BIF":{"currency":"BIF","name":"Burundian franc","cldr_symbol":"BIF","symbol":"BIF","code_points":[66,73,70]},"BMD":{"currency":"BMD","name":"Bermudan dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"BND":{"currency":"BND","name":"Brunei dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"BOB":{"currency":"BOB","name":"Bolivian boliviano","cldr_symbol":"Bs","symbol":"$b","code_points":[36,98]},"BOL":{"currency":"BOL","name":"Bolivian boliviano (1863–1963)","cldr_symbol":"BOL","symbol":"BOL","code_points":[66,79,76]},"BOP":{"currency":"BOP","name":"Bolivian peso","cldr_symbol":"BOP","symbol":"BOP","code_points":[66,79,80]},"BOV":{"currency":"BOV","name":"Bolivian mvdol","cldr_symbol":"BOV","symbol":"BOV","code_points":[66,79,86]},"BRB":{"currency":"BRB","name":"Brazilian new cruzeiro (1967–1986)","cldr_symbol":"BRB","symbol":"BRB","code_points":[66,82,66]},"BRC":{"currency":"BRC","name":"Brazilian cruzado (1986–1989)","cldr_symbol":"BRC","symbol":"BRC","code_points":[66,82,67]},"BRE":{"currency":"BRE","name":"Brazilian cruzeiro (1990–1993)","cldr_symbol":"BRE","symbol":"BRE","code_points":[66,82,69]},"BRL":{"currency":"BRL","name":"Brazilian real","cldr_symbol":"R$","symbol":"R$","code_points":[82,36]},"BRN":{"currency":"BRN","name":"Brazilian new cruzado (1989–1990)","cldr_symbol":"BRN","symbol":"BRN","code_points":[66,82,78]},"BRR":{"currency":"BRR","name":"Brazilian cruzeiro (1993–1994)","cldr_symbol":"BRR","symbol":"BRR","code_points":[66,82,82]},"BRZ":{"currency":"BRZ","name":"Brazilian cruzeiro (1942–1967)","cldr_symbol":"BRZ","symbol":"BRZ","code_points":[66,82,90]},"BSD":{"currency":"BSD","name":"Bahamian dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"BTN":{"currency":"BTN","name":"Bhutanese ngultrum","cldr_symbol":"BTN","symbol":"BTN","code_points":[66,84,78]},"BUK":{"currency":"BUK","name":"Burmese kyat","cldr_symbol":"BUK","symbol":"BUK","code_points":[66,85,75]},"BWP":{"currency":"BWP","name":"Botswanan pula","cldr_symbol":"P","symbol":"P","code_points":[80]},"BYB":{"currency":"BYB","name":"Belarusian new ruble (1994–1999)","cldr_symbol":"BYB","symbol":"BYB","code_points":[66,89,66]},"BYR":{"currency":"BYR","name":"Belarusian ruble","cldr_symbol":"р.","symbol":"p.","code_points":[112,46]},"BZD":{"currency":"BZD","name":"Belize dollar","cldr_symbol":"$","symbol":"BZ$","code_points":[66,90,36]},"CAD":{"currency":"CAD","name":"Canadian dollar","cldr_symbol":"CA$","symbol":"$","code_points":[36]},"CDF":{"currency":"CDF","name":"Congolese franc","cldr_symbol":"CDF","symbol":"CDF","code_points":[67,68,70]},"CHE":{"currency":"CHE","name":"WIR euro","cldr_symbol":"CHE","symbol":"CHE","code_points":[67,72,69]},"CHF":{"currency":"CHF","name":"Swiss franc","cldr_symbol":"CHF","symbol":"CHF","code_points":[67,72,70]},"CHW":{"currency":"CHW","name":"WIR franc","cldr_symbol":"CHW","symbol":"CHW","code_points":[67,72,87]},"CLE":{"currency":"CLE","name":"Chilean escudo","cldr_symbol":"CLE","symbol":"CLE","code_points":[67,76,69]},"CLF":{"currency":"CLF","name":"Chilean unit of account (UF)","cldr_symbol":"CLF","symbol":"CLF","code_points":[67,76,70]},"CLP":{"currency":"CLP","name":"Chilean peso","cldr_symbol":"$","symbol":"$","code_points":[36]},"CNX":{"currency":"CNX","name":"Chinese People’s Bank dollar","cldr_symbol":"CNX","symbol":"CNX","code_points":[67,78,88]},"CNY":{"currency":"CNY","name":"Chinese yuan","cldr_symbol":"CN¥","symbol":"¥","code_points":[165]},"COP":{"currency":"COP","name":"Colombian peso","cldr_symbol":"$","symbol":"$","code_points":[36]},"COU":{"currency":"COU","name":"Colombian real value unit","cldr_symbol":"COU","symbol":"COU","code_points":[67,79,85]},"CRC":{"currency":"CRC","name":"Costa Rican colón","cldr_symbol":"₡","symbol":"₡","code_points":[8353]},"CSD":{"currency":"CSD","name":"Serbian dinar (2002–2006)","cldr_symbol":"CSD","symbol":"CSD","code_points":[67,83,68]},"CSK":{"currency":"CSK","name":"Czechoslovak hard koruna","cldr_symbol":"CSK","symbol":"CSK","code_points":[67,83,75]},"CUC":{"currency":"CUC","name":"Cuban convertible peso","cldr_symbol":"$","symbol":"$","code_points":[36]},"CUP":{"currency":"CUP","name":"Cuban peso","cldr_symbol":"$","symbol":"₱","code_points":[8369]},"CVE":{"currency":"CVE","name":"Cape Verdean escudo","cldr_symbol":"CVE","symbol":"CVE","code_points":[67,86,69]},"CYP":{"currency":"CYP","name":"Cypriot pound","cldr_symbol":"CYP","symbol":"CYP","code_points":[67,89,80]},"CZK":{"currency":"CZK","name":"Czech Republic koruna","cldr_symbol":"Kč","symbol":"Kč","code_points":[75,269]},"DDM":{"currency":"DDM","name":"East German mark","cldr_symbol":"DDM","symbol":"DDM","code_points":[68,68,77]},"DEM":{"currency":"DEM","name":"German mark","cldr_symbol":"DEM","symbol":"DEM","code_points":[68,69,77]},"DJF":{"currency":"DJF","name":"Djiboutian franc","cldr_symbol":"DJF","symbol":"DJF","code_points":[68,74,70]},"DKK":{"currency":"DKK","name":"Danish krone","cldr_symbol":"kr","symbol":"kr","code_points":[107,114]},"DOP":{"currency":"DOP","name":"Dominican peso","cldr_symbol":"$","symbol":"RD$","code_points":[82,68,36]},"DZD":{"currency":"DZD","name":"Algerian dinar","cldr_symbol":"DZD","symbol":"DZD","code_points":[68,90,68]},"ECS":{"currency":"ECS","name":"Ecuadorian sucre","cldr_symbol":"ECS","symbol":"ECS","code_points":[69,67,83]},"ECV":{"currency":"ECV","name":"Ecuadorian unit of constant value","cldr_symbol":"ECV","symbol":"ECV","code_points":[69,67,86]},"EEK":{"currency":"EEK","name":"Estonian kroon","cldr_symbol":"EEK","symbol":"kr","code_points":[107,114]},"EGP":{"currency":"EGP","name":"Egyptian pound","cldr_symbol":"E£","symbol":"£","code_points":[163]},"ERN":{"currency":"ERN","name":"Eritrean nakfa","cldr_symbol":"ERN","symbol":"ERN","code_points":[69,82,78]},"ESA":{"currency":"ESA","name":"Spanish peseta (A account)","cldr_symbol":"ESA","symbol":"ESA","code_points":[69,83,65]},"ESB":{"currency":"ESB","name":"Spanish peseta (convertible account)","cldr_symbol":"ESB","symbol":"ESB","code_points":[69,83,66]},"ESP":{"currency":"ESP","name":"Spanish peseta","cldr_symbol":"₧","symbol":"₧","code_points":[8359]},"ETB":{"currency":"ETB","name":"Ethiopian birr","cldr_symbol":"ETB","symbol":"ETB","code_points":[69,84,66]},"EUR":{"currency":"EUR","name":"euro","cldr_symbol":"€","symbol":"€","code_points":[8364]},"FIM":{"currency":"FIM","name":"Finnish markka","cldr_symbol":"FIM","symbol":"FIM","code_points":[70,73,77]},"FJD":{"currency":"FJD","name":"Fijian dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"FKP":{"currency":"FKP","name":"Falkland Islands pound","cldr_symbol":"£","symbol":"£","code_points":[163]},"FRF":{"currency":"FRF","name":"French franc","cldr_symbol":"FRF","symbol":"FRF","code_points":[70,82,70]},"GBP":{"currency":"GBP","name":"British pound sterling","cldr_symbol":"£","symbol":"£","code_points":[163]},"GEK":{"currency":"GEK","name":"Georgian kupon larit","cldr_symbol":"GEK","symbol":"GEK","code_points":[71,69,75]},"GEL":{"currency":"GEL","name":"Georgian lari","cldr_symbol":"GEL","symbol":"GEL","code_points":[71,69,76]},"GHC":{"currency":"GHC","name":"Ghanaian cedi (1979–2007)","cldr_symbol":"GHC","symbol":"GHC","code_points":[71,72,67]},"GHS":{"currency":"GHS","name":"Ghanaian cedi","cldr_symbol":"GHS","symbol":"¢","code_points":[162]},"GIP":{"currency":"GIP","name":"Gibraltar pound","cldr_symbol":"£","symbol":"£","code_points":[163]},"GMD":{"currency":"GMD","name":"Gambian dalasi","cldr_symbol":"GMD","symbol":"GMD","code_points":[71,77,68]},"GNF":{"currency":"GNF","name":"Guinean franc","cldr_symbol":"FG","symbol":"FG","code_points":[70,71]},"GNS":{"currency":"GNS","name":"Guinean syli","cldr_symbol":"GNS","symbol":"GNS","code_points":[71,78,83]},"GQE":{"currency":"GQE","name":"Equatorial Guinean ekwele","cldr_symbol":"GQE","symbol":"GQE","code_points":[71,81,69]},"GRD":{"currency":"GRD","name":"Greek drachma","cldr_symbol":"GRD","symbol":"GRD","code_points":[71,82,68]},"GTQ":{"currency":"GTQ","name":"Guatemalan quetzal","cldr_symbol":"Q","symbol":"Q","code_points":[81]},"GWE":{"currency":"GWE","name":"Portuguese Guinea escudo","cldr_symbol":"GWE","symbol":"GWE","code_points":[71,87,69]},"GWP":{"currency":"GWP","name":"Guinea-Bissau peso","cldr_symbol":"GWP","symbol":"GWP","code_points":[71,87,80]},"GYD":{"currency":"GYD","name":"Guyanaese dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"HKD":{"currency":"HKD","name":"Hong Kong dollar","cldr_symbol":"HK$","symbol":"$","code_points":[36]},"HNL":{"currency":"HNL","name":"Honduran lempira","cldr_symbol":"L","symbol":"L","code_points":[76]},"HRD":{"currency":"HRD","name":"Croatian dinar","cldr_symbol":"HRD","symbol":"HRD","code_points":[72,82,68]},"HRK":{"currency":"HRK","name":"Croatian kuna","cldr_symbol":"kn","symbol":"kn","code_points":[107,110]},"HTG":{"currency":"HTG","name":"Haitian gourde","cldr_symbol":"HTG","symbol":"HTG","code_points":[72,84,71]},"HUF":{"currency":"HUF","name":"Hungarian forint","cldr_symbol":"Ft","symbol":"Ft","code_points":[70,116]},"IDR":{"currency":"IDR","name":"Indonesian rupiah","cldr_symbol":"Rp","symbol":"Rp","code_points":[82,112]},"IEP":{"currency":"IEP","name":"Irish pound","cldr_symbol":"IEP","symbol":"IEP","code_points":[73,69,80]},"ILP":{"currency":"ILP","name":"Israeli pound","cldr_symbol":"ILP","symbol":"ILP","code_points":[73,76,80]},"ILR":{"currency":"ILR","name":"Israeli sheqel (1980–1985)","cldr_symbol":"ILR","symbol":"ILR","code_points":[73,76,82]},"ILS":{"currency":"ILS","name":"Israeli new sheqel","cldr_symbol":"₪","symbol":"₪","code_points":[8362]},"INR":{"currency":"INR","name":"Indian rupee","cldr_symbol":"₹","symbol":"₨","code_points":[8360]},"IQD":{"currency":"IQD","name":"Iraqi dinar","cldr_symbol":"IQD","symbol":"IQD","code_points":[73,81,68]},"IRR":{"currency":"IRR","name":"Iranian rial","cldr_symbol":"IRR","symbol":"﷼","code_points":[65020]},"ISJ":{"currency":"ISJ","name":"Icelandic króna (1918–1981)","cldr_symbol":"ISJ","symbol":"ISJ","code_points":[73,83,74]},"ISK":{"currency":"ISK","name":"Icelandic króna","cldr_symbol":"kr","symbol":"kr","code_points":[107,114]},"ITL":{"currency":"ITL","name":"Italian lira","cldr_symbol":"ITL","symbol":"ITL","code_points":[73,84,76]},"JMD":{"currency":"JMD","name":"Jamaican dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"JOD":{"currency":"JOD","name":"Jordanian dinar","cldr_symbol":"JOD","symbol":"JOD","code_points":[74,79,68]},"JPY":{"currency":"JPY","name":"Japanese yen","cldr_symbol":"¥","symbol":"¥","code_points":[165]},"KES":{"currency":"KES","name":"Kenyan shilling","cldr_symbol":"KES","symbol":"KES","code_points":[75,69,83]},"KGS":{"currency":"KGS","name":"Kyrgystani som","cldr_symbol":"KGS","symbol":"лв","code_points":[1083,1074]},"KHR":{"currency":"KHR","name":"Cambodian riel","cldr_symbol":"៛","symbol":"៛","code_points":[6107]},"KMF":{"currency":"KMF","name":"Comorian franc","cldr_symbol":"CF","symbol":"CF","code_points":[67,70]},"KPW":{"currency":"KPW","name":"North Korean won","cldr_symbol":"₩","symbol":"₩","code_points":[8361]},"KRH":{"currency":"KRH","name":"South Korean hwan (1953–1962)","cldr_symbol":"KRH","symbol":"KRH","code_points":[75,82,72]},"KRO":{"currency":"KRO","name":"South Korean won (1945–1953)","cldr_symbol":"KRO","symbol":"KRO","code_points":[75,82,79]},"KRW":{"currency":"KRW","name":"South Korean won","cldr_symbol":"₩","symbol":"₩","code_points":[8361]},"KWD":{"currency":"KWD","name":"Kuwaiti dinar","cldr_symbol":"KWD","symbol":"KWD","code_points":[75,87,68]},"KYD":{"currency":"KYD","name":"Cayman Islands dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"KZT":{"currency":"KZT","name":"Kazakhstani tenge","cldr_symbol":"₸","symbol":"лв","code_points":[1083,1074]},"LAK":{"currency":"LAK","name":"Laotian kip","cldr_symbol":"₭","symbol":"₭","code_points":[8365]},"LBP":{"currency":"LBP","name":"Lebanese pound","cldr_symbol":"L£","symbol":"£","code_points":[163]},"LKR":{"currency":"LKR","name":"Sri Lankan rupee","cldr_symbol":"Rs","symbol":"₨","code_points":[8360]},"LRD":{"currency":"LRD","name":"Liberian dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"LSL":{"currency":"LSL","name":"Lesotho loti","cldr_symbol":"LSL","symbol":"LSL","code_points":[76,83,76]},"LTL":{"currency":"LTL","name":"Lithuanian litas","cldr_symbol":"Lt","symbol":"Lt","code_points":[76,116]},"LTT":{"currency":"LTT","name":"Lithuanian talonas","cldr_symbol":"LTT","symbol":"LTT","code_points":[76,84,84]},"LUC":{"currency":"LUC","name":"Luxembourgian convertible franc","cldr_symbol":"LUC","symbol":"LUC","code_points":[76,85,67]},"LUF":{"currency":"LUF","name":"Luxembourgian franc","cldr_symbol":"LUF","symbol":"LUF","code_points":[76,85,70]},"LUL":{"currency":"LUL","name":"Luxembourg financial franc","cldr_symbol":"LUL","symbol":"LUL","code_points":[76,85,76]},"LVL":{"currency":"LVL","name":"Latvian lats","cldr_symbol":"Ls","symbol":"Ls","code_points":[76,115]},"LVR":{"currency":"LVR","name":"Latvian ruble","cldr_symbol":"LVR","symbol":"LVR","code_points":[76,86,82]},"LYD":{"currency":"LYD","name":"Libyan dinar","cldr_symbol":"LYD","symbol":"LYD","code_points":[76,89,68]},"MAD":{"currency":"MAD","name":"Moroccan dirham","cldr_symbol":"MAD","symbol":"MAD","code_points":[77,65,68]},"MAF":{"currency":"MAF","name":"Moroccan franc","cldr_symbol":"MAF","symbol":"MAF","code_points":[77,65,70]},"MCF":{"currency":"MCF","name":"Monegasque franc","cldr_symbol":"MCF","symbol":"MCF","code_points":[77,67,70]},"MDC":{"currency":"MDC","name":"Moldovan cupon","cldr_symbol":"MDC","symbol":"MDC","code_points":[77,68,67]},"MDL":{"currency":"MDL","name":"Moldovan leu","cldr_symbol":"MDL","symbol":"MDL","code_points":[77,68,76]},"MGA":{"currency":"MGA","name":"Malagasy Ariary","cldr_symbol":"Ar","symbol":"Ar","code_points":[65,114]},"MGF":{"currency":"MGF","name":"Malagasy franc","cldr_symbol":"MGF","symbol":"MGF","code_points":[77,71,70]},"MKD":{"currency":"MKD","name":"Macedonian denar","cldr_symbol":"MKD","symbol":"MKD","code_points":[77,75,68]},"MKN":{"currency":"MKN","name":"Macedonian denar (1992–1993)","cldr_symbol":"MKN","symbol":"MKN","code_points":[77,75,78]},"MLF":{"currency":"MLF","name":"Malian franc","cldr_symbol":"MLF","symbol":"MLF","code_points":[77,76,70]},"MMK":{"currency":"MMK","name":"Myanmar kyat","cldr_symbol":"K","symbol":"K","code_points":[75]},"MNT":{"currency":"MNT","name":"Mongolian tugrik","cldr_symbol":"₮","symbol":"₮","code_points":[8366]},"MOP":{"currency":"MOP","name":"Macanese pataca","cldr_symbol":"MOP","symbol":"MOP","code_points":[77,79,80]},"MRO":{"currency":"MRO","name":"Mauritanian ouguiya","cldr_symbol":"MRO","symbol":"MRO","code_points":[77,82,79]},"MTL":{"currency":"MTL","name":"Maltese lira","cldr_symbol":"MTL","symbol":"MTL","code_points":[77,84,76]},"MTP":{"currency":"MTP","name":"Maltese pound","cldr_symbol":"MTP","symbol":"MTP","code_points":[77,84,80]},"MUR":{"currency":"MUR","name":"Mauritian rupee","cldr_symbol":"Rs","symbol":"₨","code_points":[8360]},"MVP":{"currency":"MVP","name":"Maldivian rupee (1947–1981)","cldr_symbol":"MVP","symbol":"MVP","code_points":[77,86,80]},"MVR":{"currency":"MVR","name":"Maldivian rufiyaa","cldr_symbol":"MVR","symbol":"MVR","code_points":[77,86,82]},"MWK":{"currency":"MWK","name":"Malawian Kwacha","cldr_symbol":"MWK","symbol":"MWK","code_points":[77,87,75]},"MXN":{"currency":"MXN","name":"Mexican peso","cldr_symbol":"MX$","symbol":"$","code_points":[36]},"MXP":{"currency":"MXP","name":"Mexican silver peso (1861–1992)","cldr_symbol":"MXP","symbol":"MXP","code_points":[77,88,80]},"MXV":{"currency":"MXV","name":"Mexican investment unit","cldr_symbol":"MXV","symbol":"MXV","code_points":[77,88,86]},"MYR":{"currency":"MYR","name":"Malaysian ringgit","cldr_symbol":"RM","symbol":"RM","code_points":[82,77]},"MZE":{"currency":"MZE","name":"Mozambican escudo","cldr_symbol":"MZE","symbol":"MZE","code_points":[77,90,69]},"MZM":{"currency":"MZM","name":"Mozambican metical (1980–2006)","cldr_symbol":"MZM","symbol":"MZM","code_points":[77,90,77]},"MZN":{"currency":"MZN","name":"Mozambican metical","cldr_symbol":"MZN","symbol":"MT","code_points":[77,84]},"NAD":{"currency":"NAD","name":"Namibian dollar","cldr_symbol":"$","symbol":"$","code_points":[36]},"NGN":{"currency":"NGN","name":"Nigerian naira","cldr_symbol":"₦","symbol":"₦","code_points":[8358]},"NIC":{"currency":"NIC","name":"Nicaraguan córdoba (1988–1991)","cldr_symbol":"NIC","symbol":"NIC","code_points":[78,73,67]},"NIO":{"currency":"NIO","name":"Nicaraguan córdoba","cldr_symbol":"C$","symbol":"C$","code_points":[67,36]},"NLG":{"currency":"NLG","name":"Dutch guilder","cldr_symbol":"NLG","symbol":"NLG","code_points":[78,76,71]},"NOK":{"currency":"NOK","name":"Norwegian krone","cldr_symbol":"kr","symbol":"kr","code_points":[107,114]},"NPR":{"currency":"NPR","name":"Nepalese rupee","cldr_symbol":"Rs","symbol":"₨","code_points":[8360]},"NZD":{"currency":"NZD","name":"New Zealand dollar","cldr_symbol":"NZ$","symbol":"$","code_points":[36]},"OMR":{"currency":"OMR","name":"Omani rial","cldr_symbol":"OMR","symbol":"﷼","code_points":[65020]},"PAB":{"currency":"PAB","name":"Panamanian balboa","cldr_symbol":"PAB","symbol":"B/.","code_points":[66,47,46]},"PEI":{"currency":"PEI","name":"Peruvian inti","cldr_symbol":"PEI","symbol":"PEI","code_points":[80,69,73]},"PEN":{"currency":"PEN","name":"Peruvian nuevo sol","cldr_symbol":"PEN","symbol":"S/.","code_points":[83,47,46]},"PES":{"currency":"PES","name":"Peruvian sol (1863–1965)","cldr_symbol":"PES","symbol":"PES","code_points":[80,69,83]},"PGK":{"currency":"PGK","name":"Papua New Guinean kina","cldr_symbol":"PGK","symbol":"PGK","code_points":[80,71,75]},"PHP":{"currency":"PHP","name":"Philippine peso","cldr_symbol":"₱","symbol":"Php","code_points":[80,104,112]},"PKR":{"currency":"PKR","name":"Pakistani rupee","cldr_symbol":"Rs","symbol":"₨","code_points":[8360]},"PLN"