summary refs log tree commit diff
path: root/Makefile.am
diff options
context:
space:
mode:
authorJulien Lepiller <julien@lepiller.eu>2022-03-08 19:11:38 +0100
committerJulien Lepiller <julien@lepiller.eu>2022-04-02 18:14:34 +0200
commitff194cb24509e15d6b58682a63befe2aececba02 (patch)
treeeb5147c2d79ffc5208be67ba61376caa7cfb43be /Makefile.am
parent6386c011b2bb682cfdbcbd4cf8fcc40e94e950b5 (diff)
downloadguix-ff194cb24509e15d6b58682a63befe2aececba02.tar.gz
maint: Implement translation thresholds.
Do not download new translations for the cookbook and the manual when
they are below 10% completion, and remove existing translations when
they fall below 5%.

* Makefile.am (download-po): Implement translation thresholds.
Diffstat (limited to 'Makefile.am')
-rw-r--r--Makefile.am20
1 files changed, 17 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index 91243f2cad..8bc6697869 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1072,21 +1072,35 @@ WEBLATE_REPO = https://framagit.org/tyreunom/guix-translations
 # form.
 download-po:
 	dir=$$(mktemp -d); \
-	git clone --depth 1 "$(WEBLATE_REPO)" "$$dir/translations"; \
+	git clone --depth 1 "$(WEBLATE_REPO)" "$$dir/translations" && \
 	for domain in po/doc po/guix po/packages; do \
 	    for po in "$$dir/translations/$$domain"/*.po; do \
 	        translated=$$(LANG=en_US.UTF-8 msgfmt --statistics "$$po" 2>&1 | cut -f1 -d' '); \
+	        untranslated=$$(LANG=en_US.UTF-8 msgfmt --statistics "$$po" 2>&1 | rev | cut -f3 -d' ' | rev); \
+	        untranslated=$${untranslated:-0}; \
+	        total=$$(($$translated+$$untranslated)); \
 	        target=$$(basename "$$po"); \
 	        target="$$domain/$$target"; \
-	        if msgfmt -c "$$po" && [ "$$translated" != "0" ]; then \
+	        msgfmt -c "$$po"; \
+	        if msgfmt -c "$$po" && [ "$$translated" != "0" ] && ([ "$$domain" != "po/doc" ] || [ "$$translated" -gt $$(($$total/10)) ] || [ -f $$target ]); then \
 	            msgfilter --no-wrap -i "$$po" cat > "$$po".tmp; \
 	            mv "$$po".tmp "$$target"; \
 	            echo "copied $$target."; \
 	        else \
-	            echo "WARN: $$target ($$translated translated messages) was not added/updated."; \
+	            echo "WARN: $$target ($$translated translated messages ($$((translated/total*100))%)) was not added/updated."; \
 	        fi; \
 	    done; \
 	done; \
+	for po in po/doc/*.po; do \
+	    translated=$$(LANG=en_US.UTF-8 msgfmt --statistics "$$po" 2>&1 | cut -f1 -d' '); \
+	    untranslated=$$(LANG=en_US.UTF-8 msgfmt --statistics "$$po" 2>&1 | rev | cut -f3 -d' ' | rev); \
+	    untranslated=$${untranslated:-0}; \
+	    total=$$(($$translated + $$untranslated)); \
+	    if [ "$$translated" -lt "$$(($$total/20))" ]; then \
+	        echo "WARN: $$po was removed because it is below the 5% threshold: $$((translated/total*100))%"; \
+	        rm $$po; \
+	    fi; \
+	done; \
 	rm -rf "$$dir"
 .PHONY: download-po