Merged
Conversation
* feat: implement translations skill * feat: self-contained per-language translation agents Refactor translation pipeline so each per-language sub-agent owns its full lifecycle (translate → validate → retry → review → refine → merge → verify) instead of the orchestrator managing all steps across 9 languages. Reduces orchestrator to a lightweight coordinator that spawns agents and reads status files. - Extract shared script-detection utilities into script-utils.js - Refactor validate.js to import from script-utils.js (no behavior change) - Add validate-file.js for post-merge full-file validation (JSON validity, key completeness, aggregate script ratio, regression detection) - Simplify merge.js: remove duplicate script-validation, add pre-merge backup for rollback support - Rewrite SKILL.md Steps 5-8 for self-contained language agent architecture Co-Authored-By: Claude Opus 4.6 <[email protected]> * small cleanup fixes * feat: add missing i18n translations across 9 languages Translate 11 missing English strings into de, es, fr, ja, pt, ru, tr, uk, zh using the new /translate Claude Code skill. Covers RFOX FAQ entries, action center failure messages, and yield cooldown notices. Also fixes merge.js to only add new keys by default, never overwriting existing translations. A --force flag is available for intentional re-translation of changed English strings. Co-Authored-By: Claude Opus 4.6 <[email protected]> * hardening based on review * fix: address CodeRabbit findings and French elision rule - Fix glossary key mismatch in compile-report.js (disambiguated keys didn't match actual glossary.json keys, silently skipping 4 checks) - Fix mixed Latin/Cyrillic in ru.md locale guide (vы → вы) - Fix fragile file-path detection in merge.js (use fs.existsSync instead of includes('/'), add missing-arg guard and JSON.parse try/catch) - Add try/catch in missing-keys.js for corrupt/missing locale files - Add French elision rule to fr.md: use "de" when numeric %{amount} buffers the symbol, use "en" when symbol placeholder is directly after the preposition (avoids runtime elision ambiguity) - Retranslate French yield/unstake strings applying the new rule: "déstaking de %{symbol}" → "déstake en %{symbol}" Co-Authored-By: Claude Opus 4.6 <[email protected]> * feat: add Ukrainian and Turkish placeholder preposition/suffix rules Ukrainian: в/у and з/із/зі preposition alternation rules for dynamic placeholders where runtime values are unknown at translation time. Turkish: vowel harmony rules for dynamic placeholders — prefer postpositions over direct suffixes on placeholders since crypto symbols span all vowel classes. Co-Authored-By: Claude Opus 4.6 <[email protected]> * feat: translation pipeline improvements from benchmark findings - Add register examples to all 9 locale files (de, es, fr, ja, pt, ru, tr, uk, zh) with correct/incorrect pairs for non-pronoun register markers - Add register consistency as 6th reviewer focus in SKILL.md - Add "Multichain Snap" and "Snap" to glossary never-translate list - Fix 2 broken community translations across all 9 locales (stale multiChain.body, missing %{symbol} in getAssets.about) - Update compile-report.js to use stemMatch instead of raw .includes() for glossary metrics - Improve stemMatch with language-aware morphological matching (suffix stripping, Levenshtein distance, CJK character overlap) Co-Authored-By: Claude Opus 4.6 <[email protected]> * fix: benchmark measurement accuracy — strip placeholders, fix Turkish İ/i, add "stake" glossary Strip %{placeholder} tokens before glossary term matching to eliminate false positives (e.g. %{tradeFeeSource} triggering "trade" match). Add locale-aware toLower() for Turkish İ→i case mapping in stemMatch. Add "stake" glossary entry for root-form matches across locales. Co-Authored-By: Claude Opus 4.6 <[email protected]> * fix: address CodeRabbit review findings — translations and tooling - Fix Spanish gender agreement: "cantidad quemado" → "cantidad quemada" - Fix Spanish register inconsistency: align failed messages to formal "Su" - Fix Ukrainian FAQ title capitalization: "як" → "Як" - Fix Chinese withdrawal term consistency: "提款" → "提现" - Fix ja.md wording: "Japanese" → "kanji" for script contrast - Fix validate.js: emit info-severity glossary flags instead of dropping them - Fix select-keys.js: persist stale key pruning to disk Co-Authored-By: Claude Opus 4.6 <[email protected]> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
Contributor
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
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.
Release Notes - v1.1012.0
Production changes - testing required
Ethereal chain integration
Adds Ethereal (Ethena-powered EVM chain, chainId 5064014) as a second-class citizen. Ethereal uses USDe (stablecoin) as its native gas token. Test that Ethereal appears in chain/asset selectors, balances load correctly, and send/receive flows work for Ethereal assets.
Fixes, deps, and infra
Adds test automation attributes to trade page and wallet UI elements. No testing required.
Dev/local only - no production testing required
Agentic chat
Improves fallback behavior for agentic chat when Claude CLI is not available.
Developer tooling
Adds a Claude Code skill to automate i18n translation workflows for developers.