Skip to content

feat(i18n): add Spanish (es) locale - #798

Merged
jamiepine merged 2 commits into
jamiepine:mainfrom
kmikodev:feat/i18n-spanish-locale
Jul 20, 2026
Merged

feat(i18n): add Spanish (es) locale#798
jamiepine merged 2 commits into
jamiepine:mainfrom
kmikodev:feat/i18n-spanish-locale

Conversation

@kmikodev

@kmikodev kmikodev commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

What

Adds Spanish (es) as a UI display language, extending the existing i18next setup that already ships English, Japanese, Simplified Chinese and Traditional Chinese.

Why

Spanish was missing from the UI locales (it previously existed only as a TTS output language). UI i18n / general localization is listed as a Tier-2 roadmap item in docs/PROJECT_STATUS.md (#411, #392, #261), so this is an additive, on-roadmap change that follows the established 4-locale pattern.

Changes

  • app/src/i18n/locales/es/translation.json — new locale, 832 strings across all 18 namespaces, translated from the en master. Keys, {{interpolation}} placeholders, <code>/<path>/<link>/<strong> tags and _one/_other plural forms are preserved. Brand/model names (Whisper, Qwen3, Chatterbox, CUDA, MCP, etc.) are intentionally left untranslated.
  • app/src/i18n/index.ts — register es in SUPPORTED_LANGUAGES and resources. The language switcher and the LanguageCode type derive automatically.
  • app/src/lib/utils/format.ts — wire the date-fns es locale for relative-date formatting.

Verification

  • Key parity vs en: 832/832 — no missing/extra keys; all {{…}} placeholders and <…> tags intact.
  • biome check clean (JSON: no trailing commas, lineWidth 100).
  • tsc --noEmit passes for both app and web.
  • bun run build:web succeeds.

Notes

  • No new dependencies (date-fns already present).
  • CHANGELOG.md left untouched — it's auto-compiled during the release workflow per the file header.
  • Happy to add a screenshot of the language selector or a translated screen if useful.

Summary by CodeRabbit

  • New Features
    • Added Spanish language support across the app UI.
    • Users can now select Español in language settings.
    • Date-distance formatting now follows Spanish locale conventions when Spanish is selected.

@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ab656403-c81e-490c-9afc-f44e3acaea2b

📥 Commits

Reviewing files that changed from the base of the PR and between 559f44a and 29ebad6.

📒 Files selected for processing (1)
  • app/src/i18n/index.ts

📝 Walkthrough

Walkthrough

Spanish is added as a supported language, a complete Spanish translation catalog is registered, and date formatting now uses the Spanish locale when the active language is es.

Changes

Spanish locale support

Layer / File(s) Summary
Spanish translation catalog
app/src/i18n/locales/es/translation.json
Adds Spanish strings for navigation, captures, voices, effects, stories, generation, settings, and models workflows.
Spanish locale wiring
app/src/i18n/index.ts, app/src/lib/utils/format.ts
Adds es to supported languages and i18n resources, and maps the active Spanish language to the date-fns Spanish locale.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding Spanish (es) locale support to i18n.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Adds Spanish as a UI display language, matching the existing
4-locale pattern (en, ja, zh-CN, zh-TW) with full key parity.

- app/src/i18n/locales/es/translation.json: 832 strings across 18
  namespaces, translated from the en master. Keys, {{interpolation}}
  placeholders, <code>/<path>/<link>/<strong> tags and _one/_other
  plurals preserved. Brand/model names (Whisper, Qwen3, CUDA, MCP…)
  left untranslated by design.
- app/src/i18n/index.ts: register `es` in SUPPORTED_LANGUAGES and
  resources; the language switcher and LanguageCode derive automatically.
- app/src/lib/utils/format.ts: wire the date-fns `es` locale for
  relative-date formatting.

Verified: key parity 832/832 (no missing/extra, placeholders & tags
intact), biome check clean, app+web typecheck pass, build:web succeeds.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kmikodev
kmikodev force-pushed the feat/i18n-spanish-locale branch from 7183417 to 559f44a Compare July 13, 2026 14:29
@kmikodev

Copy link
Copy Markdown
Contributor Author

Hi @jamiepine 👋 Thanks for merging the French and pt-BR locales! This PR adds Spanish (es) following the exact same pattern.

I've rebased it on the latest main (after #802/#810 landed), so it's conflict-free, and it's green locally — typecheck for both app and web, plus build:web — with full key parity against en (850/850 keys, placeholders intact).

Whenever you get a chance, could you approve the workflow run so CI can verify it? Happy to tweak anything. 🙏

@jamiepine
jamiepine merged commit 2dc3b07 into jamiepine:main Jul 20, 2026
jamiepine added a commit that referenced this pull request Jul 20, 2026
Adds Spanish as a UI display language, matching the existing
4-locale pattern (en, ja, zh-CN, zh-TW) with full key parity.

- app/src/i18n/locales/es/translation.json: 832 strings across 18
  namespaces, translated from the en master. Keys, {{interpolation}}
  placeholders, <code>/<path>/<link>/<strong> tags and _one/_other
  plurals preserved. Brand/model names (Whisper, Qwen3, CUDA, MCP…)
  left untranslated by design.
- app/src/i18n/index.ts: register `es` in SUPPORTED_LANGUAGES and
  resources; the language switcher and LanguageCode derive automatically.
- app/src/lib/utils/format.ts: wire the date-fns `es` locale for
  relative-date formatting.

Verified: key parity 832/832 (no missing/extra, placeholders & tags
intact), biome check clean, app+web typecheck pass, build:web succeeds.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Jamie Pine <ijamespine@me.com>
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