From 8203db3dc224fac659072b8e58b7f39e6851e35e Mon Sep 17 00:00:00 2001
From: tresabhi <43380238+tresabhi@users.noreply.github.com>
Date: Fri, 27 Dec 2024 13:43:25 -0600
Subject: [PATCH] feat: some locale links
---
packages/website/src/components/Footer.astro | 18 ++++++++++++------
packages/website/src/components/LinkI18n.tsx | 19 +++++++++++++++++++
.../website/src/core/i18n/getBestLocale.ts | 11 +++++++++++
packages/website/src/layouts/BaseLayout.astro | 11 +++++------
4 files changed, 47 insertions(+), 12 deletions(-)
create mode 100644 packages/website/src/components/LinkI18n.tsx
create mode 100644 packages/website/src/core/i18n/getBestLocale.ts
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 === '/';