Package Exports
- node-gettext
- node-gettext/lib/plurals
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-gettext) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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!
Support node-gettext development
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