A collection of language-specific rules for determining the plurality of a number. These rules are designed to help with the localization of your application.
The library is small and simple, minified and gzipped to under 500b.
For example, English has 2 plural forms - 1 is singular, all other values are plural:
var english = Smart.Plurals.getRule('en');
var dict = [ 'singular', 'plural' ];
english(0, dict); // returns 'plural'
english(1, dict); // returns 'singular'
english(2, dict); // returns 'plural'
However, many languages have different rules, and some even have 3 or 4 different plural forms. For example, Russian has 3 plural forms - numbers ending with 1 (such as 21, 31, 41) are singular; numbers ending in 2-4 (22, 23, 24) are "few", and all others are plural:
var russian = Smart.Plurals.getRule('ru');
var dict = [ 'арбуз', 'арбуза', 'арбузов' ]
russian(1, dict); // returns 'арбуз'
russian(2, dict); // returns 'арбуза'
russian(12, dict); // returns 'арбузов'
This library is designed to be tiny, has no dependencies, and should be very easy to integrate into any application.
This library comes in 3 flavors; standalone
, Angular
, and Node
.
This standalone library exposes the API on the Smart.Plurals
namespace. It has no additional dependencies.
Usage:
var pluralRule = Smart.Plurals.getRule('en');
This is the same as the standalone build, but exports the entire Smart object.
Usage:
var Smart = require('smart-plurals');
var pluralRule = Smart.Plurals.getRule('en');
...
This build exposes a smart
module with a SmartPlurals
service.
It also includes a plural
filter.
Usage:
angular.module('example', [ 'smart' ]).run(function(SmartPlurals) {
var pluralRule = SmartPlurals.getRule('en');
...
});
<span> There {{ value | plural:"is":"are" }} {{ value }} {{ value | plural:"item":"items" }} remaining... </span>