Replace hardcoded FTL_TO_URL and LANG_NAMES maps with dynamic
detection. ftl_to_url() derives URL codes from FTL filenames
(e.g., fr-FR -> fr, zh-Hans -> zh-Hans). locale_display_name()
uses python3+babel for native language names with fallback to the
code itself. New locales are now picked up automatically without
editing the scripts.
The URL matching regex only accepted two-letter codes or two-letter
plus two uppercase (e.g., pt-BR), missing codes like zh-Hant with
longer suffixes. Use [a-zA-Z]+ after the hyphen to match all codes.
Merge translated tldr zips with the English one so that utilities
without translated examples (e.g., cut in French) still show the
English examples instead of having no Examples section at all.
Add a notice on affected pages linking to the tldr-pages project
for contributors to help translate the examples.
Use a global variable (MERGE_HAD_FALLBACK) instead of return codes
for merge_ftl, and use if/fi instead of [ ] && cmd in restore_en.
Both patterns caused silent script abortion under set -euo pipefail
when returning non-zero exit codes.
The l10n repo contains en-US.ftl files that can overwrite the
coreutils English originals, causing translated docs to show text
from the wrong language. Skip en-US.ftl during the copy to preserve
the authoritative English strings.
When a utility page has strings that fell back to English, inject a
notice linking to the corresponding Weblate translation page so
contributors can help complete the translation.
When building translated docs, the script was replacing en-US.ftl
entirely with the translated file. This caused raw FTL identifiers
(e.g. mknod-help-mode) to appear in the docs when translations were
empty or partial. Now merges translated keys with English so that
untranslated keys fall back to English text.
- Scan coreutils-l10n for available locales instead of hardcoding
- Fix language switcher to use relative path replacement so it works
with both deployed and local file:// URLs
- Move links into the existing .additional div for better layout
- Remove manpage generation step and man2html dependency
- Add mdbook theme patching for language selector and utility links
- Repack tldr zip with pages/ prefix (uudoc expects this structure)
- Build translated docs via build-docs-l10n.sh for 18 languages
- Collect translated docs to /coreutils/docs-{lang}/
Generates translated documentation by swapping locale .ftl files
into en-US.ftl (since uudoc hardcodes that filename), re-running
uudoc with translated tldr examples, and building mdbook per language.
The existing mdbook docs at /coreutils/docs/ already provide utility
documentation. Remove the redundant manpage HTML generation scripts
and templates.
The l10n repo contains utilities (e.g. hashsum) that don't exist in
the coreutils workspace. Copying entire directories created phantom
workspace members that broke Cargo.
- Move l10n locale copy to a separate workflow step before docs build
to avoid triggering uudoc rebuilds with different cargo features
- Build uudoc once, then reuse for all languages
- Handle per-language build failures gracefully (skip and continue)
- Remove unused L10N_DIR parameter from build-all-manpages.sh
Orchestrates manpage builds for 19 languages: downloads per-language
tldr archives, copies l10n locales into coreutils, generates manpages
with the appropriate LANG setting, and invokes build-manpages.sh with
English tldr fallback for each language.
Accept optional lang and fallback-tldr-dir parameters. When a
translated tldr page is missing, fall back to the English version
with a notice linking to the tldr translation contributing guide.
Add language navigation bar, html lang attribute, and template
placeholders ({{LANG_CODE}}, {{LANG_NAME}}, {{MANPAGES_PATH}})
to both the individual manpage and index templates.