
PolyLingo مقابل Polylang: ما الفرق ومتى تستخدم كل منهما
By Robert M
PolyLingo مقابل Polylang: ما الفرق ومتى تستخدم كل منهما
إذا وصلت إلى هنا، فمن المحتمل أنك في واحدة من حالتين: إما أنك راضٍ عن Polylang داخل ووردبريس ولكن تتساءل إذا كان هناك شيء مكافئ لمشروع ليس على ووردبريس، أو أنك تنتقل بعيدًا عن ووردبريس تمامًا وتحاول معرفة ماذا يحدث لإعدادك متعدد اللغات.
تجيب هذه المقالة على كلا السؤالين مباشرة. سنغطي ما يفعله كل أداة فعليًا، وأين يناسب كل منها، وكيف تختار بينهما.
ما هو Polylang (وما ليس كذلك)
Polylang هو إضافة لووردبريس. إنه واحد من أفضل الإضافات متعددة اللغات في نظام ووردبريس البيئي. يدير محولات اللغة، يتيح لك إنشاء نسخ مترجمة من المشاركات والصفحات، يتعامل مع علامات hreflang، ويتكامل بسلاسة مع محرر الكتل في ووردبريس. إذا كنت تدير موقع ووردبريس، فهو أداة جدية ومُصانة جيدًا وهناك سبب وجيه لوجود ملايين التثبيتات النشطة.
القيود واضحة في الوصف: إنه إضافة لووردبريس. لا يوجد لديه API يمكنك استدعاؤه من خارج ووردبريس. لا يوجد لديه مفهوم لملف لغة JSON، أو ملف محتوى Markdown، أو قالب HTML موجود في مشروع Next.js. يفترض نموذجه بأكمله أن المحتوى يعيش في قاعدة بيانات ووردبريس ويتم عرضه بواسطة ووردبريس.
هذا ليس انتقادًا. إنه فقط نطاق الأداة.
ما هو PolyLingo
PolyLingo هو API للترجمة. ترسل له المحتوى (نص عادي، Markdown، JSON، أو HTML) ويعيد لك نسخًا مترجمة بكل لغة تطلبها، في طلب واحد. لا يملك رأيًا حول نظام إدارة المحتوى الخاص بك، أو الإطار الذي تستخدمه، أو إعداد النشر الخاص بك. يعمل حيثما يمكنك إجراء طلب HTTP.
الهدف الأساسي من التصميم هو الحفاظ على التنسيق. معظم APIs الترجمة مبنية حول الجمل: ترسل سلسلة نصية، تحصل على سلسلة نصية مرة أخرى. هذا النموذج ينهار بسرعة عندما يكون لمحتواك بنية. الصق ملف لغة JSON في خدمة ترجمة نموذجية وستحصل على أسماء مفاتيح مترجمة، فواصل تالفة، أو نصوص حيث كان من المفترض أن يكون كائن. PolyLingo يعامل البنية على أنها منطقة محظورة. فقط قيم النصوص تتغير؛ كل شيء آخر يعود كما أُرسل بالضبط.
مثال ملموس. ترسل هذا:
{"btn": {"save": "Save", "cancel": "Cancel"}}
مترجم موجه للجمل قد يعيد لك:
{"button": {"save": "Guardar", "cancel": "Cancelar"}}
المفتاح btn أصبح button. هذا سيكسر تطبيقك. PolyLingo يعطيك:
{"btn": {"save": "Guardar", "cancel": "Cancelar"}}
المفاتيح لم تمس. فقط القيم مترجمة.
ينطبق نفس المبدأ على Markdown (العناوين تبقى عناوين، كتل الكود تُترك كما هي، روابط URL لا تتغير) وHTML (العلامات والسمات محفوظة، فقط نصوص العقد والسمات المناسبة تُترجم).
الفرق الفعلي: النطاق
أسهل طريقة لوضعها:
Polylang يدير المحتوى متعدد اللغات داخل ووردبريس. إنه طبقة نظام إدارة محتوى. يتعامل مع أي مشاركة هي النسخة الإسبانية لأي مشاركة إنجليزية، يولد محولات اللغة، ويحافظ على تزامن الترجمات عند تحديث المحتوى.
PolyLingo يترجم المحتوى المهيكل عبر API. إنه طبقة ترجمة. تزوده بالمحتوى، يعيد الترجمات. ما تفعله بهذه الترجمات يعود لك.
هما يحلان مشاكل متجاورة، وليس نفس المشكلة. لهذا السبب المقارنة ليست "أيهما أفضل" بل "ما المشكلة التي أواجهها."
متى تستخدم Polylang
- موقعك يعمل على ووردبريس وتريد البقاء على ووردبريس
- تحتاج إلى سير عمل إدارة محتوى: المحررون يتنقلون بين نسخ اللغات، تتبع حالة الترجمة، محولات اللغة في القالب
- لست مطورًا وتريد حلًا يعتمد على واجهة المستخدم
- تستخدم WooCommerce وتحتاج إلى إدارة ترجمة المنتجات داخل ووردبريس
Polylang ممتاز في كل هذا. إذا كان ووردبريس هو نظامك، فهو الأداة المناسبة.
متى تستخدم PolyLingo
- تبني على Next.js، Nuxt، SvelteKit، Astro، أو أي إطار عمل غير ووردبريس
- تستخدم CMS بدون رأس (Contentful، Sanity، Prismic) وتحتاج لترجمة المحتوى عند النشر أو عبر webhook
- محتواك يعيش في ملفات لغة JSON تحتاج إلى ترجمتها دون تلف بنية المفاتيح
- تهاجر بعيدًا عن ووردبريس وتريد حمل سير عملك متعدد اللغات معك
- لديك محتوى Markdown (مشاركات مدونة، توثيق، وصف منتجات) وتحتاج نسخ مترجمة لا تكسر التنسيق
- تريد الترجمة إلى عدة لغات في طلب API واحد بدلاً من طلب لكل لغة
نقطة نهاية PolyLingo /translate تقبل مصفوفة targets، لذا يمكن لطلب واحد أن يعيد كل اللغات الـ36 المدعومة مرة واحدة. لملف لغة يحتاج إلى الشحن بعشر لغات، هذا طلب API واحد بدلاً من عشرة.
ماذا عن الترحيل من ووردبريس؟
إذا كنت تنقل موقع ووردبريس إلى إعداد بدون رأس أو ثابت، محتوى Polylang الخاص بك لا يأتي معك تلقائيًا. الترجمات مخزنة كبيانات وصفية لمشاركات ووردبريس ولا تُصدر بشكل نظيف إلى ملفات Markdown أو هياكل JSON.
الطريقة العملية التي تتبعها معظم الفرق:
- صدر محتوى ووردبريس إلى Markdown أو JSON (أدوات مثل
wordpress-export-to-markdownتتعامل مع الجزء الميكانيكي) - استخدم PolyLingo لترجمة المحتوى المصدر إلى لغاتك المستهدفة
- خزّن الملفات الناتجة في هيكل المحتوى الجديد بجانب لغة المصدر
نقطة نهاية الدُفعات في PolyLingo (POST /translate/batch) مبنية لهذا بالضبط. يمكنك إرسال حتى 100 عنصر محتوى في طلب واحد، كل منها بصيغته الخاصة، جميعها تشترك في نفس مجموعة اللغات المستهدفة. لترحيل موقع بمئات الصفحات، هذه هي الأداة المناسبة.
ملخص جنبًا إلى جنب
| PolyLingo | Polylang | |
|---|---|---|
| يعمل بدون ووردبريس | نعم | لا |
| الحفاظ على التنسيق (JSON، Markdown، HTML) | نعم | محتوى ووردبريس فقط |
| طلب واحد، كل اللغات | نعم | لا |
| وصول REST API | نعم | لا |
| واجهة إدارة المحتوى | واجهة المترجم (بدون كود) | إدارة ووردبريس كاملة |
| يكتشف صيغة المحتوى تلقائيًا | نعم | غير متوفر |
| دعم اللغات من اليمين إلى اليسار | نعم | نعم |
| الفوترة بناءً على الاستخدام | نعم | إضافة مجانية / رسوم Polylang Pro ثابتة |
النسخة المختصرة
إذا كنت على ووردبريس وتبقى على ووردبريس: استخدم Polylang. إنه مبني لهذا البيئة وهو جيد فيها.
إذا كنت خارج ووردبريس، تخرج من ووردبريس، أو تبني أي شيء ليس ووردبريس: PolyLingo يمنحك نفس سير العمل متعدد اللغات المهيكل عبر API يعمل مع أي شيء تبنيه.
يمكن للأداتين أيضًا التعايش. بعض الفرق تشغل Polylang على موقعهم التسويقي الرئيسي (الذي يبقى على ووردبريس) وتستخدم PolyLingo لموقع الوثائق، سلاسل واجهة المستخدم لتطبيق الويب، أو قوالب البريد الإلكتروني. سير العمل هو نفسه؛ المكدس لا يجب أن يكون كذلك.
جربه
الطبقة المجانية لـ PolyLingo تشمل 100,000 رمز شهريًا. هذا يكفي لعدة مشاركات مدونة عبر عشر لغات، أو ملف لغة متوسط الحجم في 36 لغة. لا حاجة لبطاقة ائتمان.
curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
-H "Authorization: Bearer $POLYLINGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "# Welcome\n\nTranslate **any format** without breaking the structure.",
"format": "markdown",
"targets": ["es", "fr", "de", "ja"]
}'