feat(i18n): add spanish translations for Ethernaut levels 30-40 with i18n hardening - #860
Open
JulianColoma wants to merge 3 commits into
Open
JulianColoma wants to merge 3 commits into
JulianColoma wants to merge 3 commits into
Conversation
Contributor
|
All contributors have signed the CLA ✍️ ✅ |
Add description and completion markdown for HigherOrder, Stake, Impersonator, ImpersonatorTwo, MagicAnimalCarousel, BetHouse, EllipticToken, Cashback, UniqueNFT, Forger and NotOptimisticPortal under es/descriptions/levels.
Verify every es level description mirrors en, every gamedata.json description reference exists in both, and every en/strings.json key is indexed in es/strings.json, logging and failing on any gap.
Merge the language dictionary over the English baseline so missing keys never resolve to undefined, and expose translate/t helpers supporting {placeholder} interpolation for the new level strings.
Author
|
I confirm that I have read and hereby agree to the OpenZeppelin Contributor License Agreement |
JulianColoma
force-pushed
the
master
branch
from
September 22, 2026 15:28
d634943 to
a704e56
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.
Summary
Adds Spanish translations for Ethernaut levels 30-40 (description + completion text for 11 levels), a localization validation test to keep translations in sync, and a more resilient i18n loader.
Changes
client/src/gamedata/es/descriptions/levels/covering HigherOrder, Stake, Impersonator, ImpersonatorTwo, MagicAnimalCarousel, BetHouse, EllipticToken, UniqueNFT, Forger and NotOptimisticPortal.client/src/utils/translations.js): the language dictionary is now merged over the English baseline, so a missing key falls back to English (or the key itself) instead ofundefined; newtranslate/thelpers support{placeholder}interpolation.localization.test.jsvalidates ES localization integrity: every es level description mirrors en, everygamedata.jsondescription reference exists in both languages, and everyen/strings.jsonkey is indexed ines/strings.json(logs and fails on any gap).translations.test.jscovers baseline merging, per-key fallbacks, interpolation and the new helpers.Verification
CI=true npx react-scripts test --watchAll=false— 13/13 tests passing (2 suites).npx eslinton the changed files — 0 errors (eslint-config-react-app).es/strings.jsonvalidated as valid JSON (121 keys).Notes
yarn(corepack);yarn.lockunchanged.Related Issues
Closes #850