website/src/components/LanguagePicker.astro

25 lines
612 B
Plaintext
Raw Normal View History

2024-03-26 16:36:18 +01:00
---
import { locales, defaultLocale, getLocale } from "astro-i18n-aut";
import { useTranslations } from "../i18n/utils";
const reg = new RegExp(`^\/(${Object.keys(locales).join("|")})\/`);
function translatePath(lang: string) {
const p = Astro.url.pathname.replace(reg, "").replace(/^\//, "");
if (lang === defaultLocale) return `/${p}`;
return `/${lang}/${p}`;
}
const locale = getLocale(Astro.url);
const t = useTranslations(locale);
---
<ul>
{
Object.entries(locales).map(([lang, label]) => (
<li>
<a href={translatePath(lang)}>{t(label as "de")}</a>
</li>
))
}
</ul>