Mehrsprachigkeit für Headless CMS.
Polylang hat WordPress-Seiten einen vollständigen mehrsprachigen Workflow gegeben. PolyLingo bringt diesen Workflow zu Sanity, Contentful, Webflow, Framer und jedem anderen Headless CMS — über eine REST-API, die sich an einem Nachmittag integrieren lässt.
Mehrsprachigkeit bei Headless CMS ist ein ungelöstes Problem.
Sanity hat das Internationalisierungs-Plugin. Contentful hat Lokalisierungen. Aber keines von beiden übersetzt Ihre Inhalte — sie speichern sie nur in mehreren Sprachen. Das Befüllen dieser Sprachfelder ist immer noch ein manueller Prozess. Exportieren Sie die englischen Inhalte, führen Sie sie durch ein Übersetzungstool, das Ihre Rich-Text- oder JSON-Struktur zerstört, korrigieren Sie die Ausgabe, importieren Sie sie zurück, wiederholen Sie das für jede Sprache. Für ein aktives Content-Team, das regelmäßig veröffentlicht, skaliert dieser Workflow nicht. Er existiert auch für die meisten kleineren Setups nicht, was bedeutet, dass die Inhalte oft gar nicht übersetzt werden.
Die Headless-CMS-Architektur trennt Content-Management von Content-Auslieferung. Das ist gut für Flexibilität. Aber es entsteht eine Lücke: Das CMS speichert Sprachvarianten, aber nichts füllt diese Sprachvarianten mit übersetzten Inhalten. Diese Schicht müssen Sie selbst bauen.
Die meisten Teams landen in einer von zwei Situationen: Sie übersetzen Inhalte manuell, indem sie sie in DeepL kopieren und zurückeinfügen (langsam, fehleranfällig, skaliert nicht), oder sie schreiben eine benutzerdefinierte Integration mit einer Übersetzungs-API, die sie dauerhaft warten müssen. Keine der beiden Lösungen ist gut. PolyLingo ist eine saubere dritte Option.
PolyLingo ist die Übersetzungsschicht, die Ihrem CMS fehlt.
PolyLingo integriert sich direkt in Ihren CMS-Veröffentlichungsworkflow. Richten Sie einen Webhook ein, der beim Veröffentlichen von Inhalten ausgelöst wird, übergeben Sie die Inhalte an PolyLingo, erhalten Sie übersetzte Versionen für jede Sprache und schreiben Sie diese zurück in Ihr CMS. Für Sanity sind das nur ein paar Zeilen in einer Server-Aktion. Für Contentful ist es ein Webhook-Handler. Für benutzerdefinierte Setups ein HTTP-Aufruf. Das Übersetzungsmodell versteht Ihr Inhaltsformat — Markdown, HTML, JSON, Rich Text — und bewahrt die Struktur durchgehend.
Das Muster ist bei jedem CMS konsistent: Inhalte in der Quellsprache abrufen, die PolyLingo-API mit allen Zielsprachen aufrufen, die übersetzten Inhalte über die Management-API zurück ins CMS schreiben. Das läuft als Build-Skript, CI-Job oder Webhook-Handler — je nachdem, was zu Ihrem Workflow passt.
PolyLingo verarbeitet Markdown, HTML und Klartext, sodass es mit jedem Format funktioniert, das Ihr CMS für reichhaltige Inhalte verwendet. Strukturierte Felder (Überschriften, Haupttext, Auszug) können einzeln übersetzt werden, um Ihnen granularen Einfluss darauf zu geben, welche Felder übersetzt werden.
Sanity + PolyLingo
Sanitys Document Internationalization Plugin erstellt verknüpfte Dokumentvarianten pro Locale. Das folgende Skript holt die englischen Basisdokumente und erstellt automatisch übersetzte Varianten für jede Zielsprache.
Funktioniert mit dem Dokument-Level-i18n-Muster (ein Dokument pro Locale) sowie dem Feld-Level-Muster (alle Locales in einem Dokument). Für das Feld-Level-Muster über Felder statt Dokumente iterieren.
// 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 speichert Locale-Varianten als Felder im selben Eintrag. Das folgende Skript nutzt die Contentful Management API, um englische Einträge abzurufen, zu übersetzen und die übersetzten Inhalte direkt in die locale-spezifischen Felder zu schreiben — kein manuelles Kopieren und Einfügen nötig.
Contentful verwendet BCP 47 Locale-Codes (z.B. es-ES statt es). Ordnen Sie PolyLingos ISO 639-1-Codes entsprechend Ihrer Contentful-Locale-Konfiguration zu.
// 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
Webflows Localization API (verfügbar in CMS- und Business-Plänen) unterstützt locale-spezifische Feldinhalte. Das folgende Skript holt CMS-Sammlungsobjekte, übersetzt das HTML-Body-Feld und schreibt die Übersetzungen über die Webflow v2 API zurück in jede Locale-Variante.
Webflow speichert Rich-Text-Felder als HTML. PolyLingos HTML-Übersetzung bewahrt alle von Webflow generierten Markups — benutzerdefinierte Klassen, Attribute und eingebettete Elemente — unverändert.
// 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 } }) }
)
}
}Was PolyLingo Headless-CMS-Nutzern bietet
- ✓Sanity — Übersetzen beim Veröffentlichen via Webhook, zurückschreiben in Dokument-Lokalisierungen
- ✓Contentful — Einträge automatisch übersetzen, wenn die englische Lokalisierung aktualisiert wird
- ✓Webflow — CMS-Sammlungsobjekte über die API übersetzen
- ✓Jedes Headless CMS mit API — das Integrationsmuster ist dasselbe
- ✓Rich Text, Markdown und HTML werden alle korrekt erhalten
- ✓Alle 43 Sprachen in einer Anfrage — keine Aufrufe pro Sprache
- ✓Funktioniert mit jedem CMS, das eine Management-API hat
- ✓Inhalte können bei jeder Veröffentlichung neu übersetzt werden — keine manuelle Synchronisation
Der Standard-Workflow für mehrsprachige CMS
Inhalte in Ihrer Quellsprache schreiben
Erstellen und veröffentlichen Sie Inhalte in Englisch (oder welcher Sprache auch immer Ihre Quelle ist). Ihr CMS speichert dies als autoritative Version. Sie müssen Ihren redaktionellen Workflow nicht ändern.
Das Übersetzungsskript auslösen
Führen Sie das Skript manuell, zeitgesteuert oder über einen Webhook aus, der bei Veröffentlichungsereignissen in Ihrem CMS ausgelöst wird. Das Skript ruft PolyLingo einmal pro Dokument mit allen Zielsprachen auf und schreibt alle Übersetzungen in einem Durchgang zurück ins CMS.
Bereitstellen — übersetzte Inhalte sind live
Ihr Frontend liest wie gewohnt locale-spezifische Inhalte aus dem CMS. Es sind keine Änderungen am Frontend-Code erforderlich. Die übersetzten Inhalte erscheinen in der richtigen Sprache für jede Locale-Route.
Für wen das gebaut wurde
Content-Teams bei Sanity oder Contentful
Ihre Redakteure veröffentlichen auf Englisch. Übersetzte Inhalte erscheinen automatisch in allen Locales, ohne dass das Redaktionsteam mit Übersetzungstools interagieren muss.
Agenturen, die mehrsprachige Seiten erstellen
Jede Kundenwebsite, die Sie erstellen, benötigt Mehrsprachigkeit. PolyLingo bietet Ihnen eine wiederverwendbare, abrechenbare Integration, die mit jedem Headless CMS in Ihrem Stack funktioniert.
E-Commerce mit lokalisierten Produktinhalten
Produktbeschreibungen, Kategorieseiten und Blog-Inhalte — alle automatisch übersetzt beim Veröffentlichen. Kombinieren Sie das mit locale-spezifischen Preisen für ein vollständig lokalisiertes Einkaufserlebnis.
Häufig gestellte Fragen zu Headless CMS Mehrsprachigkeit
Funktioniert PolyLingo auch mit CMS, die hier nicht aufgeführt sind?
Ja. Jedes CMS mit einer Management-API kann mit demselben Muster integriert werden — Inhalte abrufen, PolyLingo aufrufen, zurückschreiben. Prismic, Storyblok, DatoCMS, Strapi, Ghost und Directus haben alle Management-APIs und funktionieren mit diesem Ansatz. Die Integrationsbeispiele für Sanity, Contentful und Webflow oben veranschaulichen das Muster.
Kann ich Rich Text mit eingebetteten Bildern und Links übersetzen?
Ja. Die HTML-Übersetzung bewahrt alle eingebetteten Elemente, einschließlich Bilder (src- und alt-Attribute werden korrekt behandelt), Links (href bleibt erhalten, Linktext wird übersetzt) und iframes. Die einzige Ausnahme sind Inhalte, die explizit als nicht übersetzbar markiert sind — Codeblöcke zum Beispiel werden nie übersetzt.
Wie gehe ich mit Inhalten um, die nicht übersetzt werden sollen?
Für strukturierte Inhalte mit nicht übersetzbaren Feldern (Slugs, Daten, technische Identifikatoren) senden Sie nur die Felder, die übersetzt werden sollen. Für Rich Text mit gemischten übersetzbaren und nicht übersetzbaren Abschnitten verwenden Sie das HTML-Format — PolyLingo übersetzt den Textinhalt und bewahrt Codeblöcke und andere strukturierte Elemente automatisch.
Was, wenn mein CMS verschachtelte Inhaltstypen hat?
Für tief verschachtelte Inhalte (Dokumente mit Referenzen auf andere Dokumente) übersetzen Sie jeden Dokumenttyp unabhängig. Das vermeidet zirkuläre Referenzen und gibt Ihnen saubere Kontrolle darüber, welche Inhalte übersetzt werden. Referenzen zwischen Dokumenten werden vom CMS verwaltet — PolyLingo berührt nur die Feldinhalte, nicht die Dokumentbeziehungen.
Wie halte ich Übersetzungen synchron, wenn sich die Quellinhalte ändern?
Das empfohlene Muster ist, das Übersetzungsskript bei jedem Veröffentlichungsereignis über einen CMS-Webhook auszulösen. So wird sichergestellt, dass übersetzte Inhalte aktualisiert werden, sobald sich die Quelle ändert. Für seltener aktualisierte Inhalte funktioniert es ebenso gut, das Skript nachts oder vor jedem Produktions-Deployment auszuführen.
Gibt es eine Möglichkeit, Übersetzungen als "Überprüfung erforderlich" zu markieren, statt sie automatisch zu veröffentlichen?
Das hängt von Ihrem CMS ab. Contentful und Sanity unterstützen beide Entwurfszustände — Sie können übersetzte Inhalte als Entwurf statt veröffentlicht speichern, sodass eine menschliche Überprüfung vor dem Live-Schalten jeder Locale möglich ist. Die obigen Skriptbeispiele verwenden sofortiges Veröffentlichen/Erstellen; ändern Sie den letzten Schritt, um stattdessen Entwürfe zu erstellen für einen Review-Workflow.
Verwandte Anleitungen
HTML übersetzen ohne Markup zu zerstören
Wie PolyLingo CMS-generiertes HTML mit vollständiger Tag-Erhaltung behandelt.
Mehrsprachigkeit zu Next.js hinzufügen
Kombinieren Sie Headless-CMS-Inhaltsübersetzung mit next-intl UI-String-Übersetzung.
Polylang-Alternative für moderne Stacks
Migration des mehrsprachigen Workflows von WordPress zu einer Headless-Konfiguration.
Fügen Sie Ihrem Headless CMS noch heute Mehrsprachigkeit hinzu.
Kostenlose Stufe. 50.000 Tokens pro Monat. Keine Kreditkarte erforderlich.
Kostenlos mit Übersetzen startenKostenlose Stufe — 50.000 Tokens pro Monat. Funktioniert mit jedem CMS.