Skip to content

Instantly share code, notes, and snippets.

@mefjuu
Created December 9, 2014 07:02
Show Gist options
  • Select an option

  • Save mefjuu/db08a666d0a33244f137 to your computer and use it in GitHub Desktop.

Select an option

Save mefjuu/db08a666d0a33244f137 to your computer and use it in GitHub Desktop.
Returns noun variant for specified number
/**
* Returns noun variant for specified quantity
*
* @param {integer} n e.g. 5
* @param {array} nounVariants e.g. ["produkt", "produkty", "produktów"]
* @param {string} template Optional template ('$1 $2' as default)
*
* @return {string} e.g. "5 produktów"
*/
function quantityNounVariant(n, variants, template) {
var r1 = n % 100,
r2,
ret = '',
template = template || '$1 $2';
if (r1 === 1 && n < 100) {
ret = variants[0];
} else {
r2 = r1 % 10;
if ((r2 > 1 && r2 < 5) && (r1 < 12 || r1 > 14)) {
ret = variants[1];
} else {
ret = variants[2];
}
}
return template.replace('$1', n).replace('$2', ret)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment