BobStore/tools/remove-unused-and-blank-translations.py
Hans-Christoph Steiner 3df626aed1 sync up translation scripts to use the same code
To keep these scripts simple and readible, it makes sense to keep them
as separate scripts.  But they should use the same approach as much as
possible.
2017-05-10 23:18:28 +02:00

45 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
# This script removes strings from the translated files that are not useful:
# * translations for strings that are no longer used
# * empty translated strings, English is better than no text at all
import glob
import os
import re
from xml.etree import ElementTree
resdir = os.path.join(os.path.dirname(__file__), '..', 'app', 'src', 'main', 'res')
sourcepath = os.path.join(resdir, 'values', 'strings.xml')
strings = set()
for e in ElementTree.parse(sourcepath).getroot().findall('.//string'):
name = e.attrib['name']
strings.add(name)
for d in sorted(glob.glob(os.path.join(resdir, 'values-*'))):
str_path = os.path.join(d, 'strings.xml')
if not os.path.exists(str_path):
continue
header = ''
with open(str_path, 'r') as f:
header = f.readline()
tree = ElementTree.parse(str_path)
root = tree.getroot()
for e in root.findall('.//string'):
name = e.attrib['name']
if name not in strings:
root.remove(e)
if not e.text:
root.remove(e)
result = re.sub(r' />', r'/>', ElementTree.tostring(root, encoding='utf-8').decode('utf-8'))
with open(str_path, 'w+') as f:
f.write(header)
f.write(result)
f.write('\n')