feat(i18n): implement astro i18n integration and refactor locale handling
- Add i18n configuration to astro.config.mjs with default locale and routing - Refactor language handling to use Astro.currentLocale instead of URL parsing - Update tsconfig to include only necessary files for better type checking - Improve LanguageSwitcher to handle routing based on astro i18n config - Add new translation keys and update components to use dynamic titles - Simplify MotionWrapper component by removing unused default animations
This commit is contained in:
@@ -1,17 +1,21 @@
|
||||
---
|
||||
import { getLangFromUrl } from "@/i18n/utils";
|
||||
import Layout from "@/layouts/Layout.astro";
|
||||
import GlassHeader from "@/components/GlassHeader";
|
||||
import HeroSection from "@/components/HeroSection";
|
||||
import ExperienceSection from "@/components/ExperienceSection";
|
||||
import SkillsSection from "@/components/SkillsSection";
|
||||
import ProjectsSection from "@/components/ProjectsSection";
|
||||
import Footer from "@/components/Footer";
|
||||
import GlassHeader from "@/components/GlassHeader.tsx";
|
||||
import HeroSection from "@/components/HeroSection.tsx";
|
||||
import ExperienceSection from "@/components/ExperienceSection.tsx";
|
||||
import SkillsSection from "@/components/SkillsSection.tsx";
|
||||
import ProjectsSection from "@/components/ProjectsSection.tsx";
|
||||
import Footer from "@/components/Footer.tsx";
|
||||
import { useTranslations } from "@/i18n/utils";
|
||||
|
||||
const lang = getLangFromUrl(Astro.url);
|
||||
// For /zh/ pages, Astro.currentLocale should be 'zh'.
|
||||
// We explicitly set lang to 'zh' to ensure type correctness and intent.
|
||||
const lang: "en" | "zh" = 'zh';
|
||||
const t = useTranslations(lang);
|
||||
const pageTitle = t('page.home.title');
|
||||
---
|
||||
|
||||
<Layout title="首页" lang={lang}>
|
||||
<Layout title={pageTitle}>
|
||||
<GlassHeader lang={lang} client:only="react" />
|
||||
<main class="min-h-screen">
|
||||
<HeroSection lang={lang} client:only="react" />
|
||||
@@ -19,5 +23,5 @@ const lang = getLangFromUrl(Astro.url);
|
||||
<SkillsSection lang={lang} client:only="react" />
|
||||
<ProjectsSection lang={lang} client:only="react" />
|
||||
</main>
|
||||
<Footer lang={lang} client:only="react" />
|
||||
<Footer lang={lang} client:load />
|
||||
</Layout>
|
||||
Reference in New Issue
Block a user