Skip to content

feat(i18n): add complete Latin American Spanish (es) UI translation catalogs - #2

Closed
kauenet wants to merge 2 commits into
mainfrom
feat/i18n-es-catalogs-01-08-2026
Closed

feat(i18n): add complete Latin American Spanish (es) UI translation catalogs#2
kauenet wants to merge 2 commits into
mainfrom
feat/i18n-es-catalogs-01-08-2026

Conversation

@kauenet

@kauenet kauenet commented Aug 1, 2026

Copy link
Copy Markdown

Summary

  • Adds complete Latin American Spanish (es) catalogs for all 3,639 UI strings across the 8 message files — including dashboard-private-channels.json (272 keys), which fr does not cover yet.
  • Registers es in supportedLocales/messagesByLocale; the language picker and Accept-Language resolution (es, es-MX, es-AR, …) pick it up automatically.
  • Adds the locales.es terminology block (voice, glossary-driven terminology, forbiddenTerms) to .github/translation-guidance.json, so catalog validation and the Eve release workflow enforce the conventions on every future string.

Sibling PR to the Brazilian Portuguese one — both add a locale to the same five wiring files, so whichever merges second gets a trivial rebase (supportedLocales, imports, catalog const, registry entry, guidance block are all additive).

Terminology

  • Source of truth: solanabr/solana-glossary + the established fr conventions.
  • Kept in English: Token, Wallet, mint/burn, allowlist/blocklist, endpoint, API Playground, Sandbox, stablecoin, on-chain/off-chain, staking, the SPL authority family (Mint/Freeze/Update/Metadata Authority, Permanent Delegate), ramp/on-ramp/off-ramp, rails, rent.
  • Standard Latin American financial vocabulary elsewhere: activo, contraparte, transferencia, cotización, proveedor, custodia, custodio, decimales, cumplimiento, pago saliente (payout), fondeo (funding); tarifa for network/transaction fees vs comisión for provider fees.
  • Register: /ustedes (never vosotros), inverted ¿ ¡. Forbidden (regex-enforced): billetera, monedero, cartera, ficha, acuñar, zona de pruebas, lista blanca/negra.

Quality process

  • Terminology contract authored before translating.
  • Two rounds of independent adversarial review (native register, cross-file terminology consistency, UI mechanics, meaning fidelity, and revision regression), with all confirmed findings applied.
  • 100% key parity with en; placeholder tokens byte-identical; zero forbidden-term hits.

Policy

Dedicated translation-only PR per check-catalog-change-policy.mjs — zero English catalog changes.

Validation

  • validateCatalogs (missing keys + placeholder parity + forbidden terms): es fully valid
  • vitest src/i18n/messages.unit.test.ts (inventory parity, typed lookups, fallback): pass
  • tsc --noEmit (sdp-web) — catalogs type-checked via satisfies LocalizedMessages<Messages>: pass
  • pnpm test:scripts (catalog policy + release translation tooling): pass
  • Biome on all changed files: clean
  • Runtime: cookie and Accept-Language (es, es-MX) resolve to es; landing and dashboard surfaces render translated; en/fr unaffected.

…oy modal (solana-foundation#1039)

* feat(sdp-web): stepped tokenization-engine chooser in the deploy modal

Deploying a token now opens a two-step modal behind the
alphaledger-tokenization-engine flag: step 1 offers Vulcan Forge
(coming soon, disabled) and SDP with Mosaic as engine cards, step 2 is
the signer/fee panel with Back navigation, animated transitions, and
grid-stacked steps so the card height never shifts. The Kora button and
hint copy leave the deploy panel; wallet deploy becomes the primary CTA.

Local dev flag evaluations kept falling back to defaultValue because the
Vercel flags stream misses its 3s init timeout off-Vercel, so dev now
uses a polling client (30s interval) via @vercel/flags-core while
deploys keep the default streaming adapter.

* chore(sdp-web): drop localized catalog edits per catalog policy

* feat(sdp-web): Vulcan Forge onboarding toggle in the deploy step

Behind the same flag, the deploy step shows an AlphaLedger banner with a
switch: a Mosaic deploy can opt into onboarding the token to Vulcan
Forge as a registered twin. UI only for now — the registration call
lands with the backend integration.

* refactor(sdp-web): Vulcan Forge onboarding as a one-liner below the signer

* refactor(sdp-web): card-style onboarding banner and full-height engine cards

* copy(sdp-web): shorten Vulcan Forge onboarding description to one line

* feat(sdp-web): concentric ring pattern behind engine card logos
@kauenet
kauenet force-pushed the feat/i18n-es-catalogs-01-08-2026 branch from 8e42350 to aef4858 Compare August 1, 2026 15:45
…atalogs

Adds full es catalogs for all 3,639 UI strings across the 8 message files,
including dashboard-private-channels (not yet covered by fr). Registers the
locale in supportedLocales/messagesByLocale, extends the i18n unit tests,
and adds the locales.es terminology block (voice, glossary-driven
terminology, forbiddenTerms) to translation-guidance.json so catalog
validation enforces the conventions from day one.

Terminology follows solanabr/solana-glossary and the established fr
precedent: Token, Wallet, mint/burn, allowlist/blocklist, endpoint,
API Playground and friends stay in English; generic finance/CS vocabulary
uses neutral Latin American Spanish (activo, contraparte, transferencia,
cotización, proveedor). Register: tú, never vosotros.
@kauenet
kauenet force-pushed the feat/i18n-es-catalogs-01-08-2026 branch from aef4858 to 5fdb40d Compare August 1, 2026 23:30
@kauenet

kauenet commented Aug 1, 2026

Copy link
Copy Markdown
Author

Superseded by the upstream PR: solana-foundation#1047 (same content, rebased onto upstream main with the 13 new deploy-modal strings topped up).

@kauenet kauenet closed this Aug 1, 2026
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