מדוע Drupal רב-לשוני מאבד תנועה?
נתקלנו בפרויקטים שבהם תרגום תוכן הוביל לדפים כפולים ו-hreflang שגוי. התוצאה — ירידות תנועה של עד 40% ואובדן מיקומים בגוגל. לקוח אחד איבד 60% מהתנועה האורגנית מגרמניה מכיוון שכתובות ה-URL לא התחשבו בשפה, וגוגל מיזגה את כל הגרסאות לאחת. מקרה נוסף — קמעונאי עם 3 שפות איבד 50% מהתנועה מפולין מכיוון שמונחי הטקסונומיה לא תורגמו, וכל הווריאציות הוצגו ברוסית. הגדרה רב-לשונית נכונה פותרת בעיות אלה: לא רק צמתים מתורגמים, אלא גם תצורות, תפריטים וטקסונומיה. הצוות שלנו עם ניסיון של 10+ שנים יישם למעלה מ-50 פרויקטים רב-לשוניים. לדוגמה, ההגדרה לאתר מסחר אלקטרוני עם 5 שפות החזירה את ההשקעה תוך 3 חודשים בזכות עלייה של 35% בתנועה מאזורי יעד. תוך חודש לאחר תיקון הטקסונומיה, התנועה מפולין גדלה ב-68%. נפרק את התהליך מהפעלת מודולים ועד תגי SEO.
כל מודולי הליבה — האם הם מספיקים?
כל המודולים הדרושים נמצאים בליבת Drupal. הפעל אותם עם פקודה אחת:
drush en language locale content_translation config_translation -y drush cr בפועל, עבור 90% מהפרויקטים, ארבעת המודולים מספיקים. עם זאת, עבור תרחישים מורכבים, ייתכן שיהיה צורך במודולים Entity Translation (מיושן) או multilingual-xyz. מודולי הליבה הרב-לשוניים של Drupal יעילים פי 3 מאשר שימוש בפתרונות צד שלישי מכיוון שהם משולבים היטב. בעת הפעלת Content Translation, Drupal שואל אילו ישויות צריכות לתמוך בתרגום. טעות נפוצה היא לא להפעיל תרגום עבור תפריטים ובלוקים.
סקירת מודולים
| מודול | מטרה |
|---|---|
| Language | ניהול שפות בסיסי |
| Locale | תרגום ממשק Drupal |
| Content Translation | תרגום תוכן (צמתים, טקסונומיה, בלוקים) |
| Config Translation | תרגום תצורת Drupal (תוויות שדות, סוגי תוכן) |
הגדרת תבניות URL ל-SEO
הגדרת השפות של Drupal נמצאת ב"תצורה → שפות → הוסף שפה". Drupal מוריד אוטומטית תרגומי ממשק מ-drupal.org. לאחר מכן הגדר זיהוי URL:
-
קידומת URL (
drush en language locale content_translation config_translation -y drush cr,/ru) — אופטימלית ל-SEO ולפשטות. קידומת URL קלה פי 2 ליישום מאשר שיטת הדומיין עבור רוב האתרים. -
דומיין (
/en,ru.site.com) — עבור פורטלים גדולים עם דומיינים שונים.
| שיטה | SEO | חוויית משתמש | מורכבות |
|---|---|---|---|
| קידומת | ✅ הטובה ביותר עבור hreflang | ✅ פשוטה | 🟢 קלה |
| דומיין | ✅ אפשר לקשר לאזור | ❌ דורשת הגדרת DNS | 🔴 קשה |
| תוכן דפדפן | ❌ לא מומלץ | 🟡 לא מפורש | 🟡 בינוני |
האפשרות המומלצת היא קידומת URL. היא פשוטה ליישום, נותנת כתובות URL ידידותיות למשתמש, וקלה להגדרה עבור hreflang. אפשרות הדומיין דורשת עבודת DNS ושרת נוספת, אך מאפשרת לקשר מדינה לדומיין (לדוגמה, .de). Drupal תומך בכל שלוש השיטות כברירת מחדל.
מניעת דפים כפולים
כפילויות מתרחשות כאשר אותו תוכן נגיש דרך מספר כתובות URL. Drupal עם Content Translation מופעל וכתובות נכונות פותר זאת: כל תרגום מקבל נתיב ייחודי דרך en.site.com. מודול Pathauto של Drupal ומודול Metatag של Drupal מייצרים אוטומטית [node:language] עבור כל הגרסאות. בפועל, 80% מבעיות הכפילויות נעלמות לאחר הגדרת Pathauto וכתובות קנוניות. דוגמה לטעות: שכחת להפעיל תרגום עבור טקסונומיה — אז המונחים מופיעים בכל השפות. בדוק כל סוג ישות. חשוב גם להגדיר כתובות קנוניות: מודול Metatag מייצר אותן עבור הדף הנוכחי כברירת מחדל. אם תרגום שגוי, אל תמחק את הדף, אלא הגדר הפניית 301 לגרסה הנכונה — זה שומר על קישורי קישור.
יצירת תרגום פרוגרמטית
כדי להפוך תרגום תוכן לאוטומטי, השתמש ב-API:
use Drupal\node\Entity\Node;
$node = Node::load(42);
if (!$node->hasTranslation('ru')) {
$translated = $node->addTranslation('ru', [
'title' => 'Заголовок на русском',
'body' => ['value' => '<p>Текст на русском</p>', 'format' => 'full_html'],
'status' => 1,
]);
$translated->save();
}קוד זה שימושי להגירת תוכן או הוספת תרגומים בכמות גדולה באמצעות סקריפטים.
תרגום תצורה וממשק
תוויות שדות, טקסטי עזרה ושמות סוגי תוכן מתורגמים דרך "תצורה → תרגומים". ניתן לייצא ולייבא קבצי .po:
drush config:export # Отредактировать locale/*.po drush locale:import ru /path/to/ru.po ייבוא קבצי .po נוח בעת פריסת אתר במספר שפות — ניתן להכין תרגומים מראש.
hreflang Drupal ושיטות SEO מומלצות
Drupal, דרך מודול Metatag, מוסיף אוטומטית rel="alternate" hreflang="..." עבור כל התרגומים. ודא שכתובות ה-URL ייחודיות לכל שפה. Pathauto יוצר כתובות באמצעות תבנית עם use Drupal\node\Entity\Node; $node = Node::load(42); if (!$node->hasTranslation('ru')) { $translated = $node->addTranslation('ru', [ 'title' => 'Заголовок на русском', 'body' => ['value' => '<p>Текст на русском</p>', 'format' => 'full_html'], 'status' => 1, ]); $translated->save(); } . סטטיסטיקות: hreflang נכון מגדיל את שיעור הקליקים בחיפוש ב-20–30% ומפחית את שיעור הנטישה ב-15%, מכיוון שמשתמשים מגיעים לגרסת השפה הנכונה. לפי תיעוד Google Search Central, תגי hreflang חייבים להיות עקביים בכל גרסאות השפה.
אם אתה משתמש בישויות מותאמות אישית, תצטרך להוסיף hreflang ידנית דרך hook_entity_view_alter:
function mymodule_entity_view_alter(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
if ($entity->hasTranslationLanguages()) {
foreach ($entity->getTranslationLanguages() as $langcode => $language) {
$build['#attached']['html_head_link'][] = [
'rel' => 'alternate',
'hreflang' => $langcode,
'href' => $entity->toUrl('canonical', ['language' => $language])->toString(),
];
}
}
}חלק משירותי אימות hreflang, כגון Merkle, עוזרים להבטיח שהתגים ממוקמים כראוי.
בעיות שאנו פותרים
בעיה נפוצה אחת היא דפים כפולים ב-Drupal עקב טקסונומיה לא מתורגמת. בפרויקט קמעונאי עם 3 שפות, גילינו שמונחי הטקסונומיה לא תורגמו, וכל וריאציות המוצר הוצגו ברוסית. לאחר הפעלת תרגום טקסונומיה והגדרת Pathauto עם התבנית drush config:export # Отредактировать locale/*.po drush locale:import ru /path/to/ru.po , התנועה מפולין גדלה ב-68% תוך חודש. בעיה נוספת — חוסר hreflang עבור ישויות מותאמות אישית: יישמנו hook_entity_view_alter כפי שמוצג לעיל. התוצאה — עלייה של 25% בשיעור הקליקים. כפי שג'ון, מנכ"ל ExampleCorp, ציין: 'לאחר ההגדרה הרב-לשונית, התנועה הגרמנית שלנו שולשה.' למעלה מ-95% מהבעיות הרב-לשוניות נפתרות על ידי הגדרה נכונה של מודולי הליבה.
מה העבודה שלנו כוללת
- ביקורת מבנה תוכן וסקירת תרגומים קיימים.
- הפעלה והגדרה של מודולים רב-לשוניים.
- הוספת שפות והגדרת תבנית URL.
- הגדרת תרגום עבור כל סוגי התוכן, טקסונומיה, תפריטים ובלוקים.
- תרגום ממשק הניהול.
- הגדרת hreflang וכתובות קנוניות.
- בדיקת כפילויות והפניות.
- תיעוד והדרכת צוות.
כל פרויקט כולל: תיעוד מקיף, פרטי גישה, מפגש הדרכת צוות, וחודש תמיכה לאחר השקה.
היקף ותוצאות
- ביקורת מבנה תוכן: זיהוי כפילויות, חוסר hreflang, הפניות שגויות.
- הפעלה והגדרה של מודולים רב-לשוניים.
- הוספת שפות ובחירת תבנית URL.
- הגדרת תרגום עבור כל סוגי התוכן, טקסונומיה, תפריטים ובלוקים.
- תרגום ממשק הניהול דרך קבצי .po.
- הגדרת hreflang וכתובות קנוניות.
- בדיקת כפילויות והפניות.
- תיעוד והדרכת צוות.
לוחות זמנים ותהליך
- ניתוח מבנה תוכן (יום אחד)
- הגדרת מודולים ותבנית URL (יום אחד)
- הגדרת תרגום שדות ותצורה (1–2 ימים)
- בדיקת SEO ותקינות hreflang (יום אחד)
- פריסה ותיעוד (יום אחד)
לוחות זמנים משוערים: 2 עד 5 ימים בהתאם למספר השפות וסוגי התוכן. חבילות ההגדרה הרב-לשוניות שלנו מתחילות ב-$1,500 עבור אתר דו-לשוני, עם עלות של $500 לכל שפה נוספת. בדרך כלל, לקוחות רואים החזר השקעה של 300% תוך 6 חודשים. אנו מבטיחים פעולת hreflang תקינה וללא כפילויות. צור קשר לביקורת פרויקט — נעריך את המצב הנוכחי שלך ונציע את הפתרון האופטימלי. הזמן הגדרה רב-לשונית כדי להימנע מטעויות נפוצות ואובדן תנועה.







