aboutsummaryrefslogtreecommitdiff
path: root/aux
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-06-19 01:47:04 -0300
committerEuAndreh <eu@euandre.org>2021-06-19 07:45:46 -0300
commitd0a5a24788e6c1720fce72629da4639fac372fad (patch)
tree36d62c02b45487bea6501824c5a93a8fa03f7d72 /aux
parentTODOs.md: Mark #task-9e842529-b782-84a2-1d0a-801a8766cb7e as DOING (diff)
downloadgit-permalink-d0a5a24788e6c1720fce72629da4639fac372fad.tar.gz
git-permalink-d0a5a24788e6c1720fce72629da4639fac372fad.tar.xz
Leverage po4a to translate manpages
Diffstat (limited to 'aux')
-rw-r--r--aux/guix/manifest.scm4
-rw-r--r--aux/workflow/assert-manpages.sh136
-rwxr-xr-xaux/workflow/update-translations.sh16
3 files changed, 152 insertions, 4 deletions
diff --git a/aux/guix/manifest.scm b/aux/guix/manifest.scm
index 31af4b3..c3cd4a0 100644
--- a/aux/guix/manifest.scm
+++ b/aux/guix/manifest.scm
@@ -11,4 +11,6 @@
make
perl
shellcheck
- pandoc)))
+ pandoc
+ gettext
+ po4a)))
diff --git a/aux/workflow/assert-manpages.sh b/aux/workflow/assert-manpages.sh
index f265ab4..7254d60 100644
--- a/aux/workflow/assert-manpages.sh
+++ b/aux/workflow/assert-manpages.sh
@@ -18,8 +18,9 @@ while getopts 'i' flag; do
esac
done
-EXPECTED="$(mktemp)"
-cat <<EOF >> "$EXPECTED"
+
+EXPECTED_EN="$(mktemp)"
+cat <<EOF | sed 's|-|\\-|g' >> "$EXPECTED_EN"
.SH AUTHORS
@@ -37,7 +38,8 @@ Report bugs to the
.MT ~euandreh/$MAILING_LIST@lists.sr.ht
mailing list
.ME .
-Use the subject "\fC[$PROJECT] BUG or TASK: <description>\fR".
+Use the subject "\f(CR[$PROJECT] BUG or TASK:
+<description>\fR".
.IP \(bu
Browse bugs
.UR https://$TLD/$PROJECT/TODOs.html
@@ -53,12 +55,140 @@ Comments and discussions
.UE .
EOF
+EXPECTED_PT="$(mktemp)"
+cat <<EOF | sed 's|-|\\-|g' >> "$EXPECTED_PT"
+
+
+.SH AUTORES
+
+.MT eu@euandre.org
+EuAndreh
+.ME
+e colaboradores.
+
+
+.SH BUGS
+
+.IP \(bu
+Relate bugs na
+.MT ~euandreh/$MAILING_LIST@lists.sr.ht
+lista de discussão
+.ME .
+Use o assunto "\f(CR[$PROJECT] BUG ou TASK:
+<descrição>\fR".
+.IP \(bu
+Veja os bugs
+.UR https://$TLD/$PROJECT/TODOs.html
+online
+.UE .
+.IP \(bu
+.UR https://$TLD/$PROJECT/
+Página inicial
+.UE .
+.IP \(bu
+.UR https://lists.sr.ht/~euandreh/$MAILING_LIST?search=%5B$PROJECT%5D
+Comentários e discussões
+.UE .
+EOF
+
+EXPECTED_FR="$(mktemp)"
+cat <<EOF | sed 's|-|\\-|g' >> "$EXPECTED_FR"
+
+
+.SH AUTEURS
+
+.MT eu@euandre.org
+EuAndreh
+.ME
+et les contributeurs.
+
+
+.SH BUGS
+
+.IP \(bu
+Soumettre un bogue dans la
+.MT ~euandreh/$MAILING_LIST@lists.sr.ht
+liste
+de diffusion
+.ME .
+Utilise le sujèt "\f(CR[$PROJECT] BUG ou TASK:
+<description>\fR".
+.IP \(bu
+Parcourir les bogues
+.UR https://$TLD/$PROJECT/TODOs.html
+en
+ligne
+.UE .
+.IP \(bu
+.UR https://$TLD/$PROJECT/
+Page d'accueil
+.UE .
+.IP \(bu
+.UR https://lists.sr.ht/~euandreh/$MAILING_LIST?search=%5B$PROJECT%5D
+Commentaires et discussions
+.UE .
+EOF
+
+EXPECTED_EO="$(mktemp)"
+cat <<EOF | sed 's|-|\\-|g' >> "$EXPECTED_EO"
+
+
+.SH AŬTOROJ
+
+.MT eu@euandre.org
+EuAndreh
+.ME
+kaj la kontribuuloj.
+
+
+.SH MISFUNKCIOJ
+
+.IP \(bu
+Raportu misfunkcioj al la
+.MT ~euandreh/$MAILING_LIST@lists.sr.ht
+dissendolisto
+.ME .
+Uzu la subjekton "\f(CR[$PROJECT] BUG aŭ TASK:
+<priskribo>\fR".
+.IP \(bu
+Foliumu misfunkcioj
+.UR https://$TLD/$PROJECT/TODOs.html
+rete
+.UE .
+.IP \(bu
+.UR https://$TLD/$PROJECT/
+Ĉefpaĝo
+.UE .
+.IP \(bu
+.UR https://lists.sr.ht/~euandreh/$MAILING_LIST?search=%5B$PROJECT%5D
+Komentoj kaj diskutoj
+.UE .
+EOF
+
+
# shellcheck disable=2044
for f in $(find doc -type f -name '*.[0-9]'); do
LINES="$(wc -l "$f" | cut -d\ -f1)"
if [ "$LINES" = 1 ] && grep -Eq '^\.so man.+$' "$f"; then
continue
fi
+
+ lang="$(echo "$f" | cut -d. -f2)"
+ case "$lang" in
+ pt)
+ EXPECTED="$EXPECTED_PT"
+ ;;
+ fr)
+ EXPECTED="$EXPECTED_FR"
+ ;;
+ eo)
+ EXPECTED="$EXPECTED_EO"
+ ;;
+ *)
+ EXPECTED="$EXPECTED_EN"
+ ;;
+ esac
+
if ! tail -n "$(wc -l < "$EXPECTED")" "$f" | diff - "$EXPECTED"; then
echo "Missing metadata at the end of \"$f\" file"
if [ "$IN_PLACE" = true ]; then
diff --git a/aux/workflow/update-translations.sh b/aux/workflow/update-translations.sh
new file mode 100755
index 0000000..1974580
--- /dev/null
+++ b/aux/workflow/update-translations.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -eu
+
+for f in doc/*.en.[1-9]; do
+ # shellcheck disable=2068
+ for lang in $@; do
+ to="$(echo "$f" | sed "s|\.en\.|.$lang.|")"
+ po4a-updatepo -f man -m "$f" -p "doc/$lang.po"
+ printf 'Translating %s...\n' "$to" >&2
+ OUT="$(po4a-translate -f man -m "$f" -p "doc/$lang.po" -l "$to" -k 0 -v 2>&1)"
+ echo "$OUT" >&2
+ if ! echo "$OUT" | grep -qF ' is 100% translated ('; then
+ printf "\n WARNING!\n Missing translations for %s\n\n" "$to" >&2
+ fi
+ done
+done