Messagevisor is an open source project for your i18n and l10n needs for application development. It is created by [Fahad Heylaal](https://fahad19.com), who also created [Featurevisor](https://featurevisor.com). Visit [messagevisor.com](https://messagevisor.com) for more information. ## Documentation - [Documentation](https://messagevisor.com/docs) Guides and reference for building translation workflows with Messagevisor. - [Attributes](https://messagevisor.com/docs/attributes) Define the context schema used by Messagevisor segments and conditional message overrides. - [Building datafiles](https://messagevisor.com/docs/building-datafiles) Build Messagevisor JSON datafiles from locales, messages, segments, attributes, and targets. - [Catalog](https://messagevisor.com/docs/catalog) Browse Messagevisor projects through the generated catalog UI and JSON endpoints. - [Command Line Interface (CLI)](https://messagevisor.com/docs/cli) Use the Messagevisor CLI to initialize, inspect, test, build, import, export, and maintain projects. - [Code generation](https://messagevisor.com/docs/code-generation) Generate TypeScript helpers from a Messagevisor project. - [Concepts](https://messagevisor.com/docs/concepts) Core concepts behind the design of Messagevisor. - [Cloud Native](https://messagevisor.com/docs/concepts/cloud-native) How Messagevisor follows cloud native principles, with unopinionated infrastructure, static datafiles, and a GitOps pipeline you own. - [GitOps](https://messagevisor.com/docs/concepts/gitops) How GitOps principles apply to translation management with Messagevisor. - [Internationalization (i18n)](https://messagevisor.com/docs/concepts/i18n) What internationalization means, and how Messagevisor approaches it. - [Localization (l10n)](https://messagevisor.com/docs/concepts/l10n) What localization means, and how Messagevisor turns it into a reviewable, testable, ongoing workflow. - [Translations as code](https://messagevisor.com/docs/concepts/translations-as-code) What it means to treat translation definitions as code, and why it matters. - [Conditions](https://messagevisor.com/docs/conditions) Author conditional logic in Messagevisor using attribute, feature, and experiment conditions composed with and/or/not. - [Configuration](https://messagevisor.com/docs/configuration) Configure Messagevisor project paths, parser, modules, sets, and workflow behavior. - [Contributing](https://messagevisor.com/docs/contributing) Contribute to the Messagevisor monorepo, packages, examples, and docs. - [Datasource](https://messagevisor.com/docs/datasource) Understand the Messagevisor datasource abstraction used by CLI workflows and tooling. - [Deployment](https://messagevisor.com/docs/deployment) Deploy Messagevisor projects by promoting definitions, building datafiles, and publishing generated artifacts. - [AWS CloudFront with S3](https://messagevisor.com/docs/deployment/aws-cloudfront) Build Messagevisor datafiles in GitHub Actions, store them in S3, and serve them globally through CloudFront. - [Cloudflare Workers with Hono](https://messagevisor.com/docs/deployment/cloudflare-workers-hono) Deploy a Hono Worker that loads Messagevisor datafiles at Cloudflare's edge. - [Cloudflare Workers KV](https://messagevisor.com/docs/deployment/cloudflare-workers-kv) Build Messagevisor datafiles in GitHub Actions and serve them from Cloudflare's global edge network using Workers KV. - [Cloudflare Workers Static Assets](https://messagevisor.com/docs/deployment/cloudflare-workers-static-assets) Build Messagevisor datafiles in GitHub Actions and serve them from Cloudflare's global edge network using Workers Static Assets. - [GitHub Actions](https://messagevisor.com/docs/deployment/github-actions) Run Messagevisor lint, test, and build in GitHub Actions. - [Environments](https://messagevisor.com/docs/environments) Model environments such as dev, staging, and production with Messagevisor sets. - [Evaluation](https://messagevisor.com/docs/evaluation) Understand how Messagevisor evaluates messages, raw strings, segments, formats, and runtime context. - [Examples](https://messagevisor.com/docs/examples) Author and inspect locale and message examples in Messagevisor. - [Export and import](https://messagevisor.com/docs/export-import) Exchange Messagevisor translations with translators using CSV and JSON import workflows. - [FAQ](https://messagevisor.com/docs/faq) Frequently asked questions about how Messagevisor projects are authored, built, and consumed. - [Formats](https://messagevisor.com/docs/formats) Define and use named locale format presets in Messagevisor for numbers, dates, times, and more. - [Frameworks](https://messagevisor.com/docs/frameworks) Use Messagevisor datafiles and SDKs with popular application frameworks. - [Angular](https://messagevisor.com/docs/frameworks/angular) Use Messagevisor from Angular services and components. - [Astro](https://messagevisor.com/docs/frameworks/astro) Use Messagevisor in Astro pages, server rendering, and client islands. - [Express.js](https://messagevisor.com/docs/frameworks/express) Use Messagevisor from Express.js middleware and route handlers. - [Fastify](https://messagevisor.com/docs/frameworks/fastify) Use Messagevisor from Fastify decorators and route handlers. - [Hono](https://messagevisor.com/docs/frameworks/hono) Use Messagevisor from Hono routes across Node.js, Bun, Deno, and edge runtimes. - [NestJS](https://messagevisor.com/docs/frameworks/nestjs) Use Messagevisor from NestJS providers, controllers, and API routes. - [Next.js](https://messagevisor.com/docs/frameworks/nextjs) Use Messagevisor with Next.js App Router, Pages Router, route handlers, and client providers. - [Nuxt](https://messagevisor.com/docs/frameworks/nuxt) Use Messagevisor with Nuxt server rendering, API routes, and client plugins. - [Remix](https://messagevisor.com/docs/frameworks/remix) Use Messagevisor with Remix loaders, resource routes, and React providers. - [TanStack Start](https://messagevisor.com/docs/frameworks/tanstack-start) Use Messagevisor with TanStack Start loaders, server routes, and React providers. - [Glossary](https://messagevisor.com/docs/glossary) Definitions for every term you will encounter when working with Messagevisor. - [Inheritance](https://messagevisor.com/docs/inheritance) Use locale inheritance for translations, formats, examples, regional variants, and pruning workflows in Messagevisor. - [Linting](https://messagevisor.com/docs/linting) Validate Messagevisor definitions, conditions, formats, and project structure with the lint command. - [Locales](https://messagevisor.com/docs/locales) Define languages, regional variants, inheritance, formatting presets, examples, and direction metadata in Messagevisor. - [Messages](https://messagevisor.com/docs/messages) Define base translations, overrides, metadata, examples, and runtime behavior for Messagevisor messages. - [Modules](https://messagevisor.com/docs/modules) Extend Messagevisor runtime behavior with formatting and message-processing modules. - [Custom modules](https://messagevisor.com/docs/modules/custom) Build custom Messagevisor modules for formatting, transforms, diagnostics, and runtime integrations. - [Featurevisor module](https://messagevisor.com/docs/modules/featurevisor) Connect Messagevisor feature and experiment conditions to a Featurevisor SDK instance. - [ICU module](https://messagevisor.com/docs/modules/icu) Use ICU message syntax, named formats, plural rules, rich text, SDK setup, and React rendering with Messagevisor. - [Interpolation module](https://messagevisor.com/docs/modules/interpolation) Use lightweight placeholder interpolation with Messagevisor. - [Missing translations module](https://messagevisor.com/docs/modules/missing-translations) Capture missing Messagevisor translations from SDK diagnostics. - [Namespaces](https://messagevisor.com/docs/namespaces) Control how Messagevisor turns message file paths into message keys. - [Overrides](https://messagevisor.com/docs/overrides) Conditionally vary Messagevisor translations based on segments, attributes, and optional feature or experiment integrations. - [Parsers](https://messagevisor.com/docs/parsers) Use built-in or custom parsers for Messagevisor authoring files. - [Plugins](https://messagevisor.com/docs/plugins) Extend Messagevisor CLI behavior with project-specific plugins. - [Projects](https://messagevisor.com/docs/projects) Understand the structure of a Messagevisor project and how it fits into a Git-based workflow. - [Promotions](https://messagevisor.com/docs/promotions) Promote Messagevisor definitions from one set to another in a controlled Git-based workflow. - [Quick start](https://messagevisor.com/docs/quick-start) Quick start guide for creating and building a Messagevisor project. - [Roadmap](https://messagevisor.com/docs/roadmap) Future plans and roadmap for Messagevisor - [SDKs](https://messagevisor.com/docs/sdks) Use Messagevisor datafiles from JavaScript, Node.js, browsers, React, and Vue. - [Browser SDK](https://messagevisor.com/docs/sdks/browser) Use Messagevisor datafiles directly in browser applications. - [JavaScript SDK](https://messagevisor.com/docs/sdks/javascript) Load Messagevisor datafiles and evaluate translations, formats, and locale metadata with the JavaScript SDK. - [Node.js SDK](https://messagevisor.com/docs/sdks/nodejs) Use Messagevisor from Node.js services and scripts. - [React SDK](https://messagevisor.com/docs/sdks/react) Use Messagevisor providers and hooks in React applications. - [React Intl compatibility](https://messagevisor.com/docs/sdks/react-intl-compat) Migrate React Intl applications to Messagevisor with compatible hooks, helpers, and formatted components. - [React Native SDK](https://messagevisor.com/docs/sdks/react-native) Use Messagevisor SDK and React hooks in React Native applications. - [Vue](https://messagevisor.com/docs/sdks/vue) Use Messagevisor in Vue 3 applications with a plugin, composables, and rich text components. - [Segments](https://messagevisor.com/docs/segments) Define reusable conditional building blocks in Messagevisor. - [Sets](https://messagevisor.com/docs/sets) Use sets to manage multiple parallel Messagevisor definition trees in one repository. - [Skills for AI agents](https://messagevisor.com/docs/skills) Skills for AI agents to work productively inside Messagevisor projects. - [State files](https://messagevisor.com/docs/state-files) Understand generated Messagevisor state under .messagevisor and how it is used by CLI workflows. - [Targets](https://messagevisor.com/docs/targets) Define targeted Messagevisor datafiles by controlling included messages, known context, locale-specific format overrides, and runtime shape. - [Testing](https://messagevisor.com/docs/testing) Test messages, locales, targets, and segments in a Messagevisor project. - [Translating](https://messagevisor.com/docs/translating) End-to-end guides for producing translations in a Messagevisor project, using spreadsheets, AI agents, and other external tools. - [AI translations](https://messagevisor.com/docs/translating/ai-translations) Use an AI coding agent like Claude Code to export, translate, and import Messagevisor locales through the CLI. - [Google Sheets](https://messagevisor.com/docs/translating/google-sheets) Translate Messagevisor CSV exports inside Google Sheets using GOOGLETRANSLATE, then import the result back through the CLI. - [Translator handoff](https://messagevisor.com/docs/translating/translator-handoff) Send a Messagevisor CSV to a freelance or agency translator and import their work back into the project, without a hosted translation platform. - [Audience-targeted copy variants](https://messagevisor.com/docs/use-cases/audience-targeted-copy) Serve different translation variants to different user audiences using Messagevisor segments and overrides. - [Consistent number and date formatting across locales](https://messagevisor.com/docs/use-cases/consistent-formatting) Define and enforce number, date, currency, and time format presets per locale in Messagevisor so applications never hardcode formatting logic. - [Copy variants for A/B tests](https://messagevisor.com/docs/use-cases/copy-variants-ab-testing) Serve different copy variants to experiment groups using Messagevisor overrides with experiment and feature conditions. - [Decoupling translation releases from code deployments](https://messagevisor.com/docs/use-cases/decoupling-releases) Ship translation changes independently of application deployments using Messagevisor's Git-based datafile pipeline. - [Deprecating and retiring message keys](https://messagevisor.com/docs/use-cases/deprecating-message-keys) Safely signal, retire, and archive Messagevisor message keys without breaking running applications. - [Promoting translations through environments](https://messagevisor.com/docs/use-cases/environment-promotion) Move translation content from development to staging to production using Messagevisor's promote command and sets workflow. - [Environment-specific translations](https://messagevisor.com/docs/use-cases/environment-specific-translations) Maintain separate translation content for development, staging, and production environments in one Messagevisor repository. - [Establishing ownership of translation content](https://messagevisor.com/docs/use-cases/establishing-ownership) Use CODEOWNERS, meta tags, and namespace structure to assign and enforce ownership of Messagevisor translation content. - [Onboarding non-engineers to the translation workflow](https://messagevisor.com/docs/use-cases/onboarding-non-engineers) Enable product managers, content editors, and translators to contribute to Messagevisor translations through pull requests and the catalog. - [Platform-specific copy](https://messagevisor.com/docs/use-cases/platform-specific-copy) Serve different translation text to web, iOS, and Android surfaces from one Messagevisor repository using targets and overrides. - [Managing regional language variants](https://messagevisor.com/docs/use-cases/regional-language-variants) Author regional locale variants like en-GB and en-AU that inherit from a base locale and only override what differs. - [RTL language support without application rework](https://messagevisor.com/docs/use-cases/rtl-language-support) Add Arabic, Hebrew, and other RTL languages to your application using Messagevisor's direction metadata and React hooks without rewriting layout code. - [Testing translations before they ship](https://messagevisor.com/docs/use-cases/testing-translations) Write and run built-in translation tests in Messagevisor to catch broken copy, bad override logic, and format regressions in CI.