الميزاتإضافةالتسعيرالموارد
تغيير اللغة
المواردملف واحد مُدخل، خمس صيغ مُخرَجة: كيف تحمي ترجمات ووردبريس الخاصة بك من تغيّرات المستقبل

ملف واحد مُدخل، خمس صيغ مُخرَجة: كيف تحمي ترجمات ووردبريس الخاصة بك من تغيّرات المستقبل

SimplePoTranslate Team21 مارس 2026
ملف واحد مُدخل، خمس صيغ مُخرَجة: كيف تحمي ترجمات ووردبريس الخاصة بك من تغيّرات المستقبل

لقد قضيت ثلاثة أسابيع في ترجمة قالب ووردبريس الخاص بك إلى اللغة الإسبانية. ملف ‎.po مثالي — تمت مراجعة كل سلسلة نصية، وكل متغير سليم، وكل صيغة جمع صحيحة. ثم يقرر عميلك الانتقال من قالب PHP تقليدي إلى إعداد بدون رأس باستخدام React على الواجهة الأمامية.

فجأة يصبح ملف ‎.po الخاص بك عديم الفائدة. يحتاج تطبيق React إلى ‎.json. لا تزال عناصر واجهة PHP القديمة تحتاج إلى ‎.mo. ويريد المستقل الذي يتعامل مع تطبيق الهاتف المحمول ‎.xliff. ولا يملك أحد الوقت لإعادة ترجمة 4000 سلسلة نصية إلى ثلاث صيغ مختلفة.

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

لماذا صيغ ملفات الترجمة مهمة أكثر من أي وقت مضى

قبل خمس سنوات، كانت ترجمة ووردبريس بسيطة. كان لديك ملف ‎.po (مصدر قابل للقراءة البشرية) وملف ‎.mo (ثنائي مُجمَّع). هذا كل شيء. كل قالب، وكل إضافة، وكل أداة ترجمة تتحدث نفس اللغة.

اليوم، يستخدم نظام ووردبريس البيئي ما لا يقل عن خمس صيغ لملفات الترجمة في الإنتاج:

الصيغ الخمس التي تحتاج إلى معرفتها

**‎.po (Portable Object) ** — صيغة المصدر القابلة للقراءة البشرية التي تستخدمها GNU Gettext. يحتوي على سلاسل نصية أصلية (msgid) وترجماتها (msgstr). هذا ما يقوم المترجمون بتحريره.

msgid "Add to Cart"
msgstr "Anadir al carrito"

msgid "Your order has been shipped to %s"
msgstr "Su pedido ha sido enviado a %s"

.mo (Machine Object) — النسخة الثنائية المُجمَّعة من ملف ‎.po. يقرأ ووردبريس ملفات ‎.mo في وقت التشغيل باستخدام load_textdomain(). أسرع من تحليل ‎.po في وقت التشغيل، ولكنه غير قابل للتحرير البشري.

.json (JavaScript Object Notation) — تستخدم بواسطة wp_set_script_translations() للترجمات المستندة إلى JavaScript في كتل Gutenberg ومكونات React والقوالب الحديثة. يتوقع ووردبريس بنية JSON محددة مع مفاتيح locale_data.

{
  "locale_data": {
    "flavor-starter": {
      "Add to Cart": ["Anadir al carrito"],
      "Your order has been shipped to %s": ["Su pedido ha sido enviado a %s"]
    }
  }
}

.php (PHP Array) — صيغة شائعة بشكل متزايد للقوالب والمكونات الإضافية التي تستخدم تحميل الترجمة بنمط Laravel. تتجاوز بعض قوالب ووردبريس الحديثة Gettext تمامًا وتقوم بتحميل الترجمات من مصفوفات PHP لتحقيق الأداء.

<?php
return [
    'Add to Cart' => 'Anadir al carrito',
    'Your order has been shipped to %s' => 'Su pedido ha sido enviado a %s',
];

.xliff (XML Localization Interchange File Format) — معيار الصناعة لتبادل الترجمة بين الأدوات والمنصات المختلفة. تستخدمها أدوات CAT (الترجمة بمساعدة الكمبيوتر) مثل memoQ و Trados و Memsource. ضروري عند العمل مع مترجمين بشريين محترفين.

<trans-unit id="1">
  <source>Add to Cart</source>
  <target>Anadir al carrito</target>
</trans-unit>

المشكلة: احتجاز الصيغة

تنتج معظم أدوات الترجمة صيغة إخراج واحدة. يمنحك Poedit ‎.po و ‎.mo. يخزن WPML الترجمات في قاعدة البيانات (ليس في الملفات على الإطلاق). يحتفظ Weglot بالترجمات على خوادمه بتنسيق خاص. حتى منصات TMS مثل Crowdin و Lokalise تتطلب منك تكوين صيغ التصدير يدويًا لكل مشروع.

هذا يخلق احتجازًا للصيغة — ترجماتك محاصرة في أي صيغة تنتجها أداتك الحالية. عندما تتغير متطلباتك، تواجه خيارين:

  1. إعادة ترجمة كل شيء بالصيغة الجديدة (مكلفة، وتستغرق وقتًا طويلاً، وتفقد أي تصحيحات يدوية)
  2. كتابة نصوص تحويل مخصصة (عرضة للأخطاء، خاصة بالنسبة لـ صيغ الجمع المعقدة والمتغيرات)

لا يوجد خيار جيد. كلاهما مضيعة للوقت والمال. كلاهما يقدم مخاطرة.

سيناريوهات حقيقية حيث يؤذي احتجاز الصيغة

السيناريو 1: تحديث القالب. تتم إعادة بناء قالب عميلك باستخدام كتل Gutenberg. استخدمت قوالب PHP القديمة ملفات ‎.mo. تحتاج الكتل الجديدة إلى ‎.json لـ wp_set_script_translations()‎. تحتاج سلاسلك النصية المترجمة البالغ عددها 3000 إلى الوجود في كلا الصيغتين أثناء الانتقال.

السيناريو 2: سير عمل الوكالة. أنت تدير 20 موقعًا للعملاء. يستخدم البعض قوالب كلاسيكية (.mo). يستخدم البعض الآخر إعدادات بدون رأس (.json). يستخدم أحدهم إطار عمل مخصص يقرأ مصفوفات PHP. أنت بحاجة إلى نفس الترجمات بصيغ مختلفة لعملاء مختلفين.

السيناريو 3: المراجعة الاحترافية. ترجمات الذكاء الاصطناعي الخاصة بك دقيقة بنسبة 95٪، لكنك تريد أن يقوم متحدث أصلي بمراجعة الـ 5٪ المتبقية. يستخدم المترجمون المحترفون أدوات CAT التي تستورد ‎.xliff. أنت بحاجة إلى تصدير ترجماتك إلى ‎.xliff، وإرسالها للمراجعة، ودمج التصحيحات مرة أخرى.

السيناريو 4: ترحيل النظام الأساسي. ينتقل عميلك من ووردبريس إلى تطبيق Node.js مخصص. يستخدم التطبيق الجديد i18next ويحتاج إلى ملفات ‎.json. يجب تحويل سلاسلك النصية المترجمة البالغ عددها 5000 بصيغة ‎.po — دون فقدان متغير واحد أو صيغة جمع.

الحل: ترجم مرة واحدة، واحصل على كل صيغة

يتبع SimplePoTranslate نهجًا مختلفًا. عندما تقوم بتحميل ملف ‎.po أو ‎.pot أو ‎.json أو ‎.xliff وتشغيل ترجمة، فإنك تستعيد ملف ZIP يحتوي على جميع الصيغ الخمس:

translations-es_ES.zip
├── flavor-starter-es_ES.po
├── flavor-starter-es_ES.mo
├── flavor-starter-es_ES.json
├── flavor-starter-es_ES.php
└── flavor-starter-es_ES.xliff

هذه ليست "ميزة مميزة" مقفلة خلف مستوى مؤسسي. تتضمن كل خطة مدفوعة — Pro (19 دولارًا شهريًا) و Lifetime (399 دولارًا لمرة واحدة) — جميع صيغ الإخراج الخمس في كل مهمة ترجمة.

لماذا هذا مهم للحماية من تغيّرات المستقبل

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

  • هل يهاجر العميل من الكلاسيكية إلى Gutenberg؟ انشر ملف ‎.json.
  • هل يفضل المطور الجديد مصفوفات PHP؟ سلمهم ملف ‎.php.
  • هل يريد مترجم محترف المراجعة؟ أرسل ملف ‎.xliff.
  • الانتقال إلى نظام إدارة محتوى مختلف؟ ملفات ‎.json و ‎.xliff مستقلة عن النظام الأساسي.

أنت تترجم مرة واحدة. الصيغ جاهزة عندما تحتاج إليها.

كيف تعمل كل صيغة في ووردبريس

إن معرفة الملف الذي يذهب إلى أين أمر ضروري لنشر نظيف.

نشر ملفات ‎.mo (قوالب وإضافات PHP الكلاسيكية)

wp-content/languages/plugins/woocommerce-es_ES.mo
wp-content/languages/themes/flavor-starter-es_ES.mo

يقوم ووردبريس بتحميل هذه الملفات تلقائيًا عندما تتطابق لغة الموقع. لا يلزم وجود إضافة. لا يوجد عبء قاعدة بيانات. هذا هو النهج الذي يوفر أفضل أداء.

نشر ملفات ‎.json (كتل Gutenberg ومكونات JS)

wp-content/languages/plugins/woocommerce-es_ES-{handle}-{md5}.json

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

استخدام ملفات ‎.xliff (سير عمل المراجعة الاحترافية)

لا يتم نشر ملفات ‎.xliff على ووردبريس. يتم استخدامها كـ صيغة تبادل عندما تحتاج إلى إرسال ترجمات إلى مراجع محترف أو استيرادها إلى أداة CAT. يبدو سير العمل كما يلي:

  1. ارفع ‎.po إلى SimplePoTranslate واحصل على ‎.xliff في ملف ZIP
  2. أرسل ‎.xliff إلى المترجم أو المراجع الخاص بك
  3. استقبل ‎.xliff المصحح مرة أخرى
  4. ارفع ‎.xliff المصحح إلى SimplePoTranslate واحصل على ‎.mo و ‎.json محدثين

يحافظ سير العمل ذهابًا وإيابًا هذا على كل متغير وصيغة جمع لأن قفل بناء الجملة الخاص بـ SimplePoTranslate يحميهم في كل مرحلة.

اختبار احتجاز البائع

إليك اختبار بسيط لتحديد ما إذا كان سير عمل الترجمة الحالي لديك به مشكلة احتجاز:

  1. هل يمكنك تصدير ترجماتك كملفات ‎.po قياسية الآن؟
  2. إذا ألغيت اشتراك أداة الترجمة اليوم، فهل تحتفظ بكل سلسلة نصية مترجمة؟
  3. هل يمكنك استيراد ترجماتك إلى أداة أو نظام أساسي مختلف تمامًا دون إعادة الترجمة؟

إذا كانت الإجابة على أي من هذه الأسئلة "لا"، فأنت محتجز. تفشل خدمات مثل Weglot و GTranslate في جميع الأسئلة الثلاثة — قم بإلغاء الاشتراك وستختفي ترجماتك. يخزن WPML الترجمات في قاعدة البيانات، مما يجعل التصدير ممكنًا ولكنه مؤلم. حتى الأدوات المكتبية مثل Poedit تجتاز الاختبار على الورق ولكنها تقصرك على ‎.po و ‎.mo فقط.

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

بناء مكتبة ترجمة غير مرتبطة بصيغة

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

translations/
├── client-acme/
│   ├── es_ES/
│   │   ├── flavor-starter-es_ES.po
│   │   ├── flavor-starter-es_ES.mo
│   │   ├── flavor-starter-es_ES.json
│   │   ├── flavor-starter-es_ES.php
│   │   └── flavor-starter-es_ES.xliff
│   └── de_DE/
│       └── ...
├── client-globex/
│   └── ...

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

هذا هو ما تعنيه كلمة "مقاومة للمستقبل" في الواقع — ليس التنبؤ بالتكنولوجيا التي سيستخدمها عملاؤك العام المقبل، ولكن التأكد من أن ترجماتك تعمل مع أي شيء يختارونه.

هل أنت مستعد للتوقف عن القلق بشأن صيغ الملفات؟ جرب SimplePoTranslate مجانًا — ارفع ملفًا واحدًا، واسترجع خمس صيغ. لا توجد نصوص تحويل، ولا إعادة ترجمة، ولا احتجاز.