58 print(
'Processing %s...' % (os.path.normpath(filename)))
61 tree = ET.ElementTree(file = filename)
63 print(
'\tFailed to parse %s!' % (os.path.normpath(filename)))
67 for context
in root.findall(
'context'):
68 context_name = context.find(
'name').text
69 has_context = context_name
in sources
70 if not has_context
and no_obsolete:
74 for message
in context.findall(
'message'):
75 for location
in message.findall(
'location'):
76 message.remove(location)
78 source = message.find(
'source').text
79 translation = message.find(
'translation')
80 if has_context
and source
in sources[context_name]:
81 sources[context_name].remove(source)
83 trtype = translation.attrib.get(
'type')
84 if (trtype ==
'obsolete')
or (trtype ==
'vanished'):
85 del translation.attrib[
'type']
87 if no_obsolete
or (translation.attrib.get(
'type',
'') ==
'unfinished'):
88 context.remove(message)
90 translation.attrib[
'type'] =
'vanished'
96 for source
in sources[context_name]:
97 message = ET.SubElement(context,
'message')
98 ET.SubElement(message,
'source').text = source
99 ET.SubElement(message,
'translation', {
'type':
'unfinished'})
100 del sources[context_name]
103 for context_name
in sources:
104 context = ET.SubElement(root,
'context')
105 ET.SubElement(context,
'name').text = context_name
107 for source
in sources[context_name]:
108 message = ET.SubElement(context,
'message')
109 ET.SubElement(message,
'source').text = source
110 ET.SubElement(message,
'translation', {
'type':
'unfinished'})
115 for context
in root.findall(
'./context'):
116 context.text =
'\n' + indent
118 context.find(
'./name').tail =
'\n' + indent
119 messages = context.findall(
'./message')
120 if len(messages) == 0:
continue
122 for message
in messages:
123 message.text =
'\n' + (indent * 2)
124 message.tail =
'\n' + indent
125 elems = message.findall(
'./')
126 if len(elems) == 0:
continue
129 elem.tail =
'\n' + (indent * 2)
130 elems[-1:][0].tail =
'\n' + indent
131 messages[-1:][0].tail =
'\n'
134 with open(filename, mode =
'wb')
as file:
135 file.write(b
'<?xml version="1.0" encoding="utf-8"?>\n'
137 tree.write(file, encoding =
'utf-8')
139 print(
'\tFailed to write %s!' % (os.path.normpath(filename)))