From 67f7c956239a7bc811a1d655d389666048e45fc3 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Sun, 27 Jun 2021 22:06:40 -0300 Subject: Translate CHANGELOG.md adn README.md Partially implements #task-7c5cd2aa-6d92-0423-bfa7-81f2e8436586. As mentioned in the task, instead of making "README.md" as symlink to "README.en.md", "README.md" is kept as it is, as the translated file doesn't need to live in the repository. The same goes for the "CHANGELOG.md" file. --- aux/workflow/commonmark.sh | 14 ++++++++---- aux/workflow/l10n.sh | 56 ++++++++++++++++++++++++++-------------------- aux/workflow/public.sh | 18 +++++++++++---- 3 files changed, 56 insertions(+), 32 deletions(-) (limited to 'aux/workflow') diff --git a/aux/workflow/commonmark.sh b/aux/workflow/commonmark.sh index 2333f5d..b196867 100755 --- a/aux/workflow/commonmark.sh +++ b/aux/workflow/commonmark.sh @@ -1,7 +1,7 @@ #!/bin/sh set -eu -while getopts 'N:o:r:w:' flag; do +while getopts 'N:o:r:w:L:' flag; do case "$flag" in N) PROJECT_UC="$OPTARG" @@ -15,6 +15,9 @@ while getopts 'N:o:r:w:' flag; do w) OUT_FILE="$OPTARG" ;; + L) + THE_LANG="$OPTARG" + ;; *) exit 2 ;; @@ -32,20 +35,23 @@ assert_arg() { assert_arg "${PROJECT_UC:-}" '-N PROJECT_UC' assert_arg "${OUTDIR:-}" '-o OUTDIR' assert_arg "${IN_FILE:-}" '-i IN_FILE' +assert_arg "${THE_LANG:-}" '-L THE_LANG' if [ -z "${OUT_FILE:-}" ]; then OUT_FILE="${IN_FILE%.md}.html" fi +OUT="$OUTDIR/$OUT_FILE" +mkdir -p "$(dirname "$OUT")" pandoc \ --toc \ --highlight-style pygments \ --toc-depth=2 \ -s \ - --metadata title="$PROJECT_UC - ${IN_FILE%.md}" \ - --metadata lang=en \ + --metadata title="$PROJECT_UC - ${IN_FILE%%.*}" \ + --metadata "lang=$THE_LANG" \ -r commonmark \ -w html \ -H aux/workflow/favicon.html \ - < "$IN_FILE" > "$OUTDIR/$OUT_FILE" + < "$IN_FILE" > "$OUT" diff --git a/aux/workflow/l10n.sh b/aux/workflow/l10n.sh index e1fd3bb..89f2a6e 100755 --- a/aux/workflow/l10n.sh +++ b/aux/workflow/l10n.sh @@ -1,6 +1,8 @@ #!/bin/sh set -eu +mkdir -p doc/po + LANGS= while getopts 'l:' flag; do case "$flag" in @@ -18,33 +20,39 @@ if [ -z "$LANGS" ]; then exit 2 fi -end="\033[0m" -yellow="\033[0;33m" -manpage() { - from_f="$1" - for l in $LANGS; do - to_f="$(echo "$from_f" | sed "s/\.en\./.$l./")" +po() { + format="$1" + from_f="$2" + to_f="$3" + lang="$4" + po4a-updatepo -M UTF-8 -f "$format" -m "$from_f" -p "doc/po/$lang.po" -v --previous + po4a-translate -M UTF-8 -f "$format" -m "$from_f" -p "doc/po/$lang.po" -v -L UTF-8 -l "$to_f" -k 0 >&2 +} +for from_f in "$@"; do + for lang in $LANGS; do + to_f="$(echo "$from_f" | sed "s/\.en\./.$lang./")" printf 'Generating %s...\n' "$to_f" - OUT="$(mktemp)" - po4a-updatepo -f man -m "$from_f" -p "doc/po/$l.po" - po4a-translate -f man -m "$from_f" -p "doc/po/$l.po" -l "$to_f" -k 0 -v 2>&1 | tee "$OUT" >&2 - if ! grep -qF ' is 100% translated (' "$OUT"; then - printf "\n\t${yellow}WARNING${end}!\n Missing translations for %s\n\n" "$to_f" >&2 - fi + case "$from_f" in + *.en.[1-9].in) + po man "$from_f" "$to_f" "$lang" + ;; + *.en.md|*.en.msg) + po text "$from_f" "$to_f" "$lang" + ;; + *) + echo "Unsupported file format: $from_f" >&2 + exit 2 + ;; + esac done -} +done -for f in "$@"; do - case "$f" in - *.en.[1-9].in) - mkdir -p doc/po - manpage "$f" - ;; - *) - echo "Unsupported file format: $f" >&2 - exit 2 - ;; - esac +end="\033[0m" +yellowb="\033[1;33m" +for lang in $LANGS; do + if LANG=POSIX msgfmt --statistics "doc/po/$lang.po" 2>&1 | grep translated; then + printf "\n\t${yellowb}WARNING${end}!\n Missing translations for %s\n\n" "doc/po/$lang.po" >&2 + fi done diff --git a/aux/workflow/public.sh b/aux/workflow/public.sh index ef89d07..be32ac1 100755 --- a/aux/workflow/public.sh +++ b/aux/workflow/public.sh @@ -2,7 +2,7 @@ set -eu PROJECT_UC= -while getopts 'n:N:m:o:' flag; do +while getopts 'n:N:m:o:l:' flag; do case "$flag" in n) PROJECT="$OPTARG" @@ -16,6 +16,9 @@ while getopts 'n:N:m:o:' flag; do o) OUTDIR="$OPTARG" ;; + l) + LANGS="$OPTARG" + ;; *) exit 2 ;; @@ -41,12 +44,19 @@ fi mkdir -p "$OUTDIR" sh aux/workflow/TODOs.sh -N "$PROJECT_UC" -n "$PROJECT" -m "$MAILING_LIST" -o "$OUTDIR" -sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r README.md -w index.html +sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r README.md -w index.html -Len if [ -f CHANGELOG.md ]; then - sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r CHANGELOG.md + sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r CHANGELOG.md -Len +fi +if [ -n "${LANGS:-}" ]; then + for lang in $LANGS; do + sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r "README.$lang.md" -w "$lang/index.html" -L "$lang" + if [ -f CHANGELOG.md ]; then + sh aux/workflow/commonmark.sh -N "$PROJECT" -o "$OUTDIR" -r "CHANGELOG.$lang.md" -w "$lang/CHANGELOG.html" -L "$lang" + fi + done fi sh aux/ci/report.sh -n "$PROJECT" -o "$OUTDIR" - cp aux/workflow/favicon.svg aux/workflow/favicon.png "$OUTDIR" -- cgit v1.2.3