#!/bin/env python2 # Remove extra translations import glob import os import re from xml.etree import ElementTree strings = set() arrays = set() for e in ElementTree.parse(os.path.join('res', 'values', 'strings.xml')).getroot().findall('.//string'): name = e.attrib['name'] strings.add(name) for e in ElementTree.parse(os.path.join('res', 'values', 'array.xml')).getroot().findall('.//string-array'): name = e.attrib['name'] arrays.add(name) for d in glob.glob(os.path.join('res', 'values-*')): str_path = os.path.join(d, 'strings.xml') if os.path.exists(str_path): tree = ElementTree.parse(str_path) root = tree.getroot() elems = root.findall('.//string') for e in elems: name = e.attrib['name'] if name not in strings: root.remove(e) result = re.sub(r' />', r'/>', ElementTree.tostring(root, encoding='utf-8')) with open(str_path, 'w+') as f: f.write('\n') f.write(result) f.write('\n') arr_path = os.path.join(d, 'array.xml') if os.path.exists(arr_path): tree = ElementTree.parse(arr_path) root = tree.getroot() elems = root.findall('.//string-array') for e in elems: name = e.attrib['name'] if name not in arrays: root.remove(e) result = re.sub(r' />', r'/>', ElementTree.tostring(root, encoding='utf-8')) with open(arr_path, 'w+') as f: f.write('\n') f.write(result) f.write('\n')