# Copyright 2014 Google Inc.
# 
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag|rounding
# 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
# If a currency should be rounded to a multiple of of the least significant
#   digit, rounding will be present
# Trailing empty fields can be omitted

# DO NOT EDIT - GENERATED FROM CLDR DATA:
#  cldrVersion=25
#  date=$Date: 2014-02-13 05:14:13 +0100 (Thu, 13 Feb 2014) $
#  number=$Revision: 9728 $
#  type=sg
AED = dirâm tî âEmirâti tî Arâbo Ôko
AOA = kwânza tî Angoläa
AUD = dolära tî Ostralïi|$
BHD = dolùara tî Bahrâina||3
BIF = farânga tî Burundïi||0
BWP = pûla tî Botswana
CAD = dolära tî kanadäa|CA$
CDF = farânga tî Kongöo
CHF = farânga tî Sûîsi
CNY = yuan renminbi tî Shîni|¥
CVE = eskûêdo tî Kâpo-Vêre
DJF = farânga tî Dibutïi||0
DZD = dinäri tî Alzerïi
EGP = pôndo tî Kâmitâ
ERN = nakafa tî Eritrëe
ETB = bir tî Etiopïi
EUR = zoröo|€
GBP = pôndo tî Anglëe|£
GHC = sêdi tî Ganäa|||1
GMD = dalasi tî gambïi
GNS = sili tî Ginëe|||1
INR = rupïi tî Ênnde|Rs.
JPY = yêni tî Zapön|¥|0
KES = shilîngi tî Kenyäa
KMF = farânga tî Kömôro||0
LRD = dolära tî Liberïa
LSL = loti tî Lesôtho
LYD = dinäar tî Libïi||3
MAD = dirâm tî Marôko
MGA = ariâri tî Madagasikära||0
MRO = ugîya tî Moritanïi||0
MUR = rupïi tî Mörîsi||0
MWK = kwâtia tî Malawïi
MZM = metikala tî Mozambîka|||1
NAD = dolära tî Namibïi|$
NGN = nâîra tî Nizerïa
RWF = farânga tî Ruandäa||0
SAR = riâli tî Saûdi Arabïi
SCR = rupïi tî Sëyshêle
SDG = pôndo tî Sudäan
SHP = pôndo tî Zûâ Sênt-Helêna
SLL = leône tî Sierâ-Leône||0
SOS = shilîngi tî Somalïi||0
STD = dôbra tî Sâô Tomë na Prinsîpe||0
SZL = lilangùeni tî Swazïlânde
TND = dinära tî Tunizïi||3
TZS = shilîngi tî Tanzanïi||0
UGX = shilîngi tî Ugandäa||0
USD = dol$ara ttî äLetäa-Ôko tî Amerîka|$
XAF = farânga CFA (BEAC)|FCFA|0
XOF = farânga CFA (BCEAO)|CFA|0
ZAR = rânde tî Mbongo-Afrîka
ZMK = kwâtia tî Zambïi (1968–2012)||0|1
ZMW = kwâtia tî Zambïi
ZWD = dolära tî Zimbäbwe||0|1
