# Do not edit - generated from Unicode CLDR data
#   main/ne.xml - r4179 2009-06-15 00:15:33 -0400 (Mon, 15 Jun 2009)
#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag
# If a symbol is not supplied, the currency code will be used
# If # of decimal digits is omitted, 2 is used
# If a currency is not generally used, not-used-flag=1
# Trailing empty fields can be omitted

ADP = ADP||0|1
AED = AED
AFA = अफ्गानी(१९२७-२००२)|||1
AFN = अफ्गानी|Af|0
ALL = अल्बानियन लेक||0
AMD = AMD||0
ANG = ANG|NAf.
AOA = AOA|Kz
AOK = AOK|||1
AON = AON|||1
AOR = AOR|||1
ARA = ARA|₳||1
ARL = ARL|$L||1
ARM = ARM|m$n||1
ARP = ARP|||1
ARS = ARS|AR$
ATS = ATS|||1
AUD = अष्ट्रेलियन डलर|AU$
AWG = AWG|Afl.
AZM = AZM|||1
AZN = AZN|man.
BAD = BAD|||1
BAM = BAM|KM
BBD = BBD|Bds$
BDT = BDT|Tk
BEC = BEC
BEF = BEF|BF||1
BEL = BEL
BGL = BGL|||1
BGN = BGN
BHD = BHD|BD|3
BIF = BIF|FBu|0
BMD = BMD|BD$
BND = BND|BN$
BOB = BOB|Bs
BOP = BOP|$b.||1
BOV = BOV
BRB = BRB|||1
BRC = BRC|||1
BRE = BRE|||1
BRL = ब्राजिलियन रियल|R$
BRN = BRN|||1
BRR = BRR|||1
BSD = BSD|BS$
BTN = BTN|Nu.
BUK = BUK|||1
BWP = BWP
BYB = BYB|||1
BYR = BYR||0
BZD = BZD|BZ$
CAD = CAD|CA$
CDF = CDF
CHE = CHE
CHF = CHF|Fr.
CHW = CHW
CLE = CLE|Eº||1
CLF = CLF||0
CLP = CLP|CL$|0
CNY = चिनिँया युआन रेनिबी|CN¥
COP = COP|CO$|0
COU = COU
CRC = CRC|₡|0
CSD = CSD|||1
CSK = CSK|||1
CUC = CUC|CUC$
CUP = CUP|CU$
CVE = CVE|CV$
CYP = CYP|CY£||1
CZK = CZK|Kč
DDM = DDM|||1
DEM = DEM|DM||1
DJF = DJF|Fdj|0
DKK = DKK|Dkr
DOP = DOP|RD$
DZD = DZD|DA
ECS = ECS|||1
ECV = ECV
EEK = EEK|Ekr
EGP = EGP|EG£
EQE = EQE|||1
ERN = ERN|Nfk
ESA = ESA
ESB = ESB
ESP = ESP|Pts|0|1
ETB = ETB|Br
EUR = युरो|€
FIM = FIM|mk||1
FJD = FJD|FJ$
FKP = FKP|FK£
FRF = FRF|₣||1
GBP = बेलायती पाउण्ड स्टर्लिङ|£
GEK = GEK|||1
GEL = GEL
GHC = GHC|₵||1
GHS = GHS|GH₵
GIP = GIP|GI£
GMD = GMD
GNF = GNF|FG|0
GNS = GNS|||1
GQE = GQE|||1
GRD = GRD|₯||1
GTQ = GTQ
GWE = GWE|||1
GWP = GWP
GYD = GYD|GY$|0
HKD = HKD|HK$
HNL = HNL
HRD = HRD|||1
HRK = HRK|kn
HTG = HTG
HUF = HUF|Ft|0
IDR = IDR|Rp|0
IEP = IEP|IR£||1
ILP = ILP|I£||1
ILS = ILS|₪
INR = भारती रूपिँया|Rs
IQD = IQD||0
IRR = IRR||0
ISK = ISK|Ikr|0
ITL = ITL|IT₤|0|1
JMD = JMD|J$
JOD = JOD|JD|3
JPY = जापानी येन|JP¥|0
KES = KES|Ksh
KGS = KGS
KHR = KHR
KMF = KMF|CF|0
KPW = KPW||0
KRW = KRW|₩|0
KWD = KWD|KD|3
KYD = KYD|KY$
KZT = KZT
LAK = LAK|₭|0
LBP = LBP|LB£|0
LKR = LKR|SLRs
LRD = LRD|L$
LSL = LSL
LSM = LSM|||1
LTL = LTL|Lt
LTT = LTT|||1
LUC = LUC
LUF = LUF||0|1
LUL = LUL
LVL = LVL|Ls
LVR = LVR|||1
LYD = LYD|LD|3
MAD = MAD
MAF = MAF|||1
MDL = MDL
MGA = MGA||0
MGF = MGF||0|1
MKD = MKD
MLF = MLF|||1
MMK = MMK||0
MNT = MNT|₮|0
MOP = MOP|MOP$
MRO = MRO|UM|0
MTL = MTL|Lm||1
MTP = MTP|MT£||1
MUR = MUR|MURs|0
MVR = MVR
MWK = MWK
MXN = MXN
MXP = MXP|MX$||1
MXV = MXV
MYR = MYR|RM
MZE = MZE|||1
MZM = MZM|Mt||1
MZN = MZN|MTn
NAD = NAD|N$
NGN = NGN|₦
NIC = NIC|||1
NIO = NIO|C$
NLG = NLG|fl||1
NOK = नर्वेजियाली क्रोन|Nkr
NPR = NPR|नेरू
NZD = NZD|NZ$
OMR = OMR||3
PAB = PAB|B/.
PEI = PEI|I/.||1
PEN = PEN|S/.
PES = PES|||1
PGK = PGK
PHP = फिलिपिनी पेसो|₱
PKR = PKR|PKRs|0
PLN = PLN|zł
PLZ = PLZ|||1
PTE = PTE|Esc||1
PYG = PYG|₲|0
QAR = QAR|QR
RHD = RHD|RH$||1
ROL = ROL|||1
RON = RON
RSD = RSD|din.|0
RUB = रूसी रूबल
RUR = RUR|||1
RWF = RWF||0
SAR = SAR|SR
SBD = SBD|SI$
SCR = SCR|SRe
SDD = SDD|LSd||1
SDG = SDG
SDP = SDP|||1
SEK = SEK|Skr
SGD = SGD|S$
SHP = SHP|SH£
SIT = SIT|||1
SKK = SKK|Sk||1
SLL = SLL|Le|0
SOS = SOS|Ssh|0
SRD = SRD|SR$
SRG = SRG|Sf||1
STD = STD|Db|0
SUR = SUR|||1
SVC = SVC|SV₡||1
SYP = SYP|SY£|0
SZL = SZL
THB = THB|฿
TJR = TJR|||1
TJS = TJS
TMM = TMM||0|1
TND = TND|DT|3
TOP = TOP|T$
TPE = TPE|||1
TRL = TRL||0|1
TRY = TRY|TL
TTD = TTD|TT$
TWD = TWD|NT$
TZS = TZS|TSh|0
UAH = UAH|₴
UAK = UAK|||1
UGS = UGS|||1
UGX = UGX|USh|0
USD = संयुक्त राज्य डलर|US$
USN = USN
USS = USS
UYI = UYI
UYP = UYP|||1
UYU = UYU|$U
UZS = UZS||0
VEB = VEB|||1
VEF = VEF|Bs.F.
VND = VND|₫|0
VUV = VUV|VT|0
WST = WST|WS$
XAF = XAF|FCFA|0
XAG = XAG
XAU = XAU
XBA = XBA
XBB = XBB
XBC = XBC
XBD = XBD
XCD = XCD|EC$
XDR = XDR
XEU = XEU
XFO = XFO
XFU = XFU
XOF = XOF|CFA|0
XPD = XPD
XPF = XPF|CFPF|0
XPT = XPT
XRE = XRE
XTS = XTS
XXX = अपरिचित वा अवैध मुद्रा
YDD = YDD|||1
YER = YER|YR|0
YUD = YUD|||1
YUM = YUM|||1
YUN = YUN|||1
ZAL = ZAL
ZAR = ZAR|R
ZMK = ZMK|ZK|0
ZRN = ZRN|NZ||1
ZRZ = ZRZ|||1
ZWD = ZWD|Z$|0|1
