אתר 1C-Bitrix ששולח מיילים ברוסית למשתמש דובר אנגלית אינו באג, אלא חוסר בקישור נכון של LID בתבניות מייל. כתוצאה מכך, 30% מהמשתמשים לא יכולים להבין את סטטוס ההזמנה שלהם, והתמיכה מקבלת פי שניים פניות. פתרנו זאת ביותר מ-50 פרויקטים, תוך הפחתת שגיאות לוקליזציה ב-95%. החיסכון בתחזוקת תבניות רב-לשוניות מגיע ל-60% הודות לארכיטקטורה אחידה.
הבעיה של מיילים בשפה אחת
אירועי מייל מערכתיים מאוחסנים בטבלת b_event_type. לכל אירוע יש LID — קישור שפה. אם נוצרת רק תבנית אחת עם LID = 'ru', המיילים תמיד יהיו ברוסית. עבור אתר רב-לשוני, יש צורך בתבנית נפרדת לכל שפה. הבעיה נוצרת לעיתים קרובות כאשר מפתחים שוכחים לשכפל תבניות או מציינים SITE_ID בצורה שגויה. לפי תיעוד Bitrix, לכל סוג אירוע יכולות להיות מספר תבניות עם LIDs שונים.
כיצד 1C-Bitrix בוחר תבנית מייל
דוגמה: אירוע SALE_NEW_ORDER (הזמנה חדשה). כברירת מחדל, תבנית אחת עם LID = 'ru'. עבור הגרסה האנגלית, צור תבנית שנייה עם LID = 'en'. בעת השליחה, Bitrix בוחר את התבנית בהתבסס על ה-LID של האתר שבו בוצעה ההזמנה. קריטי: LID בתבנית הוא מזהה האתר (b_lang.LID), לא שפת המערכת. באתרים רב-לשוניים עם SITE_ID יחיד ומספר שפות באמצעות Bitrix\Main\Application::getInstance()->addApplication() או SITE_ID מבוסס שפה, יש צורך לבדוק בדיוק כיצד מאורגנת הרב-לשוניות בפרויקט. אנו מבצעים ביקורת ומבטיחים תצורה נכונה.
יצירת תבניות למספר שפות
עבור אל הגדרות → אירועי מייל → סוגי אירועי מייל. עבור כל אירוע מערכתי, צור תבניות:
- פתח את האירוע (לדוגמה,
SALE_NEW_ORDER) - הוסף תבנית חדשה באמצעות "הוסף תבנית"
- בשדה "אתר", בחר את גרסת השפה (או SITE_ID אם יש דומיינים שונים)
- מלא את הנושא והגוף בשפת היעד
ליישום טכני נכון, אל תשכפל פריסת HTML בכל תבנית. במקום זאת, חלץ אלמנטים משותפים (כותרת עליונה, כותרת תחתונה, כפתור) לתבנית PHP הנכללת באמצעות #INCLUDE_FILE#. פרמטר טקסטים באמצעות משתני אירוע. גישה זו חוסכת זמן בעת הוספת שפות חדשות ומפחיתה את עלויות התחזוקה בחצי.
פתרון בעיות בחירת תבנית
אם המייל מגיע בשפה הלא נכונה, בדוק:
- ודא שה-LID של התבנית תואם ל-SITE_ID של האתר.
- האם נעשה שימוש בקאש עם תבנית ישנה? נקה את קאש אירועי המייל בלוח הניהול.
- האם ה-handler
OnBeforeEventAddעוקף את השפה? במודולים מותאמים אישית מסוימים, השפה עשויה להיות מקודדת קשיח.
גורמים נפוצים לכשל בבחירת תבנית
- LID של התבנית אינו תואם ל-SITE_ID של האתר.
- קאש אירועי המייל לא נוקה.
- ה-handler OnBeforeEventAdd עוקף את השפה.
- קידוד התבנית הוא CP1251 במקום UTF-8.
- Content-Type נעקף על ידי SMTP חיצוני.
אנו כוללים בדיקת כל הנקודות הללו בביקורת שלנו. הזמינו התקנה וקבלו אחריות לשליחה נכונה בכל השפות.
משתנים ולוקליזציה של ערכים
משתני אירוע סטנדרטיים (#ORDER_ID#, #PRICE#) מוחלפים באופן זהה לכל השפות. אך חלק מהערכים דורשים לוקליזציה. לדוגמה, סטטוס הזמנה "Обрабатывается" ברוסית ו"Processing" באנגלית. כדי ללוקליזציה של ערכים דינמיים, השתמש ב-handler OnBeforeEventAdd:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'main',
'OnBeforeEventAdd',
function (\Bitrix\Main\Event $event) {
$fields = $event->getParameter('FIELDS');
$lang = $fields['LID'] ?? 'ru';
// ÐеÑеводим ÑÑаÑÑÑ Ð·Ð°ÐºÐ°Ð·Ð°
$fields['ORDER_STATUS'] = getLocalizedStatus($fields['ORDER_STATUS_ID'], $lang);
$event->setParameter('FIELDS', $fields);
}
);גישה זו מבטיחה שכל מייל מכיל ערכים נכונים בשפת המשתמש. אנו מיישמים זאת בכל הפרויקטים כחלק מהתהליך הסטנדרטי. שימוש בתבניות אחידות מפחית את הזמן להוספת שפה חדשה פי 5 בהשוואה לשכפול HTML.
עיצוב תאריכים ומספרים
במיילים רב-לשוניים, התאריך "13 марта" נכון למשתמשים רוסים, אך עבור משתמשים גרמנים "13. März" עדיף, ולאנגלית "March 13". השתמש במשתנה עם ערך מעוצב כבר, שנוצר ב-handler תוך התחשבות ב-\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'main', 'OnBeforeEventAdd', function (\Bitrix\Main\Event $event) { $fields = $event->getParameter('FIELDS'); $lang = $fields['LID'] ?? 'ru'; // Переводим статус заказа $fields['ORDER_STATUS'] = getLocalizedStatus($fields['ORDER_STATUS_ID'], $lang); $event->setParameter('FIELDS', $fields); } ); . עיצוב מספרים: סכום הזמנה "$13–19" לעומת "€ 24.99" — מפריד אלפים שונה, סמלי מטבע שונים, מיקום סימן שונה. השתמש ב-$lang תוך התחשבות בשפה.
בעיות אופייניות
- תבנית מקושרת לשפה אך לא לאתר (LID = 'en', אך האתר עצמו נפרד).
- קאש אירועי מייל לא נוקה לאחר יצירת התבנית.
- ב-handler OnBeforeEventAdd, השפה לא נשקלת אם היא נעקפת על ידי מודול.
- קידוד תבנית CP1251 במקום UTF-8 — תווים משובשים.
- Content-Type נעקף על ידי הגדרות SMTP חיצוניות.
מה כלול
| שלב | תיאור |
|---|---|
| ביקורת תבניות קיימות ומבנה שפות | בדיקת כל אירועי המייל, קישור השפה שלהם והקשר לאתר |
| עיצוב מערכת התבניות | פיתוח תבניות אחידות עם אלמנטים משותפים (כותרת עליונה/תחתונה) |
| לוקליזציה של תוכן סטטי | תרגום טקסטים של מיילים לכל שפה |
| יישום handlers לוקליזציה | כתיבת קוד להחלפת סטטוסים, תאריכים ומטבעות מתורגמים |
| בדיקה בכל השפות | שליחת מיילי בדיקה ואימות תצוגה נכונה |
| תיעוד והדרכה | מתן הוראות להוספת אירועים ושפות חדשים |
| תמיכה באחריות | 30 ימי תמיכה חינם לאחר המסירה |
השוואה: התקנה עצמית לעומת אותנו
| קריטריון | התקנה עצמית | עם הצוות שלנו |
|---|---|---|
| זמן ל-2 שפות | 1–2 שבועות עם סיכון לשגיאות | 2–5 ימים עם אחריות |
| לוקליזציה דינמית | לעיתים קרובות מוחמצת | מובנית בכל תבנית |
| קידוד ו-charset | בעיות אופייניות | בקרה אוטומטית |
| תמיכה בשפות חדשות | צריך ללמוד מחדש | תבנית מוכנה בחצי יום |
התקנה עם הצוות שלנו מהירה פי 5 מיישום עצמי. חיסכון בתקציב על לוקליזציה — עד 40%.
לוחות זמנים משוערים
| משימה | לוח זמנים |
|---|---|
| לוקליזציה של מיילים מערכתיים (5–10 אירועים, 2 שפות) | 2–5 ימים |
| פיתוח מערכת תבניות אחידה ל-4+ שפות | 1–2 שבועות |
אם המיילים של הפרויקט שלך מגיעים בשפה הלא נכונה, או שאתה רוצה להוסיף שפה חדשה, ניתן לפתור זאת תוך 2–5 ימים. צור קשר לביקורת וייעוץ. הזמן התקנת תבניות רב-לשוניות וחסל שגיאות לוקליזציה. קבל ייעוץ ממהנדס עוד היום.

