WPML

منتجات WooCommerce هي «مقالات» WordPress مخصصة تحتوي على حقول مخصصة. يتم ترتيبها باستخدام التصنيفات المخصصة «فئات المنتجات» و«وسوم المنتجات». هنا، سنوضح لك كيف تعمل مواقع WooCommerce متعددة اللغات وما تحتاجه قوالب WooCommerce الخاصة بك لجعلها Multilingual Ready (جاهزة لتعدد اللغات).

كيف تعمل مواقع WooCommerce متعددة اللغات

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

مثال على الترجمات المعينة لعناصر المحتوى المختلفة

يمكن لمسؤولي الموقع الترجمة بسهولة باستخدام جدول ترجمة المنتجات في WPML. بهذه الطريقة، يمكنهم التركيز على ترجمة النصوص المطلوبة، دون الحاجة إلى القلق بشأن كيفية تخزين الترجمات في قاعدة البيانات.

نظراً لأن الترجمات منفصلة في قاعدة البيانات، فمن السهل أيضاً عرض مواقع WooCommerce متعددة اللغات. في الواقع، إذا كنت تستخدم واجهات برمجة التطبيقات (APIs) الخاصة بـ WordPress وWooCommerce، فقد يكون قالبك Multilingual Ready بالفعل. بقليل من الاختبار وربما بعض التعديلات الصغيرة، يمكنك تحقيق التوافق الكامل مع تعدد اللغات والاستمتاع بأسواق جديدة.

الإضافات المطلوبة لمواقع WooCommerce متعددة اللغات

لتشغيل مواقع WooCommerce متعددة اللغات، يلزم وجود الإضافات التالية:

يأتي WPML وجميع الإضافات ذات الصلة، بما في ذلك WPML Multilingual & Multicurrency for WooCommerce، مع نوع حساب Multilingual CMS.

النصوص المضمنة برمجياً (Hard-Coded) في القوالب

تعرض ملفات قوالبك مزيجاً من معلومات المنتج والنصوص المضمنة برمجياً. على سبيل المثال، ستتضمن معظم القوالب اسم المنتج ورابط «Buy». يأتي اسم المنتج من قاعدة البيانات، لذا لا داعي للقلق بشأن ترجمته.

يجب عليك التأكد من أن جميع النصوص المضمنة برمجياً قابلة للترجمة، باستخدام GetText.

جيد

<p><?php _e('Similar products:', 'my-textdomain') ?></p><input type="button" name="buy-button" value="<?php esc_attr_e('Buy now!', 'my-textdomain') ?>" />

في المثال أدناه، لم يتم تغليف «Similar products» و«Buy now!» في استدعاءات GetText.

سيئ

<p><?php echo 'Similar products:'; ?></p>

<input type="button" name="buy-button" value="Buy now!" />

جيد

<p><?php _e('Similar products:', 'my-textdomain') ?></p><input type="button" name="buy-button" value="<?php esc_attr_e('Buy now!', 'my-textdomain') ?>" />

سيئ

<p><?php echo 'Similar products:'; ?></p><input type="button" name="buy-button" value="Buy now!" />

لم يتم تغليف «Similar products» و«Buy now!» في استدعاءات GetText.

جيدسيئ
<p><?php _e('Similar products:', 'my-textdomain') ?></p><input type="button" name="buy-button" value="<?php esc_attr_e('Buy now!', 'my-textdomain') ?>" /><p><?php echo 'Similar products:'; ?></p><input type="button" name="buy-button" value="Buy now!" />لم يتم تغليف «Similar products» و«Buy now!» في استدعاءات GetText.

تأكد من استخدام النطاق النصي (textdomain) لقالبك في جميع استدعاءات GetText.

صفحات WooCommerce المضمنة برمجياً

تتضمن العديد من قوالب التجارة الإلكترونية صفحات خاصة، مثل صفحات سلة التسوق (Cart) أو الحساب (Account). غالباً ما يتضمن القالب روابط لهذه الصفحات، تظهر في كل صفحة على الموقع.

إذا كنت تستخدم قائمة WordPress لهذه الروابط، فيجب أن يكون كل شيء جاهزاً. يعرض WPML قائمة WordPress مختلفة لكل لغة، لذا ستكون الروابط لهذه «الصفحات الخاصة» مختلفة، حسب اللغة. ومع ذلك، إذا قمت بتضمين هذه الروابط برمجياً في ملفات القالب، فستحتاج إلى السماح لـ WPML باستبدال الروابط، بروابط لهذه الصفحات باللغة الصحيحة.

الطريقة الصحيحة للربط بصفحات WooCommerce الخاصة هي باستخدام دوال واجهة برمجة تطبيقات (API) WordPress ومعرفات (IDs) صفحات WooCommerce. يقوم WPML Multilingual & Multicurrency for WooCommerce بتصفية الاستدعاء لـ get_option() بمعرفات صفحات WooCommerce. وسيعيد معرف الصفحة في اللغة الحالية.

جيد

<a href="<?php echo get_permalink(get_option('woocommerce_shop_page_id')) ?>"><?php _e('Shop page', 'my-textdomain') ?></a>
<a href="<?php echo get_permalink(wc_get_page_id('shop')) ?>"><?php _e('Shop page', 'my-textdomain') ?></a>

«shop» هو المعرّف النصي للرابط للصفحة في اللغة الافتراضية.

سيئ

<a href="<?php echo get_permalink(5) ?>"><?php _e('Shop page', 'my-textdomain') ?></a>

معرف «shop page» مضمن برمجياً. وسيكون مختلفاً للمواقع المختلفة وللغات المختلفة.

<a href="/shop"><?php _e('Shop page', 'my-textdomain') ?></a>

عنوان URL لـ «shop page» مضمن برمجياً. وسيكون مختلفاً للغات المختلفة.

جيدسيئ
<a href="<?php echo get_permalink(get_option('woocommerce_shop_page_id')) ?>"><?php _e('Shop page', 'my-textdomain') ?></a>

<a href="<?php echo get_permalink(wc_get_page_id('shop')) ?>"><?php _e('Shop page', 'my-textdomain') ?></a>
«shop» هو المعرّف النصي للرابط للصفحة في اللغة الافتراضية.
<a href="<?php echo get_permalink(5) ?>"><?php _e('Shop page', 'my-textdomain') ?></a>
معرف «shop page» مضمن برمجياً. وسيكون مختلفاً للمواقع المختلفة وللغات المختلفة.<a href="/shop"><?php _e('Shop page', 'my-textdomain') ?></a>عنوان URL لـ «shop page» مضمن برمجياً. وسيكون مختلفاً للغات المختلفة.

قوائم المنتجات الجاهزة لتعدد اللغات

إذا كنت تستخدم الأكواد المختصرة (shortcodes) لـ WooCommerce لعرض قائمة المنتجات، فكل شيء جاهز. سيقوم WooCommerce بتحميل المنتجات باللغة الصحيحة وعرضها.

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

جيد

<?php $products = get_posts(array('post_type' => 'product', 'suppress_filters' => 0)); ?><?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 10,
);
$products = new WP_Query( $args );
?>

سيئ

<?php $products = get_posts(array('post_type' => 'product')); ?>

سيتم تعيين suppress_filters إلى true افتراضياً، مما يمنع تصفية اللغة.

$products = $wpdb->get_results($wpdb->prepare(“SELECT * FROM {$wpdb->posts} WHERE post_type='product' ORDER BY ID DESC LIMIT %d", 10));

لا يقوم WPML بتصفية استعلامات SQL منخفضة المستوى. سيتم إرجاع جميع المنتجات بجميع اللغات.

جيدسيئ
<?php $products = get_posts(array('post_type' => 'product', 'suppress_filters' => 0)); ?><?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 10,
);
$products = new WP_Query( $args );
?>
<?php $products = get_posts(array('post_type' => 'product')); ?>
سيتم تعيين suppress_filters إلى true افتراضياً، مما يمنع تصفية اللغة.$products = $wpdb->get_results($wpdb->prepare(“SELECT * FROM {$wpdb->posts} WHERE post_type='product' ORDER BY ID DESC LIMIT %d", 10));
لا يقوم WPML بتصفية استعلامات SQL منخفضة المستوى. سيتم إرجاع جميع المنتجات بجميع اللغات.

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

قوالب المنتجات الجاهزة لتعدد اللغات

نظراً لأن الترجمات تُخزن في منتجات منفصلة، فإن عرض منتج واحد على موقع WooCommerce متعدد اللغات لا ينبغي أن يتطلب جهداً خاصاً.

خيارات الدفع متعددة العملات

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

تم تضمين دعم تعدد العملات في WPML Multilingual & Multicurrency for WooCommerce. للسماح للزوار بالتبديل بين العملات، يجب أن يتضمن قالبك مبدّل عملات اختيارياً.

يمكنك عرض مبدّل العملات إما باستخدام استدعاء PHP أو عن طريق إدراج كود مختصر.

<?php do_action('currency_switcher', array('format' => '%name (%symbol)')); ?>
[currency_switcher]

لمزيد من المعلومات، راجع الدرس التعليمي حول تعدد العملات لـ WooCommerce. يرجى ملاحظة أنك لن ترى مبدّل العملات في الواجهة الأمامية إلا إذا كان الموقع يستخدم عملات متعددة.

جعل موقع WooCommerce الخاص بك متوافقاً مع اللغات التي تُكتب من اليمين إلى اليسار (RTL)

تحتاج قوالب WooCommerce إلى اتباع نفس إرشادات دعم قوالب RTL مثل أي قوالب WordPress أخرى. يجب عليك إنشاء ملف rtl.css، مع قواعد CSS لعرض RTL.

التعامل مع أطوال النصوص المختلفة في اللغات المختلفة باستخدام التصميم المرن (Fluid Design)

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

على سبيل المثال، انظر إلى كتلتي المنتجات هاتين.

CSS محسّن للنصوص القصيرة باللغة الإنجليزية

النصوص الإسبانية الأطول لا تتناسب مع المساحة

كقاعدة عامة، اختبر قالبك بنصوص أطول بمقدار الضعف (x2) وأقصر بمقدار النصف (½). سيغطي هذا معظم الحالات. أفضل طريقة للتعامل مع النصوص ذات الأحجام المختلفة هي السماح بالتخطيطات المرنة (fluid layouts). ستسمح التخطيطات المرنة للعناصر بتغيير حجمها وشغل المساحة التي تحتاجها. إن إنشاء قالب أنيق بأحجام مرنة ليس بالأمر البسيط، ولكن القيام بذلك يساعد في تجنب الخلل البصري

يتدفق النص بشكل جيد من سطر إلى سطر دون أي خلل في العرض

هل أنت مستعد للبدء؟

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

هل تبني مواقع للعملاء؟ اشترِ WPML وابدأ في إنشاء مواقع متعددة اللغات لـ WooCommerce وغيرها.

بقلم Amir · آخر تحديث 16 أكتوبر 2024