Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Gettext module For Node.JS to use .MO and .PO files
JavaScript

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
test
.gitignore
.travis.yml
LICENSE
README.md
index.js
package.json

README.md

node-gettext

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

Features

  • Load binary MO files
  • Supports contexts and plurals
  • Add your own translations to the list
  • Compile current translation table into a MO or a PO file!

Build Status

Support node-gettext development

Donate to author

Installation

npm install node-gettext

Usage

Create a new Gettext object

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

var gt = new Gettext();

Add a language - addTextdomain(domain, file)

Language data needs to be file contents in the Buffer format

addTextdomain(domain[, file_contents])

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

Check or change default language

textdomain(domain)

gt.textdomain("et");

The function also returns the current texdomain value

var curlang = gt.textdomain();

Load a string from default language file

gettext(msgid)

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

Load a string from a specific language file

dgettext(domain, msgid)

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

Load a plural string from default language file

ngettext(msgid, msgid_plural, count)

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

Load a plural string from a specific language file

dngettext(domain, msgid, msgid_plural, count)

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

Load a string of a specific context

pgettext(msgctxt, msgid)

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

Load a string of a specific context from specific language file

dpgettext(domain, msgctxt, msgid)

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

Load a plural string of a specific context

npgettext(msgctxt, msgid, msgid_plural, count)

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

Load a plural string of a specific context from specific language file

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

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

String helpers

In order to make things really easy, it is possible to attach the gettext functions directly to string prototypes with gettext.registerStringHelpers()

Example:

// setup gettext
var gettext = new Gettext();
gettext.registerStringHelpers();
gettext.addTextdomain("et", fs.readFileSync("et.mo"));

// translate any string
var translated = "translate this string".gettext();
// or
var plural = "translate %s string".ngettext("translate %s strings", 10);

// you can even change the default textdomain
"".textdomain("en");

The parameters for the gettext functions are the same as with regular gettext objects, except that the msgid parameter is not needed.

Manage translations

Add a translation

setTranslation(domain, context, msgid, translation)

gt.setTranslation("et", "", "Hello", "Tere");

Remove a translation

deleteTranslation(domain, context, msgid, translation)

gt.setTranslation("et", "", "Hello", "Tere");

List possible context names

listContextNames([domain])

var contextStrArr = gt.listContextNames("et");

List possible translation keys

listKeys([domain], [context])

var originalsStrArr = gt.listKeys("et", "");

Compiling

Compile MO

Compile current translation table to a MO file

compileMO([domain])

fs.writeFile("out.mo", gt.compileMO("et")); 

Compile PO

Compile current translation table to a PO file

compilePO([domain])

fs.writeFile("out.po", gt.compilePO("et"));

License

MIT

Something went wrong with that request. Please try again.