CI: Simple tool to help with source size of TZ files
This commit is contained in:
parent
64324c8fc2
commit
2490884b78
44
ci/txreduce.py
Normal file
44
ci/txreduce.py
Normal file
@ -0,0 +1,44 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
# Reduce a translation file -- generally, a Timezone translation -- by
|
||||
# dropping untranslated strings. An untranslated string is one that
|
||||
# has an empty translation **and** is marked unfinished.
|
||||
#
|
||||
# This is mostly useful to cut down the size of the source file:
|
||||
# far and away most of the zones are not translated, and it's just a
|
||||
# handful of places that get special treatment.
|
||||
|
||||
from xml.dom.minidom import parse
|
||||
import sys
|
||||
|
||||
valid = True
|
||||
dom = parse(sys.argv[1])
|
||||
for n in dom.getElementsByTagName("translation"):
|
||||
attrs = n.attributes.keys()
|
||||
|
||||
drop = True
|
||||
if "type" not in attrs:
|
||||
drop = False
|
||||
elif "type" in attrs and n.attributes["type"].value != "unfinished":
|
||||
# In the samples I've seen, only "unfinished" is a valid type;
|
||||
# once something has been translated, the attribute vanishes (see
|
||||
# the if branch, above).
|
||||
print("WARNING ''{!s}'' unknown type".format(n.attributes["type"].value))
|
||||
drop = False
|
||||
valid = False
|
||||
else:
|
||||
t = n.firstChild
|
||||
if t is None:
|
||||
# Unfinished and empty
|
||||
drop = True
|
||||
else:
|
||||
drop = bool(t.data)
|
||||
if drop:
|
||||
message = n.parentNode
|
||||
message.parentNode.removeChild(message)
|
||||
message.unlink()
|
||||
|
||||
if valid:
|
||||
for line in dom.toxml().split("\n"):
|
||||
if line.strip():
|
||||
print(line)
|
Loading…
Reference in New Issue
Block a user