Repository navigation
Conversation
Settings → General gets a Language row (English / Español). Every
user-facing string in the Tauri app now goes through tr(en, es): the
island views, the settings window, integration cards, Claude Code step
labels, the tray menu, the settings window title and error messages.
- src/core/i18n.ts: tr(), with the language cached in localStorage so
views built at startup and module-level labels read it synchronously.
A change reloads both webviews; the island waits for any pending
permission card to be answered first.
- src-tauri/src/i18n.rs: tr() and trf! for Rust strings; the tray menu
and settings window title are relabelled in place on change.
- Settings.language ("en" | "es"): empty in older settings files, then
pinned to the OS language on first launch so Rust and the webviews agree.
- Ticker step labels were in French; they now follow the chosen language.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Louis-CFM
pushed a commit
that referenced
this pull request
Oct 7, 2026
… translated
As on the Mac, Settings → General → Language offers System and the ten
languages, each named in its own. Settings.language ("" = System) is
independent of the system locale.
- Changing it reloads nothing: the settings window redraws its sections where
it was scrolled to; the island relabels in place and redraws on its next
sync, keeping its tasks, steps and chat (the reload in #226 wiped them).
- Rust follows: the tray menu is relabelled and the settings window retitled.
The island reports the system's languages at launch for System (Linux also
reads LANGUAGE / LANG before that).
- Every string of the settings window goes through t(); Arabic turns the
window right to left, diffs, paths and keys staying left to right.
The language picker, Settings.language and the tray relabelling come from
#226, rebuilt on the key-based lookup.
Co-authored-by: Alex Ramirez <alexis.rja62@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DMzyoPKtGVNBUemdZhnWRG
Owner
|
Thank you! Your language picker, the Generated by Claude Code |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a Language row to Settings → General in the Windows/Linux app (English / Español). The whole Tauri interface follows it.
What changes
src/core/i18n.ts:tr(en, es)returns the string for the current language. The language is cached inlocalStorageso the views built at startup, and labels defined at module level, can read it synchronously. Changing the language reloads both webviews. If a permission card is waiting, the island reloads only after it is answered, so the card never disappears mid-decision.src-tauri/src/i18n.rs:tr()and atrf!macro (a bilingualformat!) for Rust strings. On a language change the tray menu and the settings window title are relabelled in place.Settings.language("en"|"es",#[serde(default)]): older settings files load with it empty. On first launch it is pinned to the OS language, so Rust and the webviews agree.Exécute,Lit…). They now follow the chosen language:Runs/Ejecuta,Reads/Lee, and so on.No styles change: the only new UI element is the Language row, built like the existing rows in that section. The macOS app is untouched.
Screenshots
Settings → General, in each language:
Testing
npx tsc --noEmit: cleancargo build --release -p coucou: no warningscargo test --lib: 8 passed (the hooks tests still check the English messages, which stay the default)npm run packon Windows 11 and installed. Switching between English and Español works both ways: the island, the settings window, the tray menu and the window title all update.🤖 Generated with Claude Code