Skip to content

chore(i18n): translation contribution guardrails - #119

Merged
ParadoxInfinite merged 1 commit into
mainfrom
feat/i18n-contrib
Jun 28, 2026
Merged

chore(i18n): translation contribution guardrails#119
ParadoxInfinite merged 1 commit into
mainfrom
feat/i18n-contrib

Conversation

@ParadoxInfinite

Copy link
Copy Markdown
Owner

Sets up community translations now that the UI is translatable (#118), with
guardrails so a broken catalog can't merge.

What's here

  • web/scripts/check-i18n.mjs validates every catalog against the English source
    of truth: valid JSON, no key that English doesn't have, value shapes that match
    (string vs plural map), and a manifest that only lists locales with a catalog.
    Incomplete translations pass — missing keys fall back to English — and the
    script prints per-language coverage. Runnable as npm run check-i18n.
  • CI runs the check on every PR, so a typo'd key or malformed plural fails before
    merge rather than silently showing English.
  • A Translations section in CONTRIBUTING with the three steps to add a language.
  • A Translation issue form (labeled help wanted / good first issue) to propose or
    claim a language.

Testing

  • The check passes on the current catalogs and exits non-zero on an injected bad
    locale (unknown key, wrong value shape, missing manifest entry).

@ParadoxInfinite
ParadoxInfinite merged commit 2f23923 into main Jun 28, 2026
1 check passed
@ParadoxInfinite
ParadoxInfinite deleted the feat/i18n-contrib branch June 28, 2026 09:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant