استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
تاريخ الإصدارات
- "تحديث استخدام واجهة برمجة تطبيقات useIntlayer في Solid للوصول المباشر إلى الخصائص"v8.9.04/5/2026
- "إضافة أمر init"v7.5.930/12/2025
- "تحديث الوثيقة"v5.5.1119/11/2025
- "بدء السجل"v5.5.1029/6/2025
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةإذا كان لديك فكرة لتحسين هذه الوثيقة، فلا تتردد في المساهمة من خلال تقديم طلب سحب على GitHub.
رابط GitHub للتوثيقنسخ الـ Markdown من المستند إلى الحافظة
ترجمة موقعك الإلكتروني باستخدام Vite و Svelte عبر Intlayer
جدول المحتويات
لماذا تختار Intlayer مقارنة بالبدائل الأخرى؟
بالمقارنة مع الحلول الرئيسية مثل svelte-i18n أو i18next، يعد Intlayer حلاً يأتي مزودًا بتحسينات متكاملة مثل:
تم تحسين Intlayer للعمل بشكل مثالي مع Svelte من خلال تقديم نطاق المحتوى على مستوى المكونات والترجمات التفاعلية وجميع الميزات اللازمة لتوسيع نطاق التدويل (i18n).
بدلاً من تحميل ملفات JSON ضخمة إلى صفحاتك، قم بتحميل المحتوى الضروري فقط. يساعد Intlayer في تقليل حجم حزمة JavaScript (bundle size) وصفحاتك بنسبة تصل إلى 50%.
تحديد نطاق المحتوى لكل مكوّن على حدة يُسهّل صيانة التطبيقات الكبيرة. يمكنك نسخ مجلد ميزة بالكامل أو حذفه دون القلق بشأن مراجعة قاعدة بيانات المحتوى بأكملها. بالإضافة إلى ذلك، فإن Intlayer مكتوب بنظام أنواع قوي (Fully Typed) لضمان الدقة الكاملة لمحتواك.
يؤدي وضع المحتوى إلى جانب المكونات (Co-location) إلى تقليل السياق المطلوب بواسطة نماذج اللغات الكبيرة (LLMs). كما يوفر Intlayer مجموعة أدوات متكاملة مثل واجهة سطر الأوامر (CLI) لفحص الترجمات المفقودة، وLSP، وخادم MCP، ومهارات الوكلاء (Agent Skills)، لتوفير أفضل تجربة تطوير لوكلاء الذكاء الاصطناعي.
استخدم الأتمتة لترجمة المحتوى مباشرةً في مسار CI/CD الخاص بك باستخدام نموذج اللغة الكبير (LLM) الذي تختاره ووفق تكلفة مزود الذكاء الاصطناعي لديك. يقدم Intlayer أيضًا مترجمًا لأتمتة استخراج المحتوى، بالإضافة إلى منصة ويب للمساعدة في الترجمة في الخلفية.
قد يؤدي تحميل ملفات JSON ضخمة في المكونات إلى مشكلات في الأداء وسرعة الاستجابة. يعمل Intlayer على تحسين تحميل المحتوى بدقة عند وقت البناء (Build Time).
أكثر من مجرد حل i18n، يوفر Intlayer محررًا مرئيًا مستضافًا ذاتيًا ونظام إدارة محتوى كامل (CMS) لإدارة المحتوى متعدد اللغات في الوقت الفعلي، مما يجعل التعاون مع المترجمين وكتاب المحتوى وأعضاء الفريق الآخرين سلسًا للغاية. يمكن تخزين المحتوى محليًا و/أو عن بعد.
دليل خطوة بخطوة لإعداد Intlayer في تطبيق Vite و Svelte
راجع قالب التطبيق على GitHub.
تثبيت التبعيات
قم بتثبيت الحزم اللازمة باستخدام npm:
bashنسخ الكودنسخ الكود إلى الحافظة
علامة
--interactiveاختيارية. استخدمintlayer-cli initإذا كنت وكيل ذكاء اصطناعي.سيقوم هذا الأمر باكتشاف بيئتك وتثبيت الحزم المطلوبة. على سبيل المثال:
bashنسخ الكودنسخ الكود إلى الحافظة
intlayer
الحزمة الأساسية التي توفر أدوات التدويل لإدارة التكوين، الترجمة، إعلان المحتوى، التحويل البرمجي، وأوامر CLI.
svelte-intlayer الحزمة التي تدمج Intlayer مع تطبيق Svelte. توفر مزودي السياق hooks للتدويل في Svelte.
vite-intlayer يتضمن إضافة Vite لدمج Intlayer مع مجمّع Vite، بالإضافة إلى وسيط للكشف عن اللغة المفضلة للمستخدم، وإدارة الكوكيز، والتعامل مع إعادة توجيه URL.
تكوين مشروعك
البنية
في هذه البنية، يوفر
svelte-intlayerمخازن تفاعلية وأدوات مساعدة لإدارة الترجمات داخل مكونات Svelte. توجد إعلانات المحتوى فيsrc/بجانب المكونات.bashنسخ الكودنسخ الكود إلى الحافظة
التكوين
أنشئ ملف تكوين لتحديد لغات تطبيقك:
intlayer.config.tsنسخ الكودنسخ الكود إلى الحافظة
من خلال ملف التكوين هذا، يمكنك إعداد عناوين URL محلية، وإعادة توجيه الوسيط، وأسماء الكوكيز، وموقع وامتداد إعلانات المحتوى الخاصة بك، وتعطيل سجلات Intlayer في وحدة التحكم، والمزيد. للحصول على قائمة كاملة بالمعلمات المتاحة، راجع توثيق التكوين.
دمج Intlayer في تكوين Vite الخاص بك
أضف مكون intlayer الإضافي إلى تكوينك.
vite.config.tsنسخ الكودنسخ الكود إلى الحافظة
يُستخدم مكون Vite الإضافي
intlayer()لدمج Intlayer مع Vite. يضمن بناء ملفات إعلان المحتوى ويراقبها في وضع التطوير. كما يعرّف متغيرات بيئة Intlayer داخل تطبيق Vite. بالإضافة إلى ذلك، يوفر ألقابًا لتحسين الأداء.إعلان المحتوى الخاص بك
قم بإنشاء وإدارة إعلانات المحتوى الخاصة بك لتخزين الترجمات:
src/app.content.tsxنسخ الكودنسخ الكود إلى الحافظة
import { t, type Dictionary } from "intlayer"; const appContent = { key: "app", content: { title: t({ en: "Hello World", fr: "Bonjour le monde", es: "Hola mundo", }), }, } satisfies Dictionary; export default appContent;يمكن تعريف إعلانات المحتوى الخاصة بك في أي مكان داخل تطبيقك بمجرد تضمينها في دليل
contentDir(افتراضيًا،./src). ويجب أن تتطابق مع امتداد ملف إعلان المحتوى (افتراضيًا،.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).لمزيد من التفاصيل، راجع توثيق إعلان المحتوى.
استخدام Intlayer في الكود الخاص بك
src/App.svelteنسخ الكودنسخ الكود إلى الحافظة
إذا كان تطبيقك موجودًا بالفعل، يمكنك استخدام مترجم Intlayer، بالإضافة إلى أمر الاستخراج، لتحويل آلاف المكونات في ثانية واحدة.
تغيير لغة المحتوى الخاص بك
اختياريsrc/App.svelteنسخ الكودنسخ الكود إلى الحافظة
عرض Markdown
اختيارييدعم Intlayer عرض محتوى Markdown مباشرة في تطبيق Svelte الخاص بك. بشكل افتراضي، يتم التعامل مع Markdown كنص عادي. لتحويل Markdown إلى HTML غني، يمكنك دمج
@humanspeak/svelte-markdown، أو أي محلل Markdown آخر.لرؤية كيفية إعلان محتوى markdown باستخدام حزمة
intlayer، راجع وثيقة markdown.src/App.svelteنسخ الكودنسخ الكود إلى الحافظة
يمكنك أيضًا الوصول إلى بيانات الـ front-matter الخاصة بالماركداون باستخدام الخاصية
content.markdownContent.metadata.xxx.إعداد محرر intlayer / نظام إدارة المحتوى
اختياريلإعداد محرر intlayer، يجب عليك اتباع توثيق محرر intlayer.
لإعداد نظام إدارة المحتوى (CMS) الخاص بـ intlayer، يجب عليك اتباع توثيق نظام إدارة المحتوى intlayer.
إضافة التوجيه المحلي (localized Routing) لتطبيقك
اختياريللتعامل مع التوجيه المحلي في تطبيق Svelte الخاص بك، يمكنك استخدام
svelte-spa-routerمعlocaleFlatMapمن Intlayer لتوليد المسارات لكل لغة.أولاً، قم بتثبيت
svelte-spa-router:bashنسخ الكودنسخ الكود إلى الحافظة
ثم، أنشئ ملف
Router.svelteلتعريف المسارات الخاصة بك:src/Router.svelteنسخ الكودنسخ الكود إلى الحافظة
قم بتحديث ملف
main.tsلتركيب مكونRouterبدلاً منApp:src/main.tsنسخ الكودنسخ الكود إلى الحافظة
أخيرًا، قم بتحديث ملف
App.svelteالخاص بك لاستقبال الخاصيةlocaleواستخدامها معuseIntlayer:src/App.svelteنسخ الكودنسخ الكود إلى الحافظة
تكوين التوجيه على جانب الخادم (اختياري)
بالتوازي، يمكنك أيضًا استخدام
intlayerProxyلإضافة التوجيه من جانب الخادم إلى تطبيقك. سيقوم هذا الإضافة تلقائيًا باكتشاف اللغة الحالية بناءً على عنوان URL وتعيين ملف تعريف الارتباط الخاص باللغة المناسبة. إذا لم يتم تحديد لغة، فسيحدد الإضافة اللغة الأنسب بناءً على تفضيلات لغة متصفح المستخدم. إذا لم يتم اكتشاف أي لغة، فسيتم إعادة التوجيه إلى اللغة الافتراضية.ملاحظة: لاستخدام
intlayerProxyفي بيئة الإنتاج، تحتاج إلى نقل حزمةvite-intlayerمنdevDependenciesإلىdependencies.منذ Intlayer v9، يتم توضيب
intlayerProxy()مباشرة في pluginintlayer()وتفعيله بشكل افتراضي من خلال خيارrouting.enableProxy(trueافتراضياً). تسجيله بشكل منفصل كما هو موضح أدناه أصبح اختيارياً الآن، يتم الاحتفاظ به لأغراض التوافقية العكسية وللإعدادات التي تحتاج إلى التحكم في ترتيب plugins. اضبطrouting.enableProxy: falseللعزوف عن ذلك. انظر إلى ملاحظات الإصدار v9.vite.config.tsنسخ الكودنسخ الكود إلى الحافظة
import { defineConfig } from "vite"; import { svelte } from "@sveltejs/vite-plugin-svelte"; import { intlayer } from "vite-intlayer"; typescript {3,7} fileName="vite.config.ts" codeFormat="typescript" import { defineConfig } from "vite"; import { svelte } from "@sveltejs/vite-plugin-svelte"; import { intlayer } from "vite-intlayer"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [intlayerProxy(), // should be placed first svelte(), intlayer()], });تغيير عنوان URL عند تغيير اللغة
اختياريللسماح للمستخدمين بتغيير اللغة وتحديث عنوان URL وفقًا لذلك، يمكنك إنشاء مكون
LocaleSwitcher. سيستخدم هذا المكونgetLocalizedUrlمنintlayerوpushمنsvelte-spa-router.src/lib/LocaleSwitcher.svelteنسخ الكودنسخ الكود إلى الحافظة
الروابط المترجمة
اختياريلأغراض SEO، من المستحسن إضافة بادئة locale إلى مساراتك (على سبيل المثال،
/about,/fr/about).src/lib/components/Link.svelteنسخ الكودنسخ الكود إلى الحافظة
استخراج محتوى مكوناتك
اختياريإذا كان لديك قاعدة بيانات كود موجودة، فقد يكون تحويل آلاف الملفات مستهلكًا للوقت.
لتسهيل هذه العملية، يقترح Intlayer مترجمًا / مستخرجًا لتحويل مكوناتك واستخراج المحتوى.
لإعداده، يمكنك إضافة قسم
compilerفي ملفintlayer.config.tsالخاص بك:intlayer.config.tsنسخ الكودنسخ الكود إلى الحافظة
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... بقية التكوين الخاص بك compiler: { /** * يشير إلى ما إذا كان يجب تمكين المترجم. */ enabled: true, /** * يحدد مسار ملفات المخرجات */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها. بهذه الطريقة، يمكن تشغيل المترجم مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته. */ saveComponents: false, /** * بادئة مفتاح القاموس */ dictionaryKeyPrefix: "", }, }; export default config;قم بتشغيل المستخرج لتحويل مكوناتك واستخراج المحتوى
bashنسخ الكودنسخ الكود إلى الحافظة
Since v9, the
intlayerCompileris included in theintlayerplugin. So you don't need to add it manually.قم بتحديث
vite.config.tsالخاص بك لتضمين ملحقintlayerCompiler:vite.config.tsنسخ الكودنسخ الكود إلى الحافظة
قم ببناء تطبيقك لتحويل مكوناتك واستخراج المحتوى
bashنسخ الكودنسخ الكود إلى الحافظة
(اختياري) خريطة الموقع و robots.txt (توليد وقت البناء)
يوفّر Intlayer الدالتين generateSitemap وgetMultilingualUrls لتنسيق مخرجات جاهزة للزحّافات (sitemap.xml متعدد اللغات وrobots.txt) وكتابتها تلقائياً إلى public/. عادةً تشغّل سكربت Node صغير قبل Vite (مثلاً خطافات npm predev / prebuild).
خريطة الموقع
يولّد مولّد خرائط المواقع إعدادات اللغات ويضيف البيانات الوصفية المناسبة.
تدعم الخريطة مساحة الاسمxhtml:link(hreflang). بدلاً من قائمة عناوين مسطحة، يربط Intlayer بين جميع النسخ اللغوية لكل صفحة في الاتجاهين (مثل/aboutو/fr/aboutأو/about?lang=frوفقًا لوضع التوجيه).
Robots.txt
استخدم getMultilingualUrls لتشمل قواعد Disallow كل المتغيرات المحلية للمسارات الحساسة.
1. أضف generate-seo.mjs في جذر المشروع
نسخ الكود إلى الحافظة
يجب تثبيت حزمة intlayer. عيّن SITE_URL في بيئة الإنتاج (مثلاً في CI).
يُفضّلgenerate-seo.mjsلـ ESM في Node. إن استخدمتgenerate-seo.jsففعّل"type": "module"فيpackage.jsonأو ESM بطريقة أخرى.
2. شغّل السكربت قبل Vite
نسخ الكود إلى الحافظة
عدّل الأوامر إن كنت تستخدم pnpm أو yarn. يمكن استدعاء السكربت من CI أيضاً.
تكوين Git
يوصى بتجاهل الملفات التي يتم إنشاؤها بواسطة Intlayer. هذا يسمح لك بتجنب إضافتها إلى مستودع Git الخاص بك.
للقيام بذلك، يمكنك إضافة التعليمات التالية إلى ملف .gitignore الخاص بك:
نسخ الكود إلى الحافظة
إضافة VS Code
لتحسين تجربة التطوير الخاصة بك مع Intlayer، يمكنك تثبيت امتداد Intlayer الرسمي لـ VS Code.
يوفر هذا الامتداد:
- الإكمال التلقائي لمفاتيح الترجمة.
- الكشف عن الأخطاء في الوقت الحقيقي للترجمات المفقودة.
- معاينات داخلية للمحتوى المترجم.
- إجراءات سريعة لإنشاء التراجم وتحديثها بسهولة.
لمزيد من التفاصيل حول كيفية استخدام الامتداد، راجع توثيق امتداد Intlayer لـ VS Code.
التعمق أكثر
للمضي قدمًا، يمكنك تنفيذ المحرر المرئي أو إخراج محتواك باستخدام نظام إدارة المحتوى (CMS).
الأسئلة الشائعة
لا يفرض Vite أي رأي بشأن تدويل التطبيقات (i18n)، لذا يعود الخيار لمنظومة Svelte:
svelte-i18nأوtypesafe-i18n: حلول تعتمد على متاجر Svelte.Intlayer: إعلان بجانب المكون، ترجمة وقت البناء، استجابة Svelte كاملة، وترجمة بالذكاء الاصطناعي.
انظر لماذا Intlayer.
أقل بكثير من الحلول القائمة على فضاءات الأسماء، لأن الصفحة لا تُحمل أبدًا كتالوجًا لا تعرضه. يستبدل مترجم وقت البناء استدعاءات useIntlayer بإدخالات القاموس الدقيقة التي يستخدمها المكون، وتفصل القواميس الديناميكية الباقي حسب اللغة، مما يقلل الحزمة بنسبة تصل إلى 50%. انظر تحسين الحزم و المقارنة المعيارية.
إلى حد كبير نعم. اتبع دليل ترحيل Svelte I18n.
نعم. تحافظ مكونة مزامنة JSON على ملفات /messages/{locale}/{namespace}.json الخاصة بك كمصدر الحقيقة وتُنشئ قواميس Intlayer منها، في كلا الاتجاهين. وتقوم مكونة مزامنة PO بنفس الشيء لكتالوجات gettext، وتسمح لك الملفات المقسمة حسب اللغة بتقسيم المحتوى حسب اللغة بدلاً من تجميع كل اللغات في ملف واحد.
لا. قم بتشغيل npx intlayer extract وسيقرأ Intlayer ملفاتك، ويسحب السلاسل النصية الموجهة للمستخدم، ويكتب ملف .content بجانب كل منها، حتى تراجع diff بدلاً من نسخ السلاسل إلى كتالوج يدويًا.
لأتمتة كاملة، يقوم Intlayer Compiler بالشيء نفسه في وقت البناء: يمسح الكود عند كل تغيير، وينشئ القواميس ويزامنها مع HMR.
هناك حدان يجدر معرفتهما قبل تشغيل المترجم. إنه يعمل عن طريق التحليل الثابت، وبالتالي فإن السلاسل التي تظهر فقط في وقت التشغيل، مثل رموز أخطاء API أو حقول نظام إدارة المحتوى، تظل بعيدة عن متناوله. كما يتعين عليه التمييز بين النصوص الموجهة للمستخدم ومنطق التطبيق مثل className="active" أو رمز الحالة، الأمر الذي يتطلب بعض الملاحظات التوضيحية في قاعدة التعليمات البرمجية الكبيرة. يتجنب أمر الاستخراج كلا الأمرين من خلال إبقائك متحكمًا في العملية.
خمس أدوات، كلها اختيارية:
- امتداد VS Code: الانتقال من مفتاح
useIntlayerإلى ملف المحتوى المصرح به، استخراج المحتوى من المكون، وتشغيل build و fill و test و push و pull من لوحة الأوامر أو علامة تبويب Intlayer. - خادم LSP: نفس التجربة في أي محرر يدعم LSP، مع الانتقال إلى التعريف وعروض القيمة المترجمة عند التمرير والإكمال التلقائي للمفاتيح. يدعم أيضًا استدعاءات
i18nextوreact-i18nextوnext-intlوuse-intl. - خادم MCP: يكشف وثائق Intlayer و CLI إلى Cursor و VS Code و Claude Desktop و Claude Code و ChatGPT.
- Agent skills: مهارات مخصصة مثل
intlayer-configوintlayer-cliوintlayer-content. - ESLint plugin: قاعدة
no-raw-textترصد النصوص المكتوبة مباشرة بدون تدويل.
