How it works

Mark a field translatable: true in the component schema. In the story, the default language value lives under the field name (e.g. title). Each additional language is stored under title__i18n__<code>. This doc itself uses the mechanism — every translatable field on the page component is co-located with its German twin.

component.schema.ts
{
  title:    { type: 'text',     translatable: true, required: true },
  body:     { type: 'richtext', translatable: true },
  language: { type: 'option',   source: 'internal_languages' },
}
Component schema — mark fields translatable.
fetch.ts
const { data } = await storyblokApi.get('cdn/stories/home', {
  version: 'published',
  language: 'de',
})
// data.story.content.title already resolved to the German translation,
// with automatic fallback to the default language when missing.
SDK picks up language via ?language= — no custom code.