אני אראה כיצד להשתמש ב־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() ?>

בנוסף, הוספנו רשימת שפות אופקית לכותרת התחתונה של האתר. משתמשים רבים גוללים תחילה עד הסוף למטה כדי לראות מה יש שם (ומהו אורך העמודים), כך שזהו מקום טוב לציין שהעמודים זמינים בשפות אחרות. הוספנו את הקוד הבא ל־footer.php:
<?php wpml_languages_list() ?>

לבסוף, הוספנו בורר שפות בסוף כל פוסט. זה מוסיף משפט לכל פוסט, שמציין באילו שפות נוספות הוא זמין. הוספנו את הקוד הבא ל־index.php (אשר כולל גרסה מותאמת אישית של לולאת התצוגה של WordPress):
<?php if(is_singular()) wpml_content_languages(); ?>

3. הפניית הקישור לדף הבית לדף הבית של כל שפה
כאשר מבקרים לוחצים על 'דף הבית', הם מצפים להגיע לדף הבית מבלי להחליף שפה. מכיוון שלכל שפה יש 'דף בית' עם כתובת URL שונה, ערך יחיד עבור כולן לא יעבוד.
בדרך כלל, ערכות עיצוב של WordPress מחשבות את הכתובת עבור 'דף הבית' על בסיס הערך 'Blog 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 ואנו מתכננים להמיר ערכות עיצוב נוספות לרב־לשוניות.
הכוונה שלנו היא לספק ערכות עיצוב רב־לשוניות המוכנות לשימוש, ולעזור לך לבנות ערכות עיצוב משלך המוכנות לריבוי שפות (Multilingual Ready). באמצעות הטכניקות שתיארנו כאן, תוכל לבנות ערכות עיצוב שיפעלו באופן רב־לשוני כאשר WPML זמין או בשפה יחידה ללא WPML.
אם אתה בונה ערכות עיצוב וזקוק לעזרה בהפיכתן לרב־לשוניות, אל תהסס לפתוח שרשורים חדשים בפורום.
תוכל גם להרוויח כסף (הכנסה פסיבית באמת) על ידי הוספת תמיכה רב־לשונית לערכות העיצוב שלך. נדבר על הכללת מזהי שותפים בערכות עיצוב בפוסט הבא.


