Skip to content

i18n(terms): protect two key forms, four case variants, and a singular - #1965

Merged
zksquirrel merged 1 commit into
ZecHub:mainfrom
bloxster:i18n/protect-key-forms-and-case-variants
Aug 16, 2026
Merged

i18n(terms): protect two key forms, four case variants, and a singular#1965
zksquirrel merged 1 commit into
ZecHub:mainfrom
bloxster:i18n/protect-key-forms-and-case-variants

Conversation

@bloxster

@bloxster bloxster commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Why

Three gaps found while auditing translation/protected-terms.json against the categorized list in the frontend repo.

1. Key and address compounds are only half protected. Unified Address and Viewing Key are enforced; the other expanded forms are not, so a translation can localize them and no check complains.

2. The check is case-sensitive, so a term protected in one casing is unprotected in the other. The list carries Free2Z, Zcash.Me, MetaMask Snap and Zingo, while the variants that actually appear in the wiki went unenforced. Same trap as Zodl vs ZODL, still open.

3. ZK-SNARKs is enforced but its singular is not.

What is added — all seven cost nothing

term English pages translations missing it
Full Viewing Key 5 0
Incoming Viewing Key 2 0
Zcash.me 1 0
Zingo! 20 0
ZGo 27 0
Zgo 9 0
ZK-SNARK 1 0

Every existing translation already keeps them verbatim, so this locks in current behaviour and prevents a future regression.

Verified: the whole-tree audit reports 72 violations both before and after, and none names a newly added term. (Those 72 are pre-existing drift from #1948 and #1957, cleared by the pending backfill/re-sync PR.)

What is not here — and why it should not be added later either

An earlier draft of this PR listed Unified Addresses as merely expensive: 94 violations, 113 after the pending re-sync. Measuring what those violations actually are changed the conclusion. Protecting an English plural is wrong in principle, not just costly.

Of the 113, 70% already carry the protected singular Unified Address. They did not lose the concept — they declined to pluralize an English loanword:

  • English "for inspecting Unified Addresses" → Italian "per ispezionare gli Unified Address". That is correct Italian; Italian does not add -s to English loanwords.
  • Japanese writes Unified Addressを調べる, because Japanese does not inflect plurals at all. 23 of the 113 sit in ja/ko/zh, none of which do.

Enforcing the plural would push a grammatical error into Italian, French and Spanish, and a meaningless string into three more, to satisfy a check the singular already satisfies conceptually.

The principle: protect singulars, not plurals. Languages differ in whether and how they pluralize borrowed nouns, so a protected plural imposes English grammar on all 18 locales.

This is not hypothetical. ZK-SNARKs is enforced today, and on all four English pages using it, ja/ko/zh/it carry the English plural verbatim — they had no choice. A follow-up will teach the checker that a plural is satisfied by its protected singular and retire the plural entries; this PR adds ZK-SNARK so that follow-up has something to fall back to.

Still held back

Priced against both main and the pending re-sync tree. These create violations that no queued sync repairs — the terms list is not part of staleness detection, so the debt would be invisible to the dashboard and unreachable by the sync agent:

TEX Address 39 · Dev Fund 25 (29 after re-sync) · Diversified Address 14 · Spending Key 7 · Metamask Snap 2 · zk-SNARK 2 · Free2z 1

Skipped entirely: Unified Viewing Key and Outgoing Viewing Key are in the categorized list but appear on no English page, so there is nothing to protect yet.

Three gaps found while auditing this list against the categorized list in
the frontend repo.

1. Key and address compounds are only half protected. `Unified Address` and
   `Viewing Key` are enforced, the other expanded forms are not, so a
   translation can localize them and nothing complains:

     Full Viewing Key       5 English pages, 0 translations missing it
     Incoming Viewing Key   2 English pages, 0 translations missing it

2. The check is case-sensitive, so a term protected in one casing is
   unprotected in the other. The list carries `Free2Z`, `Zcash.Me`,
   `MetaMask Snap` and `Zingo`, while the variants that actually appear in
   the wiki went unenforced:

     Zcash.me    1 English page,  0 translations missing it
     Zingo!     20 English pages, 0 translations missing it
     ZGo        27 English pages, 0 translations missing it
     Zgo         9 English pages, 0 translations missing it

   Same trap as `Zodl` vs `ZODL`, which is still open.

3. `ZK-SNARKs` is enforced but its singular is not:

     ZK-SNARK    1 English page,  0 translations missing it

All seven are free: every existing translation already keeps them verbatim,
so this locks in current behaviour and prevents a future regression.
Verified — the whole-tree audit reports 72 violations both before and after,
and none names a newly added term. (Those 72 are pre-existing drift from
ZecHub#1948 and ZecHub#1957, cleared by the pending backfill/re-sync PR.)

WHAT IS NOT HERE, AND WHY IT SHOULD NOT BE ADDED LATER EITHER

An earlier draft of this change listed `Unified Addresses` as merely
expensive — 94 violations, 113 after the pending re-sync. Measuring what
those violations actually are changed the conclusion: protecting an English
PLURAL is wrong in principle, not just costly.

Of the 113, 70% already carry the protected singular `Unified Address`.
They did not lose the concept; they declined to pluralize an English
loanword. English "for inspecting Unified Addresses" becomes Italian "per
ispezionare gli Unified Address", which is correct Italian — Italian does
not add -s to English loanwords. Japanese writes `Unified Addressを調べる`
because Japanese does not inflect plurals at all, and 23 of the 113 sit in
ja/ko/zh, none of which do.

Enforcing the plural would push a grammatical error into Italian, French,
Spanish and others, and a meaningless string into three more, to satisfy a
check the singular already satisfies conceptually.

The principle: protect singulars, not plurals. Languages differ in whether
and how they pluralize borrowed nouns, so a protected plural imposes English
grammar on all 18 locales.

This is not hypothetical. `ZK-SNARKs` is enforced today, and on all four
English pages that use it, ja/ko/zh/it carry the English plural verbatim —
they had no choice. A follow-up will teach the checker that a plural is
satisfied by its protected singular and retire the plural entries; this
change adds the singular so that follow-up has something to fall back to.

Also still held back, each priced against both main and the pending re-sync
tree, because adding them creates violations no queued sync repairs (the
terms list is not part of staleness detection, so the debt is invisible to
the dashboard and unreachable by the sync agent): TEX Address 39,
Dev Fund 25/29, Diversified Address 14, Spending Key 7, Metamask Snap 2,
zk-SNARK 2, Free2z 1.

Skipped entirely: `Unified Viewing Key` and `Outgoing Viewing Key` are in
the categorized list but appear on no English page.
@bloxster bloxster changed the title i18n(terms): protect two key forms and four unprotected case variants i18n(terms): protect two key forms, four case variants, and a singular Aug 15, 2026
@bloxster
bloxster force-pushed the i18n/protect-key-forms-and-case-variants branch from 1187bf3 to e598e56 Compare August 15, 2026 13:02
@zksquirrel
zksquirrel merged commit 973b017 into ZecHub:main Aug 16, 2026
4 checks passed
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