--- import Layout from "@/layouts/Layout.astro"; import GlassHeader from "@/components/GlassHeader"; import Footer from "@/components/Footer"; import Container from "@/components/ui/Container.astro"; import { useTranslations } from "@/i18n/utils"; import type { Lang } from "@/types/i18n"; import { defaultLang } from "@/i18n/ui"; import { projects } from "@/lib/data/index"; // 使用Astro.currentLocale获取当前语言环境 const lang = Astro.currentLocale as Lang || defaultLang; const t = useTranslations(lang); const pageTitle = t('projects.title'); // 根据当前语言获取项目数据 const currentProjects = projects[lang as keyof typeof projects] || projects.en; // Separate featured and grouped projects const featuredProject = currentProjects.find(p => p.featured); const otherProjects = currentProjects.filter(p => !p.featured); // Group by type const productProjects = otherProjects.filter(p => p.type === 'product'); const clientProjects = otherProjects.filter(p => p.type === 'client'); const experimentProjects = otherProjects.filter(p => p.type === 'experiment'); ---

{t('projects.title')}

{t('projects.slogan')} {t('projects.description')}

{featuredProject && (
Featured
{featuredProject.icon}
{t(`project.status.${featuredProject.status}`)} {t(`project.type.${featuredProject.type}`)}

{featuredProject.title}

{t('project.role')}:

{featuredProject.role}

{t('project.impact')}:

{featuredProject.impact}

{featuredProject.description.map((desc) => (

{desc}

))}
{featuredProject.tech.map((tech) => ( {tech} ))}
{t('project.visit')} {featuredProject.links?.github && ( GitHub )}
)}
{productProjects.length > 0 && ( <>
🛍️

{t('project.type.product')}

{productProjects.map((project) => (
{t(`project.status.${project.status}`)}
{project.title}

{project.icon} {project.title}

{project.description.slice(0, 2).map((desc) => (
{desc}
))}
{project.tech.slice(0, 4).map((tech) => ( {tech} ))}
))}
)} {clientProjects.length > 0 && ( <>
💼

{t('project.type.client')}

{clientProjects.map((project) => (
{t(`project.status.${project.status}`)}
{project.title}

{project.icon} {project.title}

{project.description.slice(0, 2).map((desc) => (
{desc}
))}
{project.tech.slice(0, 4).map((tech) => ( {tech} ))}
))}
)} {experimentProjects.length > 0 && ( <>
🧪

{t('project.type.experiment')}

{experimentProjects.map((project) => (
{t(`project.status.${project.status}`)}
{project.title}

{project.icon} {project.title}

{project.description.slice(0, 2).map((desc) => (
{desc}
))}
{project.tech.slice(0, 4).map((tech) => ( {tech} ))}
))}
)}