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.
This commit is contained in:
parent
aca1971a12
commit
87d23bf85a
2 changed files with 36 additions and 9 deletions
23
doc/translations/Makefile
Normal file
23
doc/translations/Makefile
Normal file
|
@ -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
|
|
@ -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)
|
||||
|
||||
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() ))
|
||||
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(sorted(classes.items(), key = lambda kv: kv[0].lower()))
|
||||
unique_msgs = _make_translation_catalog(classes)
|
||||
_generate_translation_catalog_file(unique_msgs, output)
|
||||
|
||||
|
|
Loading…
Reference in a new issue