I3095 — A count inside a translated sentence is a slot, so a changed number never drops the translation
Key the translation memory on a segment's template, with every standalone number replaced by an <nK/> slot the build fills from the page, and re-key the existing Czech memory by matching each number by value, so a sentence like '153 nodes, 549 edges' or '4 of 26' is translated once and keeps its translation whatever the counts.
HOTOVO vlna 0 · p1 · profil implementation · běží samostatně
Součást public-proof — Návštěvník vidí, jak se produkt sám dokazuje, a může ověřit každé jeho tvrzení.
Cíl
Key the translation memory on a segment's template, with every standalone number replaced by an <nK/> slot the build fills from the page, and re-key the existing Czech memory by matching each number by value, so a sentence like '153 nodes, 549 edges' or '4 of 26' is translated once and keeps its translation whatever the counts.
Proč
On 2026-10-20 an audit of the live /cs/roadmap/ (finding F11) found 58 of 100 milestone titles and 310 of 799 issue titles in English, and count chips mixed 'N of M' with 'N z M'. One cause was keying: the memory was keyed by the whole segment, numbers included, so every changed count was a segment it had never seen.
Aktuální stav
keyOf hashes the segment with its numbers; a changed count is a missing segment.
Cílový stav
keyOf hashes the template; a translation is admitted only with each <nK/> of its source exactly once; identifiers joined to letters, hyphens, dots or a hash (I3091, v0.30.2, 2026-10-20, 82ac259, #1434) stay literal.
Rozsah
- scripts/lib/site-i18n.mjs
- scripts/site-translate
- site/i18n/cs/memory
- test/cases/3590_the_site_is_derived_in_every_language.sh
- .ai/repo/project/issues/I3095.yaml
Mimo rozsah
- Plural forms by count (one form per template; a language whose noun changes form for one, two and five is a follow-up)
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- A page whose sentence carries different counts than the memory's example is translated from the template, with its own numbers
- A translation missing or repeating an <nK/> slot is refused
- Identifiers and versions are never slots
- The existing memory is re-keyed without re-translation: 6942 entries re-keyed, 1183 merged into a shared template, 52 kept under their old key because their numbers do not match one to one
Validace
- env -u MAJORDOMUS_SHARE bash test/run.sh 3590_the_site_is_derived_in_every_language
Požadované důkazy
- count_slot_translates
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| count_slot_translates | ci | bash test/run.sh 3590_the_site_is_derived_in_every_language | passed in train 3a validate 39712017896 (76c57859663, landed on master 2026-10-22) | 76c5785 |
Časová osa
- zahájeno
- 2026-10-22T04:37:10Z
- ověřeno
- 2026-10-22T04:39:46Z
- dokončeno
- 2026-10-22T04:42:35Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3095.yaml. Read it back with majordomus plan show I3095.