Add a py script to check for bad string formats
Lint finds these, but it's very slow and currently we're not taking lint errors as fatal. So for now this script will be useful, as nearly every time I pull from weblate there are at least a couple of these.
This commit is contained in:
parent
7e86dc5e48
commit
6b9d6b6be5
37
F-Droid/tools/check-string-format.py
Executable file
37
F-Droid/tools/check-string-format.py
Executable file
@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python2
|
||||
|
||||
# Remove extra translations
|
||||
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
from xml.etree import ElementTree
|
||||
|
||||
formatRe = re.compile(r'(%%|%[^%](\$.)?)')
|
||||
|
||||
validFormatRe = re.compile(r'^(%%|%[sd]|%[0-9]\$[sd])$')
|
||||
|
||||
count = 0
|
||||
|
||||
for d in glob.glob(os.path.join('res', 'values-*')):
|
||||
|
||||
str_path = os.path.join(d, 'strings.xml')
|
||||
if not os.path.exists(str_path):
|
||||
continue
|
||||
|
||||
tree = ElementTree.parse(str_path)
|
||||
root = tree.getroot()
|
||||
|
||||
for e in root.findall('.//string'):
|
||||
for m in formatRe.finditer(e.text):
|
||||
s = m.group(0)
|
||||
if validFormatRe.match(s):
|
||||
continue
|
||||
count += 1
|
||||
print('%s: Invalid format "%s" in "%s"' % (str_path, s, e.text))
|
||||
|
||||
if count > 0:
|
||||
print("%d misformatted strings found!" % count)
|
||||
sys.exit(1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user