SDKs
Node.js SDK
Node.js uses the same JavaScript SDK, but is often paired with file-system loaded datafiles and server-side context.
Install#
Command
$ npm install --save @messagevisor/sdkBasic example#
your-node-app/index.js
const { readFileSync } = require("fs");const { createMessagevisor } = require("@messagevisor/sdk");// you could also fetch the datafile from a remote sourceconst datafile = JSON.parse( readFileSync("./datafiles/messagevisor-web-en-US.json", "utf8"));const m = createMessagevisor({ datafile, context: { platform: "node" },});console.log(m.translate("auth.signin"));// → "Sign in"Multiple locales#
Messagevisor SDK is designed to be used with multiple locales.
You can create one SDK instance, and set multiple datafiles to it belonging to multiple different locales:
your-node-app/index.js
const path = require("path");const { readFileSync } = require("fs");const { createMessagevisor } = require("@messagevisor/sdk");// create a single SDK instanceconst m = createMessagevisor();// define your desired locale namesconst supportedLocales = ["en-US", "nl-NL"];// fetch and set the datafilesfor (const locale of supportedLocales) { const datafile = JSON.parse( readFileSync( path.join("datafiles", `messagevisor-node-${locale}.json`), "utf8" ) ); m.setDatafile(datafile);}Per-request evaluation#
For server applications, you can pass per-request context and locale at evaluation time rather than storing it on the instance.
your-node-app/index.js
const translation = m.translate( "dashboard.welcome", { name: "Ada" }, { context: { plan: "pro" }, locale: "en-US", });// → "Welcome back, Ada"This avoids shared mutable state when handling concurrent requests.
Good fits#
- API servers that render translated content server-side
- server-rendered apps (Next.js server components, Express, etc.)
- scripts that validate built datafiles
- email rendering services that need locale-aware formatting

