You have been asking for it, we have developed it! Internationalization (i18n) is now available in Strapi v3.6. For free and without limitations. Read on to learn what's new 📢
From now on, you can create and manage content in multiple languages and for multiple locales in Strapi. A locale may represent not only a language but also a country to which the exact version of your content is related (for example, en-GB for English language and Great Britain, or fr-CA for French and Canada). Translate the content of your website or app into other languages and reach more audiences in different countries.
Content localization is not only about translating the text, it’s also about customizing the messages and content you deliver to each target audience taking into account their language and geographical location.
Customize the content that is displayed for each locale of your content types. For example, if you’re developing an e-commerce platform, you can select what product pages are displayed on a French, Portuguese, or Mandarin version of a website.
Managing many languages in one admin panel may sound like a challenging task, but we took care of that. Here are some details that matter:
In the list view, you can see all the content of one locale and easily switch between locales to see all related entries. For example, if you open the list of articles on your website, you will only see the entries in English and can switch between locales to see the entries in other languages. It gives you a better overview of the content available on different versions.
When editing content (for example, a particular article on a website or a product page), you can switch between different locales and automatically copy and paste content from one locale to another. No need to open a million tabs :)
You can set up a default locale, which will be displayed whenever you add content to a new content type or when you open the list of entries. Having a default locale makes it more comfortable to create and edit content.
If some content on your website or app should be the same no matter in which language the website is, you can disable localization for any field or content type.
This way, when you create a new version, the non-localized fields will already contain content. If you edit the entries of non-localized fields, they will be updated in all locales automatically. This saves a lot of time when making updates or adding new versions.
Finally, you can grant granular CRUD (create, read, update, delete) permissions for each locale to different admin panel roles & users, no matter if they are translators, content editors, marketers, country managers, etc.
Since internationalization is integrated with the Draft & Publish system, you will have full control of who can access, modify and publish entries in different locales. Total security and efficiency! 💯
Here’s a video guide on how to use internationalization in the admin panel:
We have updated the API to fetch content by the locale, which means you don't have to fetch all the content at a time. A localizations
field is added to every content type when the internationalization feature is activated. If a developer creates an entry from the API, it's possible to specify the locale for which an entry should be created. It is also possible to create new locales from an existing entry.
Here's an example of a REST API call:
Update your Strapi project to version 3.6 or ask your tech team to do it. Have a look at the developer documentation and user guide to see more step-by-step instructions on how to use the new feature.
Since internationalization is a plugin, you need to enable it in settings after updating the project to v3.6. Once you enable the feature, all the existing content will be associated with the default locale (it is set to English but you may change it to any other locale and the content will be migrated).
Strapi is a free flexible open-source headless CMS. You can build a project using one of the starters from our library or create a new Strapi project on your computer by running the quickstart command:
npx create-strapi-app my-project --quickstart
Interested to see what is the content management experience in Strapi? Check out our hosted demo with sample data to see what it's like to add and manage content in Strapi and try out the editorial features.
In this Online Meetup, our Developer Advocate Daniel demonstrates the internationalization feature, how to manage locales, and how to use the plugin on REST and GraphQL APIs.
Alex, our Engineering Lead, also answers some questions on the upcoming Strapi v4 and future versions.
Get access to the recording through the form below
Strapi is a product built together with more than 600+ contributors. We would love to say thank you to people who contributed to the v3.6 release as well to the previous v3.5 enhancements and bug fixes: @MattieBelt, @violabg, @jonmol, @dani832m, @yuriburk, @germangonzo, @ognjenjevremovic, @bidoubiwa, @brettwillis, @henk23, @ScottAgirs, @pasha42, @maggie0002, @dlebech, @sebastiangorski, and @bvolz.
In case you have missed our recent updates, here are some recent updates:
Check out our changelog for more information about all the updates and fixes.
Strapi is an open-source product that grows thanks to community support and contributions.
Here's how you can help us improve the product:
Contribute to the project on Github
Share what features you'd love to have in our public roadmap
Create a Strapi template for a specific use case
Showcase the projects you built with Strapi in Awesome Strapi
We appreciate each contribution and piece of feedback that you share. Stay safe and tuned for more updates!