Normalerweise bevorzuge ich es Artikel auf Englisch zu schreiben, da dies vermutlich die meisten Leute erreicht. Ich lebe aber in Deutschland und kenne doch einige Leute, die nicht so gut Englisch sprechen. Daher fühlt es sich für mich ein wenig ungerecht an, nur auf Englisch zu schreiben.

Ich versuchte schon öfters eine einfache Möglichkeit zu finden, einen Blog mit mehreren Sprachen zu haben. Alle Optionen die ich mir früher angesehen habe waren mir einfach zu kompliziert (ich mag Wordpress nicht, also entfällt diese Möglichkeit). Darum war ich auch umso erfreuter, dass die neue Ghost Software Mehrsprachige Seiten relativ einfach macht.

Das einzige, was mich an der Einrichtung ein wenig gestört hat, war dass das offizielle Ghost Mehrsprachen-Tutorial nicht die vollen Informationen enthält die man benötigt um ans Ziel zu kommen. Es nicht sehr schwer es zu erreichen, aber die Code-Beispiele benötigen ein wenig mehr als dort vorhanden. Hier ist also, was ich Schritt für Schritt gemacht habe:

  1. Ich rief das Ghost Admin Panel auf und navigierte in den Abschnitt Labs ganz links unten auf der Seite. Dort kann man die aktuelle routes.yaml Datei herunterladen. Diese Datei configuriert, wie die URLs auf der Webseite gehandhabt werden und ich benutze sie um einen Sprach-Tag für Deutsch hinzuzufügen.
  2. Die routes.yaml Datei wird angepasst, so dass sie eine neue collection enthält:
routes:

collections:
  /:
    permalink: /{slug}/
    template: index
    filter: 'tag:-de'
  /de/:
    permalink: /de/{slug}/
    template: de
    filter: 'tag:de'

taxonomies:
  tag: /tag/{slug}/
  author: /author/{slug}/
  1. Zusätzlich muss man auch noch das Theme der Webseite anpassen. Ich verwende das Default Theme mit dem Namen casper, also habe ich es über das Admin Panel meiner Seite im Design Abschnitt heruntergeladen. Anschließend habe ich die Zip-Datei entpackt und die Dateien index.hbs sowie post.hbs angepasst und eine neue Datei de.hbs erstellt.
  2. index.hbs bekommt den Zusatz <html lang="en"> relativ früh in der Datei:
{{!< default}}
{{!-- The tag above means: insert everything in this file into the {body} of the default.hbs template --}}

<html lang="en">
    
{{> header background=@site.cover_image}} {{!--Special header.hbs partial to generate the <header> tag--}}

[...Rest unverändert...]
  1. de.hbs ist eine Kopie von index.hbs, nur mit <html lang="de"> anstelle von <html lang="en".
  2. Die Datei post.hbs ist ziemlich lang, aber die Anpassungen sind nur minimal. Ich habe einfach folgendes nach {{#post}} eingefügt:
[...bis hier unverändert...]
{{#post}}
  {{#has tag="de"}}
    <html lang="de">
  {{ else}}
    <html lang="en">
  {{/has}}
[...Rest unverändert...]
  1. Das sind all Änderungen; jetzt wird nur noch das angepasste Theme wieder in eine Zip-Datei eingepackt und alles wieder auf die Seite hochgeladen. Die Datei routes.yaml im Labs Abschnitt und das Theme Zip unter Design im Admin Panel.

Mit diesen Modifikationen ist es super einfach Artikel auf Englisch oder wahlweise Deutsch zu schreiben: Englische Artikel werden wie gehabt normal veröffentlicht, während Deutsche Artikel einfach den Tag de erhalten. Jetzt sind die Deutschen Artikel unter <server-url>/de/<post> verfügbar.

Diesen Artikel gibt es in englischer Sprache hier: https://home.matou.de/multi-language-ghost-posts/

Alle deutschen Artikel können gesammelt unter https://home.matou.de/de/ angeschaut werden und englische unter https://home.matou.de/.

Ich habe mich nicht genug mit dem Thema beschäftigt um genau zu verstehen, was die Änderungen im Detail bewirkten und warum das so funktioniert, aber hat mich zum Ziel gebracht und vielleicht kann ich ja jemandem helfen dies auch zu erreiche.