Deutsch
Über dieses Handbuch

Dieses Handbuch gehört zum Quartz-Plugin quartz-multilanguage. Und es ist mit ihm gebaut: Der Umschalter oben rechts kommt von dort.

Auch diese Box steht zweimal in der Konfiguration — einmal je Sprache.

1.3 – Die sechs Teile

Ein Eintrag in der Konfiguration, aber sechs Rollen im Bau. Wer weiß, welche wann läuft, versteht die meisten Eigenheiten von selbst.

RolleWannWas sie tut
Transformerbeim Verarbeiten jeder Seiteerkennt die Sprache, setzt frontmatter.lang und fileData.multilanguage
Verknüpfungnach dem Einlesen aller Seitengruppiert Übersetzungen zueinander
Filtervor dem Rendernentfernt Sprachen, die nicht veröffentlicht werden (Kapitel 8)
Emitterbeim Schreibenerzeugt die Weiterleitungsseiten, die index.html der Wurzel und static/multilanguage.json für das Skript
Komponentebeim Bau des Layoutsrendert den Umschalter
Skriptim BrowserHinweise, gemerkte Sprachwahl, lokalisierte Daten

Warum die Verknüpfung erst danach kommt

Ein Transformer sieht immer nur eine Seite. Ob es zu de/kaffee eine englische Fassung gibt, lässt sich erst sagen, wenn alle Seiten gelesen sind — deshalb geschieht die Gruppierung in einem eigenen Schritt danach.

Daraus folgt etwas Praktisches: Eine Seite, die durch einen Filter aus dem Bau fällt — ein Entwurf, eine ungelistete Seite —, ist auch für die Verknüpfung nicht da. Der Umschalter zeigt sie dann nicht.

Für den Umschalter gilt das immer, denn er liest die Liste nach allen Filtern. Für hreflang hängt es zusätzlich daran, in welcher Reihenfolge die Filter untereinander laufen — siehe den zweiten Kasten unten.

Warum order fast nie zählt

order bestimmt die Reihenfolge der Transformer. Für die Spracherkennung ist sie fast gleichgültig — sie braucht nur das Frontmatter, das note-properties (order 5) längst gelesen hat.

Die eine Ausnahme beim Transformer

rewriteCrossLanguageLinks liest an jedem Link das data-slug, das crawl-links (order 60) beim Auflösen hinterlässt. Die Korrektur muss also nach crawl-links laufen, und order: 65 tut genau das. Wer das Plugin früher stellt, bekommt keine Meldung, sondern Links, die still nicht korrigiert werden. Wer diese Option nicht nutzt, darf die Zeile weglassen.

Und eine zweite beim Filter

order gilt nicht nur für den Transformer dieses Plugins, sondern auch für seinen Filter — und der hat zwei Aufgaben: Er entfernt nicht veröffentlichte Sprachen und trägt jede Seite, die er durchlässt, in die Liste ein, aus der hreflang später schöpft. Steht er unter 50, also vor remove-draft, trägt er Entwürfe ein, bevor sie entfernt werden; im hreflang einer veröffentlichten Seite steht dann eine Adresse, die es nicht gibt, und niemand sieht es. Gemessen: bei order: 40 nennt hreflang den Entwurf, bei order: 65 nicht. Der Umschalter ist davon nicht betroffen.

Das Skript

Drei Dinge geschehen erst im Browser, weil sie den Besucher betreffen und nicht die Seite: die Hinweise auf Übersetzungen (Kapitel 7), das Merken der Sprachwahl und das Formatieren der Datumsangaben.

Alles andere passiert beim Bauen. Ohne JavaScript funktionieren Umschalter, hreflang und Weiterleitungen weiterhin — nur die drei genannten Dinge nicht.