WPML

لقطة شاشة لقالب atahualpaسأوضح كيفية استخدام قالب Atahualpa، من تطوير Bytes For All، لإنشاء مواقع WordPress متعددة اللغات باستخدام WPML.

يحتاج أي قالب لموقع WordPress متعدد اللغات إلى تغليف جميع السلاسل النصية في استدعاءات gettext، ولكن هذا ليس كافياً تماماً. يتيح استخدام gettext في القالب عرضه بلغة مختلفة (مفردة) عن اللغة التي بُني بها في الأصل.

ليعمل القالب بشكل متعدد اللغات، يجب أن يتيح للزوار اختيار لغة العرض الخاصة بهم وتقديم المحتوى الصحيح لكل لغة.

نسخة متعددة اللغات لقالب Atahualpa


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

ما قمنا بتغييره لجعل Atahualpa متعدد اللغات

1. إضافة wpml-integration.php إلى دليل القالب


يوجد ملف wpml-integration.php في دليل WPML ضمن docs/theme-integration. وهو يتضمن مجموعة من الدوال التي تساعد في تحويل القوالب لتصبح متعددة اللغات.

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

تمت إضافته إلى functions.php:

include dirname(__FILE__) . '/wpml-integration.php';

تُحمّل هذه العبارة ملف wpml-integration.php وتجعله متاحاً لجميع الملفات في القالب.

2. إضافة مبدلات اللغة


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

أضفنا مبدل اللغة المنسدل الخاص بـ WPML إلى الشريط الجانبي عن طريق إضافته إلى header.php:

<?php wpml_languages_selector() ?>
مبدل اللغة المنسدل لقالب atahualpa
مبدل اللغة المنسدل

أضفنا أيضاً قائمة أفقية للغات إلى تذييل الموقع. يمرر العديد من المستخدمين أولاً إلى الأسفل لرؤية ما يوجد هناك (ولمعرفة طول الصفحات)، لذا فهو مكان جيد لإعلامهم بأن الصفحات متاحة بلغات أخرى. أضفنا الكود التالي إلى footer.php:

<?php wpml_languages_list() ?>
مبدل لغة أفقي في التذييل
مبدل لغة أفقي في التذييل

أخيراً، أضفنا مبدل لغة في نهاية كل مقالة. يضيف هذا جملة إلى كل مقالة، تخبر باللغات الأخرى المتاحة بها. تمت إضافة الكود التالي إلى index.php (والذي يتضمن نسخة مخصصة من حلقة العرض الخاصة بـ WordPress):

<?php if(is_singular()) wpml_content_languages(); ?>
قائمة لغات الترجمة
قائمة لغات الترجمة

عندما ينقر الزوار على «الرئيسية»، فإنهم يتوقعون الوصول إلى الصفحة الرئيسية دون تبديل اللغة. وبما أن لكل لغة «صفحة رئيسية» بعنوان URL مختلف، فإن استخدام قيمة واحدة للجميع لن ينجح.

عادةً، تحسب قوالب WordPress عنوان الصفحة «الرئيسية» بناءً على قيمة «عنوان URL للمدونة» المحددة في صفحة لوحة التحكم. أنشأت WPML دالة تحسب عنوان الصفحة الرئيسية الصحيح وفقاً للغة العرض.

استبدلنا get_option('home') بـ wpml_get_home_url(). أيضاً، تُرجع الدالة get_option('home') موقع الموقع بدون شرطة مائلة في النهاية (/)، لذا تضيفها القوالب يدوياً. تتضمن دالة WPML هذه الشرطة المائلة (هناك قصة طويلة وراء ذلك).

لإجراء هذا التغيير، كان علينا تعديل ملفين. قمنا بتعديل functions/bfa_get_options.php وتغيير:

$bfa_ata['get_option_home'] = get_option('home');

إلى
$bfa_ata['get_option_home'] = wpml_get_home_url();

أيضاً، قمنا بتعديل functions/bfa_header_config.php وأزلنا الشرطة المائلة في النهاية من رابط الصفحة الرئيسية:
'<a href="' . $bfa_ata['get_option_home'] . '">' . $bfa_ata['bloginfo_name'] . '</a>'

4. متقدم جداً – ترجمة النصوص التي يدخلها المستخدمون في شاشة لوحة تحكم القالب


يتيح Atahualpa التحكم في بعض النصوص من خلال شاشة لوحة التحكم. هذا أمر رائع يسمح بإدارة الموقع دون تعديل ملفات PHP. يمكن لـ WPML ترجمة هذه السلاسل النصية أيضاً باستخدام آلية ترجمة النصوص الخاصة بها.

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

عندما يذهب المستخدمون إلى شاشة لوحة تحكم القالب، ويحدثون النصوص وينقرون على «حفظ»، يتم تنفيذ الدالة bfa_ata_add_admin من functions/bfa_ata_add_admin.php. أضفنا القسم التالي إليها (بدءاً من السطر 11):

global $wpml_translatable_strings;

 foreach($wpml_translatable_strings as $wpml_str ){

   if(isset($_REQUEST['bfa_ata_'.$wpml_str]) && trim($_REQUEST['bfa_ata_'.$wpml_str])){

    wpml_register_string('atahualpa theme', $wpml_str, stripslashes($_REQUEST['bfa_ata_'.$wpml_str]));

  }

 }

ما يفعله هذا هو المرور عبر قائمة من السلاسل النصية المحددة في المتغير العام $wpml_translatable_strings. ويسجل كل سلسلة نصية في قائمة ترجمة النصوص الخاصة بـ WPML.

الوسيطة الأولى هي سياق السلاسل النصية. يمكن استخدام أي اسم، ولكن يجب عليك اختيار اسم يصف السلاسل النصية. الوسيطة الثانية هي اسم السلسلة النصية (لا يُترجم). الوسيطة الأخيرة هي قيمة السلسلة النصية – وهي التي تُترجم.

لعرض الترجمات (إذا كانت موجودة)، أضفنا الدالة wpml_t إلى functions/bfa_get_options.php (بدءاً من السطر 204):

global $wpml_translatable_strings;

foreach($bfa_ata as $k=>$v){

   if(in_array($k, $wpml_translatable_strings) || $__first){

    $bfa_ata[$k] = wpml_t('atahualpa theme', $k, $v);     

  }

}

يتم تشغيل هذا الكود عندما يُعرض الموقع للزوار. سيمر عبر قائمة السلاسل النصية، ويتحقق مما إذا كانت مسجلة للترجمة (in_array)، وإذا كان الأمر كذلك، فسيحصل على الترجمة. ستُرجع الدالة wpml_t السلسلة النصية المترجمة باللغة الحالية، إذا كانت الترجمة موجودة، أو ستُرجع فقط السلسلة النصية الأصلية إذا لم تكن هناك ترجمة.

تحويل قوالب WordPress الأخرى لتصبح متعددة اللغات


لقد قمنا بالفعل بعمل مشابه على iNove وArras ونخطط لتحويل المزيد من القوالب لتصبح متعددة اللغات.

هدفنا هو توفير قوالب متعددة اللغات جاهزة للاستخدام ومساعدتك في بناء قوالبك الخاصة الجاهزة لتعدد اللغات. باستخدام التقنيات التي وصفناها هنا، يمكنك بناء قوالب ستعمل بشكل متعدد اللغات عندما تكون WPML متاحة، أو بلغة واحدة بدون WPML.

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

يمكنك أيضاً كسب المال (دخل سلبي حقيقي) عن طريق إضافة دعم تعدد اللغات إلى قوالبك. سنتحدث عن تضمين معرفات الإحالة في القوالب في المقالة التالية.

هل وجدت هذا مفيداً؟ شارك هذه المقالة: