# General Translation Knowledge Base: How do I translate content in Storyblok?
URL: https://generaltranslation.com/en-GB/kb/translate-storyblok-content.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: In Storyblok, add your target languages to the space and give each translatable field a value per language. General Translation's Storyblok integration fills those values from the Dashboard with Sync and apply, as drafts you review and publish in Storyblok.
Category: Workflow Tools
Last updated: 2026-10-21
Authors: Kevin Liu, Kevin Wu
Published: 2026-10-21

Storyblok stores translations at field level once you add languages to a space: each field marked translatable in its component schema holds one value per language in the same story, and your app requests a language using the Content Delivery API&#39;s `language` parameter. Filling in those values is difficult: a story is a tree of nested blocks, rich text has marks such as bold and links that must survive translation, and each result must go back into the same field and language. A field that isn&#39;t marked translatable stores no translation, and an edit to the source leaves the other languages out of date.

## Video

The video is narrated in English, with English captions.

[How do I translate content in Storyblok?](https://caxecubb9c64cezv.public.blob.vercel-storage.com/films/kb-translate-storyblok-content.mp4) (50 secs)

General Translation lets you connect your space and translate stories with Sync and apply. Add your target languages in Storyblok, connect the space in the Dashboard, choose stories and target locales with Auto-enable supported fields checked, then review the Spanish, Japanese and French drafts, publish them, and fetch each language with the language parameter.

## Ways to translate Storyblok content

| Approach                                       | What it does well                                                                                                                                                                          | How translations get into the story                                                 | What it leaves to you                                                                                                                     |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| Translating by hand in Storyblok&#39;s editor  | A translator sees each field in its story                                                                                                                                                  | A person types each value while viewing that language                               | Every translation, and finding the fields that changed after each source edit                                                             |
| Google Translate                               | Translates a field&#39;s text when you paste it in, with no set-up                                                                                                                         | A person pastes each translated value back into its field                           | Context (each field is translated on its own, without the block around it), rich text marks, consistent terms, and redoing changed fields |
| A script on an AI API (OpenAI API, Claude API) | Translates many stories in one scripted run, with your tone and terms in the prompt                                                                                                        | A script you write reads and updates stories through Storyblok&#39;s Management API | Walking nested blocks, keeping rich text marks, context for each field, consistent terms, and rerunning after edits                       |
| General Translation (Storyblok integration)    | Translates `text`, `textarea`, `markdown`, `richtext`, and `table` fields, nested blocks included; keeps rich text marks; sends each field with context from its location, type, and story | **Sync and apply** writes each target language into the story as a draft            | Adding languages in Storyblok, rerunning **Sync and apply** after source edits, and reviewing and publishing each draft                   |

Translate by hand in Storyblok&#39;s editor when you have a few stories and a translator for each language; nothing more is needed. Use Google Translate or an AI API script when someone checks a one-off batch by hand; use General Translation when stories change often or span many blocks and languages.

## Translate stories with General Translation

General Translation&#39;s Storyblok integration runs from the Dashboard, with nothing to install, and requires a Starter or Enterprise plan.

1. In Storyblok, add your target languages under **Settings &gt; Internationalization**.
2. Create a personal access token under **My account &gt; Account settings &gt; Personal access tokens**.
3. In the Dashboard, open **Project &gt; Integrations &gt; Catalog**, click **Connect** on **Storyblok**, and enter the **Space ID**, **Region** and token.
4. Choose stories and target locales. Tick **Auto-enable supported fields** if supported fields aren&#39;t translatable yet (this updates every component in the space).
5. Click **Sync and apply**.

## Review, publish, and update drafts

The run writes each language into the story as a draft and publishes nothing: review and publish the draft in Storyblok, and request it with `language` (add `version=draft` to preview). Each rerun reuses the translations in the story, including values you edited in Storyblok, and translates new or changed fields. The [Storyblok Quickstart](/docs/integrations/storyblok/quickstart) has the full steps.

## Related questions

- [How do I translate content in Sanity?](https://generaltranslation.com/en-GB/kb/translate-sanity-content.mdx): Store each language as its own document or as a value per locale in each field, then translate the source into every target locale. General Translation's gt-sanity plugin adds a Translate action to Sanity Studio and, by default, imports each translation as a draft you review and publish.
- [How do I translate a Mintlify docs site?](https://generaltranslation.com/en-GB/kb/translate-mintlify-docs.mdx): Write a translated copy of every page in a folder per language and add each language to the docs.json navigation. General Translation's AI agent, Locadex, opens a pull request that adds the translated pages and per-language navigation, then translates later changes.
- [How do I translate Google Slides?](https://generaltranslation.com/en-GB/kb/translate-google-slides.mdx): Copy the deck once per language, replace the text in every text box, table cell and speaker note, and resize text that overflows. General Translation's Google Drive integration writes each language to its own copy alongside the source and runs a formatting pass to fit the new text to each slide.
- [How do I review and edit translations?](https://generaltranslation.com/en-GB/kb/review-translations.mdx): Compare each translation with its source and the other locales, and fix anything that doesn't read right. With General Translation, you edit translations on the Dashboard's Translations page and track review with labels and comments, and the next translation run by Locadex, its AI agent, brings the edits into a pull request.

## Previous and next questions

- Previous question: [How do I translate content in Sanity?](https://generaltranslation.com/en-GB/kb/translate-sanity-content.mdx)
- Next question: [How do I translate Google Slides?](https://generaltranslation.com/en-GB/kb/translate-google-slides.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/en-GB/kb/sitemap.md) for every article.
