שינוי פרמטרים בדרופל בהתאם לשפה

כך משנים במערכת דרופל 6 את שם האתר, התיאור שלו ופרמטרים נוספים בהתאם לשפה.

הקמת אתר רב לשוני באמצעות דרופל היא מאד קלה ונעימה, באמצעות המודול המובנה Locale ובאמצעות מודול i18n אפשר ליצור תכנים בשפות שונות באותו אתר בקלות ובמהירות ובעצם ליצור אתר רב לשוני בעל מספר שפות.

אתר השוואת מחירי השיחות שבניתי הוא דוגמא טובה לאתר רב לשוני. יש לו גרסאות בשלוש שפות – אנגלית, עברית ורוסית ואין לי שום בעיה להוסיף עוד ועוד שפות לאתר. בעוד שהפעלת Locale ו-i18n היא פשוטה מאד, חלק מהמתכנתים מסתבכים עם הגדרת שם אתר, הודעת פוטר, סלוגן, Mission ועוד פרמטרים שונים באופן נפרד לכל שפה בממשק עצמו.

כיצד משנים את שם האתר לפי השפה?

ראשית, נתקין את המודולים Locale ו-i18n. אני מאד אוהב להתקין גם את המודול Language Icons שיוצר לנו Language switcher עם דגלים. באמצעות Site configuration -> Languages -> Add language נוסיף את השפה שאנו רוצים ובתפריט ה-Blocks נדאג ש-Language switcher שהוא Block שנוצר לאחר שהתקנו את ה-i18n מופיע במקום כלשהו. הוא צריך להראות כך:

תפריט ה-Language Switcher
תפריט ה-Language Switcher

אחרי כן ניגש לקובץ ה-settings.php ונוסיף את הטקסט הבא על מנת לקבוע שהפרמטרים הבאים הם משתנים בהתאם לשפה:


$conf['i18n_variables'] = array(
  'site_name',
  'site_slogan',
  'site_mission',
  'site_footer',
);

נשמור את הקובץ, ננקה את ה-cache של דרופל (דרך Performance) ואז ניגש אל Site Information. אנו נראה שליד כל הפרמטרים שהכנסנו כתוב This is a multilingual variable. הנה, כך זה נראה:
שדה רב לשוני

כל מה שצריך לעשות זה לעדכן את השדה והשדה יתעדכן בהתאם לשפה שנמצאת ב-Language switcher. אם אני צריך לשנות את שם האתר ברוסית, כל מה שעלי לעשות זה להעביר את השפה לרוסית, להכניס את שם האתר ולשמור – זה הכל!

הנה רשימה של משתנים שניתן לייצר להם גרסאות לשוניות:


/**
* Multilingual settings
*
* This is a collection of variables that can be set up for each language when i18n enabled.
* These are the basic ones for Drupal core, but you can add your own here.
* Find them by looking through source of page for name=
*/
$conf['i18n_variables'] = array(
'theme_default',
'file_directory_path',
'menu_primary_links_source',
'menu_default_node_menu',
'nice_menus_custom_css',
'site_mail',
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
'site_frontpage',

/* User configuration */
'user_registration_help',
'user_mail_register_admin_created_subject',
'user_mail_register_admin_created_body',
'user_mail_register_no_approval_required_subject',
'user_mail_register_no_approval_required_body',
'user_mail_register_pending_approval_subject',
'user_mail_register_pending_approval_body',
'user_mail_password_reset_subject',
'user_mail_password_reset_body',
'user_mail_status_activated_subject',
'user_mail_status_activated_body',
'user_mail_status_blocked_subject',
'user_mail_status_blocked_body',
'user_mail_status_deleted_subject',
'user_mail_status_deleted_body',

/* Node help */
'blog_help',
'story_help',
'contact_form_information',

/* Location */
'location_default_country',
'location_settings_user',

/* Invite */
'invite_subject',
'invite_default_mail_template',

/* User_relationships */
'user_relationship_mailer_request_subject',
'user_relationship_mailer_request_message',
'user_relationship_mailer_cancel_subject',
'user_relationship_mailer_cancel_message',
'user_relationship_mailer_approve_subject',
'user_relationship_mailer_approve_message',
'user_relationship_mailer_disapprove_subject',
'user_relationship_mailer_disapprove_message',
'user_relationship_mailer_remove_subject',
'user_relationship_mailer_remove_message',
'user_relationship_mailer_pre_approved_subject',
'user_relationship_mailer_pre_approved_message',
'user_relationships_ui_msg_submitted',
'user_relationships_ui_msg_accepted',
'user_relationships_ui_msg_disapproved',
'user_relationships_ui_msg_cancel',
'user_relationships_ui_msg_default',
'user_relationships_ui_msg_removed',
'user_relationships_ui_msg_pending',
'user_relationships_ui_msg_pre_approved',
'user_relationships_ui_msg_too_many_relationships',
'user_relationships_ui_msg_existing_request',
'user_relationships_ui_msg_existing_relationship',
'user_relationships_ui_msg_not_accepting_requests',
'user_relationships_ui_msg_self_request',
'user_relationships_ui_msg_non_existant_user',
'user_relationships_ui_msg_non_existant_type',
'user_relationships_ui_msg_unknown_error',
'user_relationships_ui_msg_relationship_type_not_set',
'user_relationships_ui_msg_relationship_type_not_allowed',
);

פוסטים נוספים שכדאי לקרוא

ESP32 מאפס לילדים

מדריך ל-ESP32 לילדים ולהורים מאפס

אחד הדברים הכי כיפיים בעולם הוא תכנות ותכנות בעולם האמיתי – המפעיל אורות, ציוד אלקטרוני ומכשירים הוא מלהיב ממש. המדריך מיועד להורים שרוצים ללמד את הילדים שלהם לתכנת.

פתרונות ומאמרים על פיתוח אינטרנט

SSG עם next

אחרי שלמדנו במאמר הקודם מה זה SSR והבנו שלא מדובר בקליע כסף שפותר את כל הבעיות שלנו, נלמד על SSG שיכול להקל על כמה מהבעיות של SSR.

מיקרו בקרים

בית חכם עם ESPHome ו Home Assistant

הסבר על הום אסיסטנט, מערכת הקוד הפתוח לבית חכם ואיך לחבר אליה מיקרובקרים.

גלילה לראש העמוד