diff options
author | Luke Dashjr <luke-jr+git@utopios.org> | 2015-12-25 13:12:37 +0000 |
---|---|---|
committer | Luke Dashjr <luke-jr+git@utopios.org> | 2015-12-25 13:15:01 +0000 |
commit | 0d595894f028248a1a1b00491dad95320844c685 (patch) | |
tree | 2e0247f1075f4280ffe45793a518dbba035c0341 /contrib | |
parent | da59f283350343a623820fa9ea48dd1ebb817064 (diff) |
Bugfix: update-translations: Allow numerus translations to omit %n specifier (usually when it only has one possible value)
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/devtools/update-translations.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/contrib/devtools/update-translations.py b/contrib/devtools/update-translations.py index 0be632069a..3e34b33971 100755 --- a/contrib/devtools/update-translations.py +++ b/contrib/devtools/update-translations.py @@ -70,7 +70,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! @@ -78,10 +78,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 @@ -148,7 +151,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)) |