From d2c2010d845f066c04edf0c8608753ad6687d8d5 Mon Sep 17 00:00:00 2001 From: Tuan Phung <16448321+tuanphungcz@users.noreply.github.com> Date: Tue, 13 Oct 2026 21:09:48 +0900 Subject: [PATCH 1/9] Website: i18n foundation (locales, messages, localized layout, category and interaction pages) --- website/astro.config.ts | 2 + website/src/components/Breadcrumbs.astro | 6 +- website/src/components/CodeBlock.astro | 7 +- website/src/components/FaqList.astro | 6 +- website/src/components/Footer.astro | 48 +++- website/src/components/Header.astro | 22 +- website/src/components/IconGrid.astro | 9 +- website/src/components/InstallCommand.astro | 8 +- website/src/components/LanguageBanner.astro | 71 ++++++ website/src/i18n/format.ts | 22 ++ website/src/i18n/index.ts | 18 ++ website/src/i18n/locales.ts | 116 +++++++++ website/src/i18n/messages/en/common.ts | 45 ++++ website/src/i18n/messages/en/docs.ts | 2 + website/src/i18n/messages/en/home.ts | 2 + website/src/i18n/messages/en/hubs.ts | 216 ++++++++++++++++ website/src/i18n/messages/en/index.ts | 13 + website/src/i18n/messages/en/islands.ts | 2 + website/src/i18n/messages/en/licence.ts | 2 + website/src/i18n/messages/en/pages.ts | 2 + website/src/i18n/messages/en/taxonomy.ts | 60 +++++ website/src/i18n/messages/zh/index.ts | 2 + website/src/layouts/Layout.astro | 33 ++- website/src/lib/hubs.ts | 199 ++++++--------- website/src/lib/site.ts | 91 ++++--- website/src/lib/taxonomy.ts | 28 ++- .../pages/[locale]/categories/[slug].astro | 18 ++ .../pages/[locale]/interactions/[slug].astro | 19 ++ website/src/pages/categories/[slug].astro | 131 +--------- website/src/pages/interactions/[slug].astro | 237 +----------------- website/src/scripts/copy.ts | 7 +- website/src/views/CategoryPage.astro | 140 +++++++++++ website/src/views/InteractionPage.astro | 223 ++++++++++++++++ 33 files changed, 1243 insertions(+), 564 deletions(-) create mode 100644 website/src/components/LanguageBanner.astro create mode 100644 website/src/i18n/format.ts create mode 100644 website/src/i18n/index.ts create mode 100644 website/src/i18n/locales.ts create mode 100644 website/src/i18n/messages/en/common.ts create mode 100644 website/src/i18n/messages/en/docs.ts create mode 100644 website/src/i18n/messages/en/home.ts create mode 100644 website/src/i18n/messages/en/hubs.ts create mode 100644 website/src/i18n/messages/en/index.ts create mode 100644 website/src/i18n/messages/en/islands.ts create mode 100644 website/src/i18n/messages/en/licence.ts create mode 100644 website/src/i18n/messages/en/pages.ts create mode 100644 website/src/i18n/messages/en/taxonomy.ts create mode 100644 website/src/i18n/messages/zh/index.ts create mode 100644 website/src/pages/[locale]/categories/[slug].astro create mode 100644 website/src/pages/[locale]/interactions/[slug].astro create mode 100644 website/src/views/CategoryPage.astro create mode 100644 website/src/views/InteractionPage.astro diff --git a/website/astro.config.ts b/website/astro.config.ts index badf9b0..21231a1 100644 --- a/website/astro.config.ts +++ b/website/astro.config.ts @@ -9,6 +9,8 @@ export default defineConfig({ // The site's own URL: canonical links, sitemap and the file URLs in icons.json and the registry. site: process.env.SITE_URL ?? 'https://useanimations.com', output: 'static', + // A separate output folder, e.g. for builds running side by side: ASTRO_OUT_DIR=/tmp/dist-a + ...(process.env.ASTRO_OUT_DIR ? { outDir: process.env.ASTRO_OUT_DIR } : {}), // Pages are written as documentation.html, so hosts serve /documentation without a trailing slash, // matching the canonical URLs and the previous site. trailingSlash: 'never', diff --git a/website/src/components/Breadcrumbs.astro b/website/src/components/Breadcrumbs.astro index fad078a..13801c5 100644 --- a/website/src/components/Breadcrumbs.astro +++ b/website/src/components/Breadcrumbs.astro @@ -4,12 +4,14 @@ import type { Crumb } from '../lib/hubs'; interface Props { /** Every level, the current page last. */ crumbs: Crumb[]; + /** Accessible name of the trail, in the page's language. */ + label?: string; } -const { crumbs } = Astro.props; +const { crumbs, label = 'Breadcrumb' } = Astro.props; --- -