Nuvo Localization

Independent automated report on a public open-source file. Findings are candidates for human review; the project did not commission this report and is not affiliated with this service. Full CSV available on request.

Portfolio: QA of public Chinese locale files in open-source DeFi apps

Generated 2026-10-23 with web3-zh-l10n v0.1.0 (default DeFi glossary, 378 terms). The files were read from public GitHub at pinned commits. Nothing was filed upstream or sent to anyone.

project license files checked (pinned commit) strings
Uniswap interface GPL-3.0 (apps/web/LICENSE; repo metadata GPL-3.0) packages/uniswap/src/i18n/locales/translations/zh-CN.json, zh-TW.json vs source/en-US.json @ bdbace6 5,237
Rabby Wallet MIT (brand name/logo reserved) _raw/locales/zh-CN/messages.json, zh-HK/messages.json vs en/messages.json @ c3aed73 3,794
KyberSwap interface MIT apps/kyberswap-interface/src/locales/zh-CN.po (gettext/Lingui) @ af51165 2,121

Excluded: Aave interface. It ships src/locales/zh/messages.po, but its LICENSE.md reads "All Rights Reserved © Aave Labs", so it is not openly licensed.

Per-file reports: <project>/<locale>/report.md (summary + examples) and review.csv (every finding, with reviewer columns). Short source/translation excerpts are quoted for review purposes under each project's license.

Verified findings (each checked by hand against the file)

KyberSwap — zh-CN (.po)

  1. 543 of 2,121 entries (25.6%) have an empty msgstr. Lingui falls back to the English source for these, so about a quarter of the UI strings in this catalog show up in English for zh-CN users. Examples: + Add Token(s), 1 Day, + Deposit.
  2. A clause was dropped, along with its placeholder {1}. Source: "…we have permanently paused our <1>Elastic {0} (Legacy)</1>. If you wish to participate in our {1}, check out our new and audited <2>Elastic {2}</2>." The zh-CN text leaves out the "If you wish to participate in our {1}" part.
  3. A link wrapper was lost. Source "Due to a <0><1>potential issue</1></0> with our legacy Elastic protocol…". The translation has no <0><1> tags, so the "potential issue" link (to the incident explanation) disappears in Chinese. The translation is also much shorter than the English, which recommends that all liquidity providers withdraw from Elastic Pools (Legacy).
  4. A tag was replaced by straight quotes. "Please type the word <0>Confirm</0> below to enable Degen Mode" → 请在下方输入“Confirm”以启用 "高风险" 模式: the <0> highlight is gone, and ASCII "…" sit next to curly quotes.
  5. Terminology. "gas" is rendered 燃气费 in 5 strings (燃气费 reads as a household gas bill; Gas 费 / 燃料费 are the usual crypto renderings). "Farm" is split 农场 ×19 / 挖矿 ×5, and "route" is split 路径 ×7 / 路由 ×5. (Style and terminology calls for a native reviewer, not bugs.)
  6. Minor: Rate: → 汇率 drops the colon of a label; TVL → TVL总锁仓价值 and KNC Amount → Kyber网络晶体KNC 数量 run Latin and Chinese together. The token name "Kyber Network Crystal" is left in English elsewhere, so this is inconsistent too.

Uniswap — zh-CN and zh-TW (i18next JSON)

  1. 11 keys in en-US.json have no zh-CN or zh-TW entry yet, for example margin.disclaimer ("Leveraged positions can be liquidated. Trade carefully."), rhcca.explainer.disclaimer and dapp.request.scanIncomplete.confirmationText ("I understand the risks"). Several are risk or disclaimer copy. They are probably new strings still in the translation pipeline.
  2. The meaning changed: rhcca.banner.graduatingLabel "Moving to a Uniswap pool" → 毕业中 / 畢業中 ("graduating"). The destination (a Uniswap pool) is gone from both Chinese locales.
  3. A styling tag was dropped: rhcca.explainer.title "How {{ccaMechanism}}es work" → {{ccaMechanism}} 的运作方式. The <accent> emphasis is lost in both locales.
  4. Mixed terminology (zh-CN): "approval" is 批准 in 15 strings and 授权 in 5. Token approvals are more commonly 授权 in Chinese wallets, but consistency matters more than which word is picked.
  5. zh-TW regional vocabulary (info): 創建者 for "creator" in 20+ rhcca.* strings. Taiwan UI usually says 建立者 / 創作者. This is a candidate for review, not a defect.
  6. Context: Uniswap's own repo glossary (.i18n/glossary/locales/zh-CN.yml) is followed with zero violations. They clearly enforce it, so the issues above are structural and coverage issues, not glossary drift.

Rabby Wallet — zh-CN and zh-HK (i18next JSON)

  1. A line break was lost in page.perpsPro.userInfo.floatingWidget.tooltip: the source has 2 \n, both translations have 1, so the bulleted tooltip renders differently.
  2. Untranslated labels: HD path: and LP-Token are left in English in both locales.
  3. Mixed terminology (zh-CN): "position" is 仓位 ×49 / 持仓 ×16, "swap" is 兑换 ×43 / 交换 ×3, "priority fee" is 优先费 / 小费, and "account" is 账户 ×43 / 帐户 ×3 (variant characters).
  4. zh-HK: "PnL" is 盈虧 ×22 / 損益 ×3. Mainland-flavoured 導出 ("export") and 運營商 ("node operator") appear where HK and TW UIs normally use 匯出 / 營運商.
  5. Punctuation (info): ASCII ... in 9 strings, "更多" straight quotes next to “开启测试网” curly quotes, and half-width parentheses around Chinese text.
  6. Correctly not flagged: the keys Rabby deliberately leaves in English through its __skip_translation arrays.

Known false-positive classes (stated so readers can calibrate)

Reproduce:

zhl10n check --source en-US.json --target zh-CN.json --locale zh-CN --out uniswap-interface/zh-CN
zhl10n check --target zh-CN.po --locale zh-CN --out kyberswap-interface/zh-CN