كيفية إصلاح الترجمات الغامضة في ملفات .po الخاصة بـ WordPress

لقد ترجمت كل سلسلة نصية. قمت بحفظ الملف، ورفعت ملف .mo، وأعدت تحميل موقعك. ومع ذلك، لا تزال مجموعة صغيرة من التسميات باللغة الإنجليزية بعناد. تفتح ملف .po، وتجد السلسلة النصية، وها هي، مترجمة بشكل مثالي. فلماذا تتجاهلها WordPress؟
الجواب دائمًا تقريبًا هو علامة صغيرة مخفية فوق الإدخال: #, fuzzy. الترجمة الغامضة هي طريقة gettext للقول "قد تكون هذه الترجمة خاطئة، لذا لا تثق بها بعد". والأهم من ذلك، أن WordPress يرفض عرض السلاسل الغامضة على الموقع المباشر، ويعود إلى اللغة الإنجليزية الأصلية بدلاً من ذلك. هذا أحد أكثر الأسباب التي يساء فهمها لمشكلة "ترجمتي لا تظهر".
يشرح هذا الدليل بالضبط ما تعنيه علامة الترجمة الغامضة، ولماذا تستمر في الظهور في كتالوجاتك، وكيفية العثور على السلاسل الغامضة وإزالتها في Poedit، وعبر سطر الأوامر، وعلى نطاق واسع عبر قائمة مهام كاملة. بمجرد فهمك للآلية، يختفي غموض الترجمات المفقودة.
ما الذي تعنيه علامة "غامض" بالفعل؟
علامة "غامض" هي علامة يضيفها gettext إلى إدخال ترجمة للإشارة إلى أن الترجمة غير مؤكدة وتحتاج إلى مراجعة بشرية. في ملف .po الخام، تظهر كتعليق خاص مباشرة فوق السلسلة النصية.
#: includes/cart.php:88
#, fuzzy
msgid "Add to cart"
msgstr "Im Warenkorb"
يخبر هذا السطر #, fuzzy كل أداة متوافقة مع gettext، بما في ذلك WordPress، أن msgstr الموجود أسفله مؤقت. الترجمة موجودة، لكن gettext لا يعتبرها مؤكدة.
لماذا تتجاهل WordPress السلاسل الغامضة
هذا هو السلوك الذي يفاجئ الجميع. عندما تقوم WordPress بتجميع أو قراءة ملف .mo، فإنها تتعامل مع الإدخالات الغامضة على أنها غير مترجمة. السلسلة النصية موجودة تقنيًا في الملف، لكن WordPress تتجاهلها عمدًا وتعرض msgid الأصلي بدلاً من ذلك.
لذا من وجهة نظرك، الترجمة "مكتملة"، وهي موجودة في الملف. ولكن من وجهة نظر WordPress، لا تحتوي هذه السلسلة على ترجمة موثوقة، لذا تعرض المصدر الإنجليزي. هذا هو السبب بالضبط في أن الكتالوج الذي يبدو مكتملًا لا يزال يعرض نصًا غير مترجم في الواجهة الأمامية.
هذا التصميم مقصود ومنطقي، في الإنصاف. الهدف الأساسي من علامة "غامض" هو منع الترجمات غير المؤكدة، والتي قد تكون خاطئة، من الظهور مباشرة دون مراجعة. تخيل سلسلة نصية كانت في الأصل "Delete account" وتم تغييرها لاحقًا إلى "Deactivate account". إذا احتفظ gettext بالترجمة القديمة بشكل أعمى، فقد يرى المستخدمون زرًا مكتوبًا عليه "Delete account" بينما هو في الواقع يقوم بإلغاء التنشيط فقط، وهذا عدم تطابق خطير. بإخفاء السلاسل الغامضة، يجبر gettext الإنسان على تأكيد أن الترجمة لا تزال تتطابق مع المعنى الجديد قبل أن تصل إلى أي شخص. العلامة هي آلية أمان وليست خطأ برمجيًا.
لماذا تستمر علامات "غامض" في الظهور؟
علامات "غامض" ليست عشوائية. يتم إنشاؤها تلقائيًا بواسطة أدوات gettext في حالتين رئيسيتين، وفهم كليهما يخبرك كيفية منعها.
تغيرت السلسلة المصدر
السبب الأكثر شيوعًا هو تحديث المصدر. تخيل أن المطور يغير سلسلة نصية في الإصدار التالي من المكون الإضافي من "Add to cart" إلى "Add to basket". عندما تدمج القالب الجديد في ترجمتك الحالية، يرى gettext أن المصدر لم يعد يتطابق مع ما ترجمته في الأصل. بدلاً من التخلص من ترجمتك القديمة، يحتفظ بها ولكنه يضع عليها علامة "غامض"، قائلاً بشكل أساسي: "تغيرت اللغة الإنجليزية، لذا يرجى إعادة التحقق مما إذا كانت ترجمتك لا تزال مناسبة."
المطابقة التلقائية بواسطة ذاكرة الترجمة و msgmerge
السبب الثاني هو المطابقة الغامضة أثناء الدمج. تقوم أداة msgmerge بتحديث ملف ترجمة قديم مقابل قالب جديد، وعندما تجد سلسلة مصدر مشابهة ولكن ليست متطابقة مع سابقة، فإنها تنسخ الترجمة القديمة وتضع عليها علامة "غامض".
# Merge a new template into an existing translation.
# Similar-but-changed strings get marked #, fuzzy automatically.
msgmerge --update awesome-plugin-de_DE.po awesome-plugin.pot
تتصرف ذاكرة الترجمة في برامج التحرير المكتبية بنفس الطريقة: عندما تملأ اقتراحًا تلقائيًا من تطابق قريب، فإنها تضع علامة "غامض" على النتيجة لتتذكر التحقق منها. في كلتا الحالتين، تقوم العلامة بعملها. المشكلة الوحيدة هي أن الإدخالات الغامضة تبقى غير مراجعة، وWordPress تخفيها بهدوء.
هناك مصدر ثالث أكثر دهاءً يستحق المعرفة: أدوات النسخ واللصق والاستيراد بالجملة. تقوم بعض منصات الترجمة وسكربتات الاستيراد بوضع علامة "غامض" على كل إدخال افتراضيًا كإجراء احترازي، متوقعة أن يقوم الإنسان بتأكيد كل منها لاحقًا. إذا قمت باستيراد كتالوج من نظام آخر ووجدت أن كل سلسلة نصية أصبحت فجأة "غامضة"، فهذا هو السبب عادةً. قد تكون الترجمات صحيحة تمامًا، ولكن حتى يتم مسح العلامات، لن يظهر أي منها على موقعك. معرفة مصدر العلامات يخبرك ما إذا كنت بحاجة فعلًا لمراجعة كل إدخال أو ما إذا كان المسح الجماعي الواثق آمنًا.
كيف تجد وتصلح السلاسل الغامضة؟
مسح السلاسل الغامضة يعني مراجعة كل واحدة، وبمجرد تأكيد صحة الترجمة، إزالة العلامة. هناك ثلاث طرق عملية للقيام بذلك اعتمادًا على حجم المهمة.
إصلاح السلاسل الغامضة في Poedit
Poedit يجعل هذا أسهل. افتح ملف .po واستخدم أدوات البحث والتصفية لإظهار الإدخالات الغامضة فقط، فهي مرمزة بالألوان (عادةً برتقالي) بحيث تبرز على الفور. انقر على كل واحدة، قم بتأكيد أو تصحيح الترجمة، ثم قم بإلغاء حالة الغموض باستخدام اختصار لوحة المفاتيح (تحرير ثم "الترجمة غامضة"، أو الاختصار الموضح في القائمة). عند الحفظ، يقوم Poedit بإعادة تجميع ملف .mo نظيف وستظهر السلاسل المؤكدة الآن على موقعك. إذا كنت جديدًا على هذا المحرر، فإن دليل Poedit الكامل يغطي سير عمل التصفية والمراجعة بالتفصيل.
إصلاح السلاسل الغامضة عبر سطر الأوامر
للأتمتة أو الكتالوجات الكبيرة، سطر الأوامر أسرع. يمكنك عد الإدخالات الغامضة، وبمجرد التحقق منها بالجملة، إزالة العلامات حتى تقوم WordPress بتحميلها.
# Count how many fuzzy strings remain
msgattrib --only-fuzzy --no-obsolete awesome-plugin-de_DE.po | grep -c "msgid"
# Clear all fuzzy flags (only after you trust the translations)
msgattrib --clear-fuzzy --empty awesome-plugin-de_DE.po \
--output-file=awesome-plugin-de_DE.po
كن حذرًا عند المسح بالجملة. إزالة علامات "غامض" دون مراجعة الترجمات يهزم الغرض من العلامة ويمكن أن يؤدي إلى عرض نصوص خاطئة بالفعل لمستخدميك. استخدم نهج سطر الأوامر عندما تثق في مصدر الترجمات، وطريقة Poedit اليدوية عندما لا تثق.
حل وسط آمن هو تصدير السلاسل الغامضة إلى ملف منفصل، ومراجعة تلك فقط، ثم دمجها مرة أخرى. هذا يحافظ على ترجماتك المؤكدة دون مساس بينما تركز فقط على الإدخالات التي تحتاج إلى اهتمام فعلي.
# Extract only the fuzzy entries for focused review
msgattrib --only-fuzzy --no-obsolete awesome-plugin-de_DE.po \
--output-file=fuzzy-only.po
مراجعة خمسين سلسلة نصية معزولة أقل عرضة للأخطاء بكثير من التمرير في كتالوج يضم ألف سطر بحثًا عن الصفوف البرتقالية، وتمنحك سجلًا نظيفًا لما تغير بالضبط في التحديث الأخير.
بعد مسح العلامات، احفظ دائمًا أو أعد تجميع ملف .mo. حالة الغموض تعيش في ملف .po، ولكن WordPress يقرأ ملف .mo الثنائي، لذا حتى تقوم بإعادة إنشائه، ستستمر واجهتك الأمامية في عرض اللغة الإنجليزية على الرغم من أن ملف .po يبدو نظيفًا. يقوم Poedit بإعادة التجميع تلقائيًا عند الحفظ؛ عبر سطر الأوامر، تقوم بتشغيل msgfmt awesome-plugin-de_DE.po -o awesome-plugin-de_DE.mo. نسيان خطوة التجميع النهائية هذه هو أحد أكثر الأسباب شيوعًا لعدم ظهور كتالوج تم إزالة الغموض منه حديثًا، حيث يتم تأكيد الترجمة في الملف المصدر، ولكن الملف الثنائي الذي يحمله الموقع فعليًا قديم.
لاحظ أن الإدخالات الغامضة غالبًا ما تظهر جنبًا إلى جنب مع سلاسل الجمع، حيث يمكن أن يؤدي تغيير msgid_plural إلى وضع علامة "غامض" على كتلة الجمع بأكملها. إذا كانت قائمة مهامك الغامضة ثقيلة بالعد والكميات، فإن دليلنا حول جمع Gettext وصياغة الجمع المعقدة يشرح لماذا تكون هذه الإدخالات هشة بشكل خاص أثناء عمليات الدمج.
مسح قائمة المهام الغامضة على نطاق واسع
سلسلة غامضة واحدة هي إصلاح يستغرق ثلاثين ثانية. كتالوج يحتوي على أربعمائة سلسلة غامضة بعد تحديث كبير للمكون الإضافي يمثل مشكلة مختلفة، وعبر اثنتي عشرة لغة يصبح عنق زجاجة حقيقيًا. إغراء المسح الجماعي للعلامات دون مراجعة هو بالضبط كيف تصل الترجمات المعطلة إلى الإنتاج.
حل أنظف هو إعادة ترجمة الإدخالات الغامضة حديثًا بدلاً من الموافقة على التطابقات القديمة. عندما تقوم بمعالجة كتالوج عبر SimplePoTranslate، فإن الذكاء الاصطناعي الواعي بالسياق ينتج ترجمة حديثة ومؤكدة لكل سلسلة نصية متغيرة، لذا فأنت لا تزيل علامة تحذير فحسب، بل تستبدل التطابقات غير المؤكدة بترجمات حقيقية. تحافظ ميزة Syntax Locking على كل %s و %1$s و {count} وعلامة HTML سليمة أثناء العملية، وتقوم ميزة Smart Batching بمعالجة كتالوجات التحديث الكبيرة دفعة واحدة. تحصل على ملف ZIP نظيف يحتوي على .po و .mo و .json و .php و .xliff، بدون قائمة مهام غامضة متبقية، جاهز للنشر من السحابة.
يجدر التمييز بين هذا وبين السؤال الأوسع حول سبب عدم ظهور الترجمات على الإطلاق. علامات "غامض" هي سبب واحد محدد، ولكن ملفات .mo المفقودة، وأسماء الملفات الخاطئة، وعدم تطابق اللغة المحلية تسبب نفس العرض. للحصول على قائمة التحقق التشخيصية الكاملة، راجع دليل استكشاف الأخطاء وإصلاحها لعدم ظهور ترجماتك في WordPress، والذي يتعامل مع السلاسل الغامضة كعنصر واحد في قائمة أكبر.
هل أنت مستعد لمسح قائمة مهام غامضة بالكامل وجعل كل سلسلة نصية تظهر على موقعك؟ جرب SimplePoTranslate مجانًا — لا يلزم وجود بطاقة ائتمان. الفئة المجانية تعيد ترجمة ملف
.poالخاص بك حديثًا، مستبدلة التطابقات الغامضة غير المؤكدة بترجمات نظيفة ومؤكدة.