From 1029257513ff955cd81415f77a026ea1013685ed Mon Sep 17 00:00:00 2001 From: tequ Date: Wed, 22 Apr 2026 16:02:00 +0900 Subject: [PATCH 1/9] Consolidate Language Pages into [lang] Dynamic Routing --- src/content.config.ts | 10 ++++++++- .../privacy/es.mdx} | 1 - .../privacy/ja.mdx} | 1 - src/data/connect.json | 14 ++++++++++++ src/data/ecosystem.json | 5 +++++ src/data/roadmap.json | 14 ++++++++++++ src/i18n/contestTranslations.ts | 3 +++ src/pages/[lang]/about.astro | 21 ++++++++++++++++++ src/pages/[lang]/connect.astro | 21 ++++++++++++++++++ src/pages/[lang]/contest.astro | 21 ++++++++++++++++++ src/pages/[lang]/ecosystem.astro | 22 +++++++++++++++++++ src/pages/[lang]/features.astro | 21 ++++++++++++++++++ src/pages/[lang]/fraud-report.astro | 14 ++++++++++++ src/pages/[lang]/index.astro | 10 +++++++++ src/pages/[lang]/privacy-policy.astro | 21 ++++++++++++++++++ src/pages/[lang]/roadmap.astro | 21 ++++++++++++++++++ src/pages/about.astro | 7 +++--- src/pages/connect.astro | 8 +++---- src/pages/contest.astro | 7 +++--- src/pages/ecosystem.astro | 5 +++-- src/pages/es/about.astro | 17 -------------- src/pages/es/connect.astro | 17 -------------- src/pages/es/contest.astro | 17 -------------- src/pages/es/ecosystem.astro | 16 -------------- src/pages/es/features.astro | 16 -------------- src/pages/es/fraud-report.astro | 6 ----- src/pages/es/index.mdx | 3 --- src/pages/es/roadmap.astro | 16 -------------- src/pages/features.astro | 8 +++---- src/pages/ja/about.astro | 17 -------------- src/pages/ja/connect.astro | 17 -------------- src/pages/ja/contest.astro | 16 -------------- src/pages/ja/ecosystem.astro | 16 -------------- src/pages/ja/features.astro | 16 -------------- src/pages/ja/fraud-report.astro | 6 ----- src/pages/ja/index.mdx | 3 --- src/pages/ja/roadmap.astro | 16 -------------- src/pages/roadmap.astro | 7 +++--- 38 files changed, 236 insertions(+), 241 deletions(-) rename src/{pages/es/privacy-policy.mdx => content/privacy/es.mdx} (99%) rename src/{pages/ja/privacy-policy.mdx => content/privacy/ja.mdx} (99%) create mode 100644 src/pages/[lang]/about.astro create mode 100644 src/pages/[lang]/connect.astro create mode 100644 src/pages/[lang]/contest.astro create mode 100644 src/pages/[lang]/ecosystem.astro create mode 100644 src/pages/[lang]/features.astro create mode 100644 src/pages/[lang]/fraud-report.astro create mode 100644 src/pages/[lang]/index.astro create mode 100644 src/pages/[lang]/privacy-policy.astro create mode 100644 src/pages/[lang]/roadmap.astro delete mode 100644 src/pages/es/about.astro delete mode 100644 src/pages/es/connect.astro delete mode 100644 src/pages/es/contest.astro delete mode 100644 src/pages/es/ecosystem.astro delete mode 100644 src/pages/es/features.astro delete mode 100644 src/pages/es/fraud-report.astro delete mode 100644 src/pages/es/index.mdx delete mode 100644 src/pages/es/roadmap.astro delete mode 100644 src/pages/ja/about.astro delete mode 100644 src/pages/ja/connect.astro delete mode 100644 src/pages/ja/contest.astro delete mode 100644 src/pages/ja/ecosystem.astro delete mode 100644 src/pages/ja/features.astro delete mode 100644 src/pages/ja/fraud-report.astro delete mode 100644 src/pages/ja/index.mdx delete mode 100644 src/pages/ja/roadmap.astro diff --git a/src/content.config.ts b/src/content.config.ts index 9cfdab0..f17db6f 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -1,7 +1,15 @@ -import { defineCollection } from 'astro:content' +import { defineCollection, z } from 'astro:content' import { docsLoader } from '@astrojs/starlight/loaders' import { docsSchema } from '@astrojs/starlight/schema' +import { glob } from 'astro/loaders' export const collections = { docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), + privacy: defineCollection({ + loader: glob({ pattern: '**/*.mdx', base: './src/content/privacy' }), + schema: z.object({ + title: z.string(), + description: z.string(), + }), + }), } diff --git a/src/pages/es/privacy-policy.mdx b/src/content/privacy/es.mdx similarity index 99% rename from src/pages/es/privacy-policy.mdx rename to src/content/privacy/es.mdx index 503aa58..873d94d 100644 --- a/src/pages/es/privacy-policy.mdx +++ b/src/content/privacy/es.mdx @@ -1,5 +1,4 @@ --- -layout: ../../layouts/PageLayout.astro title: Política de Privacidad description: Política de Privacidad de xahau.network --- diff --git a/src/pages/ja/privacy-policy.mdx b/src/content/privacy/ja.mdx similarity index 99% rename from src/pages/ja/privacy-policy.mdx rename to src/content/privacy/ja.mdx index ef19594..1171252 100644 --- a/src/pages/ja/privacy-policy.mdx +++ b/src/content/privacy/ja.mdx @@ -1,5 +1,4 @@ --- -layout: ../../layouts/PageLayout.astro title: プライバシーポリシー description: xahau.network のプライバシーポリシー --- diff --git a/src/data/connect.json b/src/data/connect.json index cd735f0..4693cb8 100644 --- a/src/data/connect.json +++ b/src/data/connect.json @@ -1,4 +1,18 @@ { + "meta": { + "en": { + "title": "Xahau Connect", + "description": "Professional blockchain events for serious discussion and innovation" + }, + "es": { + "title": "Xahau Connect", + "description": "Eventos profesionales de blockchain para debates serios e innovación" + }, + "ja": { + "title": "Xahau Connect", + "description": "真剣な議論とイノベーションのためのプロフェッショナルなブロックチェーンイベント" + } + }, "events": [ { "id": "non-evm-course-2026-02", diff --git a/src/data/ecosystem.json b/src/data/ecosystem.json index bac46d0..686c9a6 100644 --- a/src/data/ecosystem.json +++ b/src/data/ecosystem.json @@ -4,6 +4,11 @@ "es": "Ecosistema", "ja": "エコシステム" }, + "description": { + "en": "Xahau around the world", + "es": "Xahau alrededor del mundo", + "ja": "世界中のXahau" + }, "buildonxahau": { "en": "built on or around Xahau", "es": "creados en Xahau o en torno a ella", diff --git a/src/data/roadmap.json b/src/data/roadmap.json index 2c65978..4c231ef 100644 --- a/src/data/roadmap.json +++ b/src/data/roadmap.json @@ -14,6 +14,20 @@ "locales": ["en", "es"] } }, + "pageMeta": { + "en": { + "title": "Roadmap", + "description": "Xahau roadmap across the upcoming quarters" + }, + "es": { + "title": "Hoja de ruta de Xahau", + "description": "Hoja de ruta de Xahau para los próximos trimestres" + }, + "ja": { + "title": "ロードマップ", + "description": "Xahauの今後の四半期のロードマップ" + } + }, "labels": { "en": { diff --git a/src/i18n/contestTranslations.ts b/src/i18n/contestTranslations.ts index 43e979c..9e273a3 100644 --- a/src/i18n/contestTranslations.ts +++ b/src/i18n/contestTranslations.ts @@ -1,5 +1,6 @@ export const contestTranslations = { en: { + page_title: 'Xahau Dev Contest', page_subtitle: 'Ecosystem Rising — Build user-facing services powered by Xahau', chip1: '2nd Edition', @@ -135,6 +136,7 @@ export const contestTranslations = { }, es: { + page_title: 'Xahau Dev Contest', page_subtitle: 'Ecosystem Rising — Construye servicios de usuario powered by Xahau', chip1: '2ª Edición', @@ -272,6 +274,7 @@ export const contestTranslations = { }, ja: { + page_title: 'Xahau Dev Contest', page_subtitle: 'Ecosystem Rising — Xahauを活用したユーザー向けサービスを構築', chip1: '第2回', diff --git a/src/pages/[lang]/about.astro b/src/pages/[lang]/about.astro new file mode 100644 index 0000000..3e57dca --- /dev/null +++ b/src/pages/[lang]/about.astro @@ -0,0 +1,21 @@ +--- +import '../../styles/main.css' +import XahauAbout from '../../components/XahauAbout.astro' +import { aboutTranslations } from '../../i18n/aboutTranslations' +import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import BaseLayout from '../../layouts/BaseLayout.astro' + +export function getStaticPaths() { + return nonDefaultLocales.map((lang) => ({ params: { lang } })) +} + +const { lang } = Astro.params +const t = aboutTranslations[lang as Locale] +const _frontmatter = { title: t.page_title, description: t.page_subtitle } +--- + + +
+ +
+
diff --git a/src/pages/[lang]/connect.astro b/src/pages/[lang]/connect.astro new file mode 100644 index 0000000..e6e7284 --- /dev/null +++ b/src/pages/[lang]/connect.astro @@ -0,0 +1,21 @@ +--- +import '../../styles/main.css' +import XahauConnect from '../../components/XahauConnect.astro' +import connectData from '../../data/connect.json' +import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import BaseLayout from '../../layouts/BaseLayout.astro' + +export function getStaticPaths() { + return nonDefaultLocales.map((lang) => ({ params: { lang } })) +} + +const { lang } = Astro.params +const { title, description } = connectData.meta[lang as Locale] +const _frontmatter = { title, description } +--- + + +
+ +
+
diff --git a/src/pages/[lang]/contest.astro b/src/pages/[lang]/contest.astro new file mode 100644 index 0000000..73794f1 --- /dev/null +++ b/src/pages/[lang]/contest.astro @@ -0,0 +1,21 @@ +--- +import '../../styles/main.css' +import XahauContest from '../../components/XahauContest.astro' +import { contestTranslations } from '../../i18n/contestTranslations' +import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import BaseLayout from '../../layouts/BaseLayout.astro' + +export function getStaticPaths() { + return nonDefaultLocales.map((lang) => ({ params: { lang } })) +} + +const { lang } = Astro.params +const t = contestTranslations[lang as Locale] +const _frontmatter = { title: t.page_title, description: t.page_subtitle } +--- + + +
+ +
+
diff --git a/src/pages/[lang]/ecosystem.astro b/src/pages/[lang]/ecosystem.astro new file mode 100644 index 0000000..b13b58e --- /dev/null +++ b/src/pages/[lang]/ecosystem.astro @@ -0,0 +1,22 @@ +--- +import '../../styles/main.css' +import XahauEcosystem from '../../components/XahauEcosystem.astro' +import ecosystemData from '../../data/ecosystem.json' +import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import BaseLayout from '../../layouts/BaseLayout.astro' + +export function getStaticPaths() { + return nonDefaultLocales.map((lang) => ({ params: { lang } })) +} + +const { lang } = Astro.params +const title = ecosystemData.title[lang as Locale] +const description = ecosystemData.description[lang as Locale] +const _frontmatter = { title, description } +--- + + +
+ +
+
diff --git a/src/pages/[lang]/features.astro b/src/pages/[lang]/features.astro new file mode 100644 index 0000000..7faa499 --- /dev/null +++ b/src/pages/[lang]/features.astro @@ -0,0 +1,21 @@ +--- +import '../../styles/main.css' +import XahauFeatures from '../../components/XahauFeatures.astro' +import { featuresTranslations } from '../../i18n/featuresTranslations' +import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import BaseLayout from '../../layouts/BaseLayout.astro' + +export function getStaticPaths() { + return nonDefaultLocales.map((lang) => ({ params: { lang } })) +} + +const { lang } = Astro.params +const t = featuresTranslations[lang as Locale] ?? featuresTranslations.en +const _frontmatter = { title: t.page_title, description: t.page_subtitle } +--- + + +
+ +
+
diff --git a/src/pages/[lang]/fraud-report.astro b/src/pages/[lang]/fraud-report.astro new file mode 100644 index 0000000..2836e04 --- /dev/null +++ b/src/pages/[lang]/fraud-report.astro @@ -0,0 +1,14 @@ +--- +import FraudReportPage from '../../components/FraudReportPage.astro' +import { fraudReportTranslations } from '../../i18n/fraudReportTranslations' +import { type Locale, nonDefaultLocales } from '../../i18n/locales' + +export function getStaticPaths() { + return nonDefaultLocales.map((lang) => ({ params: { lang } })) +} + +const { lang } = Astro.params +const t = fraudReportTranslations[lang as Locale] +--- + + diff --git a/src/pages/[lang]/index.astro b/src/pages/[lang]/index.astro new file mode 100644 index 0000000..a6d7cc1 --- /dev/null +++ b/src/pages/[lang]/index.astro @@ -0,0 +1,10 @@ +--- +import { nonDefaultLocales } from '../../i18n/locales' +import IndexLayout from '../../layouts/IndexLayout.astro' + +export function getStaticPaths() { + return nonDefaultLocales.map((lang) => ({ params: { lang } })) +} +--- + + diff --git a/src/pages/[lang]/privacy-policy.astro b/src/pages/[lang]/privacy-policy.astro new file mode 100644 index 0000000..afd9805 --- /dev/null +++ b/src/pages/[lang]/privacy-policy.astro @@ -0,0 +1,21 @@ +--- +import { getEntry, render } from 'astro:content' +import { nonDefaultLocales } from '../../i18n/locales' +import PageLayout from '../../layouts/PageLayout.astro' + +export function getStaticPaths() { + return nonDefaultLocales.map((lang) => ({ params: { lang } })) +} + +const { lang } = Astro.params +const entry = await getEntry('privacy', lang) +if (!entry) return Astro.redirect('/privacy-policy') + +const { Content } = await render(entry) +const _frontmatter = { + title: entry.data.title, + description: entry.data.description, +} +--- + + diff --git a/src/pages/[lang]/roadmap.astro b/src/pages/[lang]/roadmap.astro new file mode 100644 index 0000000..945a21f --- /dev/null +++ b/src/pages/[lang]/roadmap.astro @@ -0,0 +1,21 @@ +--- +import '../../styles/main.css' +import XahauRoadmap from '../../components/XahauRoadmap.astro' +import roadmapData from '../../data/roadmap.json' +import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import BaseLayout from '../../layouts/BaseLayout.astro' + +export function getStaticPaths() { + return nonDefaultLocales.map((lang) => ({ params: { lang } })) +} + +const { lang } = Astro.params +const { title, description } = roadmapData.pageMeta[lang as Locale] +const _frontmatter = { title, description } +--- + + +
+ +
+
diff --git a/src/pages/about.astro b/src/pages/about.astro index 97ebe1c..cc43bb8 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -1,12 +1,11 @@ --- import '../styles/main.css' import XahauAbout from '../components/XahauAbout.astro' +import { aboutTranslations } from '../i18n/aboutTranslations' import BaseLayout from '../layouts/BaseLayout.astro' -const _frontmatter = { - title: 'About Xahau', - description: 'Enterprise L1 blockchain with account-based programmability', -} +const { page_title: title, page_subtitle: description } = aboutTranslations.en +const _frontmatter = { title, description } --- diff --git a/src/pages/connect.astro b/src/pages/connect.astro index d388548..dcd6ce4 100644 --- a/src/pages/connect.astro +++ b/src/pages/connect.astro @@ -1,13 +1,11 @@ --- import '../styles/main.css' import XahauConnect from '../components/XahauConnect.astro' +import connectData from '../data/connect.json' import BaseLayout from '../layouts/BaseLayout.astro' -const _frontmatter = { - title: 'Xahau Connect', - description: - 'Professional blockchain events for serious discussion and innovation', -} +const { title, description } = connectData.meta.en +const _frontmatter = { title, description } --- diff --git a/src/pages/contest.astro b/src/pages/contest.astro index 75f2e78..f782e16 100644 --- a/src/pages/contest.astro +++ b/src/pages/contest.astro @@ -1,12 +1,11 @@ --- import '../styles/main.css' import XahauContest from '../components/XahauContest.astro' +import { contestTranslations } from '../i18n/contestTranslations' import BaseLayout from '../layouts/BaseLayout.astro' -const _frontmatter = { - title: 'Xahau Dev Contest', - description: 'Ecosystem Rising — Build user-facing services powered by Xahau', -} +const { page_title: title, page_subtitle: description } = contestTranslations.en +const _frontmatter = { title, description } --- diff --git a/src/pages/ecosystem.astro b/src/pages/ecosystem.astro index 7f5935c..d08fe3d 100644 --- a/src/pages/ecosystem.astro +++ b/src/pages/ecosystem.astro @@ -1,11 +1,12 @@ --- import '../styles/main.css' import XahauEcosystem from '../components/XahauEcosystem.astro' +import ecosystemData from '../data/ecosystem.json' import BaseLayout from '../layouts/BaseLayout.astro' const _frontmatter = { - title: 'Ecosystem', - description: 'Xahau around the world', + title: ecosystemData.title.en, + description: ecosystemData.description.en, } --- diff --git a/src/pages/es/about.astro b/src/pages/es/about.astro deleted file mode 100644 index 0e35aa4..0000000 --- a/src/pages/es/about.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import '../../styles/main.css' -import XahauAbout from '../../components/XahauAbout.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Sobre Xahau', - description: - 'Blockchain L1 empresarial con programabilidad basada en cuentas', -} ---- - - -
- -
-
diff --git a/src/pages/es/connect.astro b/src/pages/es/connect.astro deleted file mode 100644 index 776d1d3..0000000 --- a/src/pages/es/connect.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import '../../styles/main.css' -import XahauConnect from '../../components/XahauConnect.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Xahau Connect', - description: - 'Eventos profesionales de blockchain para debates serios e innovación', -} ---- - - -
- -
-
diff --git a/src/pages/es/contest.astro b/src/pages/es/contest.astro deleted file mode 100644 index 6c9f9b0..0000000 --- a/src/pages/es/contest.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import '../../styles/main.css' -import XahauContest from '../../components/XahauContest.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Xahau Dev Contest', - description: - 'Ecosystem Rising — Construye servicios de usuario powered by Xahau', -} ---- - - -
- -
-
diff --git a/src/pages/es/ecosystem.astro b/src/pages/es/ecosystem.astro deleted file mode 100644 index 67c8996..0000000 --- a/src/pages/es/ecosystem.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauEcosystem from '../../components/XahauEcosystem.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Ecosistema', - description: 'Xahau alrededor del mundo', -} ---- - - -
- -
-
diff --git a/src/pages/es/features.astro b/src/pages/es/features.astro deleted file mode 100644 index ec880f2..0000000 --- a/src/pages/es/features.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauFeatures from '../../components/XahauFeatures.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Características', - description: 'Tecnología probada con un enfoque renovado', -} ---- - - -
- -
-
diff --git a/src/pages/es/fraud-report.astro b/src/pages/es/fraud-report.astro deleted file mode 100644 index 0ee05b3..0000000 --- a/src/pages/es/fraud-report.astro +++ /dev/null @@ -1,6 +0,0 @@ ---- -import FraudReportPage from '../../components/FraudReportPage.astro' -import { fraudReportTranslations } from '../../i18n/fraudReportTranslations' ---- - - diff --git a/src/pages/es/index.mdx b/src/pages/es/index.mdx deleted file mode 100644 index 88bca13..0000000 --- a/src/pages/es/index.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -layout: ../../layouts/IndexLayout.astro ---- diff --git a/src/pages/es/roadmap.astro b/src/pages/es/roadmap.astro deleted file mode 100644 index 78f6624..0000000 --- a/src/pages/es/roadmap.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauRoadmap from '../../components/XahauRoadmap.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Hoja de ruta', - description: 'Hoja de ruta de Xahau para los próximos trimestres', -} ---- - - -
- -
-
diff --git a/src/pages/features.astro b/src/pages/features.astro index c4f2be0..001cb95 100644 --- a/src/pages/features.astro +++ b/src/pages/features.astro @@ -1,12 +1,12 @@ --- import '../styles/main.css' import XahauFeatures from '../components/XahauFeatures.astro' +import { featuresTranslations } from '../i18n/featuresTranslations' import BaseLayout from '../layouts/BaseLayout.astro' -const _frontmatter = { - title: 'Features', - description: 'Proven technology with a fresh approach', -} +const { page_title: title, page_subtitle: description } = + featuresTranslations.en +const _frontmatter = { title, description } --- diff --git a/src/pages/ja/about.astro b/src/pages/ja/about.astro deleted file mode 100644 index b9e930b..0000000 --- a/src/pages/ja/about.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import '../../styles/main.css' -import XahauAbout from '../../components/XahauAbout.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Xahauについて', - description: - 'アカウントベースプログラマビリティを持つエンタープライズL1ブロックチェーン', -} ---- - - -
- -
-
diff --git a/src/pages/ja/connect.astro b/src/pages/ja/connect.astro deleted file mode 100644 index a13c16e..0000000 --- a/src/pages/ja/connect.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import '../../styles/main.css' -import XahauConnect from '../../components/XahauConnect.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Xahau Connect', - description: - '真剣な議論とイノベーションのためのプロフェッショナルなブロックチェーンイベント', -} ---- - - -
- -
-
diff --git a/src/pages/ja/contest.astro b/src/pages/ja/contest.astro deleted file mode 100644 index 77e1d16..0000000 --- a/src/pages/ja/contest.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauContest from '../../components/XahauContest.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Xahau Dev Contest', - description: 'Ecosystem Rising — Xahauを活用したユーザー向けサービスを構築', -} ---- - - -
- -
-
diff --git a/src/pages/ja/ecosystem.astro b/src/pages/ja/ecosystem.astro deleted file mode 100644 index fb66388..0000000 --- a/src/pages/ja/ecosystem.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauEcosystem from '../../components/XahauEcosystem.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'エコシステム', - description: '世界中のXahau', -} ---- - - -
- -
-
diff --git a/src/pages/ja/features.astro b/src/pages/ja/features.astro deleted file mode 100644 index 90196f7..0000000 --- a/src/pages/ja/features.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauFeatures from '../../components/XahauFeatures.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: '機能', - description: '実績ある技術、新鮮なアプローチ', -} ---- - - -
- -
-
diff --git a/src/pages/ja/fraud-report.astro b/src/pages/ja/fraud-report.astro deleted file mode 100644 index 5a96f7d..0000000 --- a/src/pages/ja/fraud-report.astro +++ /dev/null @@ -1,6 +0,0 @@ ---- -import FraudReportPage from '../../components/FraudReportPage.astro' -import { fraudReportTranslations } from '../../i18n/fraudReportTranslations' ---- - - diff --git a/src/pages/ja/index.mdx b/src/pages/ja/index.mdx deleted file mode 100644 index 88bca13..0000000 --- a/src/pages/ja/index.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -layout: ../../layouts/IndexLayout.astro ---- diff --git a/src/pages/ja/roadmap.astro b/src/pages/ja/roadmap.astro deleted file mode 100644 index deb41bf..0000000 --- a/src/pages/ja/roadmap.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauRoadmap from '../../components/XahauRoadmap.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'ロードマップ', - description: 'Xahau roadmap across the upcoming quarters', -} ---- - - -
- -
-
diff --git a/src/pages/roadmap.astro b/src/pages/roadmap.astro index 6501b40..3fbcb57 100644 --- a/src/pages/roadmap.astro +++ b/src/pages/roadmap.astro @@ -1,12 +1,11 @@ --- import '../styles/main.css' import XahauRoadmap from '../components/XahauRoadmap.astro' +import roadmapData from '../data/roadmap.json' import BaseLayout from '../layouts/BaseLayout.astro' -const _frontmatter = { - title: 'Roadmap', - description: 'Xahau roadmap across the upcoming quarters', -} +const { title, description } = roadmapData.pageMeta.en +const _frontmatter = { title, description } --- From 31252d253eefd7e3daeda6bc61232f8889185f38 Mon Sep 17 00:00:00 2001 From: tequ Date: Thu, 23 Apr 2026 12:38:49 +0900 Subject: [PATCH 2/9] refactor: consolidate pages into [...lang] optional routing --- src/pages/{[lang] => [...lang]}/about.astro | 9 ++++++--- src/pages/{[lang] => [...lang]}/connect.astro | 9 ++++++--- src/pages/{[lang] => [...lang]}/contest.astro | 9 ++++++--- src/pages/{[lang] => [...lang]}/ecosystem.astro | 11 +++++++---- src/pages/{[lang] => [...lang]}/features.astro | 9 ++++++--- src/pages/[...lang]/fraud-report.astro | 17 +++++++++++++++++ src/pages/{[lang] => [...lang]}/index.astro | 0 .../{[lang] => [...lang]}/privacy-policy.astro | 0 src/pages/{[lang] => [...lang]}/roadmap.astro | 11 +++++++---- src/pages/[lang]/fraud-report.astro | 14 -------------- src/pages/about.astro | 15 --------------- src/pages/connect.astro | 15 --------------- src/pages/contest.astro | 15 --------------- src/pages/ecosystem.astro | 17 ----------------- src/pages/features.astro | 16 ---------------- src/pages/fraud-report.astro | 6 ------ src/pages/roadmap.astro | 15 --------------- 17 files changed, 55 insertions(+), 133 deletions(-) rename src/pages/{[lang] => [...lang]}/about.astro (66%) rename src/pages/{[lang] => [...lang]}/connect.astro (62%) rename src/pages/{[lang] => [...lang]}/contest.astro (66%) rename src/pages/{[lang] => [...lang]}/ecosystem.astro (60%) rename src/pages/{[lang] => [...lang]}/features.astro (64%) create mode 100644 src/pages/[...lang]/fraud-report.astro rename src/pages/{[lang] => [...lang]}/index.astro (100%) rename src/pages/{[lang] => [...lang]}/privacy-policy.astro (100%) rename src/pages/{[lang] => [...lang]}/roadmap.astro (57%) delete mode 100644 src/pages/[lang]/fraud-report.astro delete mode 100644 src/pages/about.astro delete mode 100644 src/pages/connect.astro delete mode 100644 src/pages/contest.astro delete mode 100644 src/pages/ecosystem.astro delete mode 100644 src/pages/features.astro delete mode 100644 src/pages/fraud-report.astro delete mode 100644 src/pages/roadmap.astro diff --git a/src/pages/[lang]/about.astro b/src/pages/[...lang]/about.astro similarity index 66% rename from src/pages/[lang]/about.astro rename to src/pages/[...lang]/about.astro index 3e57dca..499fd38 100644 --- a/src/pages/[lang]/about.astro +++ b/src/pages/[...lang]/about.astro @@ -2,15 +2,18 @@ import '../../styles/main.css' import XahauAbout from '../../components/XahauAbout.astro' import { aboutTranslations } from '../../i18n/aboutTranslations' -import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ params: { lang } })) + return locales.map((lang) => ({ + params: { lang: lang === defaultLocale ? undefined : lang }, + })) } const { lang } = Astro.params -const t = aboutTranslations[lang as Locale] +const locale = (lang as Locale) ?? defaultLocale +const t = aboutTranslations[locale] const _frontmatter = { title: t.page_title, description: t.page_subtitle } --- diff --git a/src/pages/[lang]/connect.astro b/src/pages/[...lang]/connect.astro similarity index 62% rename from src/pages/[lang]/connect.astro rename to src/pages/[...lang]/connect.astro index e6e7284..3bf991e 100644 --- a/src/pages/[lang]/connect.astro +++ b/src/pages/[...lang]/connect.astro @@ -2,15 +2,18 @@ import '../../styles/main.css' import XahauConnect from '../../components/XahauConnect.astro' import connectData from '../../data/connect.json' -import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ params: { lang } })) + return locales.map((lang) => ({ + params: { lang: lang === defaultLocale ? undefined : lang }, + })) } const { lang } = Astro.params -const { title, description } = connectData.meta[lang as Locale] +const locale = (lang as Locale) ?? defaultLocale +const { title, description } = connectData.meta[locale] const _frontmatter = { title, description } --- diff --git a/src/pages/[lang]/contest.astro b/src/pages/[...lang]/contest.astro similarity index 66% rename from src/pages/[lang]/contest.astro rename to src/pages/[...lang]/contest.astro index 73794f1..35287ae 100644 --- a/src/pages/[lang]/contest.astro +++ b/src/pages/[...lang]/contest.astro @@ -2,15 +2,18 @@ import '../../styles/main.css' import XahauContest from '../../components/XahauContest.astro' import { contestTranslations } from '../../i18n/contestTranslations' -import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ params: { lang } })) + return locales.map((lang) => ({ + params: { lang: lang === defaultLocale ? undefined : lang }, + })) } const { lang } = Astro.params -const t = contestTranslations[lang as Locale] +const locale = (lang as Locale) ?? defaultLocale +const t = contestTranslations[locale] const _frontmatter = { title: t.page_title, description: t.page_subtitle } --- diff --git a/src/pages/[lang]/ecosystem.astro b/src/pages/[...lang]/ecosystem.astro similarity index 60% rename from src/pages/[lang]/ecosystem.astro rename to src/pages/[...lang]/ecosystem.astro index b13b58e..e67bc67 100644 --- a/src/pages/[lang]/ecosystem.astro +++ b/src/pages/[...lang]/ecosystem.astro @@ -2,16 +2,19 @@ import '../../styles/main.css' import XahauEcosystem from '../../components/XahauEcosystem.astro' import ecosystemData from '../../data/ecosystem.json' -import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ params: { lang } })) + return locales.map((lang) => ({ + params: { lang: lang === defaultLocale ? undefined : lang }, + })) } const { lang } = Astro.params -const title = ecosystemData.title[lang as Locale] -const description = ecosystemData.description[lang as Locale] +const locale = (lang as Locale) ?? defaultLocale +const title = ecosystemData.title[locale] +const description = ecosystemData.description[locale] const _frontmatter = { title, description } --- diff --git a/src/pages/[lang]/features.astro b/src/pages/[...lang]/features.astro similarity index 64% rename from src/pages/[lang]/features.astro rename to src/pages/[...lang]/features.astro index 7faa499..9da7b96 100644 --- a/src/pages/[lang]/features.astro +++ b/src/pages/[...lang]/features.astro @@ -2,15 +2,18 @@ import '../../styles/main.css' import XahauFeatures from '../../components/XahauFeatures.astro' import { featuresTranslations } from '../../i18n/featuresTranslations' -import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ params: { lang } })) + return locales.map((lang) => ({ + params: { lang: lang === defaultLocale ? undefined : lang }, + })) } const { lang } = Astro.params -const t = featuresTranslations[lang as Locale] ?? featuresTranslations.en +const locale = (lang as Locale) ?? defaultLocale +const t = featuresTranslations[locale] ?? featuresTranslations.en const _frontmatter = { title: t.page_title, description: t.page_subtitle } --- diff --git a/src/pages/[...lang]/fraud-report.astro b/src/pages/[...lang]/fraud-report.astro new file mode 100644 index 0000000..f0a638c --- /dev/null +++ b/src/pages/[...lang]/fraud-report.astro @@ -0,0 +1,17 @@ +--- +import FraudReportPage from '../../components/FraudReportPage.astro' +import { fraudReportTranslations } from '../../i18n/fraudReportTranslations' +import { defaultLocale, type Locale, locales } from '../../i18n/locales' + +export function getStaticPaths() { + return locales.map((lang) => ({ + params: { lang: lang === defaultLocale ? undefined : lang }, + })) +} + +const { lang } = Astro.params +const locale = (lang as Locale) ?? defaultLocale +const t = fraudReportTranslations[locale] +--- + + diff --git a/src/pages/[lang]/index.astro b/src/pages/[...lang]/index.astro similarity index 100% rename from src/pages/[lang]/index.astro rename to src/pages/[...lang]/index.astro diff --git a/src/pages/[lang]/privacy-policy.astro b/src/pages/[...lang]/privacy-policy.astro similarity index 100% rename from src/pages/[lang]/privacy-policy.astro rename to src/pages/[...lang]/privacy-policy.astro diff --git a/src/pages/[lang]/roadmap.astro b/src/pages/[...lang]/roadmap.astro similarity index 57% rename from src/pages/[lang]/roadmap.astro rename to src/pages/[...lang]/roadmap.astro index 945a21f..069b401 100644 --- a/src/pages/[lang]/roadmap.astro +++ b/src/pages/[...lang]/roadmap.astro @@ -2,20 +2,23 @@ import '../../styles/main.css' import XahauRoadmap from '../../components/XahauRoadmap.astro' import roadmapData from '../../data/roadmap.json' -import { type Locale, nonDefaultLocales } from '../../i18n/locales' +import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ params: { lang } })) + return locales.map((lang) => ({ + params: { lang: lang === defaultLocale ? undefined : lang }, + })) } const { lang } = Astro.params -const { title, description } = roadmapData.pageMeta[lang as Locale] +const locale = (lang as Locale) ?? defaultLocale +const { title, description } = roadmapData.pageMeta[locale] const _frontmatter = { title, description } ---
- +
diff --git a/src/pages/[lang]/fraud-report.astro b/src/pages/[lang]/fraud-report.astro deleted file mode 100644 index 2836e04..0000000 --- a/src/pages/[lang]/fraud-report.astro +++ /dev/null @@ -1,14 +0,0 @@ ---- -import FraudReportPage from '../../components/FraudReportPage.astro' -import { fraudReportTranslations } from '../../i18n/fraudReportTranslations' -import { type Locale, nonDefaultLocales } from '../../i18n/locales' - -export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ params: { lang } })) -} - -const { lang } = Astro.params -const t = fraudReportTranslations[lang as Locale] ---- - - diff --git a/src/pages/about.astro b/src/pages/about.astro deleted file mode 100644 index cc43bb8..0000000 --- a/src/pages/about.astro +++ /dev/null @@ -1,15 +0,0 @@ ---- -import '../styles/main.css' -import XahauAbout from '../components/XahauAbout.astro' -import { aboutTranslations } from '../i18n/aboutTranslations' -import BaseLayout from '../layouts/BaseLayout.astro' - -const { page_title: title, page_subtitle: description } = aboutTranslations.en -const _frontmatter = { title, description } ---- - - -
- -
-
diff --git a/src/pages/connect.astro b/src/pages/connect.astro deleted file mode 100644 index dcd6ce4..0000000 --- a/src/pages/connect.astro +++ /dev/null @@ -1,15 +0,0 @@ ---- -import '../styles/main.css' -import XahauConnect from '../components/XahauConnect.astro' -import connectData from '../data/connect.json' -import BaseLayout from '../layouts/BaseLayout.astro' - -const { title, description } = connectData.meta.en -const _frontmatter = { title, description } ---- - - -
- -
-
diff --git a/src/pages/contest.astro b/src/pages/contest.astro deleted file mode 100644 index f782e16..0000000 --- a/src/pages/contest.astro +++ /dev/null @@ -1,15 +0,0 @@ ---- -import '../styles/main.css' -import XahauContest from '../components/XahauContest.astro' -import { contestTranslations } from '../i18n/contestTranslations' -import BaseLayout from '../layouts/BaseLayout.astro' - -const { page_title: title, page_subtitle: description } = contestTranslations.en -const _frontmatter = { title, description } ---- - - -
- -
-
diff --git a/src/pages/ecosystem.astro b/src/pages/ecosystem.astro deleted file mode 100644 index d08fe3d..0000000 --- a/src/pages/ecosystem.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import '../styles/main.css' -import XahauEcosystem from '../components/XahauEcosystem.astro' -import ecosystemData from '../data/ecosystem.json' -import BaseLayout from '../layouts/BaseLayout.astro' - -const _frontmatter = { - title: ecosystemData.title.en, - description: ecosystemData.description.en, -} ---- - - -
- -
-
diff --git a/src/pages/features.astro b/src/pages/features.astro deleted file mode 100644 index 001cb95..0000000 --- a/src/pages/features.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../styles/main.css' -import XahauFeatures from '../components/XahauFeatures.astro' -import { featuresTranslations } from '../i18n/featuresTranslations' -import BaseLayout from '../layouts/BaseLayout.astro' - -const { page_title: title, page_subtitle: description } = - featuresTranslations.en -const _frontmatter = { title, description } ---- - - -
- -
-
diff --git a/src/pages/fraud-report.astro b/src/pages/fraud-report.astro deleted file mode 100644 index f6e3207..0000000 --- a/src/pages/fraud-report.astro +++ /dev/null @@ -1,6 +0,0 @@ ---- -import FraudReportPage from '../components/FraudReportPage.astro' -import { fraudReportTranslations } from '../i18n/fraudReportTranslations' ---- - - diff --git a/src/pages/roadmap.astro b/src/pages/roadmap.astro deleted file mode 100644 index 3fbcb57..0000000 --- a/src/pages/roadmap.astro +++ /dev/null @@ -1,15 +0,0 @@ ---- -import '../styles/main.css' -import XahauRoadmap from '../components/XahauRoadmap.astro' -import roadmapData from '../data/roadmap.json' -import BaseLayout from '../layouts/BaseLayout.astro' - -const { title, description } = roadmapData.pageMeta.en -const _frontmatter = { title, description } ---- - - -
- -
-
From fdf20eef75d37a8aba452a9ae872d3611c66c6b0 Mon Sep 17 00:00:00 2001 From: tequ Date: Tue, 16 Jun 2026 12:36:50 +0900 Subject: [PATCH 3/9] address pt-br --- .../privacy/pt-br.mdx} | 0 src/data/ecosystem.json | 3 ++- src/i18n/contestTranslations.ts | 1 + src/i18n/featuresTranslations.ts | 2 +- src/pages/pt-br/about.astro | 16 ---------------- src/pages/pt-br/connect.astro | 17 ----------------- src/pages/pt-br/contest.astro | 16 ---------------- src/pages/pt-br/ecosystem.astro | 16 ---------------- src/pages/pt-br/features.astro | 16 ---------------- src/pages/pt-br/fraud-report.astro | 6 ------ src/pages/pt-br/index.mdx | 3 --- src/pages/pt-br/roadmap.astro | 17 ----------------- 12 files changed, 4 insertions(+), 109 deletions(-) rename src/{pages/pt-br/privacy-policy.mdx => content/privacy/pt-br.mdx} (100%) delete mode 100644 src/pages/pt-br/about.astro delete mode 100644 src/pages/pt-br/connect.astro delete mode 100644 src/pages/pt-br/contest.astro delete mode 100644 src/pages/pt-br/ecosystem.astro delete mode 100644 src/pages/pt-br/features.astro delete mode 100644 src/pages/pt-br/fraud-report.astro delete mode 100644 src/pages/pt-br/index.mdx delete mode 100644 src/pages/pt-br/roadmap.astro diff --git a/src/pages/pt-br/privacy-policy.mdx b/src/content/privacy/pt-br.mdx similarity index 100% rename from src/pages/pt-br/privacy-policy.mdx rename to src/content/privacy/pt-br.mdx diff --git a/src/data/ecosystem.json b/src/data/ecosystem.json index d6e3924..83b6734 100644 --- a/src/data/ecosystem.json +++ b/src/data/ecosystem.json @@ -8,7 +8,8 @@ "description": { "en": "Xahau around the world", "es": "Xahau alrededor del mundo", - "ja": "世界中のXahau" + "ja": "世界中のXahau", + "pt-BR": "Xahau around the world" }, "buildonxahau": { "en": "built on or around Xahau", diff --git a/src/i18n/contestTranslations.ts b/src/i18n/contestTranslations.ts index cd4781a..d732d42 100644 --- a/src/i18n/contestTranslations.ts +++ b/src/i18n/contestTranslations.ts @@ -405,6 +405,7 @@ export const contestTranslations = { legal6: '', }, 'pt-BR': { + page_title: 'Xahau Dev Contest', page_subtitle: 'Ecosystem Rising — Construa serviços voltados para o usuário impulsionados por Xahau', chip1: '2ª Edição', diff --git a/src/i18n/featuresTranslations.ts b/src/i18n/featuresTranslations.ts index cc0d830..0f41943 100644 --- a/src/i18n/featuresTranslations.ts +++ b/src/i18n/featuresTranslations.ts @@ -366,7 +366,7 @@ export const featuresTranslations = { }, 'pt-BR': { // Page header - page_title: 'Recursos', + page_title: 'Funcionalidades', page_subtitle: 'Tecnologia comprovada com uma abordagem inovadora', chip1: '10+ Recursos de Protocolo', chip2: 'DEX Nativo', diff --git a/src/pages/pt-br/about.astro b/src/pages/pt-br/about.astro deleted file mode 100644 index a0d261d..0000000 --- a/src/pages/pt-br/about.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauAbout from '../../components/XahauAbout.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Sobre Xahau', - description: 'Enterprise L1 blockchain with account-based programmability', -} ---- - - -
- -
-
diff --git a/src/pages/pt-br/connect.astro b/src/pages/pt-br/connect.astro deleted file mode 100644 index 5552ccc..0000000 --- a/src/pages/pt-br/connect.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import '../../styles/main.css' -import XahauConnect from '../../components/XahauConnect.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Xahau Connect', - description: - 'Eventos profissionais de blockchain para discussões sérias e inovação.', -} ---- - - -
- -
-
diff --git a/src/pages/pt-br/contest.astro b/src/pages/pt-br/contest.astro deleted file mode 100644 index f4eea44..0000000 --- a/src/pages/pt-br/contest.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauContest from '../../components/XahauContest.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Xahau Dev Contest', - description: 'Ecosystem Rising — Build user-facing services powered by Xahau', -} ---- - - -
- -
-
diff --git a/src/pages/pt-br/ecosystem.astro b/src/pages/pt-br/ecosystem.astro deleted file mode 100644 index b5653a7..0000000 --- a/src/pages/pt-br/ecosystem.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauEcosystem from '../../components/XahauEcosystem.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Ecosystem', - description: 'Xahau around the world', -} ---- - - -
- -
-
diff --git a/src/pages/pt-br/features.astro b/src/pages/pt-br/features.astro deleted file mode 100644 index 8dcca9f..0000000 --- a/src/pages/pt-br/features.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import '../../styles/main.css' -import XahauFeatures from '../../components/XahauFeatures.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Funcionalidades', - description: 'Tecnologia comprovada com uma abordagem inovadora', -} ---- - - -
- -
-
diff --git a/src/pages/pt-br/fraud-report.astro b/src/pages/pt-br/fraud-report.astro deleted file mode 100644 index 1be1bf2..0000000 --- a/src/pages/pt-br/fraud-report.astro +++ /dev/null @@ -1,6 +0,0 @@ ---- -import FraudReportPage from '../../components/FraudReportPage.astro' -import { fraudReportTranslations } from '../../i18n/fraudReportTranslations' ---- - - diff --git a/src/pages/pt-br/index.mdx b/src/pages/pt-br/index.mdx deleted file mode 100644 index 88bca13..0000000 --- a/src/pages/pt-br/index.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -layout: ../../layouts/IndexLayout.astro ---- diff --git a/src/pages/pt-br/roadmap.astro b/src/pages/pt-br/roadmap.astro deleted file mode 100644 index 0bf233e..0000000 --- a/src/pages/pt-br/roadmap.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import '../../styles/main.css' -import XahauRoadmap from '../../components/XahauRoadmap.astro' -import BaseLayout from '../../layouts/BaseLayout.astro' - -const _frontmatter = { - title: 'Roadmap da Xahau', - description: - 'Rede empresarial com adições mínimas de funcionalidades, máxima confiabilidade', -} ---- - - -
- -
-
From 97e5656c09b4b65de276675e2a279b11a3cf99d0 Mon Sep 17 00:00:00 2001 From: tequ Date: Tue, 16 Jun 2026 12:46:04 +0900 Subject: [PATCH 4/9] fix --- src/content/privacy/pt-br.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/content/privacy/pt-br.mdx b/src/content/privacy/pt-br.mdx index c068933..36ed44c 100644 --- a/src/content/privacy/pt-br.mdx +++ b/src/content/privacy/pt-br.mdx @@ -1,5 +1,4 @@ --- -layout: ../../layouts/PageLayout.astro title: Política de Privacidade description: Política de Privacidade do xahau.network --- From 3b893652fb95494e072326711040584872dc6988 Mon Sep 17 00:00:00 2001 From: tequ Date: Tue, 16 Jun 2026 13:55:54 +0900 Subject: [PATCH 5/9] fix props on getStaticPaths() --- src/pages/[...lang]/about.astro | 13 ++++++++----- src/pages/[...lang]/connect.astro | 13 ++++++++----- src/pages/[...lang]/contest.astro | 13 ++++++++----- src/pages/[...lang]/ecosystem.astro | 13 ++++++++----- src/pages/[...lang]/features.astro | 13 ++++++++----- src/pages/[...lang]/fraud-report.astro | 13 ++++++++----- src/pages/[...lang]/index.astro | 4 +++- src/pages/[...lang]/privacy-policy.astro | 9 ++++++--- src/pages/[...lang]/roadmap.astro | 13 ++++++++----- 9 files changed, 65 insertions(+), 39 deletions(-) diff --git a/src/pages/[...lang]/about.astro b/src/pages/[...lang]/about.astro index 499fd38..dd4aa05 100644 --- a/src/pages/[...lang]/about.astro +++ b/src/pages/[...lang]/about.astro @@ -6,13 +6,16 @@ import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return locales.map((lang) => ({ - params: { lang: lang === defaultLocale ? undefined : lang }, - })) + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) } -const { lang } = Astro.params -const locale = (lang as Locale) ?? defaultLocale +const { locale } = Astro.props const t = aboutTranslations[locale] const _frontmatter = { title: t.page_title, description: t.page_subtitle } --- diff --git a/src/pages/[...lang]/connect.astro b/src/pages/[...lang]/connect.astro index 3bf991e..704f77c 100644 --- a/src/pages/[...lang]/connect.astro +++ b/src/pages/[...lang]/connect.astro @@ -6,13 +6,16 @@ import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return locales.map((lang) => ({ - params: { lang: lang === defaultLocale ? undefined : lang }, - })) + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) } -const { lang } = Astro.params -const locale = (lang as Locale) ?? defaultLocale +const { locale } = Astro.props const { title, description } = connectData.meta[locale] const _frontmatter = { title, description } --- diff --git a/src/pages/[...lang]/contest.astro b/src/pages/[...lang]/contest.astro index 35287ae..277e0bc 100644 --- a/src/pages/[...lang]/contest.astro +++ b/src/pages/[...lang]/contest.astro @@ -6,13 +6,16 @@ import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return locales.map((lang) => ({ - params: { lang: lang === defaultLocale ? undefined : lang }, - })) + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) } -const { lang } = Astro.params -const locale = (lang as Locale) ?? defaultLocale +const { locale } = Astro.props const t = contestTranslations[locale] const _frontmatter = { title: t.page_title, description: t.page_subtitle } --- diff --git a/src/pages/[...lang]/ecosystem.astro b/src/pages/[...lang]/ecosystem.astro index e67bc67..329ed25 100644 --- a/src/pages/[...lang]/ecosystem.astro +++ b/src/pages/[...lang]/ecosystem.astro @@ -6,13 +6,16 @@ import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return locales.map((lang) => ({ - params: { lang: lang === defaultLocale ? undefined : lang }, - })) + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) } -const { lang } = Astro.params -const locale = (lang as Locale) ?? defaultLocale +const { locale } = Astro.props const title = ecosystemData.title[locale] const description = ecosystemData.description[locale] const _frontmatter = { title, description } diff --git a/src/pages/[...lang]/features.astro b/src/pages/[...lang]/features.astro index 9da7b96..b8f89aa 100644 --- a/src/pages/[...lang]/features.astro +++ b/src/pages/[...lang]/features.astro @@ -6,13 +6,16 @@ import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return locales.map((lang) => ({ - params: { lang: lang === defaultLocale ? undefined : lang }, - })) + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) } -const { lang } = Astro.params -const locale = (lang as Locale) ?? defaultLocale +const { locale } = Astro.props const t = featuresTranslations[locale] ?? featuresTranslations.en const _frontmatter = { title: t.page_title, description: t.page_subtitle } --- diff --git a/src/pages/[...lang]/fraud-report.astro b/src/pages/[...lang]/fraud-report.astro index f0a638c..272ac34 100644 --- a/src/pages/[...lang]/fraud-report.astro +++ b/src/pages/[...lang]/fraud-report.astro @@ -4,13 +4,16 @@ import { fraudReportTranslations } from '../../i18n/fraudReportTranslations' import { defaultLocale, type Locale, locales } from '../../i18n/locales' export function getStaticPaths() { - return locales.map((lang) => ({ - params: { lang: lang === defaultLocale ? undefined : lang }, - })) + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) } -const { lang } = Astro.params -const locale = (lang as Locale) ?? defaultLocale +const { locale } = Astro.props const t = fraudReportTranslations[locale] --- diff --git a/src/pages/[...lang]/index.astro b/src/pages/[...lang]/index.astro index a6d7cc1..e4c0eba 100644 --- a/src/pages/[...lang]/index.astro +++ b/src/pages/[...lang]/index.astro @@ -3,7 +3,9 @@ import { nonDefaultLocales } from '../../i18n/locales' import IndexLayout from '../../layouts/IndexLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ params: { lang } })) + return nonDefaultLocales.map((lang) => ({ + params: { lang: lang.toLowerCase() }, + })) } --- diff --git a/src/pages/[...lang]/privacy-policy.astro b/src/pages/[...lang]/privacy-policy.astro index afd9805..eeb57c1 100644 --- a/src/pages/[...lang]/privacy-policy.astro +++ b/src/pages/[...lang]/privacy-policy.astro @@ -4,11 +4,14 @@ import { nonDefaultLocales } from '../../i18n/locales' import PageLayout from '../../layouts/PageLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ params: { lang } })) + return nonDefaultLocales.map((lang) => ({ + params: { lang: lang.toLowerCase() }, + props: { locale: lang }, + })) } -const { lang } = Astro.params -const entry = await getEntry('privacy', lang) +const { locale } = Astro.props +const entry = await getEntry('privacy', locale) if (!entry) return Astro.redirect('/privacy-policy') const { Content } = await render(entry) diff --git a/src/pages/[...lang]/roadmap.astro b/src/pages/[...lang]/roadmap.astro index 069b401..cf03f85 100644 --- a/src/pages/[...lang]/roadmap.astro +++ b/src/pages/[...lang]/roadmap.astro @@ -6,13 +6,16 @@ import { defaultLocale, type Locale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { - return locales.map((lang) => ({ - params: { lang: lang === defaultLocale ? undefined : lang }, - })) + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) } -const { lang } = Astro.params -const locale = (lang as Locale) ?? defaultLocale +const { locale } = Astro.props const { title, description } = roadmapData.pageMeta[locale] const _frontmatter = { title, description } --- From 2fbf661780f24eccb70774e8b51cf8340edbab2b Mon Sep 17 00:00:00 2001 From: tequ Date: Tue, 16 Jun 2026 13:58:52 +0900 Subject: [PATCH 6/9] remove unused import --- src/pages/[...lang]/about.astro | 2 +- src/pages/[...lang]/connect.astro | 2 +- src/pages/[...lang]/contest.astro | 2 +- src/pages/[...lang]/ecosystem.astro | 2 +- src/pages/[...lang]/features.astro | 2 +- src/pages/[...lang]/fraud-report.astro | 2 +- src/pages/[...lang]/roadmap.astro | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pages/[...lang]/about.astro b/src/pages/[...lang]/about.astro index dd4aa05..c9f55b1 100644 --- a/src/pages/[...lang]/about.astro +++ b/src/pages/[...lang]/about.astro @@ -2,7 +2,7 @@ import '../../styles/main.css' import XahauAbout from '../../components/XahauAbout.astro' import { aboutTranslations } from '../../i18n/aboutTranslations' -import { defaultLocale, type Locale, locales } from '../../i18n/locales' +import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { diff --git a/src/pages/[...lang]/connect.astro b/src/pages/[...lang]/connect.astro index 704f77c..8ce391b 100644 --- a/src/pages/[...lang]/connect.astro +++ b/src/pages/[...lang]/connect.astro @@ -2,7 +2,7 @@ import '../../styles/main.css' import XahauConnect from '../../components/XahauConnect.astro' import connectData from '../../data/connect.json' -import { defaultLocale, type Locale, locales } from '../../i18n/locales' +import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { diff --git a/src/pages/[...lang]/contest.astro b/src/pages/[...lang]/contest.astro index 277e0bc..fb2216b 100644 --- a/src/pages/[...lang]/contest.astro +++ b/src/pages/[...lang]/contest.astro @@ -2,7 +2,7 @@ import '../../styles/main.css' import XahauContest from '../../components/XahauContest.astro' import { contestTranslations } from '../../i18n/contestTranslations' -import { defaultLocale, type Locale, locales } from '../../i18n/locales' +import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { diff --git a/src/pages/[...lang]/ecosystem.astro b/src/pages/[...lang]/ecosystem.astro index 329ed25..4db2027 100644 --- a/src/pages/[...lang]/ecosystem.astro +++ b/src/pages/[...lang]/ecosystem.astro @@ -2,7 +2,7 @@ import '../../styles/main.css' import XahauEcosystem from '../../components/XahauEcosystem.astro' import ecosystemData from '../../data/ecosystem.json' -import { defaultLocale, type Locale, locales } from '../../i18n/locales' +import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { diff --git a/src/pages/[...lang]/features.astro b/src/pages/[...lang]/features.astro index b8f89aa..abf82d7 100644 --- a/src/pages/[...lang]/features.astro +++ b/src/pages/[...lang]/features.astro @@ -2,7 +2,7 @@ import '../../styles/main.css' import XahauFeatures from '../../components/XahauFeatures.astro' import { featuresTranslations } from '../../i18n/featuresTranslations' -import { defaultLocale, type Locale, locales } from '../../i18n/locales' +import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { diff --git a/src/pages/[...lang]/fraud-report.astro b/src/pages/[...lang]/fraud-report.astro index 272ac34..1e93fe0 100644 --- a/src/pages/[...lang]/fraud-report.astro +++ b/src/pages/[...lang]/fraud-report.astro @@ -1,7 +1,7 @@ --- import FraudReportPage from '../../components/FraudReportPage.astro' import { fraudReportTranslations } from '../../i18n/fraudReportTranslations' -import { defaultLocale, type Locale, locales } from '../../i18n/locales' +import { defaultLocale, locales } from '../../i18n/locales' export function getStaticPaths() { return locales.map((locale) => { diff --git a/src/pages/[...lang]/roadmap.astro b/src/pages/[...lang]/roadmap.astro index cf03f85..da61ed2 100644 --- a/src/pages/[...lang]/roadmap.astro +++ b/src/pages/[...lang]/roadmap.astro @@ -2,7 +2,7 @@ import '../../styles/main.css' import XahauRoadmap from '../../components/XahauRoadmap.astro' import roadmapData from '../../data/roadmap.json' -import { defaultLocale, type Locale, locales } from '../../i18n/locales' +import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' export function getStaticPaths() { From 3d89e8e2c50c7ca29c9cbb1fb87f2da64fdd545d Mon Sep 17 00:00:00 2001 From: tequ Date: Tue, 16 Jun 2026 14:03:59 +0900 Subject: [PATCH 7/9] privacy-policy --- .../privacy-policy.mdx => content/privacy/en.mdx} | 1 - src/pages/[...lang]/privacy-policy.astro | 13 ++++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) rename src/{pages/privacy-policy.mdx => content/privacy/en.mdx} (98%) diff --git a/src/pages/privacy-policy.mdx b/src/content/privacy/en.mdx similarity index 98% rename from src/pages/privacy-policy.mdx rename to src/content/privacy/en.mdx index 3e063b3..5d153f2 100644 --- a/src/pages/privacy-policy.mdx +++ b/src/content/privacy/en.mdx @@ -1,5 +1,4 @@ --- -layout: ../layouts/PageLayout.astro title: Privacy Policy description: Privacy Policy for xahau.network --- diff --git a/src/pages/[...lang]/privacy-policy.astro b/src/pages/[...lang]/privacy-policy.astro index eeb57c1..48a99ab 100644 --- a/src/pages/[...lang]/privacy-policy.astro +++ b/src/pages/[...lang]/privacy-policy.astro @@ -1,13 +1,16 @@ --- import { getEntry, render } from 'astro:content' -import { nonDefaultLocales } from '../../i18n/locales' +import { defaultLocale, locales } from '../../i18n/locales' import PageLayout from '../../layouts/PageLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ - params: { lang: lang.toLowerCase() }, - props: { locale: lang }, - })) + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) } const { locale } = Astro.props From 96929639823d6a97eb23f7557c37f79452816393 Mon Sep 17 00:00:00 2001 From: tequ Date: Tue, 16 Jun 2026 14:06:37 +0900 Subject: [PATCH 8/9] index page --- src/pages/[...lang]/index.astro | 14 ++++++++++---- src/pages/index.mdx | 3 --- 2 files changed, 10 insertions(+), 7 deletions(-) delete mode 100644 src/pages/index.mdx diff --git a/src/pages/[...lang]/index.astro b/src/pages/[...lang]/index.astro index e4c0eba..2172252 100644 --- a/src/pages/[...lang]/index.astro +++ b/src/pages/[...lang]/index.astro @@ -1,12 +1,18 @@ --- -import { nonDefaultLocales } from '../../i18n/locales' +import { defaultLocale, locales, nonDefaultLocales } from '../../i18n/locales' import IndexLayout from '../../layouts/IndexLayout.astro' export function getStaticPaths() { - return nonDefaultLocales.map((lang) => ({ - params: { lang: lang.toLowerCase() }, - })) + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) } + +// TODO: Add frontmatter --- diff --git a/src/pages/index.mdx b/src/pages/index.mdx deleted file mode 100644 index eee0912..0000000 --- a/src/pages/index.mdx +++ /dev/null @@ -1,3 +0,0 @@ ---- -layout: ../layouts/IndexLayout.astro ---- \ No newline at end of file From c7406b9aea739c1023113c40e575688aa26eaa18 Mon Sep 17 00:00:00 2001 From: tequ Date: Tue, 16 Jun 2026 14:10:30 +0900 Subject: [PATCH 9/9] refactor getStaticPaths --- src/pages/[...lang]/about.astro | 10 ++-------- src/pages/[...lang]/connect.astro | 10 ++-------- src/pages/[...lang]/contest.astro | 10 ++-------- src/pages/[...lang]/ecosystem.astro | 10 ++-------- src/pages/[...lang]/features.astro | 10 ++-------- src/pages/[...lang]/fraud-report.astro | 10 ++-------- src/pages/[...lang]/index.astro | 10 ++-------- src/pages/[...lang]/privacy-policy.astro | 10 ++-------- src/pages/[...lang]/roadmap.astro | 10 ++-------- src/utils/generateStaticPaths.ts | 11 +++++++++++ 10 files changed, 29 insertions(+), 72 deletions(-) create mode 100644 src/utils/generateStaticPaths.ts diff --git a/src/pages/[...lang]/about.astro b/src/pages/[...lang]/about.astro index c9f55b1..b07b54d 100644 --- a/src/pages/[...lang]/about.astro +++ b/src/pages/[...lang]/about.astro @@ -2,17 +2,11 @@ import '../../styles/main.css' import XahauAbout from '../../components/XahauAbout.astro' import { aboutTranslations } from '../../i18n/aboutTranslations' -import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' +import generateStaticPaths from '../../utils/generateStaticPaths' export function getStaticPaths() { - return locales.map((locale) => { - const lang = locale === defaultLocale ? undefined : locale.toLowerCase() - return { - params: { lang }, - props: { locale }, - } - }) + return generateStaticPaths() } const { locale } = Astro.props diff --git a/src/pages/[...lang]/connect.astro b/src/pages/[...lang]/connect.astro index 8ce391b..b28b70f 100644 --- a/src/pages/[...lang]/connect.astro +++ b/src/pages/[...lang]/connect.astro @@ -2,17 +2,11 @@ import '../../styles/main.css' import XahauConnect from '../../components/XahauConnect.astro' import connectData from '../../data/connect.json' -import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' +import generateStaticPaths from '../../utils/generateStaticPaths' export function getStaticPaths() { - return locales.map((locale) => { - const lang = locale === defaultLocale ? undefined : locale.toLowerCase() - return { - params: { lang }, - props: { locale }, - } - }) + return generateStaticPaths() } const { locale } = Astro.props diff --git a/src/pages/[...lang]/contest.astro b/src/pages/[...lang]/contest.astro index fb2216b..555425a 100644 --- a/src/pages/[...lang]/contest.astro +++ b/src/pages/[...lang]/contest.astro @@ -2,17 +2,11 @@ import '../../styles/main.css' import XahauContest from '../../components/XahauContest.astro' import { contestTranslations } from '../../i18n/contestTranslations' -import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' +import generateStaticPaths from '../../utils/generateStaticPaths' export function getStaticPaths() { - return locales.map((locale) => { - const lang = locale === defaultLocale ? undefined : locale.toLowerCase() - return { - params: { lang }, - props: { locale }, - } - }) + return generateStaticPaths() } const { locale } = Astro.props diff --git a/src/pages/[...lang]/ecosystem.astro b/src/pages/[...lang]/ecosystem.astro index 4db2027..32d26fa 100644 --- a/src/pages/[...lang]/ecosystem.astro +++ b/src/pages/[...lang]/ecosystem.astro @@ -2,17 +2,11 @@ import '../../styles/main.css' import XahauEcosystem from '../../components/XahauEcosystem.astro' import ecosystemData from '../../data/ecosystem.json' -import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' +import generateStaticPaths from '../../utils/generateStaticPaths' export function getStaticPaths() { - return locales.map((locale) => { - const lang = locale === defaultLocale ? undefined : locale.toLowerCase() - return { - params: { lang }, - props: { locale }, - } - }) + return generateStaticPaths() } const { locale } = Astro.props diff --git a/src/pages/[...lang]/features.astro b/src/pages/[...lang]/features.astro index abf82d7..28c16f9 100644 --- a/src/pages/[...lang]/features.astro +++ b/src/pages/[...lang]/features.astro @@ -2,17 +2,11 @@ import '../../styles/main.css' import XahauFeatures from '../../components/XahauFeatures.astro' import { featuresTranslations } from '../../i18n/featuresTranslations' -import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' +import generateStaticPaths from '../../utils/generateStaticPaths' export function getStaticPaths() { - return locales.map((locale) => { - const lang = locale === defaultLocale ? undefined : locale.toLowerCase() - return { - params: { lang }, - props: { locale }, - } - }) + return generateStaticPaths() } const { locale } = Astro.props diff --git a/src/pages/[...lang]/fraud-report.astro b/src/pages/[...lang]/fraud-report.astro index 1e93fe0..982efae 100644 --- a/src/pages/[...lang]/fraud-report.astro +++ b/src/pages/[...lang]/fraud-report.astro @@ -1,16 +1,10 @@ --- import FraudReportPage from '../../components/FraudReportPage.astro' import { fraudReportTranslations } from '../../i18n/fraudReportTranslations' -import { defaultLocale, locales } from '../../i18n/locales' +import generateStaticPaths from '../../utils/generateStaticPaths' export function getStaticPaths() { - return locales.map((locale) => { - const lang = locale === defaultLocale ? undefined : locale.toLowerCase() - return { - params: { lang }, - props: { locale }, - } - }) + return generateStaticPaths() } const { locale } = Astro.props diff --git a/src/pages/[...lang]/index.astro b/src/pages/[...lang]/index.astro index 2172252..53a4e11 100644 --- a/src/pages/[...lang]/index.astro +++ b/src/pages/[...lang]/index.astro @@ -1,15 +1,9 @@ --- -import { defaultLocale, locales, nonDefaultLocales } from '../../i18n/locales' import IndexLayout from '../../layouts/IndexLayout.astro' +import generateStaticPaths from '../../utils/generateStaticPaths' export function getStaticPaths() { - return locales.map((locale) => { - const lang = locale === defaultLocale ? undefined : locale.toLowerCase() - return { - params: { lang }, - props: { locale }, - } - }) + return generateStaticPaths() } // TODO: Add frontmatter diff --git a/src/pages/[...lang]/privacy-policy.astro b/src/pages/[...lang]/privacy-policy.astro index 48a99ab..c3d074e 100644 --- a/src/pages/[...lang]/privacy-policy.astro +++ b/src/pages/[...lang]/privacy-policy.astro @@ -1,16 +1,10 @@ --- import { getEntry, render } from 'astro:content' -import { defaultLocale, locales } from '../../i18n/locales' import PageLayout from '../../layouts/PageLayout.astro' +import generateStaticPaths from '../../utils/generateStaticPaths' export function getStaticPaths() { - return locales.map((locale) => { - const lang = locale === defaultLocale ? undefined : locale.toLowerCase() - return { - params: { lang }, - props: { locale }, - } - }) + return generateStaticPaths() } const { locale } = Astro.props diff --git a/src/pages/[...lang]/roadmap.astro b/src/pages/[...lang]/roadmap.astro index da61ed2..db4017a 100644 --- a/src/pages/[...lang]/roadmap.astro +++ b/src/pages/[...lang]/roadmap.astro @@ -2,17 +2,11 @@ import '../../styles/main.css' import XahauRoadmap from '../../components/XahauRoadmap.astro' import roadmapData from '../../data/roadmap.json' -import { defaultLocale, locales } from '../../i18n/locales' import BaseLayout from '../../layouts/BaseLayout.astro' +import generateStaticPaths from '../../utils/generateStaticPaths' export function getStaticPaths() { - return locales.map((locale) => { - const lang = locale === defaultLocale ? undefined : locale.toLowerCase() - return { - params: { lang }, - props: { locale }, - } - }) + return generateStaticPaths() } const { locale } = Astro.props diff --git a/src/utils/generateStaticPaths.ts b/src/utils/generateStaticPaths.ts new file mode 100644 index 0000000..6eb59b5 --- /dev/null +++ b/src/utils/generateStaticPaths.ts @@ -0,0 +1,11 @@ +import { defaultLocale, locales } from '../i18n/locales' + +export default function generateStaticPaths() { + return locales.map((locale) => { + const lang = locale === defaultLocale ? undefined : locale.toLowerCase() + return { + params: { lang }, + props: { locale }, + } + }) +}