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

כך משנים במערכת דרופל 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',
);

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

ספריות ומודולים

מציאת PII באמצעות למידת מכונה

כך תגנו על משתמשים שלכם שמעלים מידע אישי רגיש כמו תעודות זהות באמצעות שירות אמאזוני.

DALL·E 2023-10-21 22.28.58 - Photo of a computer server room with red warning lights flashing, indicating a potential cyber threat. Multiple screens display graphs showing a sudde
יסודות בתכנות

מבוא לאבטחת מידע: IDOR

הסבר על התקפה אהובה ומוצלחת שבאמצעותה שואבים מידע מאתרים

רספברי פיי

הרצת גו על רספברי פיי

עולם הרספברי פיי והמייקרים ניתן לתפעול בכל שפה – לא רק פייתון או C – כאן אני מסביר על גו

רספברי פיי

התקנת OpenCanary על רספברי פיי

מה זה OpenCanary ואיך אפשר להתקין אותה על רספברי פיי ולשדרג את אבטחת הרשת הביתית או המשרדית.

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