{"library":"make-plural","title":"Unicode CLDR Pluralization Rules","description":"make-plural provides JavaScript functions that implement the Unicode CLDR pluralization rules for approximately 220 languages. It handles both cardinal (e.g., 'one book') and ordinal (e.g., '1st book') pluralization categories. As of version 8.1.0, the library is actively maintained with regular updates to support the latest CLDR versions, ensuring accuracy for new locales and rule changes. Key differentiators include its pre-compiled, runtime-dependency-free functions, optimized for tree-shaking with ES modules, which can result in very small bundle sizes when only specific locales are imported. It is used internally by the `intl-pluralrules` polyfill and offers companion packages `make-plural-cli` and `make-plural-compiler` for custom build generation. The project maintains a steady release cadence, often tied to new CLDR versions or feature enhancements like compact notation support, ensuring current and accurate pluralization logic.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install make-plural"],"cli":null},"imports":["import { en } from 'make-plural'","import { en } from 'make-plural/cardinals'","import type { LocalePluralFunc } from 'make-plural'","import * as Categories from 'make-plural/pluralCategories'; Categories.pt_PT"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { en, fr } from 'make-plural';\nimport { en as ordinalEn } from 'make-plural/ordinals';\nimport * as Categories from 'make-plural/pluralCategories';\n\n// Cardinal pluralization\nconsole.log('English cardinal for 1:', en(1)); // 'one'\nconsole.log('English cardinal for 2:', en(2)); // 'other'\nconsole.log('French cardinal for 1:', fr(1)); // 'one'\nconsole.log('French cardinal for 2:', fr(2)); // 'one'\nconsole.log('French cardinal for 3:', fr(3)); // 'other'\n\n// Ordinal pluralization using the combined function (second argument `true`)\nconsole.log('English ordinal for 1:', en(1, true)); // 'one'\nconsole.log('English ordinal for 2:', en(2, true)); // 'two'\nconsole.log('English ordinal for 3:', en(3, true)); // 'few'\n\n// Ordinal pluralization using the dedicated ordinals module\nconsole.log('English ordinal (dedicated module) for 3:', ordinalEn(3)); // 'few'\n\n// Accessing plural categories for a locale\nconst enCategories = Categories.en.cardinal;\nconsole.log('English cardinal categories:', enCategories); // ['one', 'other']\n\nconst ptPtCategories = Categories.pt_PT.cardinal; // Note: pt-PT becomes pt_PT\nconsole.log('Portuguese (Portugal) cardinal categories:', ptPtCategories); // ['one', 'other']\n\n// Example with string representation of a number\nconsole.log('English cardinal for \"1.0\":', en('1.0')); // 'other'","lang":"typescript","description":"Demonstrates cardinal and ordinal pluralization for English and French, including specific locale imports for tree-shaking and accessing plural categories for different languages, highlighting locale key transformations.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}