summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAarni Koskela <akx@iki.fi>2016-01-04 00:25:48 +0200
committerAarni Koskela <akx@iki.fi>2016-01-23 12:51:04 +0200
commit2744fd7cc819db1e158510287971526cf843143b (patch)
treea048f297f83f2cf81b759e5ae5e11337bc811191 /scripts
parent459d30fbcdca41dd47285c0765a3dd1f99b6c12b (diff)
downloadbabel-2744fd7cc819db1e158510287971526cf843143b.tar.gz
CLDR: Import interval format data
Refs #276
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/import_cldr.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/scripts/import_cldr.py b/scripts/import_cldr.py
index 8c0e7f7..8e151f7 100755
--- a/scripts/import_cldr.py
+++ b/scripts/import_cldr.py
@@ -16,6 +16,7 @@ from optparse import OptionParser
import os
import re
import sys
+
try:
from xml.etree import cElementTree as ElementTree
except ImportError:
@@ -25,9 +26,10 @@ except ImportError:
sys.path.insert(0, os.path.join(os.path.dirname(sys.argv[0]), '..'))
from babel import dates, numbers
-from babel.plural import PluralRule
-from babel.localedata import Alias
from babel._compat import pickle, text_type
+from babel.dates import split_interval_pattern
+from babel.localedata import Alias
+from babel.plural import PluralRule
parse = ElementTree.parse
weekdays = {'mon': 0, 'tue': 1, 'wed': 2, 'thu': 3, 'fri': 4, 'sat': 5,
@@ -608,6 +610,8 @@ def main():
datetime_skeletons[datetime_skeleton.attrib['id']] = \
dates.parse_pattern(text_type(datetime_skeleton.text))
+ parse_interval_formats(data, calendar)
+
# <numbers>
number_symbols = data.setdefault('number_symbols', {})
@@ -693,6 +697,23 @@ def main():
write_datafile(data_filename, data, dump_json=dump_json)
+def parse_interval_formats(data, tree):
+ # http://www.unicode.org/reports/tr35/tr35-dates.html#intervalFormats
+ interval_formats = data.setdefault("interval_formats", {})
+ for elem in tree.findall("dateTimeFormats/intervalFormats/*"):
+ if 'draft' in elem.attrib:
+ continue
+ if elem.tag == "intervalFormatFallback":
+ interval_formats[None] = elem.text
+ elif elem.tag == "intervalFormatItem":
+ skel_data = interval_formats.setdefault(elem.attrib["id"], {})
+ for item_sub in elem.getchildren():
+ if item_sub.tag == "greatestDifference":
+ skel_data[item_sub.attrib["id"]] = split_interval_pattern(item_sub.text)
+ else:
+ raise NotImplementedError("Not implemented: %s(%r)" % (item_sub.tag, item_sub.attrib))
+
+
def parse_currency_formats(data, tree):
currency_formats = data.setdefault('currency_formats', {})
for length_elem in tree.findall('.//currencyFormats/currencyFormatLength'):