node-gettext-sprintf
Advanced tools
Comparing version 0.0.6 to 0.0.7
110
index.js
var vsprintf = require("sprintf-js").vsprintf; | ||
var Gettext = require("node-gettext"); | ||
var gt = new Gettext(); | ||
var __slice = Array.prototype.slice; | ||
function GetTextFunctions(language) { | ||
// get text | ||
function dgettext() { | ||
var args = __slice.call(arguments); | ||
var msgId = args[0]; | ||
if(args.length === 1) | ||
return gt.dgettext(language, msgId); | ||
var sprintfArgs = __slice.call(args, 1); | ||
return vsprintf(gt.dgettext(language, msgId), sprintfArgs); | ||
} | ||
// get text from context | ||
function dpgettext() { | ||
var args = __slice.call(arguments); | ||
var msgContext = args[0]; | ||
var msgId = args[1]; | ||
if(args.length === 2) | ||
return gt.dpgettext(language, msgContext, msgId); | ||
var sprintfArgs = __slice.call(args, 2); | ||
return vsprintf(gt.dpgettext(language, msgContext, msgId), sprintfArgs); | ||
} | ||
// get plural text | ||
function dngettext() { | ||
var args = __slice.call(arguments); | ||
var msgId = args[0]; | ||
var amt = args[1]; | ||
if(args.length === 2) | ||
return gt.dngettext(language, msgId, null, amt); | ||
var sprintfArgs = __slice.call(args, 2); | ||
return vsprintf(gt.dngettext(language, msgId, null, amt), sprintfArgs); | ||
} | ||
// get plural text from context | ||
function dnpgettext() { | ||
var args = __slice.call(arguments); | ||
var msgContext = args[0]; | ||
var msgId = args[1]; | ||
var amt = args[2]; | ||
if(args.length === 3) | ||
return gt.dnpgettext(language, msgContext, msgId, null, amt); | ||
var sprintfArgs = __slice.call(args, 3); | ||
return vsprintf(gt.dnpgettext(language, msgContext, msgId, null, amt), sprintfArgs); | ||
} | ||
return { | ||
dgettext: dgettext, | ||
dpgettext: dpgettext, | ||
dngettext: dngettext, | ||
dnpgettext: dnpgettext | ||
}; | ||
} | ||
// domains: {es: contents-of-es.po, fr: contents-of-fr.po} etc | ||
module.exports = function (domains) { | ||
if (!domains || Object.keys(domains).length === 0) | ||
throw new Error('domains argument required'); | ||
throw new Error('domains argument required.'); | ||
var cache = {}; | ||
Object.keys(domains).forEach(function (language) { | ||
gt.addTextdomain(language, domains[language]); | ||
cache[language] = new GetTextFunctions(language); | ||
}); | ||
return function (language) { | ||
return { | ||
// get text | ||
dgettext: function () { | ||
var args = Array.prototype.slice.call(arguments); | ||
var msgId = args[0]; | ||
var sprintfArgs = args.slice(1); | ||
if(!cache[language]) | ||
throw new Error('specified language: "'+language+'" not found.'); | ||
return vsprintf(gt.dgettext(language, msgId), sprintfArgs); | ||
}, | ||
// get text from context | ||
dpgettext: function () { | ||
var args = Array.prototype.slice.call(arguments); | ||
var msgContext = args[0]; | ||
var msgId = args[1]; | ||
var sprintfArgs = args.slice(2); | ||
return vsprintf(gt.dpgettext(language, msgContext, msgId), sprintfArgs); | ||
}, | ||
// get plural text | ||
dngettext: function () { | ||
var args = Array.prototype.slice.call(arguments); | ||
var msgId = args[0]; | ||
var amt = args[1]; | ||
var sprintfArgs = args.slice(2); | ||
return vsprintf(gt.dngettext(language, msgId, null, amt), sprintfArgs); | ||
}, | ||
// get plural text from context | ||
dnpgettext: function () { | ||
var args = Array.prototype.slice.call(arguments); | ||
var msgContext = args[0]; | ||
var msgId = args[1]; | ||
var amt = args[2]; | ||
var sprintfArgs = args.slice(3); | ||
return vsprintf(gt.dnpgettext(language, msgContext, msgId, null, amt), sprintfArgs); | ||
} | ||
}; | ||
return cache[language]; | ||
}; | ||
}; |
{ | ||
"name": "node-gettext-sprintf", | ||
"version": "0.0.6", | ||
"version": "0.0.7", | ||
"description": "A combination of node-gettext and sprintf", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -41,7 +41,11 @@ var fs = require('fs'); | ||
test('switching language works', function(t) { | ||
var fns0 = languageFns('test0'); | ||
t.equal(fns0.dgettext("test0 - Simple string"), "test0 - Simple string translated"); | ||
var fns1 = languageFns('test1'); | ||
t.equal(fns1.dgettext("test1 - Simple string"), "test1 - Simple string translated"); | ||
var fns = languageFns('test0'); | ||
t.equal(fns.dgettext("test0 - Simple string"), "test0 - Simple string translated"); | ||
fns = languageFns('test1'); | ||
t.equal(fns.dgettext("test1 - Simple string"), "test1 - Simple string translated"); | ||
fns = languageFns('test0'); | ||
t.equal(fns.dgettext("test0 - Simple string"), "test0 - Simple string translated"); | ||
t.end(); | ||
}); |
7395
109