diff --git a/packages/website/src/components/Footer.astro b/packages/website/src/components/Footer.astro index 2bd1ccc6b..1f22b5a93 100644 --- a/packages/website/src/components/Footer.astro +++ b/packages/website/src/components/Footer.astro @@ -2,8 +2,10 @@ import { assertSecret, fetchGameDefinitions } from '@blitzkit/core'; import { Code, Flex, Heading, Link, Text } from '@radix-ui/themes'; import packageJson from '../../../../package.json'; +import { LinkI18n } from './LinkI18n'; const gameDefinitions = await fetchGameDefinitions(); +const { locale } = Astro.params; --- + {locale} - Credits + Credits GitHub - Patches + Patches @@ -101,12 +107,12 @@ const gameDefinitions = await fetchGameDefinitions(); > Legal - + Privacy policy - - + + Terms of service - + diff --git a/packages/website/src/components/LinkI18n.tsx b/packages/website/src/components/LinkI18n.tsx new file mode 100644 index 000000000..4ad51e137 --- /dev/null +++ b/packages/website/src/components/LinkI18n.tsx @@ -0,0 +1,19 @@ +import { Link, type LinkProps } from '@radix-ui/themes'; +import { getBestLocale } from '../core/i18n/getBestLocale'; + +type LinkI18nProps = LinkProps & { + locale: string | undefined; +}; + +export function LinkI18n({ locale, href, ...props }: LinkI18nProps) { + const bestLocale = getBestLocale(); + const resolvedLocale = locale ?? bestLocale; + const prefix = resolvedLocale === undefined ? '' : `/${resolvedLocale}`; + + return ( + + ); +} diff --git a/packages/website/src/core/i18n/getBestLocale.ts b/packages/website/src/core/i18n/getBestLocale.ts new file mode 100644 index 000000000..471f663ed --- /dev/null +++ b/packages/website/src/core/i18n/getBestLocale.ts @@ -0,0 +1,11 @@ +import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from '@blitzkit/core'; + +export function getBestLocale() { + const desiredLocale = navigator.language.split('-')[0]; + const isSupported = SUPPORTED_LOCALES.includes(desiredLocale); + const isDefault = desiredLocale === DEFAULT_LOCALE; + + if (!isSupported || isDefault) return undefined; + + return desiredLocale; +} diff --git a/packages/website/src/layouts/BaseLayout.astro b/packages/website/src/layouts/BaseLayout.astro index 819ab245f..9704d5d82 100644 --- a/packages/website/src/layouts/BaseLayout.astro +++ b/packages/website/src/layouts/BaseLayout.astro @@ -38,17 +38,16 @@ const isRoot = pathname === '/';