Skip to content

0008 i18n

  • Status: accepted (2026-10-29)
  • Messages are ICU MessageFormat 1 strings in per-namespace JSON catalogs (astl.player, astl.engine, astl.gap, ...). Core ships a dependency-free subset formatter (arguments, numbers, plural with offsets and exact matches, selectordinal, select) behind the MessageFormatter port; hosts may plug in a full implementation.
  • CI checks every translation against English: same keys, same parameters, every plural category of the locale.
  • The UI locale (chrome, issues, announcements) and the content language (exercise text and grading) are separate.
  • English and Polish are complete; more locales are catalogs only.

Core and the student bundle stay dependency-free; dates and times are formatted by hosts and passed as strings.