def currency_formats(self):
"""Locale patterns for currency number formatting.
- >>> print Locale('en', 'US').currency_formats[None]
+ >>> print Locale('en', 'US').currency_formats['standard']
+ <NumberPattern u'\\xa4#,##0.00'>
+ >>> print Locale('en', 'US').currency_formats['accounting']
<NumberPattern u'\\xa4#,##0.00'>
"""
return self._data['currency_formats']
return pattern.apply(number, locale)
-def format_currency(number, currency, format=None, locale=LC_NUMERIC, currency_digits=True):
+def format_currency(number, currency, format='standard', locale=LC_NUMERIC, currency_digits=True):
u"""Return formatted currency value.
>>> format_currency(1099.98, 'USD', locale='en_US')
:param currency_digits: use the currency's number of decimal digits
"""
locale = Locale.parse(locale)
- if not format:
- format = locale.currency_formats.get(format)
- pattern = parse_pattern(format)
+ pattern = parse_pattern(locale.currency_formats.get(format, format))
if currency_digits:
fractions = get_global('currency_fractions')
try:
numbers.parse_pattern(pattern)
currency_formats = data.setdefault('currency_formats', {})
- for elem in tree.findall('.//currencyFormats/currencyFormatLength'):
+ for elem in tree.findall('.//currencyFormats/currencyFormatLength/currencyFormat'):
if ('draft' in elem.attrib or 'alt' in elem.attrib) \
and elem.attrib.get('type') in currency_formats:
continue
- pattern = text_type(elem.findtext('currencyFormat/pattern'))
- currency_formats[elem.attrib.get('type')] = \
- numbers.parse_pattern(pattern)
+ for child in elem.getiterator():
+ if child.tag == 'alias':
+ currency_formats[elem.attrib.get('type')] = Alias(
+ _translate_alias(['currency_formats', elem.attrib['type']],
+ child.attrib['path'])
+ )
+ elif child.tag == 'pattern':
+ pattern = text_type(child.text)
+ currency_formats[elem.attrib.get('type')] = \
+ numbers.parse_pattern(pattern)
percent_formats = data.setdefault('percent_formats', {})
for elem in tree.findall('.//percentFormats/percentFormatLength'):
assert Locale('en', 'US').decimal_formats[None].pattern == '#,##0.###'
def test_currency_formats_property(self):
- assert (Locale('en', 'US').currency_formats[None].pattern ==
+ assert (Locale('en', 'US').currency_formats['standard'].pattern ==
+ u'\xa4#,##0.00')
+ assert (Locale('en', 'US').currency_formats['accounting'].pattern ==
u'\xa4#,##0.00')
def test_percent_formats_property(self):