aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorLuke Dashjr <luke-jr+git@utopios.org>2015-12-25 13:12:37 +0000
committerWladimir J. van der Laan <laanwj@gmail.com>2016-01-04 12:01:01 +0100
commita75a03a5f2fe386d953e52839a1c5492975c93cf (patch)
tree7ca3889c931827f72ba5bcccfade6659b5ef4fb6 /contrib
parentbdd0f9e286e8ad28eb724d076275c3cd1734553f (diff)
Bugfix: update-translations: Allow numerus translations to omit %n specifier (usually when it only has one possible value)
Github-Pull: #7253 Rebased-From: 0d595894f028248a1a1b00491dad95320844c685
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/devtools/update-translations.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/contrib/devtools/update-translations.py b/contrib/devtools/update-translations.py
index ea209eec7e..2b6e807b47 100755
--- a/contrib/devtools/update-translations.py
+++ b/contrib/devtools/update-translations.py
@@ -72,7 +72,7 @@ def sanitize_string(s):
'''Sanitize string for printing'''
return s.replace('\n',' ')
-def check_format_specifiers(source, translation, errors):
+def check_format_specifiers(source, translation, errors, numerus):
source_f = split_format_specifiers(find_format_specifiers(source))
# assert that no source messages contain both Qt and strprintf format specifiers
# if this fails, go change the source as this is hacky and confusing!
@@ -80,10 +80,13 @@ def check_format_specifiers(source, translation, errors):
try:
translation_f = split_format_specifiers(find_format_specifiers(translation))
except IndexError:
- errors.append("Parse error in translation '%s'" % sanitize_string(translation))
+ errors.append("Parse error in translation for '%s': '%s'" % (sanitize_string(source), sanitize_string(translation)))
return False
else:
if source_f != translation_f:
+ if numerus and source_f == (set(), ['n']) and translation_f == (set(), []) and translation.find('%') == -1:
+ # Allow numerus translations to omit %n specifier (usually when it only has one possible value)
+ return True
errors.append("Mismatch between '%s' and '%s'" % (sanitize_string(source), sanitize_string(translation)))
return False
return True
@@ -150,7 +153,7 @@ def postprocess_translations(reduce_diff_hacks=False):
if translation is None:
continue
errors = []
- valid = check_format_specifiers(source, translation, errors)
+ valid = check_format_specifiers(source, translation, errors, numerus)
for error in errors:
print('%s: %s' % (filename, error))