i18n: translation pipeline (all languages)#18285
Conversation
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
Co-Authored-By: Gemini <gemini@google.com>
✅ Deploy Preview for ethereumorg ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
🌐 Translation review started. View progress |
There was a problem hiding this comment.
Translation Quality Review
PR: #18285
Branch HEAD: d43a9aacae
Languages: ar, bn, cs, de, es, fr, hi, id, it, ja, ko, mr, pl, pt-br, ru, sw, ta, te, tr, uk, ur, vi, zh, zh-tw (24 total)
Files reviewed: 141 JSON UI string files across the 6 changed pages (page-apps, page-developers-tools, page-developers-tools-descriptions, page-founders, page-resources, page-trillion-dollar-security)
Date: 2026-05-26
Fixes: No fixes applied (review-only)
Summary by Language
| Language | Files | Critical | Warnings | Quality Score |
|---|---|---|---|---|
| it | 5 | 0 | 8 | 9.6/10 |
| pt-br | 6 | 0 | 6 | 9.6/10 |
| id | 6 | 0 | 8 | 9.2/10 |
| sw | 5 | 0 | 8 | 9.0/10 |
| tr | 6 | 0 | 6 | 9.0/10 |
| vi | 6 | 0 | 8 | 9.0/10 |
| de | 6 | 0 | 8 | 8.8/10 |
| fr | 6 | 1 | 10 | 8.8/10 |
| pl | 6 | 3 | 7 | 8.8/10 |
| ru | 6 | 0 | 8 | 8.8/10 |
| es | 6 | 0 | 10 | 8.6/10 |
| mr | 6 | 0 | 8 | 8.6/10 |
| ur | 6 | 0 | 11 | 8.6/10 |
| bn | 5 | 0 | 10 | 8.4/10 |
| ja | 6 | 1 | 7 | 8.4/10 |
| uk | 6 | 0 | 16 | 8.4/10 |
| cs | 6 | 4 | 10 | 8.2/10 |
| ko | 6 | 9 | 10 | 8.2/10 |
| te | 6 | 0 | 8 | 8.2/10 |
| hi | 6 | 1 | 10 | 7.8/10 |
| ar | 6 | 1 | 10 | 7.6/10 |
| zh | 6 | 4 | 8 | 7.6/10 |
| zh-tw | 6 | 7 | 6 | 7.4/10 |
| ta | 6 | 13 | 12 | 6.0/10 |
| Total / Avg | 141 | 44 | ~213 | ~8.5/10 |
Critical Issues Highlights (must-fix before merge)
Brand-name transliteration violations (multi-language). Several languages transliterate brand names that should remain Latin per ETHGlossary script_rule: keep_latin or project convention:
ko:Optimism→옵티미즘(~20+ tool descriptions),Arbitrum→아비트럼,Polygon→폴리곤,Unichain→유니체인,Uniswap→유니스왑(page-founders.json, page-trillion-dollar-security.json, many tool descriptions).zh:Uniswap→尤尼斯瓦普inpage-trillion-dollar-security-section-1-3-paragraph-1.zh-tw:Uniswap→尤尼斯瓦普in same key.ta:Arbitrum→ஆர்பிட்ரம்,Polygon→பாலிகன்,Uniswap→யூனிஸ்வாப்(page-founders, trillion-dollar-security).ja:Arbitrum→アービトラム,Polygon→ポリゴンin page-founders.json.
Semantic mistranslations (must-fix):
ar—page-resources-eth-asset-ultrasound-description: "Ultra sound money" rendered asالمال فائق Solidity— the word "sound" was replaced by the brand name "Solidity". Catastrophic model hallucination.fr—page-trillion-dollar-security-section-2-1-list-title-8: EOA expanded ascompte détenu par un tiers("account held by a third party") — inverts the meaning (EOA = Externally Owned Account = user-controlled).zh—tool-openrpc-description: "For over six years" mistranslated as六个多月(six months).zh—tool-ethereum-attestation-service-eas-description: 1M attestations and 14k attesters are swapped (subject/object inversion).zh-tw— Six instances inpage-developers-tools-descriptions.jsontranslaterollupas卷積(math "convolution"). Should be匯總or kept Latin.ta—page-trillion-dollar-security:token/tokensrendered asவில்லை/வில்லைகள்("card/leaf") in several keys; standard term isடோக்கன்.ja—tool-the-ethernaut-description: cross-script Traditional-Chinese發used instead of Japanese発plus a stray space.ta— three competing Tamil spellings of "Ethereum" coexist:எத்திரியம்(glossary-correct, dominant),எத்தேரியம்(4+ occurrences),எத்தீரியம்(2 occurrences in trillion-dollar-security).
ETHGlossary deviations:
cs—slashingrendered asosekání("cutting/pruning") instead of glossarypenalizace(4+ occurrences).gasrendered asplyn/plynuinstead of glossarygasacross many tool descriptions, one tag (gas-optimization→Optimalizace plynu), andpage-resources-gas-blocknative-description(poplatků za plyn).pl—attestationrendered asatestacjathroughoutpage-trillion-dollar-security,page-resources, and tool descriptions, while ETHGlossary mandatespoświadczenie.hi—page-developers-tools-tag-json-rpcrendered asजेसन-आरपीसी. Tickers/standards (JSON-RPC, ERC-721, EIP) must stay Latin.ta—page-developers-tools-tag-json-rpcsimilarly transliterated asஜேசன்-ஆர்பிசி.
Notes & Recommendations
- Recurring pattern: brand-name transliteration in
page-founders.json. Multiple non-Latin-script languages (ko, ja, ta, ur, hi, mr, te) transliterate ecosystem brand names (Arbitrum, Polygon, Unichain) while keeping peer brands (Base, Optimism) Latin. Recommend a project-wide call on whether the brand-tag policy for ecosystem names should be uniform Latin or uniform transliteration per language script. - Recurring pattern: tag distinction respected. Across nearly all languages the brand-name-tag vs concept-tag distinction in
page-developers-tools-tag-*keys is correctly applied — concept tags translated (security/testing/governance/encryption), brand-name tags kept Latin or transliterated per glossary. - JSON-RPC tag transliterated (
hi,ta) — should remain Latin per the tickers/standards rule. - English-source artifacts faithfully mirrored. Multiple agents flagged that
page-resources-mev-mevboost-descriptioncarries an incorrect English source (stablecoinswtf description duplicated under MEV-Boost) andtool-rust-libp2p-descriptionends mid-sentence in English. Upstream English bugs, not translation defects. - Auto-fix not applied — this CI workflow does not commit fixes to the PR branch.
Detailed per-language score breakdowns (5-category rubric) are posted as follow-up comments on this PR.
To apply fixes, run locally:
/review-translations --pr=18285 --fix
The slash command applies fixes for brand-name transliterations, glossary deviations, JSON-RPC/ticker reversions, and semantic inversions (where the expected target is unambiguous), then stages the changes for commit.
Reviewed by Claude Code (24 parallel language agents, ETHGlossary-anchored)
Per-Language Detailed Quality Scores — Part 1/4: ar, bn, cs, de, es, fr(Follow-up to PR Review #4366085215.) ar — 7.6/10 (1 critical, ~10 warnings)
Formal MSA, consistent technical terminology; one critical "Solidity for sound" hallucination requires fix. bn — 8.4/10 (0 critical, ~10 warnings)
Zero critical; safe to merge. Recommend consistency follow-up. cs — 8.2/10 (4 critical, ~10 warnings)
Critical fixes: normalize de — 8.8/10 (0 critical, 8 warnings)
Recommend a register pass to align on es — 8.6/10 (0 critical, ~10 warnings)
Recommend register pass to normalize on fr — 8.8/10 (1 critical, 10 warnings)
Critical fix: EOA expansion in trillion-dollar-security section-2-1-list-title-8. (continued) |
Per-Language Detailed Quality Scores — Part 2/4: hi, id, it, ja, ko, mrhi — 7.8/10 (1 critical, 10 warnings)
Critical fix: revert id — 9.2/10 (0 critical, 8 warnings)
Zero critical. Safe to merge with optional consistency follow-up. it — 9.6/10 (0 critical, 8 warnings)
Safe to merge. ja — 8.4/10 (1 critical, 7 warnings)
Critical fix: cross-script character ko — 8.2/10 (9+ critical, 10 warnings)
Critical: brand-name transliteration sweep needed (Arbitrum/Polygon/Optimism/Unichain/Uniswap should remain Latin per project policy). mr — 8.6/10 (0 critical, 8 warnings)
Zero critical. Safe to merge. (continued) |
Per-Language Detailed Quality Scores — Part 3/4: pl, pt-br, ru, sw, ta, tepl — 8.8/10 (3 critical, 7 warnings)
Critical fix: normalize pt-br — 9.6/10 (0 critical, 6 warnings)
Recommend merge. ru — 8.8/10 (0 critical, 8 warnings)
Zero critical. Safe to merge. sw — 9.0/10 (0 critical, 8 warnings)
Zero critical. Safe to import. ta — 6.0/10 (13 critical, 12 warnings)
Lowest-scoring locale. Recommend significant cleanup before merge: unify Ethereum spelling, replace te — 8.2/10 (0 critical, 8 warnings)
Zero critical. Safe to merge with consistency follow-up. (continued) |
Per-Language Detailed Quality Scores — Part 4/4: tr, uk, ur, vi, zh, zh-twtr — 9.0/10 (0 critical, 6 warnings)
Zero critical. Safe to merge. uk — 8.4/10 (0 critical, 16 warnings)
Zero critical. Recommend a Ukrainian-grammar pass to fix indeclinable ur — 8.6/10 (0 critical, 11 warnings)
Zero critical. Safe to merge. (Eastern Arabic numerals are widely used in Urdu literature; consistent with prior pipeline output.) vi — 9.0/10 (0 critical, 8 warnings)
Zero critical. Safe to merge. zh — 7.6/10 (4 critical, 8 warnings)
Critical fixes required before merge. Recommend a sweep on Uniswap, six-years-vs-six-months, EAS counts, and Blobs→Blob. zh-tw — 7.4/10 (7 critical, 6 warnings)
Critical fix: replace six End of detailed score breakdowns. |
Targeted fixes from ETHGlossary-grounded translation review of PR #18285: - ar page-resources "eth-asset-ultrasound-description": model hallucination -- word "sound" was replaced by the brand name "Solidity" inside "المال فائق Solidity (Ultra sound money)"; restored to "الصوت" (sound). - fr page-trillion-dollar-security "section-2-1-list-title-8": "Externally Owned Account (EOA)" rendered as "compte détenu par un tiers" (account held by a third party), inverting the user-owned meaning; fixed to "compte externe (EOA)". - ja page-developers-tools-descriptions "tool-the-ethernaut-description": cross-script contamination -- Traditional Chinese "開發者" used instead of Japanese "開発者" plus a stray missing-particle space; fixed to "の開発者". - pl page-developers-tools-descriptions (3 keys) + page-resources (2 keys): atestacja-family glossary deviation; ETHGlossary mandates "poświadczenie" for "attestation". Fixed 9 substitutions across 5 keys including noun (atestacja->poświadczenie), agent noun (atestator->poświadczający), and gerund (atestowanie->poświadczanie) forms. - ru page-developers-tools-descriptions "tool-ipfs-description": glossary deviation -- invented "внечейн" used for "offchain" where ETHGlossary mandates "офчейн" (with note that this is standard Russian IT terminology). 3 occurrences in one key. - zh page-developers-tools-descriptions "tool-openrpc-description": temporal error -- "For over six years" rendered as "六个多月来" (over six months); fixed to "六年多来" (over six years). zh-tw correctly rendered as "六年多來" in the same key. - zh-tw page-developers-tools-descriptions (6 keys): "rollup" mistranslated as "卷積" (math convolution) where ETHGlossary mandates "匯總"; replaced all 6 instances across the file. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
myelinated-wackerow
left a comment
There was a problem hiding this comment.
Translation Quality Review
PR: #18285
Branch HEAD: df7a5f9d52 (post-fix; was d43a9aacae pre-fix)
Languages: 24 (ar, bn, cs, de, es, fr, hi, id, it, ja, ko, mr, pl, pt-br, ru, sw, ta, te, tr, uk, ur, vi, zh, zh-tw)
Files reviewed: 141 JSON files (6 page-* per locale, minus 3 langs for page-developers-tools-descriptions)
Scope: Full PR diff, ETHGlossary-driven review (6 files × 24 langs = 144 glossary /filter queries, then per-language tables injected into 7 script-family-grouped review agents)
Date: 2026-05-26
Fixes: 7 issues found and fixed in commit df7a5f9d52
Summary
This review re-evaluates an earlier @claude review that claimed 44 criticals at average 8.5/10. After per-language ETHGlossary lookups and file-level verification, the actual picture is significantly better: 7 genuine issues found and fixed (model hallucination, semantic inversion, temporal error, cross-script contamination, and three glossary deviations). The remainder of the prior @claude criticals were ETHGlossary-authorized transliterations being incorrectly flagged as "must stay Latin".
Issues Fixed in This Review (commit df7a5f9d52)
| Severity | File | Key(s) | Issue | Fix |
|---|---|---|---|---|
| Critical | src/intl/ar/page-resources.json |
page-resources-eth-asset-ultrasound-description |
Model hallucination: the word "sound" was replaced by the brand name Solidity inside المال فائق Solidity (Ultra sound money) |
Restored to المال فائق الصوت |
| Critical | src/intl/fr/page-trillion-dollar-security.json |
page-trillion-dollar-security-section-2-1-list-title-8 |
Semantic inversion: "Externally Owned Account (EOA)" rendered as compte détenu par un tiers (account held by a third party), inverting the user-owned meaning |
Fixed to compte externe (EOA) |
| Critical | src/intl/ja/page-developers-tools-descriptions.json |
tool-the-ethernaut-description |
Cross-script contamination: Traditional Chinese 開發者 used instead of Japanese 開発者, plus a stray missing-particle space |
Fixed to の開発者 |
| Critical | src/intl/pl/page-developers-tools-descriptions.json (3 keys) + src/intl/pl/page-resources.json (2 keys) |
tool-ethereum-attestation-service-eas-description, tool-op-ens-gateway-by-optidomains-description, tool-farcaster-attestation-description, page-resources-attestations-title, page-resources-attestations-eas-description |
Glossary deviation: atestacja-family terms used for "attestation"; ETHGlossary mandates poświadczenie |
9 substitutions across 5 keys covering noun (atestacja -> poświadczenie), agent noun (atestator -> poświadczający), and gerund (atestowanie -> poświadczanie) forms |
| Critical | src/intl/ru/page-developers-tools-descriptions.json |
tool-ipfs-description |
Glossary deviation: invented внечейн used for "offchain"; ETHGlossary mandates офчейн (with note "Used frequently as an invariable adjective or adverb in Russian IT terminology") |
3 substitutions in one key |
| Critical | src/intl/zh/page-developers-tools-descriptions.json |
tool-openrpc-description |
Temporal error: "For over six years" rendered as 六个多月来 (over six months); zh-tw correctly rendered as 六年多來 in the same key |
Fixed to 六年多来 |
| Critical | src/intl/zh-tw/page-developers-tools-descriptions.json |
6 keys | Glossary deviation: rollup mistranslated as 卷積 (math convolution) where ETHGlossary mandates 匯總 for Traditional Chinese |
All 6 instances replaced with 匯總 |
False positives from prior @claude review (verified against ETHGlossary)
| Prior critical class | Languages | ETHGlossary verdict |
|---|---|---|
| Brand-name transliterations "must stay Latin" (Optimism, Arbitrum, Polygon, Unichain, Uniswap) | ko, ja, ta, zh, zh-tw | FALSE POSITIVE -- glossary has explicit per-language transliterated entries (옵티미즘, アービトラム, ஆர்பிட்ரம், 尤尼斯瓦普, etc.) for ALL of these. |
JSON-RPC tag transliterated "must stay Latin" |
hi, ta | FALSE POSITIVE -- glossary explicitly authorizes Devanagari/Tamil transliteration. |
Ethash "must stay Latin" |
bn, hi, mr, ta, te, ur | FALSE POSITIVE -- glossary scriptRule: translate. |
| Tamil three-spelling Ethereum claim | ta | FALSE POSITIVE -- intentional context-specific compound forms per glossary (எத்திரியம் standalone, எத்தீரியம் அறக்கட்டளை Foundation, எத்தேரியம் முதன்மை வலைப்பின்னல் Mainnet). |
Tamil token -> வில்லை flagged as deviation |
ta | FALSE POSITIVE -- glossary explicitly says வில்லை is the native term, with டோக்கன் as an alternate ("Often transliterated as 'டோக்கன்' in casual settings"). |
| zh EAS attestation/attester subject-object inversion | zh | FALSE POSITIVE -- zh text "14k unique attesters made 1M+ attestations" matches EN "1M+ attestations from 14k+ attesters"; the translator inverted clause order but preserved meaning. |
cs slashing -> osekání flagged as deviation |
cs | NUANCED FALSE POSITIVE -- ETHGlossary has both slash -> penalizace AND social slashing -> sociální osekání with the note "'Osekání' is the standard translation for 'slashing' in proof-of-stake contexts in Czech". The file uses the more specific compound entry. Translator followed glossary; the visible "deviation" is a glossary self-contradiction. |
cs gas -> plyn in many keys |
cs | NUANCED FALSE POSITIVE -- bare gas stays Latin per glossary; plyn only appears inside gas fee compound which IS the glossary entry poplatek za plyn. Glossary self-contradicts itself; translator was glossary-compliant. |
Warnings Open (for native review / future passes)
| Language | Issue | Files |
|---|---|---|
| de | page-trillion-dollar-security.json section-6-2-paragraph-1: minor declension on an reale Vermögenswerte |
page-trillion-dollar-security |
| sw | page-trillion-dollar-security.json section-3-6-paragraph-2: cryptocurrencies rendered as fedha za siri (literally "secret money") instead of glossary-mapped kripto |
page-trillion-dollar-security |
| sw | page-developers-tools.json category-sdks-title: front-end rendered as upande wa mbele (literal "front side"), unusual for a technical heading |
page-developers-tools |
| uk | page-trillion-dollar-security.json section-2-1-list-title-7: spelling slip Мості should be Мости (nominative plural of bridge) |
page-trillion-dollar-security |
| uk | page-apps.json category-dao-meta-description: case agreement error найкращі інструментів should be найкращі інструменти |
page-apps |
| te | page-developers-tools-descriptions.json (34 occurrences): blockchain rendered as బ్లాక్చెయిన్ (variant spelling) instead of glossary-canonical బ్లాక్చైన్ used in the other 5 files |
page-developers-tools-descriptions |
| vi | page-resources.json (multiple keys): "adoption" rendered as sự chấp thuận (approval) instead of sự áp dụng (uptake/usage) |
page-resources |
| vi, id, sw | Censorability Monitor naming ambiguity (could read as "Ethereum's ability to censor" rather than "how censorable Ethereum is") | page-resources |
| hi | Some tool descriptions in page-developers-tools-descriptions.json end with Devanagari danda । attached to URL fragments |
page-developers-tools-descriptions |
| sw | mteja/wateja for computing "client" continues (per-glossary policy but warrants native review) |
page-trillion-dollar-security and others |
Upstream English-source issues (not translation defects)
page-resources-mev-mevboost-descriptioncontains content from thestablecoinswtfdescription (mentions "stablecoins" in an MEV-Boost item). Multiple translations faithfully mirror this English-side bug.tool-rust-libp2p-descriptionends mid-sentence in the English source per the prior review.
Glossary follow-ups recommended
- cs glossary self-contradiction --
gas -> gasvsgas fee -> poplatek za plyn, andslash -> penalizacevssocial slashing -> sociální osekání. The translator can only follow one entry at a time; the visible inconsistencies in cs files are glossary-driven, not translator-driven. Worth a one-pass harmonization of either the bare term or the compound entries. - ETHGlossary entries for tags -- prior reviewer flagged some concept tags as untranslated and some brand-name tags as wrongly translated; per-tag glossary entries would resolve ambiguity.
Updated quality scores
After removing false positives and applying the 7 fixes:
| Language | Files | Quality (post-fix) | Issues remaining |
|---|---|---|---|
| ar | 6 | 9.4/10 | Solidity hallucination fixed; otherwise clean |
| bn | 5 | 9.4/10 | Clean (minor consistency drift on numerals) |
| cs | 6 | 9.4/10 | Glossary self-contradiction warnings (not translator-side) |
| de | 6 | 9.7/10 | One minor declension warning |
| es | 6 | 9.9/10 | Clean |
| fr | 6 | 9.7/10 | EOA inversion fixed |
| hi | 6 | 9.0/10 | URL-danda warnings |
| id | 6 | 9.4/10 | Minor node/simpul consistency |
| it | 5 | 9.6/10 | Clean |
| ja | 6 | 9.6/10 | Cross-script contamination fixed |
| ko | 6 | 9.8/10 | Clean (all prior 9 "criticals" were glossary-authorized) |
| mr | 6 | 9.4/10 | Clean |
| pl | 6 | 9.5/10 | Attestation glossary fixed (9 subs) |
| pt-br | 6 | 9.6/10 | Clean |
| ru | 6 | 9.4/10 | Внечейн -> Офчейн fixed in IPFS tool |
| sw | 5 | 9.0/10 | Minor warnings (fedha za siri, front-end, mteja policy) |
| ta | 6 | 9.4/10 | Clean (prior 13 "criticals" were all glossary-authorized) |
| te | 6 | 8.6/10 | Blockchain spelling drift in tools-descriptions (34 hits warning) |
| tr | 6 | 9.7/10 | Clean |
| uk | 6 | 9.2/10 | Two minor spelling/grammar warnings |
| ur | 6 | 9.4/10 | Clean |
| vi | 6 | 9.0/10 | adoption/approval semantic warning |
| zh | 6 | 9.6/10 | Six-years temporal fixed |
| zh-tw | 6 | 9.5/10 | Rollup -> 匯總 fixed (6 keys) |
Overall average post-fix: ~9.4/10 -- substantially higher than the prior @claude review's 8.5/10 estimate, which was depressed by ~37 false-positive criticals.
Methodology notes
- All
/filterglossary queries used the correctedcontent:field (PR #18275). Per-language ETHGlossary tables were injected into agent prompts as authoritative references. - 7 script-family-grouped sub-agents reviewed all 141 files in parallel, with explicit anti-false-positive context distilled from prior PR reviews.
- Numerical/temporal spot-checks across all 24 languages: the zh
六个多月(six months vs source "six years") was the only confirmed temporal error. - The zh EAS attestation/attester "subject-object inversion" claim by the prior @claude review was independently verified false: zh text correctly conveys "14k attesters made 1M attestations" matching the English meaning despite reversed clause order.
Reviewed by Claude Code with ETHGlossary as authoritative source. 7 parallel script-family-grouped per-language sub-agents, full PR diff scope, full glossary cross-check.

Automated Translations
This PR contains translations managed by the intl pipeline.
Each run appends a summary below.
Run: 2026-05-26 17:13:04 UTC
3 task(s) failed:
src/intl/en/page-developers-tools-descriptions.json(it): Output validation failed after 3 attempts: Key count mismatch: got 99, expected 100src/intl/en/page-developers-tools-descriptions.json(bn): Output validation failed after 3 attempts: Key count mismatch: got 99, expected 100src/intl/en/page-developers-tools-descriptions.json(sw): This operation was abortedRerun the failed combinations: