]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
import_cldr: support currency format lengths
authorAarni Koskela <akx@iki.fi>
Sun, 20 Dec 2015 19:53:06 +0000 (21:53 +0200)
committerAarni Koskela <akx@iki.fi>
Mon, 21 Dec 2015 10:52:18 +0000 (12:52 +0200)
Non-default currency format lengths acquire colon-separated suffixes like units already do since 9327e0824a1bbed538e73d42b971988f8214b490

scripts/import_cldr.py

index d179604c1286452590cbfd6766794fd5d1f9c3b6..4f70ef9b4f277c84f752f77fdabd2883c046f167 100755 (executable)
@@ -600,21 +600,7 @@ def main():
             scientific_formats[elem.attrib.get('type')] = \
                 numbers.parse_pattern(pattern)
 
-        currency_formats = data.setdefault('currency_formats', {})
-        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
-            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)
+        parse_currency_formats(data, tree)
 
         percent_formats = data.setdefault('percent_formats', {})
         for elem in tree.findall('.//percentFormats/percentFormatLength'):
@@ -674,5 +660,27 @@ def main():
             outfile.close()
 
 
+def parse_currency_formats(data, tree):
+    currency_formats = data.setdefault('currency_formats', {})
+    for length_elem in tree.findall('.//currencyFormats/currencyFormatLength'):
+        curr_length_type = length_elem.attrib.get('type')
+        for elem in length_elem.findall('currencyFormat'):
+            type = elem.attrib.get('type')
+            if curr_length_type:
+                # Handle `<currencyFormatLength type="short">`, etc.
+                type = '%s:%s' % (type, curr_length_type)
+            if ('draft' in elem.attrib or 'alt' in elem.attrib) and type in currency_formats:
+                continue
+            for child in elem.getiterator():
+                if child.tag == 'alias':
+                    currency_formats[type] = Alias(
+                            _translate_alias(['currency_formats', elem.attrib['type']],
+                                             child.attrib['path'])
+                    )
+                elif child.tag == 'pattern':
+                    pattern = text_type(child.text)
+                    currency_formats[type] = numbers.parse_pattern(pattern)
+
+
 if __name__ == '__main__':
     main()