01aec21d25
This reduces the size of the editor binaries significantly, as we otherwise
embed all WIP translations, including ones with very low completion ratios,
and end up paying for the size of all `msgid`s for each locale.
Cf. https://github.com/godotengine/godot-proposals/issues/3421 for details.
The thresholds used are:
- 30% for the editor interface (should already include most common strings
while more obscure ones like UndoRedo action names might be untranslated).
- 10% for the class reference: this is a HUGE resource and 10% is already
a lot of useful content, especially if focused on the most used APIs.
This currently reduces the size of the editor binary by 17% on Linux.
The list will be synced manually every now and then.
(cherry picked from commit 8425c58991
)
45 lines
1.4 KiB
Makefile
45 lines
1.4 KiB
Makefile
# 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
|
|
|
|
# Generate completion ratio from statistics string such as:
|
|
# 2775 translated messages, 272 fuzzy translations, 151 untranslated messages.
|
|
# First number can be 0, second and third numbers are only present if non-zero.
|
|
include-list:
|
|
@list=""; \
|
|
threshold=0.10; \
|
|
for po in $(POFILES); do \
|
|
res=`msgfmt --statistics $$po -o /dev/null 2>&1 | sed 's/[^0-9,]*//g'`; \
|
|
complete=`cut -d',' -f1 <<< $$res`; \
|
|
fuzzy_or_untranslated=`cut -d',' -f2 <<< $$res`; \
|
|
untranslated_maybe=`cut -d',' -f3 <<< $$res`; \
|
|
if [ -z "$$fuzzy_or_untranslated" ]; then fuzzy_or_untranslated=0; fi; \
|
|
if [ -z "$$untranslated_maybe" ]; then untranslated_maybe=0; fi; \
|
|
incomplete=`expr $$fuzzy_or_untranslated + $$untranslated_maybe`; \
|
|
if `awk "BEGIN {exit !($$complete / ($$complete + $$incomplete) > $$threshold)}"`; then \
|
|
lang=`basename $$po .po`; \
|
|
list+="$$lang,"; \
|
|
fi; \
|
|
done; \
|
|
echo $$list;
|