Zdůvodnění
Repozitář čtou lidé a nástroje sdílející jeden jazyk; druhý jazyk v komentáři nebo commit zprávě je druhá sada pravidel pro každého, kdo ji nepřečte. Tento důvod se týká pracovních artefaktů — všeho, co musí přispěvatel nebo agent přečíst, aby tento repozitář změnil — a pro ně pravidlo nepřipouští výjimky.
O publikovaném webu neříká nic. Stránka napsaná pro čtenáře v jeho jazyce je produkt, který mluví ke svému publiku, ne pravidla, která musí přispěvatel louskat. Vázat dosah webu na interní pracovní jazyk repozitáře je chybná osa, a proto verze 2 pojmenovává obě skupiny zvlášť, místo aby oběma vnucovala jednu odpověď (ADR 0077).
Verze 3 přidává jedno místo, ne jednu populaci. Příručka je produkt vysvětlený čtenáři, psaný v jeho jazyce jako stránka webu, a je příliš velká a příliš interaktivní, než aby byla stránkou webu: vydání jsou jeho texty, widgety a testy v jednom adresáři. Ten adresář je adresován obsahem čtenáři, podléhá téže oboustranné deklaraci jako přeložená stránka a vše, co jej sestavuje — generátor, odvození, kontrola — zůstává anglicky jako každý jiný pracovní artefakt (ADR 0149).
Verze 4 přidává třetí místo, a to je místo, které dělá ostatní dvě vzácnými. Majitel dne 2026-10-19 nařídil, aby zveřejněný web byl vždy plně vícejazyčný — alespoň česky a anglicky — odvozený a překládaný automaticky, aniž by někdo udržoval dvě jazykové verze. Každá stránka webu se nyní píše jednou, v angličtině, a její kopie v každém dalším jazyce je odvozena z anglického buildu a překladové paměti (ADR 0218). Paměť je adresována obsahem čtenáři stejně jako přeložená stránka — každá položka je anglický segment zveřejněné stránky a jeho překlad — takže je připuštěna na základě stejné oboustranné deklarace, jako vydání: jeden adresář na jazyk pod site/i18n/, který svůj jazyk říká ve svém vlastním edition.toml. Vše, co ji sestavuje — průchod, nosič překladatele, build — zůstává anglické.
Požadované chování
Kód, komentáře, commity, dokumenty a záznamy správy se píší anglicky, bez výjimek.
Publikovaný obsah určený čtenáři může být psán v jazyce tohoto čtenáře, platí-li všechny tři podmínky:
- leží pod
site/content-src/, tedy v autorském zdroji publikovaného webu, nebo je generovanou projekcí takové stránky podsite/content/; - stránka deklaruje svůj jazyk ve vlastním front matteru jako
[extra] lang = "<language>"; - je deklarován v
scripts/ci/english-only-allow.txtjakotranslation <path> <language> <why>a deklarovaný jazyk je ten, který stránka deklaruje.
Vydání příručky smí být napsáno v jazyce čtenáře, když platí všechny tři podmínky:
- je to jeden adresář přímo pod
handbook/, pojmenovaný podle svého jazyka; - adresář deklaruje tento jazyk ve vlastním
edition.tomljakolang = "<language>"; - je deklarován v
scripts/ci/english-only-allow.txtjakoedition <directory> <language> <why>a deklarovaný jazyk je ten, který deklaruje adresář.
Povolení se vztahuje na soubory tohoto adresáře a nic vedle něj: handbook/build.py a odvozeniny vedle něj jsou pracovní artefakty a píšou se anglicky.
Překladová paměť webu pro jeden jazyk smí být psána v tomto jazyce, pokud platí všechny tři podmínky:
- je to jeden adresář přímo pod
site/i18n/, pojmenovaný podle svého jazyka; - adresář deklaruje tento jazyk ve vlastním
edition.tomljakolang = "<language>"; - je deklarován v
scripts/ci/english-only-allow.txtjakoedition <directory> <language> <why>a deklarovaný jazyk je ten, který deklaruje adresář.
Žádná jiná část repozitáře toto oprávnění nezískává a žádnou z podmínek nelze prominout recenzí.
Chování při selhání
scripts/ci/english-only-check změnu shodí. Překlad deklarovaný pro cestu mimo publikovaný web, edice deklarovaná pro cestu, která není adresářem příručky, deklarace bez důvodu a deklarace, jejíž jazyk se neshoduje s jazykem stránky nebo samotné edice, jsou každá odmítnutím, ne varováním — poslední proto, že výjimka, se kterou souhlasí jen jedna strana, je způsob, jak se záznam seznamu stane mechanismem na pračku.
Ověření
scripts/ci/english-only-check rozhoduje tu část tohoto pravidla, o které může rozhodnout abeceda: písmeno, které se vyskytuje v češtině, slovenštině nebo polštině a nikdy v angličtině, nebo celé písmo — cyrilice, řečtina, CJK — v jakémkoli psaném souboru. Je záměrně částečná a říká to: anglický text s větou jiného jazyka zapsanou v ASCII jí projde a vždy projde. Získá se tím, že běžný případ tu nemůže přijít nepovšimnut. Vlastní jména, soubory, které používají cizí řetězec jako testovací data, a publikované překlady jsou deklarovány, každé s důvodem, v scripts/ci/english-only-allow.txt; zbytek je review.
test/cases/403_published_translation.sh dokazuje tři podmínky: že nedeklarovaná stránka v jiném jazyce stále selže, že deklarace mimo publikovaný web je odmítnuta a že deklarace jazyka, který stránka nenese, je odmítnuta. test/cases/2984_a_handbook_edition_is_built_from_the_tree.sh dokazuje tytéž tři podmínky pro edici.