function sprintf (s)
{
    var bits = s.split('%');
    var out = bits[0];
    var re = /^([ds])(.*)$/;
    for (var i=1; i<bits.length; i++)
    {
        p = re.exec(bits[i]);
        if (!p || arguments[i]==null) continue;
        if (p[1] == 'd')
        {
            out += parseInt(arguments[i], 10);
        }
        else if (p[1] == 's')
        {
            out += arguments[i];
        }

        out += p[2];
    }

    return out;
}

function _(s, n)
{
    return s;
    //return gettext (s, n);
}

function gettext (s, n)
{
    if (typeof(n) != 'undefined')
    {
        v = eval(i18n['options']['plural']);
        
        if (typeof(i18n['translations'][s]) != 'undefined')
        {
        	return sprintf(i18n['translations'][s][v], n);
        }
        else
        {
        	return s;
        }
    }
    else
    {
    	if (typeof(i18n['translations'][s]) != 'undefined')
    	{
    		return i18n['translations'][s];
    	}
    	else
    	{
    		return s;
    	}
    }
}