Skip to content

Languages: 25 interface languages loaded at run time from Shell-B-Translations - #2

Merged
EveAeternam merged 1 commit into
mainfrom
language-catalogues
Oct 13, 2026
Merged

EveAeternam merged 1 commit into
mainfrom
language-catalogues

Conversation

@EveAeternam

Copy link
Copy Markdown
Collaborator

Requested by Evie · project thread

What changed and why

Before: the interface came only in English and the bundled French. This work was committed on the Spark's public-release as 31bdb4e but never reached GitHub.

After: Settings → Languages shows coverage for each catalogue, the Night Shift translation batch and per-string checks. The language picker lists all 25 languages. French stays bundled. The others load from /api/translate/catalogue/<code>, which is public so the login screen is translated too, and fall back to the Shell-B-Translations repo.

How: this is 31bdb4e ported onto main. Every file applied unchanged except ui/src/i18n/fr.json, whose end differs between public-release and main. There, the 32 new strings are added at the end of the file and the existing order is kept, with no re-sort.

How you tested it

Ran in a cloud checkout, not on the Spark.

  • scripts/check.sh passes (compile, pyflakes, tests, tsc). Compile, pyflakes and tsc pass, as do language_test, translate_test, i18n_test and guest_test. smoke_test fails on /api/models (500), but it fails the same way on main without this change because there's no model engine here.
  • User-visible change: entry added at the top of docs/changelog.json
  • New UI strings wrapped in t('…') with a French line in ui/src/i18n/fr.json
  • Manual or API docs updated where a route, tool or table changed
  • No secrets, chats or personal data in the diff or the screenshots

New dependencies

None.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EHrMRRAgRmbkHVbaoJ6jZN


Generated by Claude Code

…nslations

Settings → Languages shows coverage per catalogue (living, classical, constructed), the
Night Shift translation batch and per-string checks; the language picker in General and
in a guest's limits lists every language. French stays bundled; the others load from
/api/translate/catalogue/<code> (public, so the login screen is translated too), falling
back to the GitHub repo, and the browser's cached copy refreshes in the background.
Agents answer in the chosen language (prompts.LANGUAGES), guests keep any known code.

Ported from 31bdb4e on public-release. fr.json: the new strings are appended at the
end in the catalogue's existing order (no re-sort), since main's fr.json differs from
public-release's at the end of the file.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EHrMRRAgRmbkHVbaoJ6jZN
@EveAeternam
EveAeternam marked this pull request as ready for review October 13, 2026 01:53
@EveAeternam
EveAeternam merged commit 83b4d2a into main Oct 13, 2026
2 checks passed
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