i18n(terms): protect two key forms, four case variants, and a singular - #1965
Merged
zksquirrel merged 1 commit intoAug 16, 2026
Merged
Conversation
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
force-pushed
the
i18n/protect-key-forms-and-case-variants
branch
from
August 15, 2026 13:02
1187bf3 to
e598e56
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.
Why
Three gaps found while auditing
translation/protected-terms.jsonagainst the categorized list in the frontend repo.1. Key and address compounds are only half protected.
Unified AddressandViewing Keyare 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 SnapandZingo, while the variants that actually appear in the wiki went unenforced. Same trap asZodlvsZODL, still open.3.
ZK-SNARKsis enforced but its singular is not.What is added — all seven cost nothing
Full Viewing KeyIncoming Viewing KeyZcash.meZingo!ZGoZgoZK-SNARKEvery 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 Addressesas 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:-sto English loanwords.Unified Addressを調べる, because Japanese does not inflect plurals at all. 23 of the 113 sit inja/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-SNARKsis enforced today, and on all four English pages using it,ja/ko/zh/itcarry 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 addsZK-SNARKso that follow-up has something to fall back to.Still held back
Priced against both
mainand 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 Address39 ·Dev Fund25 (29 after re-sync) ·Diversified Address14 ·Spending Key7 ·Metamask Snap2 ·zk-SNARK2 ·Free2z1Skipped entirely:
Unified Viewing KeyandOutgoing Viewing Keyare in the categorized list but appear on no English page, so there is nothing to protect yet.