Monikielisyys päänuttomille CMS-järjestelmille.
Polylang toi WordPress-sivustoille täydellisen monikielisen työnkulun. PolyLingo tuo tämän työnkulun Sanityyn, Contentfuliin, Webflow'hun, Frameriin ja kaikkiin muihin päänuttomiin CMS-järjestelmiin — REST-rajapinnan kautta, joka integroidaan iltapäivässä.
Päänuttomien CMS-järjestelmien monikielisyys on ratkaisematon ongelma.
Sanityllä on kansainvälistymislaajennus. Contentfulilla on paikalliset kielet. Mutta kumpikaan ei käännä sisältöäsi — ne vain tallentavat sen useilla kielillä. Näiden kielipaikkojen täyttäminen on edelleen manuaalista työtä. Vie englanninkielinen sisältö, käsittele se käännöstyökalun kautta, joka rikkoo rikastekstin tai JSON-rakenteen, korjaa tulos, tuo sen takaisin, toista jokaiselle kielelle. Aktiiviselle sisällöntuotantotiimille, joka julkaisee säännöllisesti, tämä työnkulku ei skaalaudu. Useimmissa pienemmissä järjestelmissä sitä ei edes ole, joten sisältöä ei koskaan käännetä.
Päänuttoman CMS-arkkitehtuurin ansiosta sisällön hallinta on erotettu sisällön toimituksesta. Tämä lisää joustavuutta. Mutta se luo aukon: CMS tallentaa kieliversiot, mutta kukaan ei täytä niitä käännetyllä sisällöllä. Sinun täytyy rakentaa tämä kerros itse.
Useimmat tiimit päätyvät kahteen tilanteeseen: he kääntävät sisällön manuaalisesti kopioimalla sen DeepL:ään ja liittämällä takaisin (hidas, virhealtti, ei skaalaudu), tai he kirjoittavat räätälöidyn integraation käännös-API:lle, jota heidän täytyy ylläpitää loputtomasti. Kumpikaan ei ole hyvä ratkaisu. PolyLingo on puhdas kolmas vaihtoehto.
PolyLingo on käännöskerros, joka CMS:ltäsi puuttuu.
PolyLingo integroituu suoraan CMS-julkaisutyönkulkuusi. Määritä webhook, joka aktivoituu sisällön julkaisuhetkellä, lähetä sisältö PolyLingolle, vastaanota käännetyt versiot kaikille kielille ja kirjoita ne takaisin CMS:ään. Sanitylle tämä on muutama rivi palvelintoiminnossa. Contentfulille se on webhook-käsittelijä. Räätälöidyissä järjestelmissä se on HTTP-kutsu. Käännösmalli ymmärtää sisältömuotosi — Markdown, HTML, JSON, rikasteksti — ja säilyttää rakenteen läpi.
Malli on johdonmukainen kaikissa CMS-järjestelmissä: hae sisältö lähdekielellä, kutsu PolyLingo API kaikilla kohdekielillä, kirjoita käännetty sisältö takaisin CMS:ään sen hallinta-API:n kautta. Tämä toimii rakennusaikaisena skriptinä, CI-tehtävänä tai webhook-käsittelijänä — mikä tahansa sopii työnkulkuusi.
PolyLingo käsittelee Markdownin, HTML:n ja tavallisen tekstin, joten se toimii minkä tahansa CMS:n rikassisältömuodon kanssa. Rakenteelliset kentät (otsikot, runko, ote) voidaan kääntää erikseen, jolloin saat tarkkaa hallintaa siitä, mitkä kentät käännetään.
Sanity + PolyLingo
Sanityn Document Internationalization -laajennus luo linkitetyt dokumenttiversiot kullekin paikalliselle kielelle. Alla oleva skripti hakee englanninkieliset perusdokumentit ja luo automaattisesti käännetyt versiot jokaiselle kohdekielelle.
Toimii dokumenttitason i18n-mallin (yksi dokumentti per kieli) sekä kenttätason mallin (kaikki kielet yhdessä dokumentissa) kanssa. Kenttätason mallissa silmukoi kenttien yli dokumenttien sijaan.
// 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 tallentaa kieliversiot kenttinä samassa merkinnässä. Alla oleva skripti käyttää Contentful Management API:a hakeakseen englanninkieliset merkinnät, kääntääkseen ne ja kirjoittaakseen käännetyn sisällön suoraan kielikohtaisiin kenttiin — manuaalista kopiointia ei tarvita.
Contentful käyttää BCP 47 -kielikoodeja (esim. es-ES eikä es). Kartuta PolyLingon ISO 639-1 -koodit Contentfulin kieliasetuksiin vastaavasti.
// 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
Webflow’n Localization API (saatavilla CMS- ja Business-suunnitelmissa) tukee kielikohtaista kenttäsisältöä. Alla oleva skripti hakee CMS-kokoelman kohteet, kääntää HTML-runkokentän ja kirjoittaa käännökset takaisin jokaiseen kieliversioon Webflow v2 API:n kautta.
Webflow tallentaa rikastekstit kentät HTML:nä. PolyLingon HTML-käännös säilyttää kaiken Webflow’n generoiman merkinnän — mukautetut luokat, attribuutit ja upotetut elementit — koskemattomina.
// 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 } }) }
)
}
}Mitä PolyLingo antaa päänuttomien CMS-käyttäjille
- ✓Sanity — käännä julkaistaessa webhookin kautta, kirjoita takaisin dokumentin kieliversioihin
- ✓Contentful — käännä merkinnät automaattisesti, kun englanninkielinen versio päivitetään
- ✓Webflow — käännä CMS-kokoelman kohteet API:n kautta
- ✓Mikä tahansa päänuttomainen CMS, jossa on API — integraatiomalli on sama
- ✓Rikasteksti, Markdown ja HTML säilyvät oikein
- ✓Kaikki 36 kieltä yhdellä pyynnöllä — ei kielikohtaisia kutsuja
- ✓Toimii minkä tahansa CMS:n kanssa, jolla on hallinta-API
- ✓Sisältö voidaan kääntää uudelleen jokaisella julkaisulla — ei manuaalista synkronointia
Tavallinen monikielinen CMS-työnkulku
Kirjoita sisältö lähdekielelläsi
Luo ja julkaise sisältö englanniksi (tai millä tahansa lähdekielelläsi). CMS tallentaa tämän auktoritatiivisena versiona. Sinun ei tarvitse muuttaa toimituksellista työnkulkua lainkaan.
Käynnistä käännösskripti
Suorita skripti manuaalisesti, aikataulutetusti tai webhookin kautta, joka aktivoituu sisällön julkaisun yhteydessä CMS:ssäsi. Skripti kutsuu PolyLingoa kerran per dokumentti kaikilla kohdekielillä ja kirjoittaa kaikki käännökset takaisin CMS:ään yhdellä kertaa.
Ota käyttöön — käännetty sisältö on käytettävissä
Frontend lukee kielikohtaista sisältöä CMS:stä kuten tavallista. Frontend-koodiin ei tarvitse tehdä muutoksia. Käännetty sisältö näkyy oikealla kielellä kullekin kielireitille.
Kenelle tämä on suunniteltu
Sisältötiimit Sanityllä tai Contentfulilla
Toimittajasi julkaisevat englanniksi. Käännetty sisältö näkyy automaattisesti kaikissa kieliversioissa ilman, että toimitustiimin tarvitsee käyttää käännöstyökaluja.
Toimistot, jotka rakentavat monikielisiä sivustoja
Jokainen rakentamasi asiakassivusto tarvitsee monikielisen tuen. PolyLingo antaa uudelleenkäytettävän, laskutettavan integraation, joka toimii missä tahansa päänuttomassa CMS:ssä pinossasi.
Verkkokauppa paikallisella tuotesisällöllä
Tuotekuvaukset, kategoriasivut ja blogisisältö — kaikki käännetään automaattisesti julkaistaessa. Yhdistä paikalliseen hinnoitteluun tarjotaksesi täysin lokalisoitu ostokokemus.
Usein kysytyt kysymykset päänuttomien CMS-järjestelmien monikielisyydestä
Toimiiko PolyLingo CMS-järjestelmien kanssa, joita ei ole tässä listattu?
Kyllä. Mikä tahansa CMS, jolla on hallinta-API, voidaan integroida samalla mallilla — hae sisältö, kutsu PolyLingo, kirjoita takaisin. Prismic, Storyblok, DatoCMS, Strapi, Ghost ja Directus kaikki tarjoavat hallinta-API:n ja toimivat tämän lähestymistavan kanssa. Sanityn, Contentfulin ja Webflow’n integraatioesimerkit yllä havainnollistavat mallia.
Voinko kääntää rikastekstiä, jossa on upotettuja kuvia ja linkkejä?
Kyllä. HTML-käännös säilyttää kaikki upotetut elementit, mukaan lukien kuvat (src- ja alt-attribuutit käsitellään oikein), linkit (href säilyy, linkkiteksti käännetään) ja iframe-elementit. Ainoa poikkeus on sisältö, joka on nimenomaisesti merkitty kääntämättömäksi — esimerkiksi koodilohkot eivät koskaan käänny.
Miten käsittelen sisältöä, jota ei pitäisi kääntää?
Rakenteellisessa sisällössä, jossa on kääntämättömiä kenttiä (slugit, päivämäärät, tekniset tunnisteet), lähetä vain ne kentät, jotka haluat käännettävän. Rikastekstissä, jossa on sekä käännettäviä että kääntämättömiä osia, käytä HTML-muotoa — PolyLingo kääntää tekstisisällön säilyttäen koodilohkot ja muut rakenteelliset elementit automaattisesti.
Entä jos CMS:ssäni on sisäkkäisiä sisältötyyppejä?
Syvästi sisäkkäisissä sisällöissä (dokumentit, joissa on viittauksia muihin dokumentteihin) käännä jokainen dokumenttityyppi erikseen. Tämä välttää sykliset viittaukset ja antaa sinulle selkeän hallinnan siitä, mikä sisältö käännetään. Viittaukset dokumenttien välillä säilyy CMS:n toimesta — PolyLingo käsittelee vain kenttäsisällön, ei dokumenttisuhteita.
Miten pidän käännökset synkronissa, kun lähdesisältö muuttuu?
Suositeltu malli on käynnistää käännösskripti jokaisella julkaisutapahtumalla CMS-webhookin kautta. Tämä varmistaa, että käännetty sisältö päivittyy aina, kun lähde muuttuu. Harvemmissa päivityksissä skriptin ajaminen yöllä tai ennen tuotantoon vientiä toimii yhtä hyvin.
Onko mahdollista merkitä käännökset "tarvitsee tarkistusta" -tilaan automaattisen julkaisun sijaan?
Tämä riippuu CMS:stäsi. Contentful ja Sanity tukevat luonnostiloja — voit kirjoittaa käännetyn sisällön luonnoksena julkaistun sijaan, jolloin ihmisarviointi on mahdollista ennen kuin kieliversio julkaistaan. Yllä olevat skriptiesimerkit käyttävät välitöntä julkaisua/luontia; muokkaa viimeistä vaihetta luomaan luonnoksia tarkistustyönkulun mahdollistamiseksi.
Aiheeseen liittyvät oppaat
Käännä HTML rikkomatta merkintöjä
Miten PolyLingo käsittelee CMS:n generoimaa HTML:ää säilyttäen kaikki tagit.
Lisää monikielisyys Next.js:ään
Yhdistä päänuttoman CMS:n sisällön käännös next-intl-käyttöliittymämerkkien käännökseen.
Polylang-vaihtoehto moderneille pinoille
Monikielisen työnkulun siirto WordPressistä päänuttomaan järjestelmään.
Lisää monikielisyys päänuttomaasi CMS:ään jo tänään.
Ilmainen taso. 100 000 tokenia kuukaudessa. Ei luottokorttia vaadita.
Aloita ilmainen kääntäminenIlmainen taso — 100 000 tokenia kuukaudessa. Toimii minkä tahansa CMS:n kanssa.