node package manager


Gettext client for Node.js to use .mo files for I18N


node-gettext is a Node.JS module to use .MO and .PO files.

NB! If you just want to parse or compile mo/po files, check out gettext-parser.

  • Load binary MO or source PO files
  • Supports contexts and plurals

npm install node-gettext
var Gettext = require("node-gettext");

var gt = new Gettext();

addTextdomain(domain, file)

Language data needs to be in the Buffer format - it can be either contents of a MO or PO file.

addTextdomain(domain[, fileContents])

Load from a MO file

var fileContents = fs.readFileSync("");
gt.addTextdomain("et", fileContents);

or load from a PO file

var fileContents = fs.readFileSync("et.po");
gt.addTextdomain("et", fileContents);

Plural rules are automatically detected from the language code

gt.setTranslation("et", false, "hello!", "tere!");



The function also returns the current texdomain value

var curlang = gt.textdomain();


var greeting = gt.gettext("Hello!");

dgettext(domain, msgid)

var greeting = gt.dgettext("et", "Hello!");

ngettext(msgid, msgid_plural, count)

gt.ngettext("%d Comment", "%d Comments", 10);

dngettext(domain, msgid, msgid_plural, count)

gt.dngettext("et", "%d Comment", "%d Comments", 10)

pgettext(msgctxt, msgid)

gt.pgettext("menu items", "File");

dpgettext(domain, msgctxt, msgid)

gt.dpgettext("et", "menu items", "File");

npgettext(msgctxt, msgid, msgid_plural, count)

gt.npgettext("menu items", "%d Recent File", "%d Recent Files", 3);

dnpgettext(domain, msgctxt, msgid, msgid_plural, count)

gt.dnpgettext("et", "menu items", "%d Recent File", "%d Recent Files", 3);

getComment(domain, msgctxt, msgid)

gt.getComment("et", "menu items", "%d Recent File");

Returns an object in the form of {translator: "", extracted: "", reference: "", flag: "", previous: ""}

If you need the translation object for a domain, for example et_EE, you can access it from

If you want modify it and compile it to mo or po, checkout gettext-parser module.