Static blog site generator in one Go binary: Markdown in, self-contained semantic HTML out. No JavaScript, no database, minimal deps.

Localised UI strings: embedded locale files, en + EU official #26

Merged janantos.tngl.sh
targeting main from localisation
Merged opened by and assigned to janantos.tngl.sh
targeting main from localisation

The generator's own output text (header nav, home/archive/tags headings and empty states, 404 page, TOC label, draft banner, title separator) is now taken from one embedded JSON file per language, selected by the existing lang config.

  • new internal/i18n: locales/*.json via go:embed, Get/Sprintf with BCP-47 subtag matching (pt-BR -> pt) and English fallback for unknown languages and missing keys; a key missing from English emits the key name rather than blank output
  • 24 locales: en plus the EU official languages (bg hr cs da nl et fi fr de el hu ga it lv lt mt pl pt ro sk sl es sv); CLI and scaffolded content stay English
  • count strings use a label form (Posts: 4 / Posty: 4 / Beiträge: 4) so no plural-case machinery is needed
  • tests: all 24 locales load, key parity with en, exactly one %d in every count string and Sprintf produces no garbage, fallback and subtag matching, end-to-end German build (nav, 404, archive, tag page, TOC label)
  • English output changes by design: 'N posts' -> 'Posts: N' on tag pages, the truncation arrow is a literal -> ; showcase rebuilt
  • README (lang / localisation) and AGENTS.md
Commits 0