Localization management with Crowdin
Once you've set up your app with
next-intl, you'll have multiple translation bundles that contain your messages (e.g.
en.json). To streamline the workflow of managing these and to allow other team members to contribute translations, it's a good idea to use a localization management platform.
next-intl recommends Crowdin (opens in a new tab) for managing your translations.
The Crowdin Editor provides an easy-to-use environment for translating messages. Apart from guiding translators through your messages, the workflow is improved with advanced features like machine translation suggestions, glossaries and contextual screenshots.
As a developer-focused localization service, Crowdin helps you to decouple the localization process from development and integrates with your existing workflows.
- Git integration e.g. via the GitHub app (opens in a new tab) or the Crowdin CLI (opens in a new tab) (recommended)
- Automatic workflows triggered from webhooks (opens in a new tab)
- Over-the-air delivery via the JS SDK (opens in a new tab)
- Manual up- and download of messages (useful to get started)
The TypeScript integration of
help you to validate at compile time that your app is in sync with your
You can further simplify the process for translators by setting up Crowdin In-Context (opens in a new tab), allowing for the translation of messages directly from your app.
For this example, we're going to use an example that is publicly available on GitHub: Street Photography Viewer (opens in a new tab). It's a Next.js 13 app that displays street photography pictures from Unsplash and uses
next-intl for all internationalization needs.
Once you have a GitHub repository with your app, you can follow these steps:
- Install the GitHub app from the Crowdin store (opens in a new tab)
- Follow the setup guide for the GitHub integration (opens in a new tab)
After this procedure, Crowdin will commit a configuration file to your repository based on your settings.
files: - source: /messages/en.json translation: /messages/%locale%.json
This file provides the local translations in your repository to Crowdin.
Now, as soon as a translation gets updated in Crowdin, the next sync will create a pull request in your repository with the updates.
→ Head over to Crowdin (opens in a new tab) to learn more.