Notes

Slug und Sprache stecken im Dateinamen

1 Min Lesezeitmdxcontent

Der Content-Loader liest Slug und Locale direkt aus dem Dateinamen, statt beides nochmal in die Frontmatter zu schreiben.

function slugFromFile(name: string) {
  const m = name.match(/^(.+)\.(de|en)\.mdx$/);
  return m ? { slug: m[1], locale: m[2] } : null;
}

Ein neues Projekt sind damit zwei Dateien - content/projects/foo.de.mdx und foo.en.mdx. Keine Route, kein Index, kein Registry-Eintrag. generateStaticParams zieht dieselben Slugs zur Build-Zeit aus dem Verzeichnis, die Detailseite kommt statisch dazu.

Der Nebeneffekt, der mir erst später aufgefallen ist: fehlt eine Sprache, ist das kein Fehler, sondern ein Fallback. Der Loader nimmt die andere Datei und markiert den Eintrag - deshalb darf hier auch mal nur eine deutsche Notiz stehen.