تحويل النص إلى كلام لمواقع WPML: ما الذي يعمل فعلاً

1 دقيقة قراءة 18 دقيقة استماع
تحويل النص إلى كلام لمواقع WPML: ما الذي يعمل فعلاً

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

هذا المقال هو الجانب التطبيقي المقابل لـ دليل Weglot. الزاوية التقنية معكوسة تماماً، لذا سنبدأ بشرح السبب.

WPML يخزّن الترجمات كمنشورات حقيقية. Weglot لا يفعل ذلك.

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

ينشئ WPML سجل منشور منفصل لكل ترجمة. النسخة الإنجليزية من المقال موجودة في جدول wp_posts بمعرّف خاص بها. النسخة الإسبانية موجودة في الجدول ذاته بمعرّف مختلف. يربطهما WPML من خلال جدول icl_translations. النص المترجم نصٌّ حقيقي في قاعدة البيانات، يحرّره إنسان أو خط أنابيب الترجمة الآلية لـ WPML.

Weglot عكس ذلك تماماً. لا تحتوي قاعدة البيانات إلا على النص الأصلي. الترجمات تُنتَج في وقت التشغيل وتُحقن في HTML قبل وصول الصفحة إلى المتصفح. أي إضافة تقرأ من get_post() على موقع Weglot لن ترى إلا اللغة المصدر دائماً.

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

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

أربع أنماط فشل شائعة في إضافات WPML لتحويل النص إلى كلام

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

1. صوت بلغة خاطئة بسبب اكتشاف اللغة عبر AJAX

هذه هي المشكلة الصامتة. معظم مشغّلات تحويل النص إلى كلام تجلب ملف الصوت أو رابط البث عبر طلب admin-ajax أو REST بعد تحميل الصفحة. داخل هذا الطلب، يفقد ووردبريس سياق URL للواجهة الأمامية. تسأل الإضافة WPML: "في أي لغة نحن؟" فتحصل على إجابة خاطئة.

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

النهج الصحيح هو استخدام فلاتر WPML في وقت التشغيل. فلتر wpml_current_language يُعيد اللغة النشطة في اللحظة التي تسأل فيها. خطّاف wpml_post_language_details يُعيد لغة منشور بعينه، وهو أكثر أماناً لأنه يربط الصوت بمعرّف المنشور لا بحالة الطلب.

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

2. ملف صوتي واحد مشترك بين جميع الترجمات

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

بما أن ترجمات WPML منشورات منفصلة بمعرّفات مختلفة، فالسلوك الصحيح هو توليد ملف صوتي جديد لكل منشور مترجم. يُخزَّن كل ملف بمعرّف منشوره الخاص ويُقدَّم لتلك الترجمة فقط. يتبع TTSWP هذا النموذج ويستخدم معرّف المنشور، لا المعرّف الأصلي، كمفتاح للتخزين المؤقت.

3. الصوت ذاته يقرأ كل اللغات

مقال فرنسي يُقرأ بصوت مدرَّب على الإنجليزية يبدو غريباً حتى حين تكون الكلمات صحيحة. أصوات ElevenLabs تحمل لكنة ونبرة من بيانات تدريبها. صوت مدرَّب على الإنجليزية الأمريكية سيقرأ الفرنسية بلكنة أمريكية ما لم تخصّص صوتاً يناسب اللغة المستهدفة.

يتيح لك TTSWP تعيين صوت ElevenLabs واحد لكل لغة في WPML. الترجمة الإسبانية تحصل على صوت إسباني، والترجمة الألمانية تحصل على صوت ألماني، وهكذا. راجع توثيق ربط اللغة بالصوت للإعداد التفصيلي.

4. مخطط لا يُعلن عن لغة الصوت

هذه هي التفصيلة المتعلقة بـ AEO التي تتجاهلها معظم الإضافات. يجب أن تحمل البيانات المنظّمة لـ AudioObject خاصية inLanguage. يجب أن تكون القيمة وسماً وفق معيار IETF BCP 47 مثل es أو de أو nb-NO، بما يتطابق مع خاصية hreflang في الصفحة.

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

اختيار نموذج ElevenLabs المناسب لتغطية WPML

تقدّم ElevenLabs عدة نماذج، ولا تغطّي كلها اللغات ذاتها. إذا كان WPML يخدم لغة لا يدعمها النموذج الذي اخترته في ElevenLabs، فلن تتمكن من تقديم تعليق صوتي نظيف لتلك الترجمة.

التغطية الحالية اعتباراً من 2026:

  • Multilingual v2 يدعم 29 لغة، منها الإنجليزية والإسبانية والفرنسية والألمانية والإيطالية والبرتغالية والهولندية والبولندية والسويدية والدنماركية والفنلندية والتركية والعربية والهندية واليابانية والكورية والصينية.
  • Flash v2.5 يدعم 32 لغة، وهي كل لغات v2 إضافةً إلى الهنغارية والنرويجية والفيتنامية، مع زمن استجابة نموذج يبلغ نحو 75 ميلي ثانية.
  • Eleven v3 يدعم 74 لغة، الأوسع تغطيةً بين جميع النماذج. له قيد واحد يفوق في أهميته كل مزاياه الإضافية: لم يُبنَ للاستخدام الفوري. تُصرّح ElevenLabs بذلك مباشرةً. النموذج أكبر حجماً ويستخدم مُرمِّز صوت عالي الدقة، فيستغرق التوليد وقتاً أطول. للاستخدامات الفورية أو التفاعلية، توصي ElevenLabs باستخدام Flash v2.5 بدلاً منه.

لموقع WPML يحتوي ترجمة نرويجية، لن يغطّيها Multilingual v2. Flash v2.5 سيغطّيها. لموقع يحتاج لغة لا يدعمها إلا v3، فأنت تقبل زمن استجابة توليد أعلى مقابل التغطية. يوجّه TTSWP كل لغة إلى الصوت الذي تختاره، فبإمكانك مزج النماذج حسب الحاجة.

كيف تختبر إذا كانت إضافة تحويل النص إلى كلام تتعامل فعلاً مع WPML

لا تحتاج لقراءة الكود للتحقق من ذلك. خمس دقائق في المتصفح تخبرك بما يحدث.

  1. غيّر اللغة. افتح المقال الأصلي، ثم انتقل إلى الترجمة عبر مبدّل اللغة في WPML. تأكد من تغيّر الرابط، مثل الانتقال إلى /es/، وأن مقطع الرابط هو المقطع المترجم.
  2. اضغط تشغيل وأنصت. يجب أن يتطابق الصوت مع لغة الصفحة. صوت إنجليزي على صفحة إسبانية يعني فشل الإضافة في الخطوة الأولى.
  3. افحص رابط الصوت. انقر بالزر الأيمن على المشغّل وانسخ مصدر الصوت. قارنه برابط الصوت في المقال الأصلي. إذا كان الرابطان متطابقَين في كل اللغات، فالإضافة تشارك ملفاً واحداً.
  4. اعرض مصدر الصفحة وابحث عن AudioObject. ابحث عن حقل inLanguage. يجب أن يساوي رمز لغة الصفحة. إذا كان الحقل غائباً أو يعرض دائماً en، فالمخطط خاطئ.
  5. تحقق من hreflang. يجب أن يتطابق inLanguage في الصوت مع hreflang في الصفحة. التعارض يربك بحث الذكاء الاصطناعي ويكسر الاقتباس لكل لغة على حدة.

نفّذ هذه القائمة قبل شراء أي شيء. تعمل مع أي إضافة لتحويل النص إلى كلام، لا مع TTSWP فحسب.

كيف يبدو إعداد WPML الصحيح لتحويل النص إلى كلام

هذا ما نوصي به على موقع WPML في بيئة الإنتاج. كل خطوة تعالج نمط فشل مذكوراً أعلاه.

المشكلةالنهج الخاطئالنهج الصحيح
اللغة في AJAXالثابت ICL_LANGUAGE_CODEفلتر wpml_current_language أو خطّاف wpml_post_language_details مرتبط بمعرّف المنشور
تخزين الصوتملف واحد مشترك بين الترجماتملف واحد لكل معرّف منشور مترجم، يُقدَّم من CDN
اختيار الصوتالصوت ذاته لكل اللغاتصوت ElevenLabs واحد لكل لغة في WPML
اختيار النموذجنموذج ثابت لجميع اللغاتاختيار مستقل لكل لغة بين Multilingual v2 أو Flash v2.5 أو Eleven v3
المخططAudioObject غائب أو إنجليزي فقطAudioObject بخاصية inLanguage تتطابق مع hreflang الصفحة

يتبع TTSWP العمود الأيمن بشكل افتراضي. تقرأ الإضافة المنشور المترجم مباشرةً، وتولّد ملف صوتي جديد لكل معرّف منشور، وتقدّمه عبر CloudFront، وتصدر مخطط AudioObject مستقلاً لكل لغة. يشرح توثيق تكامل WPML خطوات الإعداد بالتفصيل.

قيد واحد يجب معرفته

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

إذا كانت الميزانية ضيّقة، فولّد الصوت فقط للغات التي تجذب زيارات حقيقية. إحصاءات اللغة في WPML وتحليلات موقعك ستخبرك بأي الترجمات يستحق التعليق الصوتي.

أسئلة شائعة

هل يدعم TTSWP تكامل WPML مباشرةً؟

نعم. بمجرد تفعيل الإضافتين، يكتشف TTSWP وجود WPML تلقائياً، ويقرأ محتوى المنشور المترجم لكل لغة، ويخزّن ملف صوتي منفصل لكل ترجمة. تعيّن صوتاً واحداً لكل لغة في إعدادات TTSWP، ثم تنشر الترجمات كالمعتاد. يُعاد توليد الصوت عند تحديث أي ترجمة. راجع صفحة تكامل WPML لخطوات الإعداد.

لماذا تقرأ إضافة تحويل النص إلى كلام الحالية كل شيء بالإنجليزية على الصفحات المترجمة؟

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

هل يمكنني استخدام أصوات ElevenLabs مختلفة لكل لغة في WPML؟

نعم. يُعيّن TTSWP صوت ElevenLabs واحد لكل لغة في WPML. الترجمات الإسبانية يقرأها صوت إسباني، والألمانية يقرأها صوت ألماني، وهكذا. يمكنك أيضاً اختيار نماذج مختلفة لكل لغة، وهذا مهم حين لا تدعم اللغة المستهدفة إلا Flash v2.5 أو Eleven v3 دون Multilingual v2.

ما اللغات التي تغطيها ElevenLabs لمواقع WPML؟

Multilingual v2 يغطّي 29 لغة، وFlash v2.5 يغطّي 32 لغة إضافةً إلى النرويجية والهنغارية والفيتنامية، وEleven v3 يغطّي 74 لغة. اختر النموذج الأوسع تغطيةً ضمن ما يسمح به زمن الاستجابة لديك. معظم مواقع WPML تحصل على نتائج جيدة مع Multilingual v2 أو Flash v2.5. المواقع التي تحتاج لغات نادرة تُحوّل تلك الترجمات إلى Eleven v3.

هل يُصدر TTSWP مخطط مستقل لكل لغة لبحث الذكاء الاصطناعي؟

نعم. يُصدر TTSWP مخطط AudioObject مستقل لكل منشور مترجم مع قيمة inLanguage تتطابق مع hreflang الصفحة. هذا يمنح محركات البحث وأدوات الذكاء الاصطناعي إشارة واضحة حول أي صوت ينتمي لأي نسخة لغوية من المقال، عوضاً عن تسمية كل الترجمات بالطريقة ذاتها.

الخطوة التالية

نفّذ اختبار المتصفح الخماسي على إضافة تحويل النص إلى كلام التي تستخدمها الآن. إذا فشلت أي خطوة، فهذا هو نمط الفشل الذي يجب معالجته قبل إضافة المزيد من الترجمات. إذا أردت إعداداً يتعامل مع الخمس نقاط تلقائياً، ثبّت TTSWP - تحويل النص إلى كلام من WordPress.org، اربطه بخلفية TTSWP، وعيّن صوتاً واحداً لكل لغة في WPML. الإضافة تتولّى الباقي.