Today We Tamed a Bilingual Devlog

Today We Tamed a Bilingual Devlog

Today we finally sat down and tamed the bilingual devlog so it makes sense not just to us, but to people who arrive for only one language. In practice it was a mix of simple decisions and a few small traps that looked like trivialities. The result is a clean system: posts carry a language tag and the homepage is just a filtered collection.

What we set up

We chose tags as the foundation. English posts got eng, Czech posts cze. The homepage filters only English and Czech has its own collection with a neat URL.

1) Homepage filter for English

In routes.yaml we adjusted the / collection to only take tag:eng. This is the core step because it defines what appears on the front page.

collections:
  /:
    permalink: /{slug}/
    filter: "tag:eng"
    template: index

2) Czech collection with its own URL

We did not want Czech to live only on the tag page, so we added a /cz/ collection. Same template, different filter.

  /cz/:
    permalink: /{slug}/
    filter: "tag:cze"
    template: index

3) Navigation switch

In Ghost Admin we added links to the nav: EN → / and CZ → /cz/. Done. No magic, just a clear entry point for both languages.

4) Tags and metadata

We added the cze tag to Czech posts and set meta title/description (including OG/Twitter) so sharing works. English posts got the same treatment with the eng tag.

What I am taking away today

At first I thought this would be "just add two tags". In reality it is about guiding visitors clearly. Bilingual mode does not exist as a single button in Ghost. It is a set of small, clean rules: tag defines the language, collection defines the view.

It is a bit like drawing a map for two groups who never meet but use the same door. You just label where each path goes, and then it works.

Further tweaks after the first pass

Once it went live, we reshaped the homepage into a clearer structure: one hero post, a compact latest list on the side, and a main list below with image-left / text-right cards.

We also added a real Load more button that appends new cards instead of switching pages. That makes it easier to test the layout with a larger post count.

On individual posts, we aligned the recommended section to the current language so English articles show English recommendations only (and Czech shows Czech).