Korte versie

Kort antwoord: zijn je talen inhoudelijk gelijk, vertaal dan per veld binnen één Storyblok-pagina. Verschilt de inhoud per taal of land, geef dan elke taal een eigen map. Een aparte space per markt heb je pas nodig als verschillende teams elk hun eigen site beheren. Leg daarna vast welke URL elke taal krijgt, koppel de taalversies met hreflang en spreek af hoe je redacteurs vertalen en nalezen.

Een meertalige website met Storyblok begint met één keuze: vertaal je per veld binnen dezelfde pagina, geef je elke taal een eigen map, of krijgt elke markt een eigen space? Zijn je talen inhoudelijk gelijk, dan volstaat vertaling per veld. Verschilt de inhoud per land, dan werk je met mappen. Een aparte space heb je pas nodig als verschillende teams elk hun eigen site beheren.

Ik bouw al meer dan 20 jaar websites, en tegenwoordig vaak met Storyblok en Astro, zoals de portfoliosite van New Impact in het Nederlands, Engels en Frans. In deze gids zet ik de keuzes op een rij die je vóór de bouw maakt. Hoe vertaal je content? Welke URL krijgt elke taal? Hoe koppelt Google de taalversies aan elkaar? En hoe vertalen je redacteurs zonder dubbel werk?

Wat heb je nodig voor een meertalige website?

Een meertalige website is meer dan vertaalde teksten. Je hebt vier dingen nodig die op elkaar aansluiten. Eerst een contentstructuur die elke taal kan dragen. Daarnaast een vaste URL per taal. Verder een koppeling tussen de taalversies voor zoekmachines. En ten slotte een manier van werken waarin iemand de vertalingen schrijft, naleest en publiceert.

In een headless CMS zoals Storyblok liggen die taken op twee plekken. Storyblok bewaart de content en de vertalingen. De frontend, bij ons meestal Astro, bepaalt welke URL’s er bestaan en welke hreflang-links in de broncode staan. Een goede opzet maakt die afspraken één keer en laat ze daarna automatisch werken, ook als je redacteurs volgend jaar een vierde taal toevoegen.

Vertalen per veld, per map of per space?

Storyblok beschrijft in de documentatie over internationalisering drie aanpakken. Ze sluiten elkaar niet uit, maar de eerste keuze bepaalt hoe je redacteurs elke dag werken.

AanpakHoe het werktPast bijLet op
Per veldEén story per pagina met een versie per taal; je markeert velden als vertaalbaarTalen met dezelfde inhoud en dezelfde paginaopbouwHet veldtype Blocks zelf is niet vertaalbaar, dus de opbouw is per taal gelijk
Per mapElke taal of markt krijgt een eigen map met eigen storiesInhoud die per land of taal afwijktMeer stories om te beheren; koppel de versies als alternatieve versies
Per spaceElke markt krijgt een eigen space, met gedeelde componenten via CLI en APIGrote projecten met aparte teams per markt of kanaalMeer beheer en synchronisatie tussen spaces

Vertalen per veld

Bij vertaling per veld voeg je de talen toe onder Settings, Internationalization. Daarna markeer je in de Block library welke velden vertaalbaar zijn. Een redacteur kiest in de Visual Editor de taal en vult de vertaalde velden in. Velden die je niet vertaalt, zoals een afbeelding of een datum, blijven voor elke taal gelijk.

Standaard publiceer je alle talen van een story tegelijk. Wil je een vertaling pas live zetten als ze klaar is, dan schakel je het publiceren per vertaling in. Via de API haal je een taal op met de parameter language. Met fallback_lang toon je bij een ontbrekende vertaling de tekst uit een andere taal, bijvoorbeeld Nederlands voor een Belgische variant die nog niet volledig is.

Een map per taal

Bij vertaling per map maak je bovenaan in Storyblok een map per taal of markt, bijvoorbeeld nl/, en/ en fr/. Elke map bevat eigen stories, zodat je in het Frans een blok kunt weglaten of een andere case kunt tonen. De app Dimensions koppelt de versies van dezelfde pagina over de mappen heen. Zonder die app schakel je Alternative Versions in en dupliceer je de map.

Deze aanpak kost meer beheer, want elke wijziging die voor alle talen geldt, voer je per map door. Daar staat tegenover dat elke taal echt eigen inhoud kan hebben. Voor bedrijven die in België en Nederland actief zijn met een ander aanbod per land, is dat vaak de eerlijkste keuze.

Een aparte space per markt

Een aparte space per markt is bedoeld voor grote projecten waar teams los van elkaar werken, met eigen redacteurs en eigen planning. Componenten en content deel je dan via de CLI en de Management API van Storyblok. Voor de meeste kleine en middelgrote bedrijven is dat meer beheer dan nodig.

Je kunt per veld en per map ook combineren: een map per markt, met binnen elke map vertaling per veld. Storyblok geeft als voorbeeld een map voor de VS met Engels en Spaans, naast een map voor de EU met Engels, Spaans, Frans en Duits.

Welke URL krijgt elke taal?

Elke taal heeft een vaste plek in de URL nodig. In Astro stel je dat in met i18n-routing: je geeft de lijst met talen op en kiest een standaardtaal.

js
// astro.config.mjs
import { defineConfig } from 'astro/config'

export default defineConfig({
  i18n: {
    locales: ['nl', 'en', 'fr'],
    defaultLocale: 'nl',
    routing: { prefixDefaultLocale: false },
  },
})

Met prefixDefaultLocale: false, de standaardinstelling, krijgt de standaardtaal geen prefix: /over-ons in het Nederlands, /fr/... en /en/... voor de andere talen. Zet je die optie op true, dan krijgt elke taal een prefix, ook de standaardtaal. Kies dit vóór de lancering. Een latere wijziging verandert elke URL en vraagt een redirect per pagina.

Vertaalde slugs

Een tweede keuze is of de slug zelf vertaald wordt: /fr/a-propos in plaats van /fr/over-ons. Vertaalde slugs lezen natuurlijker voor bezoekers. Bij vertaling per veld regel je dat met de app Translatable Slugs; bij vertaling per map heeft elke story in de taalmap gewoon een eigen slug.

Deze site doet hetzelfde zonder CMS: laadtijd-website heet in het Engels website-performance, en een vaste koppellijst bepaalt welke pagina’s vertalingen van elkaar zijn. Die lijst voedt de hreflang-links en de sitemap, zodat er nooit een verwijzing naar een vertaling ontstaat die niet bestaat.

Hoe vertel je Google welke pagina’s bij elkaar horen?

Met hreflang vertel je Google welke pagina’s vertalingen van elkaar zijn. De regels staan in de richtlijnen van Google Search Central:

  • Elke taalversie verwijst naar zichzelf en naar alle andere versies.
  • Je gebruikt volledige URL’s, met https://.
  • De koppeling moet in beide richtingen bestaan; anders negeert Google ze.
  • Een x-default wijst naar de pagina voor bezoekers van wie de taal niet in de lijst staat.

Google noemt drie gelijkwaardige plekken voor die links: in de HTML, in de HTTP-headers of in de sitemap. Kies er één en hou die consequent bij. Google gebruikt hreflang niet om de taal van een pagina te herkennen; dat doet het zelf. Volledig vertaalde pagina’s gelden ook niet als dubbele content.

In een Storyblok-project haal je de gekoppelde versies op uit de story (de alternates of de vertaalde slugs) en laat je de frontend de links schrijven. Hoe je daarmee een sitemap per taal bouwt, met code, lees je in onze Engelstalige gids voor een gelokaliseerde sitemap met Astro en Storyblok.

Hoe vertalen je redacteurs?

De techniek bepaalt waar een vertaling staat. Wie de vertaling schrijft en naleest, spreek je apart af. Storyblok ondersteunt volgens de handleiding over vertalingen drie werkwijzen, en ze laten zich combineren.

Handmatig of met AI

Bij handmatig vertalen kiest de redacteur in de Visual Editor de taal en vult hij elk vertaalbaar veld in, eventueel met de standaardtaal ernaast. AI-vertalingen schakel je in via Settings, Labs. Daarna vertaal je een hele story of één veld tegelijk. Storyblok noemt 48 ondersteunde talen, waaronder Nederlands, Frans en Engels.

Werk je met een map per taal, dan maakt Dimensions met Create Clone & AI Translate een vertaalde kopie in de doelmap en koppelt die meteen als alternatieve versie. Bij elke AI-vertaling geldt hetzelfde: laat iemand die de taal en je klanten kent ze nalezen. Productnamen, vaktermen en juridische teksten zijn de plekken waar het misloopt.

Een vertaalbureau of TMS

Werk je met een vertaalbureau of een vertaalbeheersysteem (TMS), dan heeft Storyblok apps voor Crowdin, LingoHub, Localazy, Lokalise en Smartling. Met de apps Export Translatable Fields en Import Translatable Fields wissel je vertalingen uit als XML of JSON. Voor een site met twee of drie talen en een eigen redacteur is dat vaak niet nodig; voor tien talen wel.

Hoe deden we dat bij New Impact?

Voor het Antwerpse videoproductiehuis New Impact bouwden we een portfoliosite in het Nederlands, Engels en Frans, met Astro als frontend en Storyblok als CMS. Elke taal staat in Storyblok in een eigen map, zoals fr/ voor het Frans, en krijgt een eigen route op de website. Het team publiceert zelf nieuwe portfolio-items in elke taal, zonder een developer.

Nieuwe portfolio-items verschijnen in elke taal vanuit één contentstructuur. De site bleef ondertussen snel: in september 2026 haalde de startpagina op mobiel een PageSpeed-score van 100, met een LCP van 1,2 seconden. Dat zijn de waarden uit de maandelijkse meting op de casepagina.

Welke opzet past bij jouw meertalige website?

Vier vragen bepalen in de praktijk de opzet:

  • Is de inhoud per taal hetzelfde, op de vertaling na? Kies vertaling per veld.
  • Verschilt het aanbod, de cases of de opbouw per land of taal? Kies een map per taal.
  • Werken er aparte teams per markt met eigen planning? Overweeg een space per markt.
  • Wie vertaalt en wie leest na? Dat bepaalt of je handmatig, met AI of met een TMS werkt.

Leg daarnaast vóór de bouw de URL-structuur vast en controleer na de lancering of elke taalversie in Google Search Console verschijnt. Twijfel je tussen Storyblok en een klassiek CMS met een vertaalplugin, lees dan eerst onze vergelijking tussen Storyblok en WordPress.