diff --git a/scripts/patch-mdbook-theme.sh b/scripts/patch-mdbook-theme.sh index d6c8653a5..75e76c1dd 100755 --- a/scripts/patch-mdbook-theme.sh +++ b/scripts/patch-mdbook-theme.sh @@ -1,34 +1,66 @@ #!/bin/bash # Patch mdbook theme to add language selector and utility links -# Usage: patch-mdbook-theme.sh [current-lang] +# Usage: patch-mdbook-theme.sh set -euo pipefail -DOCS_DIR="${1:?Usage: $0 [current-lang]}" -CURRENT_LANG="${2:-en}" +DOCS_DIR="${1:?Usage: $0 }" +L10N_DIR="${2:?Usage: $0 }" HEAD_HBS="$DOCS_DIR/theme/head.hbs" -# Append language selector and utility links to head.hbs +# Language display names (ftl filename -> display name) +declare -A LANG_NAMES=( + [en-US]="English" + [ar]="العربية" [ast]="Asturianu" [ca]="Català" [cs]="Čeština" + [da]="Dansk" [de]="Deutsch" [eo]="Esperanto" [es-ES]="Español" + [fi]="Suomi" [fr-FR]="Français" [he]="עברית" [id]="Bahasa Indonesia" + [it]="Italiano" [ja]="日本語" [kab]="Taqbaylit" [ko]="한국어" + [nb-NO]="Norsk Bokmål" [ne]="नेपाली" [pl]="Polski" [pt]="Português" + [pt-BR]="Português (Brasil)" [ru]="Русский" [sv]="Svenska" + [tr]="Türkçe" [uk]="Українська" [vi]="Tiếng Việt" + [zh-Hans]="中文 (简体)" [zh-Hant]="中文 (繁體)" +) + +# ftl filename -> URL lang code (used in /coreutils/docs-{code}/) +declare -A FTL_TO_URL=( + [en-US]="en" [fr-FR]="fr" [es-ES]="es" [zh-Hans]="zh" [zh-Hant]="zh-Hant" + [pt-BR]="pt-BR" [nb-NO]="nb-NO" +) +# For others, the ftl name IS the URL code (ar, de, it, ja, etc.) + +# Scan l10n repo to find which locales have translations +# Use a representative utility (ls) to find available locales +LANGS_JSON="['en', 'English']" +for ftl in "$L10N_DIR"/src/uu/ls/locales/*.ftl; do + [ -f "$ftl" ] || continue + ftl_name=$(basename "$ftl" .ftl) + [ "$ftl_name" = "en-US" ] && continue + + display="${LANG_NAMES[$ftl_name]:-$ftl_name}" + url_code="${FTL_TO_URL[$ftl_name]:-$ftl_name}" + LANGS_JSON="$LANGS_JSON, ['$url_code', '$display']" +done + +# Append styles and JS to head.hbs cat >> "$HEAD_HBS" << 'ENDSTYLE' ENDSTYLE - -# Add JavaScript for language switching and utility bar injection -cat >> "$HEAD_HBS" << ENDSCRIPT +cat >> "$HEAD_HBS" << 'ENDSCRIPT' ENDSCRIPT +# Inject the dynamically-built language list +sed -i "s|LANGS_PLACEHOLDER|[${LANGS_JSON}]|" "$HEAD_HBS" + echo "Patched $HEAD_HBS with language selector and utility links"