feat: implement internationalization (i18n) support

This commit is contained in:
radishzzz 2025-01-18 00:01:25 +00:00
parent 32ffec8480
commit d6c98880d3
17 changed files with 247 additions and 18 deletions

View file

@ -0,0 +1,47 @@
---
import Layout from '@/layouts/Layout.astro'
import { getPinnedPosts, getPosts } from '@/utils/content.config'
export function getStaticPaths() {
return [
{ params: { lang: 'zh' } },
{ params: { lang: 'en' } },
]
}
const { lang } = Astro.params
const pinnedPosts = await getPinnedPosts()
const posts = await getPosts()
---
<Layout>
<main>
{pinnedPosts.length > 0 && (
<section>
<ul>
{pinnedPosts.map(post => (
<li>
<a href={`/${lang}/posts/${post.slug}/`}>
{post.data.title}
<time>({post.data.published.toISOString().split('T')[0]})</time>
</a>
</li>
))}
</ul>
</section>
)}
<section>
<ul>
{posts.map(post => (
<li>
<a href={`/${lang}/posts/${post.slug}/`}>
{post.data.title}
<time>({post.data.published.toISOString().split('T')[0]})</time>
</a>
</li>
))}
</ul>
</section>
</main>
</Layout>