Skip to content

Windows/Linux: English and Spanish interface, with a language picker - #226

Closed
alexisrja wants to merge 1 commit into
Louis-CFM:mainfrom
alexisrja:idioma-es
Closed

alexisrja wants to merge 1 commit into
Louis-CFM:mainfrom
alexisrja:idioma-es

Conversation

@alexisrja

@alexisrja alexisrja commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

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 in localStorage so 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 a trf! macro (a bilingual format!) 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.
  • Strings covered: island views, the settings window, integration cards, Claude Code step labels, the tray menu, the settings window title, and the chat, hook-install and integration error messages.
  • Ticker step labels were the French ones from the Mac (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:

English Español
English Español

Testing

  • npx tsc --noEmit: clean
  • cargo build --release -p coucou: no warnings
  • cargo test --lib: 8 passed (the hooks tests still check the English messages, which stay the default)
  • Built with npm run pack on 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

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

Copy link
Copy Markdown
Owner

Thank you! Your language picker, the language setting and the tray retitling are in Coucou for Windows 0.2.0 (https://github.com/Louis-CFM/coucou/releases/tag/windows-v0.2.0), credited to you. The strings now come from the Mac's catalog by key, so Windows and Linux get all 10 of the Mac's languages, and switching language no longer reloads the island. Details in #307.


Generated by Claude Code

@Louis-CFM Louis-CFM closed this Oct 7, 2026
@alexisrja
alexisrja deleted the idioma-es branch October 10, 2026 23:34
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.

2 participants