بدء إعلان المحتوى الخاص بك
امتدادات الملفات
بشكل افتراضي، يراقب Intlayer جميع الملفات ذات الامتدادات التالية لإعلانات المحتوى:
- .content.ts
- .content.tsx
- .content.js
- .content.mjs
- .content.cjs
سيبحث التطبيق عن الملفات التي تطابق النمط ./src/**/*.content.{ts,tsx,js,jsx,mjs,cjs} بشكل افتراضي.
هذه الامتدادات الافتراضية مناسبة لمعظم التطبيقات. ومع ذلك، إذا كانت لديك متطلبات محددة، راجع دليل تخصيص امتداد المحتوى للحصول على تعليمات حول كيفية إدارتها.
للحصول على قائمة كاملة بخيارات التكوين، قم بزيارة وثائق التكوين.
إعلان المحتوى الخاص بك
قم بإنشاء وإدارة القواميس الخاصة بك:
src/example.content.ts
import { t, enu, cond, nest, md, type Dictionary } from "intlayer";interface Content { imbricatedContent: { imbricatedContent2: { stringContent: string; numberContent: number; booleanContent: boolean; }; multilingualContent: string; quantityContent: string; conditionalContent: string; nestedContent: string; markdownContent: string; externalContent: string; };}export default { key: "page", content: { imbricatedContent: { imbricatedContent2: { stringContent: "مرحبًا بالعالم", numberContent: 123, booleanContent: true, javaScriptContent: `${process.env.NODE_ENV}`, }, }, multilingualContent: t({ en: "English content", "en-GB": "English content (UK)", fr: "French content", es: "Spanish content", ar: "محتوى عربي", }), quantityContent: enu({ "<-1": "أقل من سيارة واحدة بالسالب", "-1": "سيارة واحدة بالسالب", "0": "لا توجد سيارات", "1": "سيارة واحدة", ">5": "بعض السيارات", ">19": "العديد من السيارات", }), conditionalContent: cond({ true: "التحقق مفعل", false: "التحقق معطل", }), nestedContent: nest( "navbar", // مفتاح القاموس للتداخل "login.button" // [اختياري] المسار إلى المحتوى للتداخل ), externalContent: async () => await fetch("https://example.com"), markdownContent: md("# مثال Markdown"), /* * متاح فقط باستخدام `react-intlayer` أو `next-intlayer` */ jsxContent: <h1>عنواني</h1>, },} satisfies Dictionary<Content>; // [اختياري] القاموس هو عام ويسمح لك بتقوية تنسيق القاموس الخاص بك
تداخل الوظائف
يمكنك بدون مشكلة تداخل الوظائف داخل بعضها البعض.
مثال:
src/example.content.ts
import { t, enu, cond, nest, md, type Dictionary } from "intlayer";const getName = async () => "جون دو";export default { key: "page", content: { // `getIntlayer('page','ar').hiMessage` يعيد `['مرحبًا', ' ', 'جون دو']` hiMessage: [ t({ en: "Hi", fr: "Salut", es: "Hola", ar: "مرحبًا", }), " ", getName(), ], // محتوى مركب يتداخل فيه الشرط، التعداد، والمحتوى متعدد اللغات // `getIntlayer('page','ar').advancedContent(true)(10) يعيد 'تم العثور على عناصر متعددة'` advancedContent: cond({ true: enu({ "0": t({ en: "No items found", fr: "Aucun article trouvé", es: "No se encontraron artículos", ar: "لم يتم العثور على عناصر", }), "1": t({ en: "One item found", fr: "Un article trouvé", es: "Se encontró un artículo", ar: "تم العثور على عنصر واحد", }), ">1": t({ en: "Multiple items found", fr: "Plusieurs articles trouvés", es: "Se encontraron múltiples artículos", ar: "تم العثور على عناصر متعددة", }), }), false: t({ en: "No valid data available", fr: "Aucune donnée valide disponible", es: "No hay datos válidos disponibles", ar: "لا توجد بيانات صالحة متاحة", }), }), },} satisfies Dictionary;
إذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيق