كيفية ترجمة اللغات التي تُكتب من اليمين إلى اليسار في WordPress: العربية والعبرية والفارسية

لقد انتهيت للتو من ترجمة قالب WordPress الخاص بك إلى اللغة العربية. تقوم بتحميل ملف .mo، وتبديل لغة الموقع، والنتيجة غير قابلة للقراءة. يفيض النص إلى اليسار، وتتداخل الأزرار، ويبدو تصميمك الذي صممته بعناية وكأنه تم تمريره عبر آلة تمزيق الورق.
مرحبًا بك في عالم اللغات التي تُكتب من اليمين إلى اليسار (RTL) - حيث الترجمة ليست سوى نصف المعركة.
تعتبر العربية والعبرية والفارسية (الفارسية) من بين اللغات الأكثر انتشارًا على وجه الأرض. اللغة العربية وحدها لديها أكثر من 400 مليون متحدث أصلي. إذا كان موقع WordPress الخاص بك يتجاهل هذه الجماهير، فإنك تترك أموالًا كبيرة على الطاولة. لكن خدمتهم تتطلب أكثر من مجرد تبديل الكلمات الإنجليزية بكلمات عربية. يتطلب إعادة التفكير في اتجاه التصميم بأكمله.
يغطي هذا الدليل كل ما تحتاج إلى معرفته: كيف تعمل RTL في WordPress، وكيفية إصلاح CSS الخاص بك، وكيفية التعامل مع ملفات .po التي تحتوي على سلاسل RTL، وكيفية تجنب المخاطر الأكثر شيوعًا.
كيف تعمل RTL في WordPress
يحتوي WordPress على دعم مدمج لـ RTL. عندما تقوم بتعيين لغة موقعك إلى اللغة العربية (ar) أو العبرية (he) أو الفارسية (fa)، يقوم WordPress تلقائيًا بإضافة dir="rtl" إلى علامة <html> ويقوم بتحميل ورقة أنماط rtl.css إذا كان القالب الخاص بك يوفر واحدة.
هذه هي النظرية. في الواقع، تأتي معظم القوالب مع دعم RTL بسيط أو معطل.
ما الذي يتغير بالفعل
عندما يتم تنشيط وضع RTL، يعكس المتصفح تخطيط الصفحة بأكمله:
- يتدفق النص من اليمين إلى اليسار.
- تتبادل الأشرطة الجانبية الجوانب.
- تعكس قوائم التنقل الترتيب.
- تنعكس قيم الهوامش والمسافات الداخلية (يصبح اليسار يمينًا).
- يجب عكس الرموز ذات المعنى الاتجاهي (الأسهم، الشيفرون).
إذا تمت كتابة CSS الخاص بقالبك فقط لـ LTR، فإن كل إعلان margin-left و padding-right و float: left و text-align: left يقاتل الآن ضد محرك RTL الخاص بالمتصفح.
إصلاح CSS الخاص بك لـ RTL: دليل عملي
النهج الأنظف هو استخدام خصائص CSS المنطقية، التي تتكيف تلقائيًا مع اتجاه كتابة المستند. بدلاً من left و right، يمكنك استخدام inline-start و inline-end.
قبل: الخصائص الفيزيائية (تتعطل في RTL)
/* LTR-only CSS -- breaks in Arabic */
.sidebar {
float: left;
margin-right: 20px;
}
.nav-arrow {
padding-left: 10px;
text-align: left;
}
.card {
border-left: 3px solid #0073aa;
}
بعد: الخصائص المنطقية (تعمل في كلا الاتجاهين)
/* Direction-agnostic CSS -- works in both LTR and RTL */
.sidebar {
float: inline-start;
margin-inline-end: 20px;
}
.nav-arrow {
padding-inline-start: 10px;
text-align: start;
}
.card {
border-inline-start: 3px solid #0073aa;
}
باستخدام الخصائص المنطقية، تكتب CSS الخاص بك مرة واحدة ويعمل بشكل صحيح في كل من الإنجليزية والعربية دون أي تجاوزات.
طريقة التجاوز [dir="rtl"]
إذا لم تتمكن من إعادة هيكلة ورقة الأنماط بأكملها، فيمكنك استهداف RTL تحديدًا باستخدام محددات السمات:
[dir="rtl"] .sidebar {
float: right;
margin-left: 20px;
margin-right: 0;
}
[dir="rtl"] .nav-arrow {
padding-left: 0;
padding-right: 10px;
text-align: right;
}
هذا يعمل، لكنه يضاعف عبء الصيانة الخاص بك. في كل مرة تقوم فيها بتحديث أنماط LTR الخاصة بك، يجب عليك أيضًا تحديث تجاوزات RTL.
ترجمة ملفات PO مع سلاسل RTL
تقدم الترجمة نفسها تحديات تتجاوز التخطيط. تحتوي لغات RTL على خصائص فريدة تعرقل معظم الأدوات الآلية.
نص ثنائي الاتجاه (Bidi) في ملفات PO
يظهر التعقيد الحقيقي عندما يختلط نص RTL و LTR في سلسلة واحدة. ضع في اعتبارك نمط WordPress الشائع هذا:
msgid "Powered by %s"
msgstr "مدعوم بواسطة %s"
سيتم استبدال العنصر النائب %s باسم منتج باللغة الإنجليزية مثل "WooCommerce." في الإخراج المعروض، يجب على المتصفح عرض نص عربي يتدفق من اليمين إلى اليسار، ثم التبديل إلى اليسار إلى اليمين للكلمة الإنجليزية، ثم يحتمل أن يعود.
يُطلق على هذا النص ثنائي الاتجاه (أو "bidi")، ويتم التعامل معه بواسطة خوارزمية Unicode ثنائية الاتجاه. في معظم الأوقات يعمل تلقائيًا. ولكن عندما يكون لديك عناصر نائبة متعددة أو أرقام مجاورة لنص RTL، يمكن أن يصبح الترتيب المرئي غير متوقع.
أخطاء الترجمة الشائعة
ترتكب أدوات الترجمة العامة عدة أخطاء خاصة بـ RTL:
-
ترتيب العناصر النائبة المعكوس. قد تحصل سلسلة مثل
%1$s من أصل %2$sعلى تبديل العناصر النائبة لأن الذكاء الاصطناعي يعيد ترتيبها لتتناسب مع قواعد اللغة العربية. ينتج عن هذا إخراج غير صحيح مثل "10 من أصل صفحة" بدلاً من "صفحة من أصل 10." تعرف على المزيد حول حماية متغيرات التعليمات البرمجية أثناء الترجمة. -
اتجاه HTML معطل. إذا كانت السلسلة الخاصة بك تحتوي على HTML مضمن مثل
<span dir="ltr">، فقد يقوم مترجم ساذج بإزالة سمةdirأو ترجمتها. -
صيغ الجمع المفقودة. تحتوي اللغة العربية على ستة صيغ للجمع - صفر وواحد واثنان وقليل وكثير وغير ذلك. هذا هو نظام الجمع الأكثر تعقيدًا في أي لغة يدعمها WordPress. الأداة التي تولد شكلين فقط (مثل الإنجليزية المفرد / الجمع) ستترك ملف
.poالعربي الخاص بك معطلاً. للحصول على نظرة متعمقة حول كيفية عمل جمع Gettext، راجع دليلنا حول الجمع المعقد في WordPress.
إليك الشكل الذي تبدو عليه سلسلة الجمع العربية المترجمة بشكل صحيح في ملف .po:
# Arabic: nplurals=6
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "لا تعليقات"
msgstr[1] "تعليق واحد"
msgstr[2] "تعليقان"
msgstr[3] "%d تعليقات"
msgstr[4] "%d تعليقًا"
msgstr[5] "%d تعليق"
إذا كان أي من هذه النماذج الستة فارغًا أو غير صحيح، فسيعود WordPress إلى السلسلة الإنجليزية لهذا العدد المحدد. سيرى المستخدمون "5 تعليقات" باللغة الإنجليزية منتشرة في واجهة عربية بالكامل.
اختبار تنفيذ RTL الخاص بك
الترجمة وإصلاح CSS لا يكفيان. تحتاج إلى التحقق من النتيجة في متصفح حقيقي.
قائمة تحقق اختبار سريعة
- قم بتبديل لغة WordPress إلى اللغة العربية في الإعدادات > عام. لا تقم فقط بإضافة
dir="rtl"يدويًا - استخدم إعداد اللغة الحقيقي حتى يقوم WordPress بتحميل تجاوزات RTL الخاصة به. - تحقق من قوائم التنقل. هل هي معكوسة؟ هل تفتح القوائم المنسدلة في الاتجاه الصحيح؟
- فحص حقول النموذج. يجب أن يتدفق نص الإدخال من اليمين إلى اليسار. يجب أن يكون النص النائب محاذيًا لليمين.
- تحقق من المحتوى المختلط الاتجاه. يجب عرض السلاسل التي تحتوي على كل من العربية والإنجليزية (مثل أسماء العلامات التجارية أو عناوين URL) بالترتيب المرئي الصحيح.
- الاختبار على الهاتف المحمول. غالبًا ما تكون أخطاء تخطيط RTL أكثر حدة على الشاشات الصغيرة حيث توجد مساحة أقل لأخطاء المحاذاة.
إذا كانت الترجمات الخاصة بك لا تظهر على الإطلاق، فقد تكون المشكلة غير مرتبطة بـ RTL - تحقق من تجميع ملف .mo ومسارات الملفات أولاً.
خدعة أدوات مطوري المتصفح
في أدوات مطوري Chrome، يمكنك فرض RTL مؤقتًا على أي صفحة دون تغيير إعدادات WordPress:
/* Paste in DevTools console as: document.documentElement.dir = 'rtl' */
html {
direction: rtl;
}
يمنحك هذا معاينة سريعة لكيفية تعامل القالب الخاص بك مع RTL قبل أن تبدأ حتى في الترجمة.
أتمتة ترجمة RTL بالطريقة الصحيحة
تعتبر الترجمة اليدوية للغات RTL باهظة الثمن وبطيئة. يتقاضى المترجمون العرب المحترفون أسعارًا مميزة، ومن الصعب العثور على شخص يفهم كلاً من اللغة وقواعد Gettext الخاصة بـ WordPress.
SimplePoTranslate يحل هذه المشكلة باستخدام محرك ذكاء اصطناعي واعي بالسياق يفهم تحديات RTL الخاصة بشكل طبيعي:
- يتم إنشاء جميع صيغ الجمع العربية الست تلقائيًا. يقرأ محركنا رأس
Plural-Formsفي ملف.poالخاص بك وينتج بالضبط عدد النماذج التي تتطلبها لغتك المستهدفة. لا توجد خاناتmsgstrفارغة، ولا توجد بدائل إنجليزية. - سلامة العنصر النائب. يتم تأمين متغيرات مثل
%sو%dو%1$sأثناء الترجمة. لا يمكن للذكاء الاصطناعي إعادة ترتيبها أو حذفها أو إتلافها - حتى عندما تشير قواعد اللغة العربية إلى ترتيب كلمات مختلف. اقرأ المزيد حول كيف يحمي قفل بناء الجملة التعليمات البرمجية الخاصة بك. - سياق ثنائي الاتجاه. يفهم الذكاء الاصطناعي أن السلاسل المختلطة الاتجاه تحتاج إلى معالجة خاصة ويحافظ على سمات اتجاه HTML.
سواء كنت تقوم بترجمة قالب مدونة لجمهور عبري أو ترجمة متجر WooCommerce كامل إلى اللغة الفارسية، فإن العملية هي نفسها: قم بتحميل ملف .po الخاص بك، وحدد لغتك المستهدفة، وقم بتنزيل الملف المترجم. تستغرق سير العمل بأكمله دقائق، وليس أيامًا.
للحصول على شرح كامل لعملية ترجمة WordPress، راجع دليلنا النهائي لترجمة WordPress.
توقف عن معاملة RTL على أنها فكرة لاحقة
تمثل اللغات التي تُكتب من اليمين إلى اليسار أكثر من مليار مستخدم محتمل. اللغة العربية هي خامس أكثر اللغات تحدثًا في العالم. تخدم العبرية والفارسية أسواقًا حيوية في الشرق الأوسط وآسيا الوسطى.
إذا كان موقع WordPress الخاص بك لا يمكنه خدمة هؤلاء المستخدمين بتجربة مصقولة وطبيعية، فسيجدون منافسًا يمكنه ذلك.
الخبر السار: WordPress لديه بالفعل البنية التحتية. يحتاج القالب الخاص بك فقط إلى CSS المناسب، وتحتاج ملفات .po الخاصة بك إلى أداة ترجمة تحترم تعقيد لغات RTL.
هل أنت مستعد لترجمة موقع WordPress الخاص بك إلى العربية أو العبرية أو الفارسية؟ ابدأ مجانًا على SimplePoTranslate.com