Ask your question and get a summary of the document by referencing this page and the AI provider of your choice
By integrating the Intlayer MCP Server to your favourite AI assistant can retrieve all the doc directly from ChatGPT, DeepSeek, Cursor, VSCode, etc.
See MCP Server docVersion History
- Add loadJSON pluginv7.0.601/11/2025
- Change to syncJSON pluginv7.0.029/10/2025
The content of this page was translated using an AI.
See the last version of the original content in EnglishIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
How to automate your react-intl JSON translations using Intlayer
Table of Contents
What is Intlayer?
Intlayer is an innovative, open-source internationalisation library designed to address the shortcomings of traditional i18n solutions. It offers a modern approach to content management in React applications.
See a concrete comparison with react-intl in our react-i18next vs. react-intl vs. Intlayer blog post.
Why Combine Intlayer with react-intl?
While Intlayer provides an excellent standalone i18n solution (see our React integration guide), you might want to combine it with react-intl for several reasons:
- Existing codebase: You have an established react-intl implementation and want to gradually migrate to Intlayer's improved developer experience.
- Legacy requirements: Your project requires compatibility with existing react-intl plugins or workflows.
- Team familiarity: Your team is comfortable with react-intl but wants better content management.
- Using Intlayer features: You want to use Intlayer features like content declaration, translation automation, testing translations, and more.
For that, Intlayer can be implemented as an adapter for react-intl to help automate your JSON translations in CLI or CI/CD pipelines, test your translations, and more.
This guide shows you how to leverage Intlayer's superior content declaration system while maintaining compatibility with react-intl.
Step-by-Step Guide to Set Up Intlayer with react-intl
Step 1: Install Dependencies
Install the necessary packages:
npm install intlayer @intlayer/sync-json-pluginPackage descriptions:
- intlayer: Core library for internationalisation management, content declaration, and building
- @intlayer/sync-json-plugin: Plugin to export Intlayer content declarations to react-intl compatible JSON format
Step 2: Implement the Intlayer plugin to wrap the JSON
Create an Intlayer configuration file to define your supported locales:
If you also want to export JSON dictionaries for react-intl, add the syncJSON plugin:
Copy the code to the clipboard
import { Locales, type IntlayerConfig } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ source: ({ key, locale }) => `./intl/messages/${locale}/${key}.json`, }), ],};export default config;The syncJSON plugin will automatically wrap the JSON. It will read and write the JSON files without changing the content architecture.
If you want to make that JSON coexist with Intlayer content declaration files (.content files), Intlayer will proceed as follows:
1. load both JSON and content declaration files and transform them into an Intlayer dictionary.2. if there are conflicts between the JSON and the content declaration files, Intlayer will merge all those dictionaries. This depends on the priority of the plugins and that of the content declaration file (all are configurable).If changes are made using the CLI to translate the JSON, or using the CMS, Intlayer will update the JSON file with the new translations.
To see more details about the syncJSON plugin, please refer to the syncJSON plugin documentation.
(Optional) Step 3: Implement per-component JSON translations
By default, Intlayer will load, merge and synchronise both JSON and content declaration files. See the content declaration documentation for more details. But if you prefer, using an Intlayer plugin, you can also implement per-component management of JSON localised anywhere in your codebase.
For that, you can use the loadJSON plugin.
Copy the code to the clipboard
import { Locales, type IntlayerConfig } from "intlayer";import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = { internationalisation: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, // Keep your current JSON files in sync with Intlayer dictionaries plugins: [ /** * Will load all the JSON files in the src that match the pattern {key}.i18n.json */ loadJSON({ source: ({ key }) => `./src/**/${key}.i18n.json`, locale: Locales.ENGLISH, priority: 1, // Ensures these JSON files take precedence over files at `./locales/en/${key}.json` }), /** * Will load, and write the output and translations back to the JSON files in the locales directory */ syncJSON({ source: ({ key, locale }) => `./messages/${locale}/${key}.json`, priority: 0, }), ],};export default config;This will load all the JSON files in the src directory that match the pattern {key}.i18n.json and load them as Intlayer dictionaries.
Git Configuration
It is recommended to ignore auto-generated Intlayer files:
Copy the code to the clipboard
# Ignore files generated by Intlayer.intlayerThese files can be regenerated during your build process and do not need to be committed to version control.
VS Code Extension
For an improved developer experience, install the official Intlayer VS Code Extension: