]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
localedata: Check inheritance exceptions first 180/head
authorIsaac Jurado <diptongo@gmail.com>
Wed, 5 Nov 2014 16:15:08 +0000 (17:15 +0100)
committerIsaac Jurado <diptongo@gmail.com>
Wed, 5 Aug 2015 14:43:55 +0000 (16:43 +0200)
When deriving the parent locale from the given name, look first in the
inheritance exception list.  This will cover cases like "es_MX", which
parent is "es_419" and not "es".

Fixes https://github.com/mitsuhiko/babel/issues/97

babel/localedata/__init__.py
babel/numbers.py
tests/test_numbers.py

index e6df0c4d134f0bfce15daed89b7ec1e6d988c3d2..c48b9f586fc666703553307c782968ee8ee65a6e 100644 (file)
@@ -81,11 +81,14 @@ def load(name, merge_inherited=True):
             if name == 'root' or not merge_inherited:
                 data = {}
             else:
-                parts = name.split('_')
-                if len(parts) == 1:
-                    parent = 'root'
-                else:
-                    parent = '_'.join(parts[:-1])
+                from babel.core import get_global
+                parent = get_global('parent_exceptions').get(name)
+                if not parent:
+                    parts = name.split('_')
+                    if len(parts) == 1:
+                        parent = 'root'
+                    else:
+                        parent = '_'.join(parts[:-1])
                 data = load(parent).copy()
             filename = os.path.join(_dirname, '%s.dat' % name)
             fileobj = open(filename, 'rb')
index 01af774dd7e9d361109d1265a53f89209f6b4c7c..d1f64725287926d8a70531339c6a50c4e53bb2bf 100644 (file)
@@ -258,7 +258,7 @@ def format_currency(number, currency, format=None, locale=LC_NUMERIC):
     >>> format_currency(1099.98, 'USD', locale='en_US')
     u'$1,099.98'
     >>> format_currency(1099.98, 'USD', locale='es_CO')
-    u'1.099,98\\xa0US$'
+    u'US$1.099,98'
     >>> format_currency(1099.98, 'EUR', locale='de_DE')
     u'1.099,98\\xa0\\u20ac'
 
index 02332fbc763fb3074c4e5bda8d7af0510499e9a5..6fe67c04ee6c46f93799094f9a34c6c8aa6537df 100644 (file)
@@ -243,7 +243,7 @@ def test_format_currency():
     assert (numbers.format_currency(1099.98, 'USD', locale='en_US')
             == u'$1,099.98')
     assert (numbers.format_currency(1099.98, 'USD', locale='es_CO')
-            == u'1.099,98\xa0US$')
+            == u'US$1.099,98')
     assert (numbers.format_currency(1099.98, 'EUR', locale='de_DE')
             == u'1.099,98\xa0\u20ac')
     assert (numbers.format_currency(1099.98, 'EUR', u'\xa4\xa4 #,##0.00',