Dva jazyky, jeden web
Někdo píše česky a část lidí, kteří by ho četli, česky neumí. Obvyklá odpověď je druhý blog – druhý archiv, druhá sada štítků, druhý feed – a do roka se ty dva rozejdou: příspěvek opravený v jednom a ve druhém ne, štítek přejmenovaný jen na jedné straně, čtenář, který přepne jazyk a ocitne se jinde, než čekal. blog.sh 1.9 odpovídá jinak: jeden web a druhý jazyk vedle něj.
Jeden příspěvek, text pro každý jazyk
Příspěvek si nese jen jednou všechno, co o něm platí: datum, štítky, sérii, jestli je připnutý, jestli je publikovaný. S jazykem se mění jen slova – titulek a text – a ta leží vedle sebe uvnitř téhož příspěvku:
./blog.sh translate a-slug-is-an-address-not-a-name --lang cs
Editor se otevře s titulkem a textem a ničím dalším, protože nic jiného překlad není. Příspěvek zůstává jedním příspěvkem: publikováním vyjde ve všech jazycích najednou a štítek, který mu přidáš, přibude ve všech jazycích. Česká verze tak nemůže zůstat konceptem, zatímco anglická už je venku, ani skončit pod jiným štítkem.
Na začátek není potřeba nic převádět. Příspěvek bez překladu je prostě příspěvek v jazyce webu – a takový je každý příspěvek v každém archivu až do prvního translate.
Kde který jazyk bydlí
Vlastní jazyk webu si ponechá kořen a každý další jazyk dostane kořen svůj:
/posts/2026/a-slug-is-an-address-not-a-name/
/cs/posts/2026/slug-je-adresa-ne-jmeno/
Kořen se s příchodem druhého jazyka nepohne, takže každý odkaz, který kdo kdy na web vytvořil, funguje dál. Česká verze dostane českou adresu – vznikne z českého titulku, když se překlad napíše poprvé, a pak se už nemění, stejně jako adresa samotného příspěvku. Obrázky, stylesheet i psací aplikace existují jen jednou a jazyky je sdílejí; sitemapa uvádí všechny jazyky a říká, které adresy jsou tatáž stránka v jiném jazyce.
Když překlad chybí
Příspěvek, který zatím nikdo nepřeložil, se druhému jazyku neskrývá. Zůstává v českém výpisu, anglicky, a jeho odkaz vede na jedinou kopii, kterou má – stejná slova tak nikdy nestojí na dvou adresách a čtenář, který web prochází česky, dál vidí všechno, co na něm vyšlo.
Na webu se třemi jazyky je na tobě, co chybějící jazyk zastoupí. Jeden řádek v souboru daného jazyka řekne, že němčina si v takovém případě půjčí český text místo anglického – a slova i odkaz vždy pocházejí z téže odpovědi, nikdy český text pod odkazem na anglickou stránku.
Přepínání
Přepínač je malý čip v rohu banneru, vedle tlačítka světlého a tmavého režimu, a funguje stejně: kliknutí přejde na další jazyk a na konci začne znovu od prvního. Jazyk, ve kterém čteš, je volba pro tuhle návštěvu, stejně jako režim, ve kterém čteš, a proto sedí tam, kde už ta volba je – ne v menu, které by rozdělil vedví. Z příspěvku vede na týž příspěvek v druhém jazyce; kde tam příspěvek kopii nemá, vede na úvodní stránku toho jazyka, ne na stránku, která neexistuje.
Co je napsané kde
Se dvěma jazyky se u archivu už neptáš jen „co je rozbité", ale i „co chybí", a na to je samostatný výpis:
$ ./blog.sh check --languages
en cs
a-badge-that-says-what-a-post-is ✅ ✅
a-bicycle-nobody-had-to-draw ✅ ✅
…
how-big-it-can-get ✅ ·
the-lock-that-doesn-t-wait ✅ ·
the-parts-that-don-t-rebuild-themselves ✅ ·
To je dnešní stav tohoto webu: každý publikovaný příspěvek v obou jazycích a tři koncepty, které ještě nevyšly a na česká slova teprve čekají. Obyčejný check je za problém nepovažuje, protože příspěvek, který existuje v jednom jazyce, není chybný. Rozhoduje to až při publikaci, a tak se publish zastaví, vyjmenuje jazyky, ve kterých příspěvek nemá žádná slova, a ve stejné větě nabídne --allow-partial pro případy, kdy má příspěvek vyjít jen v jednom jazyce.
Vlastní slova mají i titulek nad stránkou, menu a patička; překládají se v souboru vedle konfigurace webu – ale to je námět na samostatný příspěvek. Tenhle je o tom, co rozhoduje, jestli dva jazyky zůstanou jedním webem: o jediném archivu, který u každého příspěvku ví, jaká slova má.

Komentáře