autorenew

إضافة صفحة

هناك عدة طرق لإنشاء صفحات متعددة اللغات في Astro i18n Starter.

إذا كنت تريد فصل الملفات لكل لغة

قم بإنشاء مجلد لكل لغة تحت pages وأضف الملفات بتنسيق Astro أو Markdown.

src/pages
├── en/
│   ├── page-1.astro
│   └── page-2.mdx
└── ar/
  ├── page-1.astro
  └── page-2.mdx

سيتم إنشاء الصفحات التالية

إذا كنت تريد إدارة كل شيء في ملف واحد

إذا لم يكن هناك الكثير من النصوص في الصفحة، يمكنك استخدام ميزة التوجيه الديناميكي في Astro لإنشاء صفحات لكل لغة ديناميكيًا من ملف واحد.

src/pages
└── [lang]/
    ├── page-1.astro
    └── page-2.astro

داخل الملف، قم باستيراد كائن LOCALES واستخدم دالة getStaticPaths() في Astro لإنشاء المسارات الديناميكية.

---
import { LOCALES } from "@/i18n";

export const getStaticPaths = () =>
  Object.keys(LOCALES).map((lang) => ({
    params: { lang },
  }));
---

سيتم إنشاء الصفحات التالية

إذا كنت تريد استخدام Content Collection

إذا كنت تريد إدارة صفحات المدونة أو الأخبار بملفات Markdown، يمكنك استخدام ميزة Content Collection في Astro.

Directory

src/
├── content.config.ts
├── blog/
│   ├── en/
│   │   ├── first-post.md
│   │   └── second-post.md
│   └── ar/
│        ├── first-post.md
│        └── second-post.md
└── pages/[lang]/blog/
  ├── index.astro
  └── [...id].astro

pages/[lang]/blog/[…id].astro

---
import { getCollection } from "astro:content";

export async function getStaticPaths() {
  const posts = await getCollection("blog");

  return posts.map((post) => {
    const [lang, ...id] = post.id.split("/");
    return { params: { lang, id: id.join("/") || undefined }, props: post };
  });
}
---

لمزيد من التفاصيل، يرجى مراجعة وثائق Astro.

Content Collections | Docs