Web mluví jazykem stránky

Díl 3 ze 3 — ./blog.sh v1.9

Někdo přeloží své příspěvky, otevře českou polovinu webu – a menu pořád říká Writing, patička Links a na každé pilulce stojí anglický štítek. Příspěvky byly vždycky jen polovina toho, co čtenář čte. Zbytek je to, co web říká sám o sobě, a v 1.9 to má jazyk taky.

Jeden soubor na jazyk

Co web říká česky, leží v config/site.cs.yml vedle konfigurace. Začni ze souboru config/site.lang.yml.example – zkopíruj ho a jeho komentáře řeknou zbytek. Bere tytéž klíče, které má config/site.yml pro slova, jen napsané v druhém jazyce, a co vynechá, zůstává tak, jak to říká site.yml. Soubor tohoto webu, zkrácený:

# config/site.cs.yml
site:
  description: "Minimalistický blogovací engine, který ovládáš z terminálu …"
nav:
  - { label: "Vše", url: "/" }
  - { label: "Začni tady", url: "/posts/2026/blog-sh/" }
  - { label: "Proč", tag: "philosophy" }
about:
  heading: "O projektu"
footer:
  note_heading: "Licence"
  copyright: "Texty a obrázky © 2026 Daniel Šnor."
tags:
  philosophy: "filozofie"
  authoring: "psaní"

Titulek, popis, heslo banneru a jeho alternativní text, karta „o mně“, patička a menu: to jsou slova a ta se překládají. Obrázek v banneru, autor, adresa, barvy nebo účty widgetů jsou fakta o webu, stejná v každém jazyce, a klíč tu pro ně není – přeložený fakt by znamenal druhý web.

Některé nadpisy se přeloží samy

„O mně“ nad kartou, „Odkazy“ a „Kde mě najdeš“ nad sloupci patičky a nadpis každého widgetu jsou vlastní slova enginu, když je site.yml nepíše – a pak je každý jazyk říká po svém a není co překládat. Do site.yml nadpis napiš, jen když má říkat něco jiného, a přelož pak ten. Průvodci slova enginu do site.yml nezapisují ze stejného důvodu: zamrzlá v konfiguraci by zůstala v jednom jazyce.

Štítek je identifikátor se slovem pro každý jazyk

Štítky příspěvku jsou metadata, napsaná jednou, stejně jako jeho datum. Štítek proto má v každém jazyce jeden identifikátor – jednu stránku pro každý jazyk na téže adrese, /cs/tag/philosophy/ – a mění se jen to, co čtenář vidí: slovo na pilulce, nad stránkou štítku, v jeho feedu, v přehledu štítků i v tom, co najde vyhledávání. tags: dá každému štítku jeho slovo, podle toho, jak ho píšou příspěvky. Štítek bez slova se ukáže tak, jak je napsaný, a slovo pro štítek, který nemá žádný publikovaný příspěvek, se neukáže nikde; check to řekne a sestavení běží dál.

Menu i odkazy v patičce se píšou celé, tak jak je má site.yml – ale každá položka vede tam, kam stejná položka v site.yml, ve stejném pořadí. Mění se jen popisek. Menu, které se mezi jazyky rozejde, je druhý web, a čtenář, který přepne jazyk, by ztratil položku, na kterou zrovna mířil. Sestavení proto takové menu odmítne a řekne, kde se rozchází:

❌ site.cs.yml: nav musí vést na stejná místa ve stejném pořadí jako v config/site.yml — mění se jen slova. Položka 2: v config/site.yml vede na tag:philosophy, v site.cs.yml na tag:authoring.

Adresa v položce je pořád ta, kterou píše vlastní jazyk webu. url: /posts/2026/blog-sh/ výše vede v českém menu na českou kopii toho příspěvku, ať má jakýkoli český slug – položka jde za příspěvkem, ne za tím, jak se píše. Položka tag: vede na český výpis štítku a úvodní stránka, vyhledávání i archiv na své české kopie.

Co zůstává v jednom jazyce

Psací aplikace je pro celý web jedna a mluví vlastním jazykem webu, protože v něm píše jeho autor. A pravidla se vynucují, nespoléhá se na ně: klíč, který engine nečte, se odmítne, stejně jako překlad něčeho, co site.yml nemá – text „o mně“, který by ukázal jen jeden jazyk – a jazykový soubor, který není platný YAML, zastaví sestavení a check i doctor pojmenují řádek.

To je celé: příspěvky mluví vlastními slovy a jeden soubor na jazyk mluví za web.

Komentáře