From b6ee82bbde3adb3399ce9e2e08ba52b17cb46da2 Mon Sep 17 00:00:00 2001 From: zvolsky Date: Mon, 25 Apr 2016 11:06:02 +0200 Subject: [PATCH] script for language files update has new param to update existing translations --- gluon/languages.py | 6 ++++-- scripts/lang_update_from_langfile.py | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) mode change 100644 => 100755 scripts/lang_update_from_langfile.py diff --git a/gluon/languages.py b/gluon/languages.py index 490d90d6..4be71c0d 100644 --- a/gluon/languages.py +++ b/gluon/languages.py @@ -1002,17 +1002,19 @@ def update_all_languages(application_path): findT(application_path, language[:-3]) -def update_from_langfile(target, source): +def update_from_langfile(target, source, force_update=False): """this will update untranslated messages in target from source (where both are language files) this can be used as first step when creating language file for new but very similar language or if you want update your app from welcome app of newer web2py version or in non-standard scenarios when you work on target and from any reason you have partial translation in source + Args: + force_update: if False existing translations remain unchanged, if True existing translations will update from source """ src = read_dict(source) sentences = read_dict(target) for key in sentences: val = sentences[key] - if not val or val == key: + if not val or val == key or force_update: new_val = src.get(key) if new_val and new_val != val: sentences[key] = new_val diff --git a/scripts/lang_update_from_langfile.py b/scripts/lang_update_from_langfile.py old mode 100644 new mode 100755 index 4ce93a0b..520341db --- a/scripts/lang_update_from_langfile.py +++ b/scripts/lang_update_from_langfile.py @@ -30,8 +30,15 @@ if __name__ == '__main__': dest="source", help="Specify language file (ro) where seek for translations" ) + parser.add_argument( + '-f', '--force-update', + dest="force_update", + action="store_true", + default=False, + help="without it: add new + translate untranslated, if used: in addition update items if translation differs" + ) args = parser.parse_args() - update_from_langfile(args.target, args.source) + update_from_langfile(args.target, args.source, force_update=args.force_update) print '%s was updated.' % args.target