# Copyright 2012 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=21.0
#  number=$Revision: 6546 $
#  date=$Date: 2012-02-07 13:32:35 -0500 (Tue, 07 Feb 2012) $
#  type=root

AED = එක්සත් අරාබි එමිරේට්ස් ඩිරාම්
AUD = ඔස්ට්‍රේලියානු ඩොලර්|AU$
BDT = බංග්ලාදේශ් ටකා
BHD = බහරේන් ඩිනාර්||3
CNY = චීන යුආන්|CN¥
EUR = යුරෝ|€
GBP = බ්‍රිතාන්‍ය ස්ටර්ලින් පවුම්|UK£
HKD = හොංකොං ඩොලර්|HK$
INR = ඉන්දියන් රුපියල්|Rs.
JOD = ජෝර්දාන් ඩිනාර්||3
JPY = ජපන් යෙන්|JP¥|0
LKR = ලංකා රුපියල්|රු.
NOK = නොර්වීජියන් ක්‍රෝන්
NPR = නේපාල් රුපියල්
NZD = නවසීලන්ත ඩොලර්|NZ$
OMR = ඕමාන් රියාල්||3
RUB = රුසියන් රූබල්
SAR = සවුදි රියාල්
THB = තායි බාත්|฿
USD = ඇමෙරිකන් ඩොලර්|US$
