تعرّف على كيفية استخدام دوال gettext لجعل النصوص في القوالب والإضافات قابلة للترجمة في WPML.
لضمان أن تكون النصوص في القوالب والإضافات قابلة للترجمة، وتظهر بشكل صحيح على موقعك، يجب استيفاء شرطين:
- تضمين النصوص في دالة gettext
- إضافة وسيط text domain
أساسيات Gettext
تأمل السلسلة النصية التالية، «Thank you!»، التي تنتمي إلى النطاق «my-plugin-domain»:
__( 'Thank you!', 'my-plugin-domain' );
لطباعة السلسلة النصية في المتصفح، استخدم الدالة _e() :
_e( 'Thank you!', 'my-plugin-domain' );
عند استخدام HTML، قم بتضمينها داخل وسوم HTML:
<h2><?php _e( 'Thank you!', 'my-plugin-domain' ); ?></h2>
إذا كان لديك رابط منفصل عن النص المحيط به، استخدم الدالة esc_html_e():
<a href="http://wpml.org/" ><?php esc_html_e( 'Translated with WPML', 'my-domain' ); ?></a>
أفضل ممارسات Gettext
1. لا تضع أبداً متغيراً أو ثابتاً داخل دالة gettext
سيؤدي ذلك إلى جعل السلاسل غير قابلة للفحص، وبالتالي غير قابلة للترجمة.
غير صحيح
<?php
if ( $morning ) {
define( 'GREETING', 'Good morning' );
} else {
define( 'GREETING', 'Good afternoon' );
}
_e( GREETING, 'my-domain' );
?>
صحيح
<?php
if ( $morning ) {
_e( 'Good morning', 'my-domain' );
} else {
_e( 'Good afternoon', 'my-domain' );
}
?>
2. تأمين المخرجات لأغراض الأمان
إذا تم تصيير سلسلة نصية مباشرة في المخرجات، فاستخدم دوال التأمين، مثل esc_html_ و esc_attr_ للحماية من هجمات XSS.
echo '<div>' . esc_html__( 'Back to homepage', 'my-domain' ) . '</div>';
3. إضافة تعليقات للمترجمين
يساعد هذا المترجمين على فهم السياق الذي تظهر فيه النصوص أو المتغيرات.
/* translators: %1$s is status label (e.g. "active" and %2$s is quantity of bits/s (e.g. 12 Gbit/s) */ printf( esc_html__( 'State of your network is %1$s. Maximum download speed is %2$s.', 'my-plugin-domain' ), $state, $speed );
موارد إضافية
لمعرفة المزيد حول gettext، راجع مرجع WordPress الرسمي.