Skip to content

feat(i18n): add full internationalization support (EN/IT)#202

Open
f-liva wants to merge 8 commits intoavihaymenahem:mainfrom
f-liva:feat/i18n-phase1
Open

feat(i18n): add full internationalization support (EN/IT)#202
f-liva wants to merge 8 commits intoavihaymenahem:mainfrom
f-liva:feat/i18n-phase1

Conversation

@f-liva
Copy link
Copy Markdown

@f-liva f-liva commented Feb 28, 2026

Summary

  • Phase 1: Set up i18next infrastructure with 9 namespaces, language selector in settings, OS language detection via Tauri plugin-os, ~500 strings across ~30 components (sidebar, email list, reading pane, composer, search, settings, accounts, tasks, notifications)
  • Phase 2: Complete remaining ~37 components — settings sub-editors, calendar, attachments, email sub-components, help page, DnD, label form. Add 3 new namespaces (calendar, attachments, help) with ~820 keys. Refactor helpContent.ts to i18n key paths. Language selector shows detected system language name
  • Total: 12 namespaces, ~1300+ translation keys in EN and IT, ~67 component files converted, translation completeness test ensuring key parity

Test plan

  • npx tsc --noEmit — 0 errors
  • npm run test — 134 files, 1608 tests, all passing
  • Translation completeness test verifies EN/IT key parity across all 12 namespaces
  • Visual verification: switch to Italian in Settings and check all pages render translated strings

🤖 Generated with Claude Code

Federico Liva and others added 5 commits February 28, 2026 16:17
Add i18next-based internationalization with English and Italian translations.

Infrastructure:
- i18next + react-i18next with static JSON imports (9 namespaces)
- OS locale detection via Tauri plugin-os for accurate system language
- Language selector in Settings with "Default (system)" option
- SQLite-persisted language preference
- Translation completeness test ensuring EN/IT key parity

Converted ~30 component files (~500 strings) across layout, email,
composer, search, settings, accounts, tasks, and notification layers.

Out of scope for Phase 1: helpContent.ts, Rust tray menu, calendar
and attachment components, sub-editors (filter/label/signature/template),
RTL support, additional languages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Translate the 3 built-in smart folders (Unread, Has Attachments,
Starred This Week) using i18n keys keyed by folder ID. User-created
smart folders still show their custom DB name.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Internationalize ~37 component files across settings sub-editors,
calendar, attachments, email sub-components, help page, DnD, and
label form. Add 3 new namespaces (calendar, attachments, help) with
~820 translation keys in EN/IT. Refactor helpContent.ts from literal
strings to i18n key paths. Language selector now shows detected
system language name ("Default (English)" / "Default (Italiano)").

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@f-liva f-liva changed the title feat: add internationalization (i18n) support — Phase 1 feat(i18n): add full internationalization support (EN/IT) Feb 28, 2026
Federico Liva and others added 2 commits March 2, 2026 10:04
The CSP img-src directive only whitelisted specific domains (Gravatar,
Google), causing the browser to block all other remote image requests
regardless of the "Block Remote Images" application setting. Added
https: and http: to img-src so images load when the user disables
the blocking setting.

Closes avihaymenahem#197

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Category names in ThreadCard badge, notification settings, and bundle
rules were displayed as raw English strings. Now resolved via sidebar
namespace translations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@f-liva
Copy link
Copy Markdown
Author

f-liva commented Mar 17, 2026

Hey @avihaymenahem, could you please take a look at this PR when you get a chance? It's been open for a couple of weeks and is ready for review. Thanks!

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