Prepare translated versions of the home, Get started, Guides and FAQ pages
in zh-Hans, zh-Hant, ja, ko, de and fr. English stays at the root and each
language lives under its own directory. No translated page exists yet, so
English pages only gain an og:locale tag.
- LANGUAGES in website.py owns each language's directory, lang/hreflang tag,
menu name and og:locale; locales/<language>.json holds the shared UI text
(non-English locales start as English placeholders).
- sync renders the header, footer and sharing regions in the page's
language: localized navigation with an EN badge on English-only targets,
a native-details language menu (same page, else the language's reviewed
home, else omitted), hreflang alternates with x-default, og:locale
alternates and the brand link to the language's home.
- Translations record source-sha256 and status (draft or reviewed). Drafts
are noindex and stay out of the sitemap, menus, hreflang and navigation.
- sync copies every Copy-targeted code block from English by ID, and fills
the website:translation-notice region when the English text has changed.
The hash leaves out shared regions and those code blocks.
- The verifier checks records, copied code, ID/Copy/data-msg parity while
fresh, whitespace between CJK characters in ja/zh, and the page's lang.
An out-of-date translation, inline-code differences, links to English
pages with a reviewed translation and English placeholder UI strings
are warnings, shown as GitHub annotations and in the job summary.
- New commands: `translate <language> <route>` creates a draft and
`translations` reports status, freshness and OS names to confirm.
- styles.css adds per-language CJK font stacks, CJK heading, emphasis and
line-breaking rules, German hyphenation, and the menu, badge and notice.
- The publisher runs sync after the checks so notices are current.
- website/translation.md documents the workflow, rules, register, glossary
(with Korean), OS names to confirm and the review checklist.
Co-Authored-By: Claude Opus 5.5 <[email protected]>