CMS ללא ראש + PolyLingo

רב-לשוני עבור CMS ללא ראש.

Polylang העניקה לאתרי WordPress זרימת עבודה רב-לשונית מלאה. PolyLingo מביאה את זרימת העבודה הזו ל-Sanity, Contentful, Webflow, Framer, וכל CMS ללא ראש אחר — דרך REST API שמשתלב תוך אחר הצהריים.

Sanity
דוגמת אינטגרציה מלאה
Contentful
דוגמת אינטגרציה מלאה
Webflow
דוגמת אינטגרציה מלאה
36
שפות יעד

רב-לשוניות ב-CMS ללא ראש היא בעיה לא פתורה.

ל-Sanity יש תוסף לאינטרנציונליזציה. ל-Contentful יש לוקאלים. אבל אף אחד מהם לא מתרגם את התוכן שלך — הם רק מאחסנים אותו בשפות שונות. מילוי המקומות האלה בשפות הוא עדיין תהליך ידני. מייצאים את התוכן באנגלית, מריצים אותו דרך כלי תרגום ששובר את הטקסט העשיר או מבנה ה-JSON שלך, מתקנים את הפלט, מייבאים חזרה, חוזרים על כך עבור כל שפה. עבור צוות תוכן פעיל שמפרסם בקביעות, זרימת עבודה זו לא מתרחבת. היא גם לא קיימת ברוב ההגדרות הקטנות יותר, מה שאומר שהתוכן פשוט לא מתורגם כלל.

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

רוב הצוותים מוצאים את עצמם באחת משתי מצבים: הם מתרגמים תוכן ידנית על ידי העתקה ל-DeepL והדבקה חזרה (איטי, פגיע לטעויות, לא מתרחב), או שהם כותבים אינטגרציה מותאמת עם API תרגום שהם צריכים לתחזק לנצח. אף אחד מהם אינו פתרון טוב. PolyLingo היא אפשרות שלישית נקייה.

PolyLingo היא שכבת התרגום שחסרה ל-CMS שלך.

PolyLingo משתלב ישירות בזרימת העבודה של פרסום ה-CMS שלך. הגדר webhook שמופעל כשפרסום תוכן מתבצע, העבר את התוכן ל-PolyLingo, קבל גרסאות מתורגמות לכל שפה, וכתוב אותן חזרה ל-CMS שלך. עבור Sanity, זה כמה שורות בקוד שרת. עבור Contentful, זה מטפל ב-webhook. עבור הגדרות מותאמות, זו קריאת HTTP. מודל התרגום מבין את פורמט התוכן שלך — Markdown, HTML, JSON, טקסט עשיר — ושומר על המבנה לאורך כל הדרך.

הדפוס עקבי בכל CMS: משוך תוכן בשפת המקור שלך, קרא ל-PolyLingo API עם כל שפות היעד, כתוב את התוכן המתורגם חזרה ל-CMS דרך API הניהול שלו. זה רץ כסקריפט בזמן בנייה, משימת CI, או מטפל ב-webhook — מה שמתאים לזרימת העבודה שלך.

PolyLingo מטפל ב-Markdown, HTML וטקסט פשוט, כך שהוא עובד עם כל פורמט שה-CMS שלך משתמש בו לתוכן עשיר. שדות מובנים (כותרות, גוף, תקציר) יכולים להיות מתורגמים בנפרד כדי לתת לך שליטה מדויקת על אילו שדות מתורגמים.

🟠

Sanity + PolyLingo

תוסף Document Internationalization של Sanity יוצר וריאנטים מקושרים של מסמכים לכל לוקאל. הסקריפט למטה מושך את המסמכים הבסיסיים באנגלית ויוצר וריאנטים מתורגמים לכל שפת יעד אוטומטית.

עובד עם דפוס i18n ברמת המסמך (מסמך אחד לכל לוקאל) וגם עם דפוס ברמת השדה (כל הלוקאלים במסמך אחד). עבור דפוס ברמת השדה, בצע לולאה על שדות במקום על מסמכים.

scripts/translate-sanity.mjs
// scripts/translate-sanity.mjs
// Fetches published posts and translates each to all target languages

import { createClient } from '@sanity/client'

const sanity = createClient({
  projectId: process.env.SANITY_PROJECT_ID,
  dataset: 'production',
  token: process.env.SANITY_TOKEN,
  apiVersion: '2024-01-01',
  useCdn: false,
})

const posts = await sanity.fetch(`*[_type == "post" && __i18n_lang == "en"]`)

for (const post of posts) {
  const response = await fetch('https://api.usepolylingo.com/v1/translate', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.POLYLINGO_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      content: post.body_markdown,
      format: 'markdown',
      targets: ['es', 'fr', 'de', 'ja', 'zh'],
    }),
  })

  const { translations } = await response.json()

  for (const [lang, content] of Object.entries(translations)) {
    await sanity.create({
      _type: 'post',
      __i18n_lang: lang,
      __i18n_base: { _type: 'reference', _ref: post._id },
      title: translations[lang + '_title'] || post.title,
      slug: { current: `${post.slug.current}-${lang}` },
      body_markdown: content,
    })
  }
}
🔵

Contentful + PolyLingo

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

Contentful משתמש בקודי לוקאל BCP 47 (למשל es-ES במקום es). מיפוי קודי ISO 639-1 של PolyLingo להגדרות הלוקאל של Contentful בהתאם.

scripts/translate-contentful.mjs
// scripts/translate-contentful.mjs
// Translates Contentful entries to all target locales

import contentful from 'contentful-management'

const client = contentful.createClient({
  accessToken: process.env.CONTENTFUL_MANAGEMENT_TOKEN,
})

const space = await client.getSpace(process.env.CONTENTFUL_SPACE_ID)
const env = await space.getEnvironment('master')
const entries = await env.getEntries({ content_type: 'blogPost', locale: 'en-US' })

for (const entry of entries.items) {
  const enBody = entry.fields.body['en-US']

  const response = await fetch('https://api.usepolylingo.com/v1/translate', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.POLYLINGO_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      content: enBody,
      format: 'markdown',
      targets: ['es-ES', 'fr-FR', 'de-DE'],
    }),
  })

  const { translations } = await response.json()

  for (const [locale, content] of Object.entries(translations)) {
    entry.fields.body[locale] = content
  }

  await entry.update()
  await entry.publish()
}
🌀

Webflow + PolyLingo

API הלוקליזציה של Webflow (זמין בתוכניות CMS ו-Business) תומך בתוכן שדות ספציפיים ללוקאל. הסקריפט למטה מושך פריטי אוסף CMS, מתרגם את שדה גוף ה-HTML, וכותב את התרגומים חזרה לכל וריאנט לוקאל דרך Webflow v2 API.

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

scripts/translate-webflow.mjs
// scripts/translate-webflow.mjs
// Webflow Localization API + PolyLingo

const headers = {
  'Authorization': `Bearer ${process.env.WEBFLOW_API_TOKEN}`,
  'accept-version': '2.0.0',
  'Content-Type': 'application/json',
}

// Fetch English CMS items
const itemsRes = await fetch(
  `https://api.webflow.com/v2/collections/${process.env.WEBFLOW_COLLECTION_ID}/items`,
  { headers }
)
const { items } = await itemsRes.json()

for (const item of items) {
  const response = await fetch('https://api.usepolylingo.com/v1/translate', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.POLYLINGO_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      content: item.fieldData['body-html'],
      format: 'html',
      targets: ['es', 'fr', 'de'],
    }),
  })

  const { translations } = await response.json()

  // Write translated content back to Webflow locale fields
  for (const [lang, content] of Object.entries(translations)) {
    await fetch(
      `https://api.webflow.com/v2/collections/${process.env.WEBFLOW_COLLECTION_ID}/items/${item.id}/locales/${lang}`,
      { method: 'PATCH', headers, body: JSON.stringify({ fieldData: { 'body-html': content } }) }
    )
  }
}

מה PolyLingo נותן למשתמשי CMS ללא ראש

  • Sanity — תרגום בעת פרסום דרך webhook, כתיבה חזרה לשדות הלוקאלים במסמך
  • Contentful — תרגום רשומות אוטומטי כאשר הלוקאל האנגלי מתעדכן
  • Webflow — תרגום פריטי אוסף CMS דרך ה-API
  • כל CMS ללא ראש עם API — דפוס האינטגרציה זהה
  • טקסט עשיר, Markdown ו-HTML נשמרים כראוי
  • כל 36 השפות בבקשה אחת — ללא קריאות נפרדות לכל שפה
  • עובד עם כל CMS שיש לו API ניהול
  • ניתן לתרגם מחדש את התוכן בכל פרסום — ללא סינכרון ידני

זרימת העבודה הסטנדרטית של CMS רב-לשוני

1

כתוב תוכן בשפת המקור שלך

צור ופרסם תוכן באנגלית (או כל שפה שהיא שפת המקור שלך). ה-CMS שלך מאחסן זאת כגרסה הרשמית. אין צורך לשנות את זרימת העבודה העריכתית שלך כלל.

2

הפעל את סקריפט התרגום

הרץ את הסקריפט ידנית, לפי לוח זמנים, או דרך webhook שמופעל על ידי אירועי פרסום תוכן ב-CMS שלך. הסקריפט קורא ל-PolyLingo פעם אחת לכל מסמך עם כל שפות היעד, ואז כותב את כל התרגומים חזרה ל-CMS שלך בפעולה אחת.

3

פרוס — התוכן המתורגם חי

ה-frontend שלך קורא תוכן ספציפי ללוקאל מה-CMS כרגיל. אין צורך בשינויים בקוד ה-frontend שלך. התוכן המתורגם מופיע בשפה הנכונה לכל נתיב לוקאל.

למי זה מיועד

✍️

צוותי תוכן ב-Sanity או Contentful

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

🏢

סוכנויות שבונות אתרים רב-לשוניים

כל אתר לקוח שאתה בונה צריך תמיכה רב-לשונית. PolyLingo נותנת לך אינטגרציה שניתנת לשימוש חוזר, שניתן לחייב עליה, שעובדת עם כל CMS ללא ראש בערימה שלך.

🌍

מסחר אלקטרוני עם תוכן מוצר מותאם מקומית

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

שאלות נפוצות על רב-לשוניות ב-CMS ללא ראש

האם PolyLingo עובד עם CMS שלא מופיעים כאן?

כן. כל CMS שיש לו API ניהול ניתן לשלב באמצעות אותו דפוס — משוך תוכן, קרא ל-PolyLingo, כתוב חזרה. Prismic, Storyblok, DatoCMS, Strapi, Ghost, ו-Directus כולם בעלי API ניהול ועובדים עם הגישה הזו. דוגמאות האינטגרציה ל-Sanity, Contentful ו-Webflow למעלה ממחישות את הדפוס.

האם אפשר לתרגם טקסט עשיר עם תמונות וקישורים מוטמעים?

כן. תרגום HTML שומר על כל האלמנטים המוטמעים כולל תמונות (מאפייני src ו-alt מטופלים כראוי), קישורים (href נשמר, טקסט הקישור מתורגם), ו-iframes. החריג היחיד הוא תוכן שמסומן במפורש כלא לתרגום — בלוקי קוד, למשל, לעולם לא מתורגמים.

איך מטפלים בתוכן שלא צריך לתרגם?

לתוכן מובנה עם שדות לא לתרגום (slugs, תאריכים, מזהים טכניים), שלח רק את השדות שברצונך לתרגם. לטקסט עשיר עם חלקים מעורבים של לתרגום ולא לתרגום, השתמש בפורמט HTML — PolyLingo יתרגם את תוכן הטקסט תוך שמירה אוטומטית על בלוקי קוד ואלמנטים מובנים אחרים.

מה אם ל-CMS שלי יש סוגי תוכן מקוננים?

לתוכן מקונן עמוק (מסמכים עם הפניות למסמכים אחרים), תרגם כל סוג מסמך בנפרד. זה מונע הפניות מעגליות ונותן לך שליטה נקייה על אילו תוכן מתורגם. ההפניות בין מסמכים נשמרות על ידי ה-CMS — PolyLingo נוגע רק בתוכן השדה, לא בקשרים בין המסמכים.

איך שומרים על סינכרון התרגומים כשמשתנה תוכן המקור?

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

האם יש דרך לסמן תרגומים כ"דורשים סקירה" במקום לפרסם אוטומטית?

זה תלוי ב-CMS שלך. Contentful ו-Sanity תומכים במצבי טיוטה — אפשר לכתוב תוכן מתורגם כטיוטה במקום לפרסם, מה שמאפשר סקירה אנושית לפני שכל לוקאל עולה לאוויר. דוגמאות הסקריפט למעלה משתמשות בפרסום/יצירה מיידית; שנה את השלב הסופי ליצירת טיוטות במקום עבור זרימת עבודה עם סקירה.

הוסף רב-לשוניות ל-CMS ללא ראש שלך היום.

רמה חינמית. 50,000 טוקנים לחודש. ללא צורך בכרטיס אשראי.

התחל לתרגם בחינם

רמה חינמית — 50,000 טוקנים לחודש. עובד עם כל CMS.

רב-לשוני עבור CMS ללא ראש — Sanity, Contentful, ומעבר לכך — PolyLingo | PolyLingo