General concepts > Localization


Each administrative area in DatoCMS supports multiple locales, which are defined by the short ISO locale codes (i.e. en or de). You can add or remove locales within the Admin area > Site settings section:

Field-specific localization

Each field is localized individually, so you can pick and choose which specific content needs to be translated and which does not:

As soon as a localized field is present within a model, the form to edit its records will present one tab for each locale:

Adding new locales along the way

With DatoCMS you are free to add new locales at any time; just be aware that, once a new locale is added, if some validations are present on your fields, those validations will be enforced for every locale. Records already created will therefore be marked as “invalid”, and you won't be able to update your records until all the validations are satisfied for all the locales. For more information, take a look at the Data migration chapter.

Pro tip: Build a multi-language website with Next.js

Our blog has a full walkthrough on how to set up a multi-language site from scratch using Next.js, which provides robust built-in support for internationalization.

Optional/required locales

You can configure a certain model so that your editors are not forced to insert content for every language your project supports, but just for some of them, on a per-record basis.

This allows use cases such as multi-language blogs, where some articles can be written only in English, other only in Italian and others in both languages.

To require all locales to be always present on every record of a specific model, you can check the All locales required? option in your model settings:

Locale-based publishing

By enabling the optional locales settings, teams have the flexibility to publish content for specific locales within their project, regardless of the status of other locales.

For instance, imagine a project with locales for Germany, Switzerland, Great Britain, and Belgium. With this feature, teams can focus on creating and finalizing content for Germany without the need to manage content for other locales. If the team has the capacity to work on additional locales, they can save the content as drafts without publishing it. This enables multiple team members to independently create content for different locales, aligning with their respective timelines and priorities.

When a team member is prepared to publish content for a specific locale they have permission for, they can simply select the "Only publish specific content" option.

A convenient popup window will then appear, allowing them to choose which locale(s) to publish, with the ability to select multiple locales if desired:

You can also selectively unpublish one (or multiple) locales:

Locale-based publishing also works on scheduled publications/unpublishing:

Translator roles, and locales permissions

Our roles/permissions system allows specifying which locales each collaborator can add/edit/remove on any record. For each role you can define both global rules, which will be applied to all models in your project, and specific per-model rules, giving maximum flexibility:

Every role can customize which locales can be edited

Localized CMS interface

By default, the CMS interface will pick the default browser's language and, if available, will show the interface localized.

If you prefer to manually pick one, you can do it like this:

If you don't find the translation that you need, and you are looking into contributing, read this blog post to learn more and get involved.

Learn more about localization with DatoCMS

DatoCMS allows a great deal of customization when dealing with localization. Check out these tutorial videos for a hands-on approach: