
Headless CMS scales and improves WPWhiteBoard’s content distribution, flexibility, and personalization
Anurag Mehta
When I think about internationalization in Storyblok CMS, it’s really about managing content so it works for multiple languages and regions. It’s the process I use to adapt my content, making it accessible and meaningful to people all over the world. Internationalization ensures that users in different countries can engage with my content in a way that feels natural to them.
Storyblok’s headless CMS architecture plays a big role here, and I find it fascinating how well it supports this. In a headless CMS, the content I create is separated from how it’s displayed. I can manage translations, adjust regional settings, and push content out seamlessly, all thanks to how Storyblok is built.
First off, it’s a key to reaching diverse audiences. If you only publish content in one language, you’re missing out on connecting with people who don’t speak it. By offering my content in multiple languages, you can tap into new markets and grow your reach, whether that’s attracting readers, customers, or partners from different parts of the world.
It also makes a huge difference to the user experience. When someone visits such a site and sees content in their language, they’re more likely to stick around, explore, and take action, like making a purchase or signing up for a newsletter.
And then there’s the business growth angle. As you think about expanding into new regions, internationalization becomes essential. You need to adapt the content to suit local preferences, whether that’s adjusting the tone, formatting dates and currencies, or even tweaking calls-to-action to align with cultural norms.
When you’re setting up internationalization in Storyblok, you have three main options to choose from: field-level translation, folder-level translation, and space-level translation. Each one fits different needs, depending on the complexity of my project and how much localization is required.
Storyblok offers three main approaches to internationalization: field-level translation, folder-level translation, and space-level translation. Each suits different project needs, depending on the complexity and localization requirements. Here’s a breakdown of what each approach involves and when to use it.
Here’s my updated comparison table, incorporating practical considerations and examples to make it more actionable:
Approach | Use Case | Pros | Cons | Example |
---|---|---|---|---|
Field-Level | Similar content structures across languages | Easy setup, supports AI translation, integrates with third-party tools like DeepL and Crowdin | Limited for highly localized content with structural differences | E-commerce site with multilingual product pages |
Folder-Level | Highly localized content | Flexible for structural differences, supports the Dimensions app for linking stories | Requires more setup and maintenance for multiple folders | News platform with region-specific article layouts |
Space-Level | Complex projects with dedicated teams | High autonomy, ideal for large-scale projects, supports CLI/API for component sharing | Complex to manage, requires technical expertise for API/CLI | Global retailer with region-specific e-commerce platforms |
These approaches aren’t mutually exclusive. For example, folder-level translation can be combined with field-level translation to offer multiple languages within region-specific content, providing flexibility to meet diverse project needs.
When fetching content, you can use the Content Delivery API to pull specific language versions. For field-level translation, add the language parameter, like this:
Storyblok.get('cdn/stories/home', {
language: 'es',
version: 'published',
})
.then(response => console.log(response))
.catch(error => console.log(error));
For folder-level translation, you can use the starts_with parameter to retrieve content from a specific folder:
Storyblok.get('cdn/stories/home', {
starts_with: 'es',
version: 'published',
})
.then(response => console.log(response))
.catch(error => console.log(error));
For space-level translation, configure separate API calls for each space, ensuring to access the right content for each region. This makes it easy to integrate Storyblok with my front-end framework, like Next.js or Nuxt.js, to deliver localized content dynamically.
Field-level translation in Storyblok is my preferred choice for managing translations when content has a consistent structure across languages. It’s ideal for projects like blogs or online stores where the layout stays the same, but text elements—such as titles, descriptions, or calls-to-action—need to vary by language.
When a project needs more than translated text, such as different layouts or components for different regions, folder-level translation is my go-to solution. It’s perfect for highly localized content, like a marketing site with unique designs for the US versus Japan.
For large-scale projects—like a global brand with separate platforms for different regions—space-level translation is the way I approach things. It provides each team or region with its own Storyblok space for complete independence.
When I need robust translation workflows for my Storyblok projects, third-party integrations are a fantastic option. They offer advanced features like translation memory and collaborative tools, complementing Storyblok’s built-in capabilities.
In the Visual Editor, select a translatable field, choose the target language, and use the DeepL option to generate translations. These can be reviewed and edited before saving. DeepL’s strength lies in its accuracy for complex phrases, but it requires an API subscription, which may add costs depending on translation volume.
For example, translating a blog post’s title and body from English to French involves selecting the fields, running DeepL’s translation, and verifying the output for tone and context. This integration streamlines the process but benefits from manual oversight to ensure cultural accuracy.
After setup, connect the app using Lokalise API credentials. Create a project in Lokalise, then map Storyblok content fields to Lokalise keys. Content can be exported to Lokalise for translation, where features like translation memory and glossaries ensure consistency. Once translations are complete, import them back into Storyblok via the app.
For instance, a product page with multiple fields can be exported to Lokalise, translated by a team, and synced back to Storyblok, maintaining consistent terminology across languages. Lokalise’s collaborative features are ideal for projects with multiple translators, though setup time and costs should be considered.
Storyblok content is exported to Crowdin, where translators work on it, leveraging tools like translation memory or machine translation integrations. After completion, translations are imported back into Storyblok. For example, a global e-commerce site can use Crowdin to manage translations for product descriptions across 10 languages, with daily syncs to keep content updated.
Crowdin’s strength is its scalability for large teams, but it requires careful configuration to avoid sync issues. Testing in a staging environment before publishing is recommended.
In addition to DeepL, Lokalise, and Crowdin, Storyblok supports integrations with services like Localazy and Smartling. Localazy simplifies translation with automated workflows and a user-friendly interface, ideal for smaller projects.
To make multilingual content discoverable, SEO is critical. Storyblok’s tools help optimize content for search engines, ensuring it reaches the right audiences.
For instance, an e-commerce site might use /products for English and /produkte for German, making navigation intuitive. Ensure slugs are consistent and avoid special characters to maintain SEO compatibility.
Hreflang tags signal to search engines which language or regional version of a page to display. In Storyblok, fetch content for each language using the Content Delivery API’s language parameter, then generate hreflang tags in the frontend. For example, a Next.js site might include:
<link rel="alternate" hreflang="en" href="https://example.com/en/about" />
<link rel="alternate" hreflang="es" href="https://example.com/es/sobre" />
Multilingual sitemaps are also essential. Create a sitemap for each language, listing all translated URLs, and submit them to search engines via tools like Google Search Console. Storyblok’s API can be used to generate sitemaps dynamically, ensuring all language variants are included.
Localization goes beyond translation to include cultural nuances, ensuring content resonates with local audiences.
Translatable fields in Storyblok can handle regional preferences like date formats (e.g., MM/DD/YYYY for the US, DD/MM/YYYY for Europe) and currencies (e.g., USD, EUR). Configure separate fields for these elements in the Block Library. For example, a product component might include a “price” field with currency-specific values, displayed based on the user’s language or region.
This approach ensures content feels familiar to users. For instance, a European user sees prices in euros with a comma decimal separator, while a US user sees dollars with a period.
Managing region-specific content, like promotions or legal notices, is straightforward with Storyblok. Use folder-level or space-level translation to create tailored content. For example, a US folder might include a “Black Friday Sale” story, while a European folder features a “GDPR Compliance” notice. Translatable fields within these structures can further refine content, such as localized calls-to-action.
Regular collaboration with local teams ensures accuracy. For instance, a Japanese campaign might prioritize formal language, while a Brazilian one uses a conversational tone.
When I think about making internationalization work smoothly in Storyblok, it’s all about setting up a strategy that aligns with my project’s goals. Whether I’m managing a small blog or a global enterprise site, following best practices helps me get the most out of Storyblok’s powerful tools.
Selecting the appropriate internationalization approach—field-level, folder-level, or space-level translation—depends on the project’s requirements. Here’s how to decide:
To choose, consider the project’s size, team structure, and localization depth. Smaller teams with simple needs benefit from field-level translation’s simplicity, while larger organizations with diverse requirements may need folder-level or space-level approaches. Combining approaches, like using field-level within folder-level translation, can address hybrid needs, such as offering multiple languages within a region-specific folder.
Several common mistakes can derail internationalization efforts, but they can be avoided with careful planning:
Storyblok’s internationalization tools—field-level, folder-level, and space-level translation—offer flexible solutions for managing multilingual content. Field-level translation keeps things simple for consistent layouts, folder-level translation provides flexibility for localized structures, and space-level translation supports complex, autonomous projects.
By choosing the right approach, avoiding pitfalls like inconsistent translations or poor SEO, and optimizing workflows, global content strategies can be executed effectively in Storyblok CMS. Select the approach that aligns with the project’s scale and localization needs to deliver content that resonates with audiences worldwide.