ترجمة قوالب Elementor و Divi دون تخريب التخطيطات

لقد فعلت كل شيء بشكل صحيح. لقد اشتريت قالبًا مميزًا، وعثرت على ملف .po، وقمت بترجمته بعناية، ورفعت ملف .mo إلى مجلد اللغات الخاص بك. يتم تحديث النصوص في ترويسة القالب بشكل صحيح. ويظهر تذييل الصفحة باللغة الإسبانية. وتمت ترجمة صفحة الدفع الخاصة بـ WooCommerce. ولكن بعد ذلك تفتح الصفحة الرئيسية وتجد أن كل عنوان وزر وكتلة نصية تم إنشاؤها باستخدام Elementor لا تزال باللغة الإنجليزية.
تتحقق من ملف .po. ترى النصوص الإنجليزية في الكود. تعيد الترجمة. لا شيء يتغير. تمسح ذاكرات التخزين المؤقت. لا شيء يتغير. تقنع نفسك بأن شيئًا ما معطل حتى يشير أحدهم بلطف في منتدى ما إلى: Elementor (و Divi، و Beaver Builder، و Bricks) لا تخزن المحتوى في ملفات .po. لم تفعل ذلك أبدًا. لقد كنت تكافح مشكلة لا يمكن حلها بالنهج الذي تستخدمه.
يشرح هذا الدليل سبب اختلاف محتوى منشئ الصفحات من الناحية المعمارية عن محتوى القوالب والإضافات، والمسارين لترجمته، وكيفية الحفاظ على بنية الودجات سليمة أثناء الترجمة حتى لا تتفكك التخطيطات التي صممتها بعناية.
لماذا لا يستخدم Elementor و Divi ملفات .po
تخزن ملفات .po النصوص التي توجد في الكود - استدعاءات مثل __( 'Shop', 'mytheme' ) المنتشرة في قوالب PHP. يمكن لأداة البناء WP-CLI استخراج هذه النصوص إلى قالب .pot، ويعمل المترجمون على ملفات .po، ويتم تحميل ملفات .mo المترجمة عند التشغيل.
محتوى منشئ الصفحات مختلف. عندما تكتب "Welcome to our store" في ودجت عنوان Elementor، فإن هذا النص لا يكون موجودًا في أي ملف PHP. يتم حفظه كـ JSON (لـ Elementor) أو كتلة شورت كود (لـ Divi) في جدول wp_postmeta، ويكون مرتبطًا بالمقال الذي وضعت فيه.
أين يوجد محتوى منشئ الصفحات بالفعل
يخزن Elementor شجرة الودجات لكل صفحة في postmeta تحت المفتاح _elementor_data. افتح أي منشور في قاعدة البيانات وستجد مصفوفة JSON تصف كل قسم وعمود وودجت، مع الإعدادات والمحتوى المضمن:
{
"id": "a1b2c3",
"elType": "widget",
"widgetType": "heading",
"settings": {
"title": "Welcome to our store",
"size": "xl",
"header_size": "h1"
}
}
يخزن Divi محتوى صفحاته كشورت كود مدمجة في post_content:
[et_pb_section][et_pb_row][et_pb_column type="4_4"]
[et_pb_text]Welcome to our store[/et_pb_text]
[/et_pb_column][/et_pb_row][/et_pb_section]
تتبع Bricks و Beaver Builder و Oxygen النمط نفسه بتنسيقها الخاص. لا يتم المساس بأي من هذا المحتوى بواسطة ملفات .po / .mo.
ماذا يوجد بالفعل في ملفات .po
تحتوي إضافة منشئ الصفحات نفسها على نصوص واجهة المستخدم - تسميات الأزرار في المحرر، رسائل الأخطاء، إشعارات المسؤول. توجد هذه النصوص في ملفات .po ويتم ترجمتها بواسطة ملفات .mo الخاصة بك في wp-content/languages/plugins/. وهذا عادة ما يسبب الارتباك للناس: فهم يترجمون نصوص "Elementor" ويرون واجهة مستخدم المحرر باللغة الإسبانية، لكن المحتوى الفعلي الذي بنوه باستخدام تلك الودجات يظل باللغة الإنجليزية.
هذا التمييز هو أيضًا السبب الجذري لنصف التذاكر في دليل استكشاف الأخطاء وإصلاحها لعدم ظهور الترجمات الخاص بنا - حيث يتوقع القارئ أن تؤثر ملفات .mo على المحتوى الذي يراه في الواجهة الأمامية، لكن المحتوى موجود في قاعدة البيانات، وليس في الكود.
ما الذي تغطيه ملفات .po بالفعل في موقع يعتمد على منشئ الصفحات
دعني أرسم خطًا واضحًا بين الاثنين حتى تعرف بالضبط ما يتعامل معه كل نوع ملف.
ملفات .po / .mo تترجم
- نصوص قوالب القالب:
get_template_part، والنصوص المكتوبة يدويًا فيheader.php،footer.php،functions.php. - نصوص واجهة المستخدم للإضافات: صفحة دفع WooCommerce، تسميات مسؤول Yoast، تسميات حقول Contact Form 7.
- واجهة مستخدم إضافة منشئ الصفحات: أزرار محرر Elementor، رسائل تأكيد الحفظ في Divi.
- النصوص الديناميكية التي تعرضها الإضافات في الواجهة الأمامية: "إضافة إلى السلة" في WooCommerce، "غير متوفر في المخزون"، إجماليات السلة.
ملفات .po / .mo لا تترجم
- نص العناوين، الفقرات، أزرار الكتب في ودجات Elementor.
- تسميات الصور، تأثيرات التمرير، عناوين الأكورديون داخل وحدات Divi.
- المحتوى في القوالب القابلة لإعادة الاستخدام، الأقسام العامة، الكتل المحفوظة.
- تسميات CSS المخصصة أو السكربتات المضمنة داخل ودجات المنشئ.
لهذا السبب تكون وثائق مؤلفي القوالب حول الترجمة صحيحة من الناحية الفنية ولكنها غالبًا ما تكون غير مجدية للمستخدمين النهائيين. يغطي دليلنا حول كيفية ترجمة أي قالب ووردبريس جانب القالب بشكل شامل - وتستكمل هذه المقالة حيث انتهى ذاك الدليل.
مساران لترجمة محتوى منشئ الصفحات
توجد طريقتان بالضبط لترجمة محتوى منشئ الصفحات، وكلاهما لهما تنازلات حقيقية.
المسار الأول: تكرار الصفحات لكل لغة
استخدم إضافة متعددة اللغات مثل WPML أو Polylang أو TranslatePress. تنشئ نسخة من كل صفحة لكل لغة. في Elementor، تقوم بتكرار التخطيط بالكامل وتبديل النص في كل نسخة. في Divi، تقوم بنسخ كتلة الشورت كود وترجمة النص بين الوسوم.
الايجابيات: يمكن لكل لغة أن تحتوي على تخطيطات مصممة بشكل مستقل (مفيد عندما يكون النص المترجم أطول ويكسر تصميمك الأصلي). توافق كامل مع المحرر المرئي لمنشئ الصفحات.
السلبيات: التوسع الخطي - 5 لغات تعني 5 أضعاف عمل التخطيط. يجب تطبيق أي تغيير في التصميم 5 مرات. قاعدة البيانات تنمو بسرعة. يصبح التخزين المؤقت أصعب.
المسار الثاني: طبقة ترجمة النصوص
يمكن لبعض الإضافات (Polylang Pro، وحدة ترجمة النصوص في WPML، TranslatePress) كشف النصوص الفردية داخل ودجات منشئ الصفحات للترجمة، ثم استبدالها وقت العرض. تحافظ على تخطيط واحد وتقوم الإضافة بترجمة النصوص في مكانها.
الايجابيات: مصدر واحد موثوق للتخطيط. تنطبق تغييرات التصميم في كل مكان.
السلبيات: مرونة أقل عندما يتغير طول النص المترجم بشكل كبير. بعض الودجات (المعقدة التي تحتوي على محتوى متداخل، قوائم ديناميكية، نماذج) لا تكشف النصوص بوضوح. تكلفة الأداء لكل عملية عرض.
مقارنتنا بين Polylang و WPML و TranslatePress تغطي تنازلات كل إضافة بمزيد من التفصيل.
الحفاظ على بنية الودجات سليمة أثناء الترجمة
أيًا كان المسار الذي تختاره، يجب أن يحافظ المحتوى المترجم على البنية الهيكلية للمنشئ. إذا قام مترجمك بتجريد شورت كود Elementor، أو استبدال سمة بيانات، أو إعادة ترتيب الوسوم المتداخلة، فسيتم عرض الودجت بشكل معطل.
مناطق الخطر في Elementor
تدمج ودجات Elementor الشورت كود والعلامات الديناميكية داخل إعدادات النص. قد يحتوي حقل عنوان ودجت العنوان على:
Welcome to <strong>our</strong> [user_name] store
[user_name] هذا هو وسم ديناميكي - يستبدله Elementor باسم المستخدم المسجل دخوله عند العرض. إذا أفسدت الترجمة ذلك، فستظهر للمستخدمين "[user_name]" حرفيًا.
تستخدم الأيقونات داخل الأزرار سمات فئة (class attributes) يجب عدم ترجمتها. يتم تخزين النص البديل للصور بشكل منفصل عن عنوان URL للصورة. تستخدم تخطيطات الأعمدة إعدادات خاصة بنقاط التوقف (title_mobile, title_tablet) والتي تحتاج إلى معالجة فردية.
تداخل شورت كود Divi
تتداخل شورت كود Divi بعمق: [et_pb_section][et_pb_row][et_pb_column][et_pb_text]. المترجم الذي يتعامل مع الكتلة كنص عادي سيقوم بتشفير الأقواس المربعة، أو ترجمة قيم السمات، أو فقدان وسوم الإغلاق. أي من هذه الأمور يفسد الوحدة وترفض Divi عرضها.
النمط الآمن
لأي من المنشئين، يجب أن تتم الترجمة كالتالي:
- تحليل تنسيق الودجت (JSON لـ Elementor، شورت كود AST لـ Divi).
- اجتياز الشجرة وتحديد حقول النص المرئية للمستخدم فقط.
- قفل الشورت كود، والعلامات الديناميكية، وسمات HTML، وCSS المضمنة.
- إرسال الأسطح النصية فقط إلى المترجم مع السياق.
- إعادة إدراج النص المترجم في البنية الأصلية.
هذا هو نفس المبدأ الذي تطبقه محركنا على ملفات .po. دليل ترجمة ملفات .po دون تخريب متغيرات الكود يستعرض أنماط %s والعناصر النائبة بالتفصيل - وما يعادلها في منشئ الصفحات هو الشورت كود والعلامات الديناميكية.
سير عمل هجين يعمل بالفعل
بالنسبة لمعظم الفرق، الإجابة العملية هي الجمع بين كلا النهجين.
الخطوة 1: ترجمة واجهة مستخدم القالب والإضافات عبر ملفات .po
قم بتصدير ملفات .pot من القالب والإضافات الرئيسية (WooCommerce، Yoast، واجهة مستخدم منشئ الصفحات). ترجمها مرة واحدة عبر مترجم سحابي يحترم تنسيق .po. أسقط ملفات .mo المجمعة في wp-content/languages/. يعالج هذا 80% من نصوص واجهة موقعك بصيانة جارية تقترب من الصفر.
الخطوة 2: اختيار إضافة متعددة اللغات للمحتوى الديناميكي
قم بتثبيت Polylang أو WPML لمحتوى المنشورات والصفحات والمنتجات. قم بتكوين بنية عنوان URL (/es/, /fr/) وعلامات hreflang. يوفر لك هذا البنية التحتية لمحتوى قاعدة البيانات لكل لغة.
الخطوة 3: تكرار قوالب منشئ الصفحات الخاصة بك بشكل انتقائي
بالنسبة للصفحات المقصودة ذات الزيارات العالية، والصفحات الرئيسية، والمحتوى التسويقي الأساسي، قم بتكرار الصفحة في كل لغة وترجمة الودجات يدويًا. تحصل على تحكم كامل في التصميم حيثما يكون ذلك مهمًا.
الخطوة 4: استخدام ترجمة النصوص للكتل المتكررة
بالنسبة للأقسام العامة، والقوالب القابلة لإعادة الاستخدام، وعبارات الحث على اتخاذ إجراء (CTAs) في التذييل التي تظهر في كل صفحة، استخدم ميزة ترجمة النصوص في إضافتك متعددة اللغات. قم بالتحديث في مكان واحد، واستبدل عند العرض.
الخطوة 5: إجراء فحوصات الجودة
يجب أن يظهر محتوى منشئ الصفحات المترجم دون تغييرات في التخطيط. اللغات الأطول (الألمانية، الروسية) قد تكسر عروض الأزرار. اللغات الأقصر (الصينية، اليابانية) تترك مسافات بيضاء غير مناسبة. اختبر كل قالب لكل لغة قبل النشر.
المزالق الشائعة وكيفية تجنبها
بعض الفخاخ التي تظهر في كل مشروع ترجمة منشئ الصفحات.
عدم ترجمة النص البديل للصور
يخزن كل من Elementor و Divi النص البديل لكل نسخة ودجت، وليس في مكتبة الوسائط. ترجمة الصورة الأصلية لا يترجم النص البديل في كل ودجت يستخدمها. قم بتحديث النص البديل في كل صفحة مكررة.
النماذج والحقول المخصصة
تحتوي نماذج الاتصال المضمنة في ودجات منشئ الصفحات على نصوصها الخاصة (تسميات، عناصر نائبة، رسائل التحقق). راجع دليلنا حول ترجمة Gravity Forms و Contact Form 7 للجانب المتعلق بالنماذج.
الودجات والقوالب العامة
تنتشر التغييرات التي تطرأ على القالب العام إلى كل صفحة تستخدمه، بما في ذلك النسخ المترجمة. يمكن أن يكون هذا مفيدًا أو كارثيًا اعتمادًا على ما إذا كنت تريد محتوى مشتركًا أو منفصلاً. اتخذ قرارًا صريحًا لكل قالب.
انتهاء صلاحية ذاكرة التخزين المؤقت للترجمة
يقوم منشئو الصفحات بتخزين HTML المعروض بشكل مكثف. بعد الترجمة، قم بمسح جميع ذاكرات التخزين المؤقت بما في ذلك ذاكرة التخزين المؤقت لـ CSS في Elementor (Elementor > Tools > Regenerate CSS) وذاكرة التخزين المؤقت لـ CSS الثابتة في Divi.
تجميع كل شيء
ترجمة موقع مبني باستخدام Elementor أو Divi ليس أصعب من ترجمة قالب ثابت - إنه يتطلب فقط النموذج العقلي الصحيح. نصوص القوالب والإضافات توجد في ملفات .po وتنتقل عبر ملفات .mo. يعيش محتوى منشئ الصفحات في قاعدة البيانات وينتقل عبر الإضافات متعددة اللغات أو التكرار اليدوي. الخلط بين المسارين هو المصدر الأكثر شيوعًا للإحباط بشأن "لماذا لا تعمل ترجماتي".
سير العمل الناجح ممل: ملفات .mo ثابتة لكل ما يوجد في الكود، إضافة متعددة اللغات لمحتوى الصفحات، وتنظيم يدوي للصفحات المقصودة عالية القيمة. لا توجد أداة واحدة تتعامل مع الثلاثة كلها، وأي شخص يعدك بخلاف ذلك يبيعك شيئًا.
هل أنت مستعد لترجمة ملفات
.poالخاصة بقالبك وإضافاتك دون تخريب بنية الودجات؟ جرب SimplePoTranslate مجانًا - لا تتطلب بطاقة ائتمان. ارفع ملف.po، حمّل ترجمات آمنة، ثم ضعها فيwp-content/languages/.