From 7f12c246b5e435af6103760be1ed154c1489da24 Mon Sep 17 00:00:00 2001 From: Laurent Rocher Date: Wed, 18 Nov 2020 23:01:56 +0100 Subject: [PATCH] Python script for check translation files. It's compare locale\template.txt with translate file (.tr) for a language. --- tools/check_translate_files.py | 61 ++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 tools/check_translate_files.py diff --git a/tools/check_translate_files.py b/tools/check_translate_files.py new file mode 100644 index 000000000..177100ac0 --- /dev/null +++ b/tools/check_translate_files.py @@ -0,0 +1,61 @@ +# Output indicator +# !< : Indicate a text line without = in template.txt +# << : Indicate an untranslated line in template.txt +# !> : Indicate a text line without = in translate file (.tr) +# >> : Indicate an unknow translated line in translate file (.tr) +# >> Missing file : Indicate a missing translate file (.tr) + +import os +import argparse + +parser = argparse.ArgumentParser(description='Check Translate file with Template.txt for a given language.') +parser.add_argument("language", nargs='?', default='fr', help='2 characters language code (default=fr)') +args = parser.parse_args() + +path = "../mods/" +code_lang = args.language + +def LoadTranslateFile(filename, direction): + result = set() + file = open(filename, 'r') + for line in file: + line = line.strip() + if line.startswith('#') or line == '': + continue + if '=' in line: + result.add(line.split('=')[0]) + else: + print (direction + line) + + return result + +def CompareFiles(f1, f2): + r1 = LoadTranslateFile(f1, "!> ") + r2 = LoadTranslateFile(f2, "!< ") + + for key in r1.difference(r2): + print (">> " + key ) + for key in r2.difference(r1): + print ("<< " + key ) + +for root, directories, files in os.walk(path): + if root.endswith('locale'): + template = None + language = None + + for name in files: + if name == 'template.txt': + template = os.path.join(root, name) + if name.endswith("." + code_lang + ".tr"): + language = os.path.join(root, name) + + if template is not None: + if language is None: + language = os.path.join(root, os.path.basename(os.path.dirname(root))) + "." + code_lang + ".tr" + + if os.path.exists(language) and os.path.isfile(language): + print("Compare Files %s with %s" % (template, language)) + CompareFiles(template, language) + else: + LoadTranslateFile(filename, "!> ") + print(">> Missing File = " + language)