تكنوستاك
ابدأ مشروعكEnglish
شبكة علاقات: إدخال الكاتب، مقالة إنجليزية، مقالة عربية، صفحة فعالية.
الويب والجوال

ينبغي أن يصف نموذج المحتوى في Headless CMS الكيانات الثابتة التي تتحدث عنها مؤسستك، حتى تتغير تخطيطات الصفحات من حوله دون أن يتغير. نشرح كيف تختار الكيانات والمراجع، وتحدد الترجمة على مستوى الحقل أو المستند للعربية والإنجليزية، وتضبط قواعد النشر، وترحّل المحتوى دون كسر الروابط.

في هذا المقال

فيديو صامت بنص على الشاشة. يكرر النص المكتوب أدناه كلمات كل مشهد ويصف ما يعرضه.

  1. 0:00–0:05

    نماذج المحتوى؛ رسم توضيحي؛ TecnoStack؛ 1 2 3 4 5 6؛ نماذج المحتوى؛ نمذج الكيانات قبل تخطيط الصفحات؛ الصفحات تجمع محتوى قابلًا لإعادة الاستخدام؛ الصفحات والقنوات؛ كيانات المحتوى؛ المراجع المشتركة

    مخطط طبقات: الصفحات والقنوات، كيانات المحتوى، المراجع المشتركة. الروابط: من «المراجع المشتركة» إلى «كيانات المحتوى»؛ من «كيانات المحتوى» إلى «الصفحات والقنوات». التركيز على: كيانات المحتوى.

  2. 0:05–0:10

    نماذج المحتوى؛ رسم توضيحي؛ TecnoStack؛ 1 2 3 4 5 6؛ 01؛ سمِّ الحقول بحسب المعنى؛ لتناسب القنوات المختلفة؛ حقل جديد؛ اسم بحسب التخطيط؛ اسم بحسب المعنى

    مخطط متفرّع: حقل جديد، اسم بحسب التخطيط، اسم بحسب المعنى. الروابط: من «حقل جديد» إلى «اسم بحسب التخطيط»؛ من «حقل جديد» إلى «اسم بحسب المعنى». التركيز على: اسم بحسب المعنى.

  3. 0:10–0:15

    نماذج المحتوى؛ رسم توضيحي؛ TecnoStack؛ 1 2 3 4 5 6؛ 02؛ اربط المحتوى المشترك بالمراجع؛ كاتب واحد، وصفحات متعددة؛ إدخال الكاتب؛ مقالة إنجليزية؛ مقالة عربية؛ صفحة فعالية

    شبكة علاقات: إدخال الكاتب، مقالة إنجليزية، مقالة عربية، صفحة فعالية. الروابط: من «إدخال الكاتب» إلى «مقالة إنجليزية»؛ من «إدخال الكاتب» إلى «مقالة عربية»؛ من «إدخال الكاتب» إلى «صفحة فعالية». التركيز على: إدخال الكاتب.

  4. 0:15–0:20

    نماذج المحتوى؛ رسم توضيحي؛ TecnoStack؛ 1 2 3 4 5 6؛ 03؛ حدّد طريقة ترجمة كل نوع؛ حقول مشتركة أو مستندات مستقلة؛ نوع المحتوى؛ مستوى الحقل؛ مستوى المستند

    مخطط متفرّع: نوع المحتوى، مستوى الحقل، مستوى المستند. الروابط: من «نوع المحتوى» إلى «مستوى الحقل»؛ من «نوع المحتوى» إلى «مستوى المستند». التركيز على: نوع المحتوى.

  5. 0:20–0:25

    نماذج المحتوى؛ رسم توضيحي؛ TecnoStack؛ 1 2 3 4 5 6؛ 04؛ رحّل المحتوى على مراحل؛ تحقق قبل حذف الحقول القديمة؛ إضافة النوع الجديد؛ الملء بسكربت؛ تحويل القوالب؛ حذف الحقل القديم

    تسلسل خطوات: إضافة النوع الجديد، الملء بسكربت، تحويل القوالب، حذف الحقل القديم. الروابط: من «إضافة النوع الجديد» إلى «الملء بسكربت»؛ من «الملء بسكربت» إلى «تحويل القوالب»؛ من «تحويل القوالب» إلى «حذف الحقل القديم». التركيز على: الملء بسكربت.

  6. 0:25–0:30

    نماذج المحتوى؛ رسم توضيحي؛ TecnoStack؛ 1 2 3 4 5 6؛ تكنوستاك؛ محتوى ثابت ونشر مدروس؛ اقرأ الدليل في مدونة تكنوستاك؛ كيانات ثابتة؛ مراجع؛ قواعد اللغات؛ ترحيل مخطط؛ tecnostack.com

    مقارنة دون درجات: كيانات ثابتة، مراجع، قواعد اللغات، ترحيل مخطط. التركيز على: كيانات ثابتة، مراجع، قواعد اللغات، ترحيل مخطط.

على نموذج المحتوى في Headless CMS أن يصمد أمام إعادة التصميم والقنوات الجديدة ولغة ثانية. ابدأ بالأشياء الثابتة التي تتحدث عنها مؤسستك، كالمنتجات والخدمات والفروع والأشخاص والمقالات، وسمِّ حقولها بحسب معناها، ودع الصفحات تجمع هذه الكيانات. ثم قرّر لكل نوع محتوى كيف ترتبط النسختان العربية والإنجليزية، ومن ينشرهما، وماذا يحدث حين تغيب إحداهما.

تتأخر مشكلات نموذج المحتوى في الظهور إلى ما بعد العرض التجريبي الأول بكثير: يلصق محرروك نبذة الكاتب نفسها في عشرات الإدخالات، أو تجعل إعادة التصميم أسماء الحقول بلا معنى، أو لا تجد الصفحة العربية مكانًا لمثال محلي لا تحتاجه الإنجليزية. يتناول هذا الدليل القرارات التي تمنع ذلك.

تخطيط الصفحة من أقل أجزاء الموقع ثباتًا، فهو يتغير مع كل إعادة تصميم، أما الأشياء التي تصفها مؤسستك فتتغير أبطأ بكثير. للعيادة أطباء وتخصصات وفروع، ولشركة البرمجيات خدمات ودراسات حالة ومقالات. اجعل هذه أنواع محتوى، ودع قوالب الصفحات تقرر كيف ترتّبها.

سمِّ كل حقل بحسب معناه. حقل باسم heroTitleBlue يفقد معناه حين يعيد المصمم بناء الواجهة، أو حين يظهر المحتوى نفسه في تطبيق أو رسالة بريدية أو نتيجة بحث، بينما يبقى حقل مثل title أو summary صالحًا. واختبر كل حقل بسؤال واحد: لو أرسلت هذا المحتوى إلى قناة أخرى غدًا، هل يبقى اسمه دقيقًا؟

وامنح كل نوع محتوى مهمة واضحة واحدة. فنوع «صفحة» يتسع لكل الأقسام الممكنة يتحول إلى درج للمهملات: لا يعرف المحررون أيّ الحقول مهم، ولا يعرف المطورون أيّ التركيبات صحيح.

حين تتكرر البيانات نفسها في أكثر من إدخال، كالكاتب أو التصنيف أو عنوان الفرع أو مواصفات المنتج، اجعلها نوع محتوى مستقلًا واربطها بحقل مرجعي. أما نسخها في كل إدخال فيحوّل كل تعديل إلى عملية بحث واستبدال، وتتباعد النسخ مع الوقت.

وللمراجع قرارات خاصة بها، والأفضل أن تتخذها عن قصد:

  • الحذف وإلغاء النشر: ماذا يحدث للمقالات المرتبطة بكاتب غادر المؤسسة؟ هل يُمنع الحذف، أم يُستبدل المرجع، أم يُخفى اسم الكاتب؟
  • العمق: أبقِ التداخل ضحلًا. فإذا احتاجت بنية ما مستويات عدة من المكوّنات المتداخلة، فالأرجح أنها تحتاج نوع محتوى جديدًا ومرجعًا. والأشجار العميقة أصعب على المحررين وأصعب في التخزين المؤقت الدقيق.
  • المراجع بين اللغتين: هل تشير المقالة العربية إلى إدخال الكاتب نفسه الذي تشير إليه الإنجليزية، مع حقول اسم مترجمة، أم إلى إدخال عربي منفصل؟ قرّر ذلك مرة واحدة لكل نوع ووثّقه.

رسم توضيحي: إدخال الكاتب، مقالة إنجليزية، مقالة عربية، صفحة فعالية. الروابط: من إدخال الكاتب إلى مقالة إنجليزية؛ من إدخال الكاتب إلى مقالة عربية؛ من إدخال الكاتب إلى صفحة فعالية.

شكل 1: اربط المحتوى المشترك بالمراجع. كاتب واحد، وصفحات متعددة.

تتيح معظم أنظمة إدارة المحتوى طريقتين رئيسيتين للترجمة. وتصف وثائق Sanity عن الترجمة مثلًا الترجمة على مستوى الحقل، حيث يضم مستند واحد اللغات كلها داخل حقوله، والترجمة على مستوى المستند، حيث تكون كل لغة مستندًا مستقلًا مرتبطًا بترجماته. ولا تناسب أيٌّ منهما كل شيء، فاختر لكل نوع محتوى:

  • مستوى الحقل يناسب المحتوى المتطابق البنية في اللغتين والذي يتغير معًا: تسميات التنقل، ومواصفات المنتجات، وبيانات الفروع، وأسماء الكتّاب. تبقى اللغتان جنبًا إلى جنب، ويسهل اكتشاف الترجمة الناقصة.
  • مستوى المستند يناسب المحتوى الذي قد يختلف بين اللغتين: المقالات، وصفحات الحملات، والصفحات القانونية التي تحتاج أمثلتها أو مواعيد نشرها أو اعتماداتها الخاصة. فقد تحتاج المقالة العربية مقدمة مختلفة أو مثالًا إقليميًا لا تحتاجه النسخة الإنجليزية.

اطرح الأسئلة العملية: هل البنية واحدة في اللغتين؟ هل تنشرون النسختين معًا؟ من يملك كل لغة؟ والخلط بين الطريقتين أمر طبيعي، فمقالة مترجمة على مستوى المستند يمكن أن تشير إلى إدخال كاتب مترجم على مستوى الحقل.

يحتاج كل نموذج ثنائي اللغة إلى إجابات مكتوبة عن أسئلة لن يجيب عنها النظام نيابةً عنك:

  • الترجمة الناقصة: هل تعرض الصفحة العربية النص الإنجليزي بديلًا، أم تُظهر تنبيهًا، أم تنتظر حتى تجهز الترجمة؟ النص الإنجليزي تحت رابط عربي ولغة صفحة عربية يربك القرّاء والتقنيات المساعدة، لذا نفضّل تأجيل الصفحة أو عرض تنبيه واضح.
  • الملكية والاعتماد: من يكتب كل لغة ويراجعها ويعتمدها؟ وهل يمكن نشر لغة قبل الأخرى؟
  • الروابط المختصرة (slugs): خزّن رابط كل لغة في حقل مستقل يحدده شخص ويبقى ثابتًا عند تغيّر العنوان، فتوليد الرابط من العنوان في كل مرة يكسر الروابط.
  • الربط بين الترجمات: أبقِ صلة صريحة بين نسختي اللغتين، حتى ينتقل الزائر بين اللغتين في الصفحة نفسها ويعلن الموقع عن البدائل اللغوية.

يضيف المحتوى العربي متطلبات قد يغفلها نموذج صُمّم للإنجليزية وحدها:

  • الاتجاه مسؤولية الواجهة. خزّن النص صافيًا بلا محارف تحكّم اتجاهية مضمّنة، ودع القوالب تحدد اللغة والاتجاه. وعالج الجمل مختلطة الاتجاه، كجملة عربية فيها اسم منتج لاتيني أو رقم هاتف، عند العرض، واترك النص المخزّن كما هو.
  • تاريخ مرجعي واحد. خزّن قيمة تاريخ حقيقية وأبعد التنسيق عن قاعدة البيانات. وإن احتاج جمهورك إلى التاريخ الهجري، فحوّله في طبقة العرض حتى يبقى الفرز والترشيح سليمين.
  • الترتيب والبحث. استخدم ترتيبًا يراعي قواعد العربية في القوائم، ووحّد أشكال الهمزة والتشكيل داخل فهرس البحث لا في النص المخزّن.
  • نص بديل لكل لغة. النص البديل للصور محتوى، فخصص له حقلًا في كل لغة. ويدرج المرجع السريع لمعايير WCAG 2.2 الصادر عن W3C النصوص البديلة ضمن معاييره، إلى جانب الوصول بلوحة المفاتيح والتركيز والتباين. الحقل يجعل النص البديل الجيد ممكنًا، لكن المراجع يبقى مطالبًا بالتأكد من أنه مفيد.

لا يبقى نموذج على حاله مع نمو المؤسسة، فتعامل مع كل تغيير في النموذج بوصفه عملية ترحيل لها خطتها. مثال توضيحي: موقع فعاليات يخزّن اسم المكان نصًا حرًا داخل كل فعالية. ولجعل الأماكن قابلة لإعادة الاستخدام، يقوم الفريق بما يلي:

  1. يضيف نوع محتوى «مكان» وحقلًا مرجعيًا في «الفعالية»، مع إبقاء الحقل النصي القديم مؤقتًا؛
  2. يملأ الأماكن بسكربت يدمج المكرر ويسجّل الحالات الملتبسة ليحسمها محرر؛
  3. يحوّل القوالب لتقرأ المرجع، مع إبقاء الحقل القديم احتياطًا لإصدار واحد؛
  4. يحذف الحقل القديم بعد تطابق أعداد الإدخالات ومراجعة المحررين لعينات باللغتين.

شغّل السكربت أولًا على نسخة من البيانات واحفظه في نظام التحكم بالإصدارات. وإن كان المحتوى يغذّي واجهة تعتمد على التخزين المؤقت، فوسم الصفحات المخزّنة بالكيانات التي تستخدمها يجعل التعديل يعيد توليد الصفحات الصحيحة؛ ويشرح دليلنا عن مكوّنات الخادم والتخزين المؤقت في Next.js 15 هذا النمط للفرق التي تعمل على ذلك الإصدار.

وعلى نموذج المحتوى أن ينسجم مع الأنظمة من حوله. فلكل كتلة محتوى ينبغي أن يقابلها مكوّن في نظام التصميم، وهو ما نناقشه في أنظمة التصميم بمساعدة الذكاء الاصطناعي. وفي التجارة الإلكترونية، حدّد أي نظام يملك أي حقول، كأن تقرر هل تعيش أوصاف المنتجات في نظام المحتوى أم في نظام التجارة الخلفي؛ وتشرح مقارنتنا بين Shopify Hydrogen وMedusa بواجهة مستقلة هذا الحد بين واجهة المتجر والنظام الخلفي. وإن كنت تخطط لموقع جديد ثنائي اللغة، فإن خدمة تصميم وتطوير المواقع لدينا تشمل محتوى منظمًا يستطيع فريقك تعديله بالعربية والإنجليزية.

رسم توضيحي: إضافة النوع الجديد، الملء بسكربت، تحويل القوالب، حذف الحقل القديم. الروابط: من إضافة النوع الجديد إلى الملء بسكربت؛ من الملء بسكربت إلى تحويل القوالب؛ من تحويل القوالب إلى حذف الحقل القديم.

شكل 2: رحّل المحتوى على مراحل. تحقق قبل حذف الحقول القديمة.

  • Sanity. Localization: طريقتا الترجمة على مستوى الحقل وعلى مستوى المستند.
  • مبادرة إمكانية الوصول إلى الويب في W3C. How to Meet WCAG 2.2 (Quick Reference): معايير منها النصوص البديلة والوصول بلوحة المفاتيح والتركيز والتباين.

تختلف قدرات أنظمة إدارة المحتوى وتتغير، فراجع الوثائق الحالية لمنصتك. وتوصيات النمذجة الواردة هنا إرشادات من تكنوستاك نفسها، ولا يفرضها أي مزوّد لأنظمة إدارة المحتوى.