language-data/export-languages-po
Michal Čihař 9812558e7d Apply black code formatter
Signed-off-by: Michal Čihař <michal@cihar.com>
2019-04-17 10:56:26 +02:00

68 lines
1.6 KiB
Python
Executable file

#! /usr/bin/env python3
# Export CLDR language names into po file
import glob
from xml.etree import ElementTree
BASE = "cldr-core/common/main/en.xml"
# Parse language names
names = {}
tree = ElementTree.parse(BASE)
for item in tree.find("localeDisplayNames").find("languages").iter("language"):
names[item.get("type")] = item.text
# Process translations
for lang in glob.glob("cldr-core/common/main/*.xml"):
if lang == BASE:
continue
result = {}
tree = ElementTree.parse(lang)
displaynames = tree.find("localeDisplayNames")
if displaynames is None:
continue
languages = displaynames.find("languages")
if languages is None:
continue
for item in languages.iter("language"):
try:
result[names[item.get("type")]] = item.text
except KeyError:
continue
if not result:
continue
locale = lang.rsplit("/", 1)[1].split(".")[0]
with open("languages-po/{}.po".format(locale), "w") as handle:
handle.write(
"""# CLDR language names for {0}
# Automatically generated using tools available at
# https://github.com/WeblateOrg/language-data
msgid ""
msgstr ""
"Project-Id-Version: Weblate\\n"
"Language: {0}\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
"X-Generator: Weblate\\n"
""".format(
locale
)
)
for key in sorted(result):
handle.write(
"""
msgid "{}"
msgstr "{}"
""".format(
key, result[key]
)
)