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; --- - +