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 } ---