تتيح لك وحدة ترجمة المتسلسلات الخاصة بـ WPML ترجمة النصوص في سمتك وملحقاتك.

مع ذلك، لكي تظهر تلك الترجمات في الموقع، ينبغي تلبية بعض الشروط:

  • ينبغي أن تحاط النصوص في استدعاءات GetText.
  • لابد أن تكون هناك وسيطة نطاق نص.

أي نصوص مضمنة في كود PHP وغير محاطة باستدعاءات GetText مع نطاق نص، لن تتم ترجمتها بواسطة WPML.

أمثلة

نص ثابت غير محاط باستدعاء GetText

<h2>Links</h2>

المشكلة: الكلمة ‘Links’ غير محاطة باستدعاء GetText. ومن ثم فهي غير قابلة للترجمة.

الحل: إحاطة النص باستدعاء GetText Echo:

<h2><?php _e('Links','theme-text-domain'); ?></h2>

قمنا بتضمين الكلمة ‘Links’ في استدعاء gettext call _e() (استدعاء echo قابل للترجمة). الآن، يمكن لـ WPML ترجمتها.

نص في وظيفة غير محاط باستدعاء GetText

by <?php echo(the_author('', false)); ?>

المشكلة: الجملة غير قابلة للترجمة.

الحل: تحتوي هذه الجملة على نص ثابت وبعض النصوص الديناميكية. وتحتاج إلى تضمينها جميعًا في استدعاء GetText واحد واستخدام وسيطات.

<?php printf( __( 'by %s', 'theme-text-domain' ), the_author('', false) ); ?>

النص الذي سيصل المترجم هو ‘by %s’. وهذا جيد، لأنه يسمح للمترجم بتغيير ترتيب الكلمات، وهو ما قد يكون ضروريًا في بعض اللغات.

لاحظ أننا استخدمنا في هذه الحالة استدعاء __() GetText call. هذا الاستدعاء مشابه للاستدعاء _e()، ولكنه لا يظهر على النتائج (مثلما يفعل استدعاء echo). تظهر النتائج بفعل استدعاء printf.

وسيطة نطاق النص مفقودة

<?php _e('Roadmap') ?>

المشكلة: لا توجد وسيطة نطاق نص في استدعاء GetText.

الحل: قم بإضافة نطاق نص.

<?php _e('Roadmap','theme-text-domain') ?>

يقوم نطاق النص بإخبار استدعاء GetText (و WPML) ما الذي ينتمي إليه النص. إنها متسلسلة لا تعني أي شيء لأي أحد سواك. يمكنك اختيار المتسلسلة التي ترغب فيها، ولكن ينبغي عليك مراعاة التناسق. ستقوم قيمة نطاق النص بجمع المتسلسلات ذات الصلة معًا.

بكل صراحة، إن ‘theme-text-domain’ ليس بالاسم الجيد أو المميز. على سبيل المثال، إذا قمت بتسمية سمتك ‘star-geeks’، فهذه قد تكون قيمة أفضل لنطاق النص.