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
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():
|
def main():
|
||||||
parser = argparse.ArgumentParser()
|
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.")
|
parser.add_argument("--output", "-o", default="translation_catalog.pot", help="The path to the output file.")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
@ -243,16 +243,20 @@ def main():
|
|||||||
if not os.path.isdir(os.path.dirname(output)) or not output.endswith('.pot'):
|
if not os.path.isdir(os.path.dirname(output)) or not output.endswith('.pot'):
|
||||||
print_error("Invalid output path: {}".format(output))
|
print_error("Invalid output path: {}".format(output))
|
||||||
exit(1)
|
exit(1)
|
||||||
if not os.path.isdir(args.path):
|
|
||||||
print_error("Invalid working directory path: {}".format(args.path))
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
os.chdir(args.path)
|
classes = OrderedDict()
|
||||||
print("Current working dir: {}\n".format(os.getcwd()))
|
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
|
print("\nCurrent working dir: {}".format(path))
|
||||||
_collect_classes_dir('.', classes)
|
|
||||||
classes = OrderedDict(sorted(classes.items(), key = lambda kv: kv[0].lower() ))
|
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)
|
unique_msgs = _make_translation_catalog(classes)
|
||||||
_generate_translation_catalog_file(unique_msgs, output)
|
_generate_translation_catalog_file(unique_msgs, output)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user