diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts new file mode 100644 index 00000000..4fcdebb7 --- /dev/null +++ b/src/i18n/ui.ts @@ -0,0 +1,4 @@ +export const availableLangs = ['en', 'fr'] as const; +export type Language = typeof availableLangs[number]; + +export const defaultLang: Language = 'fr'; \ No newline at end of file diff --git a/src/i18n/utils.ts b/src/i18n/utils.ts new file mode 100644 index 00000000..a251a258 --- /dev/null +++ b/src/i18n/utils.ts @@ -0,0 +1,7 @@ +import { defaultLang, availableLangs, type Language } from './ui'; + +export function getLangFromUrl(url: URL): Language { + const [, lang] = url.pathname.split('/'); + if (availableLangs.includes(lang as Language)) return lang as Language; + return defaultLang +} diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 7faddc9b..fd56ea33 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,16 +1,21 @@ --- +import { defaultLang, type Language } from '@/i18n/ui'; +import { getLangFromUrl } from '@/i18n/utils'; import type { Head } from '@/types/Head'; interface Props { - title: string; + title: string head?: Head + lang?: Language } const { title, head } = Astro.props; + +const lang = getLangFromUrl(Astro.url) || defaultLang; --- - +