
Author in Git
Locales, messages, segments, and targets live as definitions. Every change is versioned and reviewable.
Learn moreGit-native i18n and l10n management.
Declare messages, build datafiles, and consume with SDKs.
description: Greeting shown on home pagetranslations: en: "Welcome {name}!" ja: "ようこそ、{name}!" nl: "Welkom {name}!"# (optional) conditional overridesoverrides: - segments: pro-subscribers translations: en: "Welcome pro subscriber {name}!" ja: "プロサブスクライバー{name}さん、ようこそ!" nl: "Welkom pro abonnee {name}!"import { createMessagevisor } from '@messagevisor/sdk'import { createICUModule } from '@messagevisor/module-icu'const m = createMessagevisor({ datafile, modules: [createICUModule()],})m.translate('ui.greeting', { name: 'Ada' })// → 'Welcome Ada!'m.setContext({ plan: 'pro' })m.translate('ui.greeting', { name: 'Ada' })// → 'Welcome pro subscriber Ada!'Quick install
npx @messagevisor/cli initOne repo. Full translation workflow.
Messagevisor keeps all your definitions for messages, their translations, and locale specific formatting configurations in Git.
Locales, messages, segments, attributes, and targets live as structured definition files in your Git repository.
Review changes in pull requests, run tests in CI, and ship compact JSON datafiles. No external TMS required.
Author in YAML, JSON, or plug in a custom parser. The project model stays the same regardless of file format.
translations: en: "Sign in" nl: "Inloggen"Lint, test, and build from the command line. Validate definitions and compile runtime datafiles (pure JSON files).
A visual layer over yourtranslation definitions
The catalog is a browsable view of your Messagevisor project. Run it locally or export a static build in CI for teammates who prefer a UI over definitions.
npx messagevisor catalog to run locally
Treat translations like infrastructure
Messagevisor is a translation workflow system, not just a runtime library.
Author, review, test, and deploy copy the same way you ship code.

Locales, messages, segments, and targets live as definitions. Every change is versioned and reviewable.
Learn more
Run the CLI in CI to validate, test, and generate compact JSON datafiles, then upload them to your CDN or custom server.
Learn more
Load datafiles in your app. Segment overrides, ICU formatting, and context resolve at runtime without redeploying.
Learn moreScale to thousands of messages
A flat messages directory stops working once you have hundreds or thousands of strings. Nest files in directories and Messagevisor builds the key from the path.
… 1,238 more files across 38 namespaces
Each folder name becomes part of the message key. Set the separator in namespaceCharacter.
Translations and formatting
Ship in as many languages and regional variants as you need. Every locale gets its own copy, currency, dates, and reading direction.
checkout.summary
Locale
en-USTranslation
Total
$12.99
Mar 6, 2026
Locale
en-GBTranslation
Total
£12.99
6 March 2026
Locale
nl-NLTranslation
Totaal
€ 12,99
6 mrt 2026
Locale
ar-SArtlTranslation
المجموع
١٢٫٩٩ ر.س
٦ مارس ٢٠٢٦
Total
$12.99
Mar 6, 2026
Total
£12.99
6 March 2026
Totaal
€ 12,99
6 mrt 2026
المجموع
١٢٫٩٩ ر.س
٦ مارس ٢٠٢٦
Each locale carries its own strings, currency, dates, and direction.
Locales docs →Promoting through environments
Development, staging, and production each have their own set in Git. Use promote to move content between them. Preview the output first, then run again with --apply when you want to write the changes.
Write drafts
New messages, placeholders, and overrides live here until you promote them.
QA and review
Promoted content lands here. Lint, test, and review it before anything goes live.
Live traffic
Validated translations end up here. Env-only messages, like staging banners, never get copied in.
Allowed directions are set in promotionFlows. Most teams run dev → staging, then staging → production.
Targeted copy and experiments
Personalize for premium users, onboarding cohorts, or experiment groups. Change who sees what without redeploying your app.
One message key, multiple strings. Rules live in definitions, not scattered through your codebase.
Export, translate, import
Hand translation work to someone outside Git without giving up review, linting, or tests. Export a CSV from the CLI, fill in the target locales, then import the results back into your project.
Who does the translating?
Human path
Send a CSV to freelancers, agencies, or in-house specialists. They can work in Excel, Google Sheets, or any spreadsheet tool. No Git access required.
Learn about translator handoff →
AI path
Let an agent drive the round trip. Export the CSV, fill locales while preserving ICU syntax and placeholders, then import back through the CLI.
Learn about AI translations →
Cloud-native by design
Bring your own CI/CD pipeline and CDN, and translations ship to the edge alongside your app, with no extra infrastructure.
CI/CD Pipelines
builds & uploads
Cloud & CDN
The full translation workflow
react-intl, react-i18next, and next-intl render strings in your app. Everything upstream is on you. Messagevisor adds authoring in Git, lint and test in CI, a build step that compiles datafiles, and publishing to CDN or storage separate from app releases.
Runtime libraries
Covers runtime only
Author
Repo or TMS
Validate
Custom or none
Build
App bundler
Publish
With app release
Runtime
Library APIs
Messagevisor
Author through publish
Author
Definitions in Git
Validate
Lint & test
Build
Compile datafiles
Publish
CDN / storage
Runtime
SDK
Libraries render at runtime. The upstream pipeline is yours to wire up. Messagevisor provides those layers with translation-native tooling.
Start managing translations like a team
Messagevisor is free, open source, and works with your existing Git workflow. No vendor accounts, no lock-in. Just bring your translations in as definitions.
Everything you need to know about Messagevisor.