mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-10-01 01:36:27 +13:00
66 lines
1.6 KiB
Python
66 lines
1.6 KiB
Python
|
#!/bin/python
|
||
|
|
||
|
import re
|
||
|
import sys
|
||
|
|
||
|
from lxml import etree
|
||
|
|
||
|
def main(argv) -> int:
|
||
|
if len(argv) < 2:
|
||
|
print("You need to specify a .ts file!")
|
||
|
return 1
|
||
|
|
||
|
path = argv[1]
|
||
|
|
||
|
if (len(path) < 3) or (path[-3:] != '.ts'):
|
||
|
print("Please specify a path to a .ts file!")
|
||
|
return 2
|
||
|
|
||
|
tree = None
|
||
|
|
||
|
with open(path, 'rb') as file:
|
||
|
tree = etree.parse(file)
|
||
|
|
||
|
if tree is None:
|
||
|
print("Parsing failed!")
|
||
|
return 3
|
||
|
|
||
|
root = tree.getroot()
|
||
|
if root.tag != 'TS':
|
||
|
print("Wrong type of file!")
|
||
|
return 4
|
||
|
|
||
|
for context in root.getchildren():
|
||
|
if context.tag != 'context':
|
||
|
continue
|
||
|
|
||
|
for message in context.getchildren():
|
||
|
if message.tag != 'message':
|
||
|
continue
|
||
|
|
||
|
source = message.find("source")
|
||
|
translation = message.find("translation")
|
||
|
|
||
|
if (source is None) or (translation is None):
|
||
|
continue
|
||
|
|
||
|
sourceText = etree.tostring(source, encoding='unicode').strip()
|
||
|
|
||
|
if '&' in sourceText:
|
||
|
continue
|
||
|
|
||
|
translationText = etree.tostring(translation, encoding='unicode').strip()
|
||
|
translationText = re.sub(r'&([a-zA-Z]+);', r'&\g<1>;', translationText)
|
||
|
|
||
|
translationNode = etree.fromstring(translationText)
|
||
|
translation.text = translationNode.text
|
||
|
|
||
|
with open(path, 'wb') as file:
|
||
|
tree.write(file, encoding='utf-8', xml_declaration=True, pretty_print=True)
|
||
|
|
||
|
print("Fixing finished!")
|
||
|
return 0
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
sys.exit(main(sys.argv))
|