icon-multilocaleMultiLocale
LoginBlogDevelopersPricingSign up
icon-sun
icon-close
English
Afrikaans
አማርኛ
العربية
Azərbaycanca
Беларуская
Български
বাংলা
Bosanski
Català
Čeština
Cymraeg
Dansk
Deutsch
ελληνικά
Español
Eesti
Euskara
فارسی
Suomi
Français
Frysk
Gaeilge
Gàidhlig
Galego
ગુજરાતી
هَوُسَ
עברית
हिन्दी
Hrvatski jezik
Krèyol ayisyen
Magyar
Հայերեն
Bahasa Indonesia
Igbo
Íslenska
Italiano
日本語
Basa Jawa
ქართული
Қазақша
ភាសាខ្មែរ
ಕನ್ನಡ
한국어
Kurdî
Кыргызча
Lëtzebuergesch
ລາວ
Lietuvių
Latviešu
Malagasy
Māori
Македонски
മലയാളം
Монгол
मराठ
Bahasa Melayu
Myanmasa
नेपाली
Nederlands
Norsk
Chi-Chewa
Panjabi
Polski
پښتو
Português
Română
Русский
सिनधि
සිංහල
Slovenčina
Slovenščina
Gagana Samoa
chiShona
Soomaaliga
Shqip
Српски
Sesotho
Basa Sunda
Svenska
Kiswahili
தமிழ்
తెలుగ
Тоҷикӣ
ไทย
Filipino
Türkçe
Українська
اردو
Ўзбек
Tiếng Việt
isiXhosa
ייִדיש
Yorùbá
中文
isiZulu
icon-multilocaleMultiLocale
BlogDevelopersPricingLoginSign up
icon-sun
icon-close
English
Afrikaans
አማርኛ
العربية
Azərbaycanca
Беларуская
Български
বাংলা
Bosanski
Català
Čeština
Cymraeg
Dansk
Deutsch
ελληνικά
Español
Eesti
Euskara
فارسی
Suomi
Français
Frysk
Gaeilge
Gàidhlig
Galego
ગુજરાતી
هَوُسَ
עברית
हिन्दी
Hrvatski jezik
Krèyol ayisyen
Magyar
Հայերեն
Bahasa Indonesia
Igbo
Íslenska
Italiano
日本語
Basa Jawa
ქართული
Қазақша
ភាសាខ្មែរ
ಕನ್ನಡ
한국어
Kurdî
Кыргызча
Lëtzebuergesch
ລາວ
Lietuvių
Latviešu
Malagasy
Māori
Македонски
മലയാളം
Монгол
मराठ
Bahasa Melayu
Myanmasa
नेपाली
Nederlands
Norsk
Chi-Chewa
Panjabi
Polski
پښتو
Português
Română
Русский
सिनधि
සිංහල
Slovenčina
Slovenščina
Gagana Samoa
chiShona
Soomaaliga
Shqip
Српски
Sesotho
Basa Sunda
Svenska
Kiswahili
தமிழ்
తెలుగ
Тоҷикӣ
ไทย
Filipino
Türkçe
Українська
اردو
Ўзбек
Tiếng Việt
isiXhosa
ייִדיש
Yorùbá
中文
isiZulu
Integrations/React & Next.js
icon-language

React & Next.js

Translate a React or Next.js app with the i18n runtime you have

Get started free

Overview

There is no MultiLocale runtime to add to a React app, and nothing from MultiLocale ends up in your bundle. The multilocale CLI writes one JSON dictionary per locale into your repository, and the i18n library you already use renders them — next-intl in a Next.js app, react-i18next in a Vite or Create React App one. Localization becomes a build-time file sync, so your routing, your message loading and the runtime you ship all stay exactly as they are. The CLI reads files as well as writes them, so an app that is already half-translated starts from the JSON it has instead of from an empty project.

Quick start

Install the CLI and pull the translation files

# The CLI is the only thing you install, and it is a devDependency
npm install --save-dev multilocale

# Create the account from the terminal — no browser needed
npx multilocale signup --email you@example.com --json

# Create the project and the locales it ships
npx multilocale projects create "my-app" --locales en,es,fr --default-locale en

# Push the JSON you already have, then pull every locale back down
npx multilocale import
npx multilocale download

multilocale.json — point download at your message folder

{
  "projectId": "YOUR_PROJECT_ID",
  "paths": ["messages/%lang%.json"]
}

Put it at the root of the repository. %lang% is replaced with each locale of the project; without this file download writes translations/<locale>.json instead.

Next.js — next-intl reads those files unchanged

// i18n/request.js — no MultiLocale import anywhere
import { getRequestConfig } from 'next-intl/server'

export default getRequestConfig(async ({ locale }) => ({
  messages: (await import(`../messages/${locale}.json`)).default,
}))

Vite or Create React App — react-i18next

import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import en from './translations/en.json'
import es from './translations/es.json'

i18n.use(initReactI18next).init({
  resources: { en: { translation: en }, es: { translation: es } },
  lng: 'en',
  fallbackLng: 'en',
})

Features

  • icon-arrow-right-filled

    Nothing added to your bundle

    The CLI is a devDependency. What ships is your own i18n runtime plus plain JSON — no MultiLocale code, no runtime fetch, no extra request on first paint.

  • icon-arrow-right-filled

    The file layout your framework already expects

    download writes one dictionary per locale wherever you point it: messages/en.json for next-intl, translations/en.json for react-i18next, or any pattern containing %lang%.

  • icon-arrow-right-filled

    Import what you already translated

    import reads the JSON already in your repository and creates the phrases from it, so an app that is partly translated does not start from an empty project.

  • icon-arrow-right-filled

    Machine translation into every locale

    A key added in the default locale is translated into the rest of the project locales, so download always has a complete file to write.

Category

Frameworks

Built by

MultiLocale

Links

Developer docs
Next.js example repository
API reference
Create an account

Language

AfrikaansአማርኛالعربيةazərbaycanбеларускаябългарскиবাংলাbosanskicatalàčeštinaCymraegdanskDeutschΕλληνικάEnglishespañoleestieuskaraفارسیsuomifrançaisFryskGaeilgeGàidhliggalegoગુજરાતીHausaעבריתहिन्दीhrvatskiHaitian CreolemagyarհայերենIndonesiaIgboíslenskaitaliano日本語Jawaქართულიқазақ тіліខ្មែរಕನ್ನಡ한국어kurdî (kurmancî)кыргызчаLëtzebuergeschລາວlietuviųlatviešuMalagasyMāoriмакедонскиമലയാളംмонголमराठीMelayuမြန်မာनेपालीNederlandsnorskNyanjaਪੰਜਾਬੀpolskiپښتوportuguêsromânăрусскийسنڌيසිංහලslovenčinaslovenščinaSamoanchiShonaSoomaalishqipсрпскиSesothoBasa SundasvenskaKiswahiliதமிழ்తెలుగుтоҷикӣไทยFilipinoTürkçeукраїнськаاردوo‘zbekTiếng ViệtIsiXhosaייִדישÈdè Yorùbá中文isiZulu

Resources

StatusBlogDevelopersAPI referenceIntegrationsllms.txtPricingAlternativesBuyer guidesPrivacy PolicyTerms and Conditions

Integrations

React & Next.jsCLIREST APIWebhooksMCP Server

Free developer tools

Locale Code ConverterHreflang Tag Generatori18n JSON Key Checker

Services

Translated with MultilocaleBlogged with PolyblogHosted on TiramisuImages from ImagelatoMonitored by Cron Cool

Follow Us

icon-linkedin
icon-twitter
icon-facebook
icon-instagram
icon-threads

Contact us

Contact usinfo@multilocale.com

Copyright @ MultiLocale 2023 - 2026