WPML

تعلّم كيفية تسجيل نصوص إدخال المستخدم من الإضافات والقوالب للترجمة. بمجرد تسجيلها، يمكنك ترجمتها باستخدام ترجمة النصوص.

كيفية تسجيل نصوص إدخال المستخدم

عندما ينشئ مستخدم سلاسل نصية جديدة، أو يحدّث سلاسل نصية حالية، يجب تسجيلها في جدول السلاسل النصية الخاص بـ WPML.

يمكنك إجراء هذا الاستدعاء باستخدام خطّاف الإجراء wpml_register_single_string:

do_action( 'wpml_register_single_string', string $context, string $name, string $value )
  • $context – اسم الإضافة أو القالب، بتنسيق قابل للقراءة البشرية.
  • $name – اسم السلسلة النصية، والذي يساعد المترجم على فهم ما تتم ترجمته.
  • $value – السلسلة النصية التي تحتاج إلى ترجمة.

تأمل مثال الودجت المخصص هذا، والذي يتضمن title، وحقل input من سطر واحد، وtextarea. لتسجيل هذه الحقول للترجمة عند حفظ خيارات الودجت أو تحديثها، نستخدم دالة التحديث:

استخدام خطّاف الإجراء wpml_register_single_string
function update($new_instance, $old_instance){
    $instance = $old_instance;
    $instance['title']      = strip_tags($new_instance['title']);
    $instance['custom_input']   = strip_tags($new_instance['custom_input']);
    $instance['custom_textarea']    = $new_instance['custom_textarea'];
 
    //WPML
    /**
     * register strings for translation
     */
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
    //WPML
 
    return $instance;
}

في هذا المثال، نخبر WPML أنه يحتاج إلى ترجمة نصوص إدخال المستخدم لحقل input وحقل textarea. ستُسجل هذه النصوص ضمن سياق السلاسل النصية Widgets بالاسم Custom Widgetinput field و Custom Widget – textarea field على التوالي.

بمجرد تسجيل النصوص، يمكنك استخدام خطّاف الإجراء wpml_translate_single_string لعرض الترجمات في الواجهة الأمامية.

كيفية دمج ترجمة النصوص مع الإضافات والقوالب

عند دمج ترجمة النصوص مع الإضافات أو القوالب، من المهم التأكد من وجود الاستدعاءات.

تنفيذ الاستدعاءات الشرطية

غلّف استدعاءاتك في عبارات if_function_exists() بحيث يتم استدعاء WPML إذا كان مفعّلاً، وإذا لم يكن كذلك، تستمر العملية العادية.

التعامل مع التفعيل المتأخر لـ WPML

كمطور قوالب أو إضافات، يجب عليك أيضاً مراعاة الحالة التي يتم فيها تفعيل WPML بعد فترة طويلة من بدء المستخدم في استخدام قالبك أو إضافتك.

في هذه الحالات، لن تُترجم السلاسل النصية لأن استدعاء wpml_register_single_string لا يتم عند إنشائها. للتغلب على ذلك، يجب عليك تسجيل جميع السلاسل النصية للمستخدم في كل مرة يتم فيها تحميل شاشة لوحة التحكم للإضافة.

على الرغم من أن هذا يضيف وقت تنفيذ لا يُذكر، إلا أنه يضمن إرسال السلاسل النصية دائماً إلى الترجمة وتحديثها.

يجب أن يتحقق الكود أولاً مما إذا كانت الدالة wpml_register_single_string موجودة. إذا كانت كذلك، فيجب استدعاء الدالة لتسجيل جميع نصوص إدخال المستخدم. إليك كيفية عمل ذلك:

  • إذا تم استدعاء الدالة بقيم فارغة أو NULL، يتجاهل WPML هذه الاستدعاءات.
  • إذا كانت السلسلة النصية موجودة بالفعل وغير معدلة، يتجاهل WPML الاستدعاء.
  • لا تتخذ الدالة أي إجراء إلا إذا تم تسجيل سلاسل نصية جديدة أو معدلة.

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

موارد إضافية

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

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

لترجمة عناصر القوالب أو الإضافات كمجموعة، راجع ترجمة حزم السلاسل النصية.

بقلم Amir · آخر تحديث 7 يونيو 2024