Remove CLDR native support

It never really worked well due to bugs in Babel to_gettext.

Signed-off-by: Michal Čihař <michal@cihar.com>
This commit is contained in:
Michal Čihař 2019-04-17 11:29:44 +02:00
parent 007ddf01ea
commit 9dee0fa69f

View file

@ -1,40 +0,0 @@
#! /usr/bin/env python3

# Attempt for native Python CLDR to gettext conversion
# This is still incomplete and not used

from xml.etree import ElementTree
from babel.plural import to_gettext

# Parse language names
names = {}
tree = ElementTree.parse("cldr-core/common/main/en.xml")
for item in tree.iter("language"):
names[item.get("type")] = item.text

# Parse language aliases
tree = ElementTree.parse("cldr-core/common/supplemental/supplementalMetadata.xml")
for item in tree.iter("languageAlias"):
if item.get("reason") == "macrolanguage" and item.get("replacement") in names:
names[item.get("type")] = names[item.get("replacement")]

# Parse plurals
result = {}
tree = ElementTree.parse("cldr-core/common/supplemental/plurals.xml")
for item in tree.iter("pluralRules"):
locales = item.get("locales").split()
rules = [(x.get("count"), x.text.split("@")[0]) for x in item.iter("pluralRule")]
formula = to_gettext(rules)
nplurals = int(formula.split(";", 1)[0].split("=", 1)[1])
equation = formula.split(";", 1)[1].split("=", 1)[1][1:-1]
for locale in locales:
result[locale] = (nplurals, equation)

with open("cldr.csv", "w") as handle:
for code in sorted(result):
if code not in names:
print("MISSING {}".format(code))
continue
handle.write(
"{};{};{};{}\n".format(code, names[code], result[code][0], result[code][1])
)