From 06cbe1e733aec48d817f8bdae44c1bcd1f8c97d2 Mon Sep 17 00:00:00 2001
From: tresabhi <43380238+tresabhi@users.noreply.github.com>
Date: Fri, 10 Jan 2025 20:46:15 -0600
Subject: [PATCH] feat: localize language
---
packages/core/lang/en.json | 5 ++
.../components/Home/HomeLocaleSwitcher.tsx | 22 +++++++++
.../website/src/components/LocaleSwitcher.tsx | 46 +++++++-----------
.../website/src/core/blitzkit/branches.ts | 2 +-
.../website/src/pages/[...locale]/index.astro | 4 +-
.../src/pages/[...locale]/settings/_index.tsx | 47 ++++++++++++-------
.../pages/[...locale]/settings/index.astro | 6 ++-
7 files changed, 82 insertions(+), 50 deletions(-)
create mode 100644 packages/website/src/components/Home/HomeLocaleSwitcher.tsx
diff --git a/packages/core/lang/en.json b/packages/core/lang/en.json
index 85f0db3af..89b602b97 100644
--- a/packages/core/lang/en.json
+++ b/packages/core/lang/en.json
@@ -714,6 +714,11 @@
},
"website": {
+ "settings": {
+ "dev_mode": "Development mode",
+ "language": "Language"
+ },
+
"common": {
"copy_button": {
"copied": "Copied!"
diff --git a/packages/website/src/components/Home/HomeLocaleSwitcher.tsx b/packages/website/src/components/Home/HomeLocaleSwitcher.tsx
new file mode 100644
index 000000000..0c5301ef4
--- /dev/null
+++ b/packages/website/src/components/Home/HomeLocaleSwitcher.tsx
@@ -0,0 +1,22 @@
+import { DEFAULT_LOCALE } from '@blitzkit/core';
+import { GlobeIcon } from '@radix-ui/react-icons';
+import { Flex, Text } from '@radix-ui/themes';
+import type { LocaleAcceptorProps } from '../../hooks/useLocale';
+import { BlitzKitTheme } from '../BlitzKitTheme';
+import { LocaleSwitcher } from '../LocaleSwitcher';
+
+export function HomeLocaleSwitcher({
+ locale = DEFAULT_LOCALE,
+}: LocaleAcceptorProps) {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/website/src/components/LocaleSwitcher.tsx b/packages/website/src/components/LocaleSwitcher.tsx
index 765382532..42e30ada5 100644
--- a/packages/website/src/components/LocaleSwitcher.tsx
+++ b/packages/website/src/components/LocaleSwitcher.tsx
@@ -4,38 +4,28 @@ import {
SUPPORTED_LOCALE_FLAGS,
SUPPORTED_LOCALES,
} from '@blitzkit/core';
-import { GlobeIcon } from '@radix-ui/react-icons';
-import { Flex, Select, Text } from '@radix-ui/themes';
+import { Select } from '@radix-ui/themes';
import type { LocaleAcceptorProps } from '../hooks/useLocale';
-import { BlitzKitTheme } from './BlitzKitTheme';
export function LocaleSwitcher({ locale }: LocaleAcceptorProps) {
return (
-
-
-
-
-
+ {
+ localStorage.setItem('preferred-locale', locale);
+ window.location.pathname = `/${locale === DEFAULT_LOCALE ? '' : locale}`;
+ }}
+ >
+
- {
- localStorage.setItem('preferred-locale', locale);
- window.location.pathname = `/${locale === DEFAULT_LOCALE ? '' : locale}`;
- }}
- >
-
-
-
- {SUPPORTED_LOCALES.map((locale) => (
-
- {SUPPORTED_LOCALE_FLAGS[locale]}{' '}
- {localizedStrings[locale].common.locales[locale]}
-
- ))}
-
-
-
-
+
+ {SUPPORTED_LOCALES.map((locale) => (
+
+ {SUPPORTED_LOCALE_FLAGS[locale]}{' '}
+ {localizedStrings[locale].common.locales[locale]}
+
+ ))}
+
+
);
}
diff --git a/packages/website/src/core/blitzkit/branches.ts b/packages/website/src/core/blitzkit/branches.ts
index 424652043..e550bd1a9 100644
--- a/packages/website/src/core/blitzkit/branches.ts
+++ b/packages/website/src/core/blitzkit/branches.ts
@@ -1,6 +1,6 @@
import { assertSecret, DEFAULT_LOCALE, localizedStrings } from '@blitzkit/core';
-export function resolveBranchName(locale = DEFAULT_LOCALE) {
+export function resolveBranchName(locale: string = DEFAULT_LOCALE) {
const strings = localizedStrings[locale];
const secret = assertSecret(import.meta.env.PUBLIC_ASSET_BRANCH);
diff --git a/packages/website/src/pages/[...locale]/index.astro b/packages/website/src/pages/[...locale]/index.astro
index 3fbcb940b..14e175323 100644
--- a/packages/website/src/pages/[...locale]/index.astro
+++ b/packages/website/src/pages/[...locale]/index.astro
@@ -7,9 +7,9 @@ import {
import { Box, Flex, Heading } from '@radix-ui/themes';
import type { GetStaticPaths } from 'astro';
import { AesonPlug } from '../../components/AesonPlug';
+import { HomeLocaleSwitcher } from '../../components/Home/HomeLocaleSwitcher';
import HomeHero from '../../components/HomeHero.astro';
import { HomePageHotTanks } from '../../components/HomePageHotTanks';
-import { LocaleSwitcher } from '../../components/LocaleSwitcher';
import { Plugs } from '../../components/Plugs';
import ToolCard from '../../components/ToolCard.astro';
import {
@@ -44,7 +44,7 @@ export const getStaticPaths = (() => {
-
+
diff --git a/packages/website/src/pages/[...locale]/settings/_index.tsx b/packages/website/src/pages/[...locale]/settings/_index.tsx
index 783a2718f..00b3ef0f7 100644
--- a/packages/website/src/pages/[...locale]/settings/_index.tsx
+++ b/packages/website/src/pages/[...locale]/settings/_index.tsx
@@ -1,34 +1,45 @@
-import { Flex, Heading, Switch, Text } from '@radix-ui/themes';
+import { DEFAULT_LOCALE } from '@blitzkit/core';
+import { Flex, Switch, Text } from '@radix-ui/themes';
+import { LocaleSwitcher } from '../../../components/LocaleSwitcher';
import { PageWrapper } from '../../../components/PageWrapper';
+import {
+ LocaleProvider,
+ useLocale,
+ type LocaleAcceptorProps,
+} from '../../../hooks/useLocale';
import { App } from '../../../stores/app';
-export function Page() {
+export function Page({ locale = DEFAULT_LOCALE }: LocaleAcceptorProps) {
return (
-
-
-
+
+
+
+
+
);
}
-function Content() {
+function Content({ locale }: LocaleAcceptorProps) {
const developerMode = App.useDeferred((state) => state.developerMode, false);
const appStore = App.useStore();
+ const { strings } = useLocale();
return (
-
-
- Advanced
+
+
+ {strings.website.settings.dev_mode}
+
+ appStore.setState({ developerMode: checked })
+ }
+ />
+
-
- Developer mode
-
- appStore.setState({ developerMode: checked })
- }
- />
-
+
+ {strings.website.settings.language}
+
diff --git a/packages/website/src/pages/[...locale]/settings/index.astro b/packages/website/src/pages/[...locale]/settings/index.astro
index 540ca476c..ab7bd9065 100644
--- a/packages/website/src/pages/[...locale]/settings/index.astro
+++ b/packages/website/src/pages/[...locale]/settings/index.astro
@@ -1,8 +1,12 @@
---
import BaseLayout from '../../../layouts/BaseLayout.astro';
import { Page } from './_index';
+
+export { getStaticPaths } from '../index.astro';
+
+const { locale } = Astro.params;
---
-
+