Repository navigation
Add Spanish translation support - #120
Merged
Merged
Conversation
jonocodes
added a commit
that referenced
this pull request
Oct 16, 2026
✅ Deploy Preview for savrlist ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
The UI now speaks English and Spanish through i18next + react-i18next:
every screen, dialog, snackbar, tooltip and empty state, plus the article
card/read-time strings and the ingestion progress messages produced by lib/.
- Language comes from the new savr-language cookie, else navigator.language
(es* -> es), and is switchable in Preferences -> Language
- Locale files live in src/locales/<lang>/<area>.json; lib keeps its English
source in lib/src/messages.ts and gets a translator injected at startup
- Summaries are asked to answer in Spanish when the UI is Spanish, and the
TTS voice default follows the language
- The browser extension is localised via _locales/{en,es} + chrome.i18n
- src/i18n.test.ts enforces en/es key + placeholder parity and checks that
every literal t() key resolves in both languages; tests/e2e/spanish.spec.ts
covers loading, switching and persistence (e2e locale pinned to en-US)
Co-Authored-By: Claude <noreply@anthropic.com>
jonocodes
force-pushed
the
feature/spanish-translations
branch
from
October 16, 2026 03:19
e46a17c to
bc3f909
Compare
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.
What
Adds Spanish as a second UI language, selectable in Preferences → Language and auto-detected from the browser (
es*→ Spanish) when no choice has been made yet.src/locales/{en,es}/(~460 keys each), merged into one namespace bysrc/i18n.tst()— dialogs, snackbars, tooltips, empty states, select labels — with{{placeholders}}and_one/_otherpluralslib/stays framework-free: it owns the English source (lib/src/messages.ts) plus a tinyt()that the app points at i18next at startup; Spanish lives insrc/locales/es/lib.json. Read times, ingestion progress messages and card dates are localized_locales/{en,es}/messages.json+chrome.i18n(default_locale: en),data-i18nattributes in the HTML — it follows the browser's languagedocs/DEVELOPMENT.md(how to add keys/languages, what stays English), README feature bullet, CHANGELOG entryTest plan
npx tsc --noEmitclean,npm run lint0 errors,npm run test→ 430 tests / 27 suites. Newsrc/i18n.test.tsenforces en↔es key parity,{{placeholder}}parity, lib-key parity, that every literalt()key resolves in both languages, and language-switch behaviornpm run build(PWA bundle) succeedsnpm run test:e2e→ 97 passed, including newtests/e2e/spanish.spec.ts(loads straight into Spanish from the cookie, switches in Preferences, persists across reload).playwright.config.tsnow pinslocale: "en-US"so the existing English assertions stay deterministicnpx web-ext lint→ 0 errors (1 pre-existing warning)es-ES(auto-detect works,<html lang>flips toes) anden-USDeliberately still English
console/debug output, thrown error messages surfaced in snackbars, telemetry event names, the prefilled GitHub issue template, CSV export headers, brand/product names, the PWA manifest and static
<title>, and LLM prompt instructions. Documented indocs/DEVELOPMENT.md.Screenshots
Preferences in English (baseline) with the new Language row
The same screen in Spanish — auto-detected from an es-ES browser locale; the Language dropdown is the new switch
Article list in Spanish (empty state)