Den Explorer filtern
Ohne Zutun zeigt der Explorer beide Sprachbäume. Wer je Sprache nur einen will, braucht eine
Filterfunktion — und die nimmt das Explorer-Plugin nur über quartz.ts entgegen, nicht über die
quartz.config.yaml.
// quartz.ts
import { languageExplorerFilter } from "./.quartz/plugins/quartz-multilanguage";
Explorer({ filterFn: languageExplorerFilter("de", { languages: ["de", "en"] }) });Warum das nicht in der Konfiguration geht
YAML kann keine Funktion enthalten. Alles, was Quartz als Funktion entgegennimmt, muss durch
quartz.ts— das ist eine Eigenschaft von Quartz, keine Entscheidung dieses Plugins.
Wo die Grenze verläuft
| Das Plugin | Quartz |
|---|---|
| erkennt die Sprache je Seite | rendert <html lang> daraus |
| verknüpft Übersetzungen | weiß nichts davon |
| rendert den Umschalter | stellt die Stelle im Layout bereit |
schreibt hreflang und og:locale | schreibt den übrigen Kopf |
| filtert Sprachen aus dem Bau | baut, was übrig bleibt |
| — | übersetzt seine eigenen Oberflächentexte nach locale |
Die letzte Zeile ist die, an der die meisten Fragen hängen: Was Quartz selbst an Wörtern beisteuert,
folgt dem site-weiten locale und nicht der Seitensprache. Das ist keine Lücke im Plugin, sondern
die Stelle, an der seine Zuständigkeit endet — der Ausweg ist ein Bau je Sprache
(8.2).
Was jede Seite mitbringt
fileData.multilanguage = { lang, baseSlug, source, translationKey, translations }
Wer eigene Komponenten schreibt, findet dort alles, was das Plugin über eine Seite weiß.