הגדרת i18n ב-Strapi: מדריך לוקליזציה מלא

תוכן רב-לשוני מאט לעיתים קרובות APIs ומסבך את הפיתוח, במיוחד כשמתרגומים של רשומות קשורות יוצרים שאילתות נוספות. אנו מגדירים Strapi internationalization במפתח מלא: מאפשרים localization לשדות נדרשים, מייעלים שאילתות ומחברים מאפייני SEO. הצוות שלנו מטפל בכל המחזור, מהגדרה ועד תמיכה, כך שהאתר שלך עובד באופן אמין בכל השפות.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת i18n ב-Strapi: מדריך לוקליזציה מלא
פשוט
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1307
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

התחלה: בעיית N+1 עם שאילתות לוקאליזציה

שאילתות N+1 הן בעיה קלאסית בעבודה עם i18n ב-Strapi. כאשר אתה מביא מאמרים מתורגמים עם קטגוריות מקוננות, כל תרגום יוצר שאילתת מסד נתונים נפרדת. במקום שאילתה אחת עם populate, אתה מקבל 1+N, מה שמכפיל את זמן התגובה של ה-API בחמישה. נתקלנו בזה בפרויקט מסחר אלקטרוני עם 6 שפות — דפי קטלוג נטענו במשך יותר מ-3 שניות.

הפתרון הוא לציין במפורש populate עבור שדות קשורים ולהשתמש ב-?locale=ru. זה מכסה 80% מהמקרים. עבור יחסים מורכבים אנו משתמשים באגרגציות דרך שדות וירטואליים. להלן מחזור ההתקנה המלא.

אילו בעיות אנו פותרים

ראשית וחשוב מכל — לא כל השדות מתורגמים. אם אתה שוכח להפעיל localized עבור מאפיין, הנתונים הופכים למשותפים, מה ששובר את התרחיש של "תוכן שונה לשפות שונות". שנית — שאילתות N+1 בעת הבאת ישויות קשורות. שלישית — SEO: אתה צריך לתרגם את ה-slug, תגי meta, ולעתים קרובות גם גרסאות קבצי מדיה לפי שוק.

הגישה שלנו מכסה תרחישים אלה: אנו מגדירים במפורש לוקאליזציה לכל שדה ומשתמשים ב-populate בבקשות API, מה שמפחית את מספר השאילתות בחמישה. בפרויקטים עם 15+ סוגי תוכן, חיסכון בזמן הפיתוח מגיע עד 40%.

הגדרת לוקאליזציה: מהקונפיגורציה ל-API

הפעלת הפלאגין והוספת שפות

פלאגין ה-i18n מגיע מובנה עם Strapi. הפעל אותו ב-config/plugins.js:

module.exports = { i18n: { enabled: true }, } 

בלוח הניהול, עבור אל Settings → Internationalization → Add a locale. הוסף את השפות הנדרשות, לדוגמה module.exports = { i18n: { enabled: true }, } , ru, en. לאחר מכן, תוכל להפעיל לוקאליזציה לשדות בכל סוג תוכן.

לוקאליזציה של שדות סוג תוכן

ב-Content-Type Builder, עבור כל שדה שאמור להשתנות לפי שפה, החלף את "Enable localization". הסכמה המתקבלת נראית כך:

{
  "options": {
    "draftAndPublish": true
  },
  "pluginOptions": {
    "i18n": {
      "localized": true
    }
  },
  "attributes": {
    "title": {
      "type": "string",
      "pluginOptions": {
        "i18n": {
          "localized": true
        }
      }
    },
    "content": {
      "type": "richtext",
      "pluginOptions": {
        "i18n": {
          "localized": true
        }
      }
    },
    "slug": {
      "type": "uid",
      "targetField": "title",
      "pluginOptions": {
        "i18n": {
          "localized": true
        }
      }
    },
    "publishedAt": {
      "type": "datetime"
    }
  }
}

שדות שאינם מתורגמים (לדוגמה, uk) יהיו משותפים לכל התרגומים של רשומה אחת. אם אתה צריך תאריכי פרסום שונים לכל שפה, עליך לתרגם גם שדה זה.

בקשות API עם לוקאליזציה

לחץ כדי לראות דוגמאות API
# Получить статьи на русском
GET /api/articles?locale=ru
# Получить статьи на английском
GET /api/articles?locale=en
# Получить статью со всеми переводами
GET /api/articles/1?locale=all
# Создать перевод
POST /api/articles
{
  "data": {
    "title": "English Title",
    "locale": "en",
    "localizations": [1]
  }
}

הפרמטר locale=all מחזיר את הרשומה עם מערך { "options": { "draftAndPublish": true }, "pluginOptions": { "i18n": { "localized": true } }, "attributes": { "title": { "type": "string", "pluginOptions": { "i18n": { "localized": true } } }, "content": { "type": "richtext", "pluginOptions": { "i18n": { "localized": true } } }, "slug": { "type": "uid", "targetField": "title", "pluginOptions": { "i18n": { "localized": true } } }, "publishedAt": { "type": "datetime" } } } מקונן לכל שפה. השתמש בו בזהירות: עם שפות רבות התגובה עלולה להיות כבדה.

אינטגרציה עם Next.js i18n

לפי תיעוד Strapi, אינטגרציה עם Next.js דורשת העברת ה-locale בבקשות API. דוגמת פונקציה:

// lib/strapi.ts
export async function getArticles(locale: string = 'ru') {
  const res = await fetch(
    `${process.env.STRAPI_URL}/api/articles?locale=${locale}&populate=cover,category`,
    {
      headers: {
        Authorization: `Bearer ${process.env.STRAPI_API_TOKEN}`
      }
    }
  )
  return res.json()
}

עבור דפים סטטיים השתמש ב-publishedAt עם טעינה מוקדמת של כל השפות; עבור דפים דינמיים השתמש ברינדור בצד השרת עם קאשינג דרך # Получить статьи на русском GET /api/articles?locale=ru # Получить статьи на английском GET /api/articles?locale=en # Получить статью со всеми переводами GET /api/articles/1?locale=all # Создать перевод POST /api/articles { "data": { "title": "English Title", "locale": "en", "localizations": [1] } } . זה מפחית את עומס השרת ומאיץ את טעינת הדפים. בפרויקט עם 3 שפות ו-50 מאמרים, זמן הבנייה הסטטית גדל ב-30%, אך TTFB יורד ל-100 אלפיות השנייה.

השוואה: i18n מובנה לעומת יישום מותאם אישית

קריטריון פלאגין i18n מובנה שדה לוקאליזציה מותאם אישית
מורכבות ההתקנה נמוכה (הפעל ותרגם שדות) גבוהה (ניהול יחסים ידני)
גמישות מוגבלת על ידי מבנה הפלאגין מקסימלית (כל סכמה)
תמיכת API מוכנה (locale=all) דורשת יישום פילטרים
לוח ניהול מחליף שפות אוטומטי דורש הרחבה מותאמת אישית
ביצועים מותאם (מובנה) תלוי ביישום

עבור 95% מהפרויקטים הפלאגין המובנה מספיק. התקנת i18n מובנית מהירה פי 3 ליישום מאשר פתרון מותאם אישית. יש לשקול יישום מותאם אישית רק עבור דרישות לא שגרתיות.

מה כלול בהתקנה ולמה זה משתלם

כיצד להגדיר לוקאליזציה ל-SEO?

עבור SEO חשוב לתרגם את ה-slug ושדות meta (כותרת, תיאור). ב-Strapi, אתה הופך את ה-slug לשדה מתורגם כפי שהוצג לעיל. ב-Next.js, השתמש ב-localizations או next-seo כדי להכניס תגי hreflang. זה משפר את הרלוונטיות של הדף למנועי חיפוש באזורים שונים. בפועל, לוקאליזציית SEO נכונה מגדילה את התנועה משפות שאינן ראשיות ב-60% תוך 3 חודשים.

כיצד לתרגם קבצי מדיה?

Strapi אינו תומך בלוקאליזציית מדיה מובנית — כל תמונה מקושרת במפורש לשפה מסוימת. אנו ממליצים ליצור שדות מדיה נפרדים לכל שפה (לדוגמה, // lib/strapi.ts export async function getArticles(locale: string = 'ru') { const res = await fetch( `${process.env.STRAPI_URL}/api/articles?locale=${locale}&populate=cover,category`, { headers: { Authorization: `Bearer ${process.env.STRAPI_API_TOKEN}` } } ) return res.json() } , generateStaticParams) או להשתמש בפלאגין מותאם אישית לקישור. אפשרות נוספת היא לאחסן את כל התמונות בשדה אחד ולנהל את הצגתן בפרונטאנד. חיסכון בזמן ניהול המדיה יכול להגיע ל-40%.

היקף העבודה והאחריות

מה כלול

  • ביקורת הסכמה הנוכחית וזיהוי שדות הדורשים לוקאליזציה.
  • הפעלת פלאגין i18n והוספת שפות.
  • הגדרת סוגי תוכן עם לוקאליזציה נכונה של מאפיינים.
  • אופטימיזציית API לשאילתות מודעות שפה (הבאת נתונים קשורים, קאשינג).
  • אינטגרציית פרונטאנד (Next.js, Nuxt, React) — העברת locale בבקשות.
  • בדיקת כל גרסאות השפה לתצוגה נכונה ו-SEO.
  • תיעוד ה-API והתהליך להוספת שפות חדשות.
  • הדרכת הצוות על עבודה עם תוכן רב-לשוני בלוח הניהול.

תהליך

  1. ניתוח — קביעת רשימת השפות, מפת התרגומים, דרישות המדיה.
  2. עיצוב — סכמת סוגי תוכן תוך התחשבות בלוקאליזציה עד 15 סוגים.
  3. קונפיגורציה — הפעלת i18n, הגדרת הפלאגין, העברת נתונים קיימים.
  4. אינטגרציה — התאמת API ופרונטאנד למודעות שפה.
  5. בדיקות — אימות כל ה-endpoints, מחליף השפות, מטא SEO.
  6. פריסה — העלאה לסביבת production עם ניטור.

לוחות זמנים, אחריות וניסיון

התקנת i18n לשלוש שפות עם לוקאליזציה של 3 עד 5 סוגי תוכן אורכת בין יום ל-3 ימים (מחיר קבוע מ-$1,200 עבור עד 5 סוגי תוכן). לוח הזמנים תלוי במורכבות היחסים ובצורך בהעברת נתונים. אנו מספקים אחריות ל-6 חודשים על פעולת לוקאליזציה תקינה. אם מתעוררות בעיות, אנו מתקנים אותן ללא עלות. הניסיון שלנו: 30+ פרויקטים מוצלחים עם תוכן רב-לשוני, מומחי Strapi ו-Next.js מוסמכים, 5 שנות פיתוח ב-Strapi, דיווח ותיעוד שקופים. הזמינו התקנת i18n וקבלו תמיכה רב-לשונית יציבה.

קבלו ייעוץ לפרויקט שלכם — אנו נעריך את המורכבות ואת לוחות הזמנים. צרו קשר כדי לדון בפרטים.