tower-inflector

## Example

Inflector

var text = require('tower-inflector');
 
text('messages')
  .one('You have 1 message')
    .past('You had 1 message')
    .future('You might get a message')
  .none('You have no messages')
    .past('You never had any messages')
    .future('You might never get a message')
  .other('You have {{count}} messages')
    .past('You had {{count}} messages')
    .future('You might get {{count}} messages');
 
assert.equal(9, text('messages').inflections.length);
 
// 1 
assert.equal('You have 1 message', text('messages').render({count: 1}));
assert.equal('You had 1 message', text('messages').render({tense: 'past', count: 1}));
assert.equal('You might get a message', text('messages').render({tense: 'future', count: 1}));
 
// 0 
assert.equal('You have no messages', text('messages').render({count: 0}));
assert.equal('You never had any messages', text('messages').render({tense: 'past', count: 0}));
assert.equal('You might never get a message', text('messages').render({tense: 'future', count: 0}));
 
// n 
assert.equal('You have 3 messages', text('messages').render({count: 3}));
assert.equal('You had 3 messages', text('messages').render({tense: 'past', count: 3}));
assert.equal('You might get 3 messages', text('messages').render({tense: 'future', count: 3}));

Another module, orthography?

MIT