TypeType stores interface translations in apps/web/messages.
English is the source catalog. The Weblate component is scoped to
apps/web/messages/*.json; it must never import or edit the generated files in
apps/web/src/paraglide.
Use Weblate to translate
without writing code. Select a language, translate the available messages, and
submit the proposed changes there. Weblate sends the resulting catalog changes
back as a pull request targeting dev, where the normal checks validate keys,
placeholders, and the frontend build.
The translation status badge in the README is supplied by Weblate. For a local, reproducible snapshot, run:
bun run localization:report -- --markdownThe report distinguishes complete key coverage from values that differ from English. The latter is only an indicator because product names and technical labels can intentionally remain identical.
To add a language:
- Add its BCP 47 code to
localesinapps/web/project.inlang/settings.json. - Add a matching JSON catalog in
apps/web/messages. - Translate existing values without changing their keys or parameters.
- Add the language to the interface selector.
- Run
bun run build,bun test, andbun run checkfrom the repository root.
Missing messages fall back to English. Keep product names, protocol names, and
provider names unchanged unless their official localization differs. Never edit
apps/web/src/paraglide by hand; regenerate it with bun run localize.