From 686ccbfd2ed51723f4df79ba0b976e0f5fafce2f Mon Sep 17 00:00:00 2001 From: Dawid Rycerz Date: Mon, 12 Jan 2026 20:50:47 +0100 Subject: Fix pages languages --- src/components/BaseHead.astro | 28 ++++++++++++++++++++++++++-- src/content.config.ts | 1 + src/layouts/Base.astro | 12 +++++++++--- src/loaders/pleroma.ts | 2 ++ src/pages/micro/[...slug].astro | 2 ++ src/types.ts | 1 + 6 files changed, 41 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro index cb39d4a..40f1d20 100644 --- a/src/components/BaseHead.astro +++ b/src/components/BaseHead.astro @@ -6,12 +6,36 @@ import "@/styles/global.css"; type Props = SiteMeta; -const { articleDate, description, ogImage, title } = Astro.props; +const { articleDate, description, ogImage, title, lang } = Astro.props; const titleSeparator = "•"; const siteTitle = `${title} ${titleSeparator} ${siteConfig.title}`; const canonicalURL = new URL(Astro.url.pathname, Astro.site); const socialImageURL = new URL(ogImage ? ogImage : "/social-card.png", Astro.url).href; + +// Map ISO 639-1 language codes to og:locale format +function getOgLocale(langCode?: string): string { + if (!langCode) return siteConfig.ogLocale; + + const localeMap: Record = { + en: "en_US", + pl: "pl_PL", + es: "es_ES", + fr: "fr_FR", + de: "de_DE", + it: "it_IT", + pt: "pt_PT", + nl: "nl_NL", + ru: "ru_RU", + ja: "ja_JP", + zh: "zh_CN", + ko: "ko_KR", + }; + + return localeMap[langCode] || siteConfig.ogLocale; +} + +const ogLocale = getOgLocale(lang); --- @@ -46,7 +70,7 @@ const socialImageURL = new URL(ogImage ? ogImage : "/social-card.png", Astro.url - + diff --git a/src/content.config.ts b/src/content.config.ts index 5e15713..bee2f8c 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -48,6 +48,7 @@ const micro = defineCollection({ description: z.string().optional(), publishDate: z.date().or(z.string().transform((val) => new Date(val))), sourceUrl: z.string().optional(), + language: z.string().optional(), author: z .object({ username: z.string(), diff --git a/src/layouts/Base.astro b/src/layouts/Base.astro index 41a56dd..fe5c064 100644 --- a/src/layouts/Base.astro +++ b/src/layouts/Base.astro @@ -12,13 +12,19 @@ interface Props { } const { - meta: { articleDate, description = siteConfig.description, ogImage, title }, + meta: { articleDate, description = siteConfig.description, ogImage, title, lang }, } = Astro.props; --- - + - + https://docs.astro.build/en/guides/routing/#modifying-the-slug-example-for-ssr export const getStaticPaths = (async () => { @@ -24,6 +25,7 @@ const meta = { note.data.description || `Read about my note posted on: ${note.data.publishDate.toLocaleDateString()}`, title: note.data.title, + lang: note.data.language || siteConfig.lang, }; --- diff --git a/src/types.ts b/src/types.ts index f2abc0f..303ad03 100644 --- a/src/types.ts +++ b/src/types.ts @@ -22,6 +22,7 @@ export interface SiteMeta { description?: string; ogImage?: string | undefined; title: string; + lang?: string; } /** Webmentions */ -- cgit v1.2.3