diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2020-03-20 12:56:34 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2020-03-20 12:56:36 +0100 |
commit | 87d23bf85a3375c4c81f009d88beba66dc42e987 (patch) | |
tree | 6a8150a59115194c56cc95421277cddde04c1ee7 | |
parent | aca1971a12341503e1b95035d6a2bf7355a56cbe (diff) |
i18n: Add Makefile to extract classref strings
Change extract script `path` argument to support specifying multiple
paths, like `makerst.py`. This prevents parsing invalid XML files while
scanning the whole repository.
-rw-r--r-- | doc/translations/Makefile | 23 | ||||
-rw-r--r-- | doc/translations/extract.py | 22 |
2 files changed, 36 insertions, 9 deletions
diff --git a/doc/translations/Makefile b/doc/translations/Makefile new file mode 100644 index 0000000000..ceee79ec95 --- /dev/null +++ b/doc/translations/Makefile @@ -0,0 +1,23 @@ +# Makefile providing various facilities to manage translations + +TEMPLATE = classes.pot +POFILES = $(wildcard *.po) +LANGS = $(POFILES:%.po=%) + +all: update merge + +update: + @cd ../..; \ + python3 doc/translations/extract.py \ + --path doc/classes modules/*/doc_classes \ + --output doc/translations/$(TEMPLATE) + +merge: + @for po in $(POFILES); do \ + echo -e "\nMerging $$po..."; \ + msgmerge -w 79 -C $$po $$po $(TEMPLATE) > "$$po".new; \ + mv -f "$$po".new $$po; \ + done + +check: + @for po in $(POFILES); do msgfmt -c $$po -o /dev/null; done diff --git a/doc/translations/extract.py b/doc/translations/extract.py index 1da6919f0b..cd06e13dda 100644 --- a/doc/translations/extract.py +++ b/doc/translations/extract.py @@ -235,7 +235,7 @@ def _generate_translation_catalog_file(unique_msgs, output): def main(): parser = argparse.ArgumentParser() - parser.add_argument("--path", "-p", default=".", help="The directory containing XML files to collect.") + parser.add_argument("--path", "-p", nargs="+", default=".", help="The directory or directories containing XML files to collect.") parser.add_argument("--output", "-o", default="translation_catalog.pot", help="The path to the output file.") args = parser.parse_args() @@ -243,16 +243,20 @@ def main(): if not os.path.isdir(os.path.dirname(output)) or not output.endswith('.pot'): print_error("Invalid output path: {}".format(output)) exit(1) - if not os.path.isdir(args.path): - print_error("Invalid working directory path: {}".format(args.path)) - exit(1) - os.chdir(args.path) - print("Current working dir: {}\n".format(os.getcwd())) + classes = OrderedDict() + for path in args.path: + if not os.path.isdir(path): + print_error("Invalid working directory path: {}".format(path)) + exit(1) + + print("\nCurrent working dir: {}".format(path)) + + path_classes = OrderedDict() ## dictionary of key=class_name, value=DescList objects + _collect_classes_dir(path, path_classes) + classes.update(path_classes) - classes = OrderedDict() ## dictionary of key=class_name, value=DescList objects - _collect_classes_dir('.', classes) - classes = OrderedDict(sorted(classes.items(), key = lambda kv: kv[0].lower() )) + classes = OrderedDict(sorted(classes.items(), key = lambda kv: kv[0].lower())) unique_msgs = _make_translation_catalog(classes) _generate_translation_catalog_file(unique_msgs, output) |