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.