UNPKG

plural-rules

Version:

Evaluates plural rules, so that localization libraries can choose the right plural form.

1 lines 34.6 kB
{"version":3,"file":"index.cjs","sources":["../src/data-indexer.js","../src/code.js","../src/data.js","../src/index.js"],"sourcesContent":["// Input string with the object serialized:\n// \"one:0,other:1\"\n// Output forms, names pointing to array indexes of their rules:\n// {\n// \"one\": 0,\n// \"other\": 1\n// }\nfunction parsePluralForms (serializedForms) {\n return serializedForms\n .split(',')\n .reduce((result, serializedForm) => {\n const parts = serializedForm.split(':')\n result[parts[0]] = +parts[1]\n return result\n }, {})\n}\n\n// Input forms with rules:\n// {\n// \"pluralRule-count-one\": \"i = 1 and v = 0 @integer 1\",\n// \"pluralRule-count-other\": \" @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, …\n// @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\"\n// }\n// Output rules, an array of distinct strings:\n// [\n// \"i = 1 and v = 0 @integer 1\",\n// \" @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, …\n// @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n// ...\n// ]\n// Output forms, names pointing to array indexes of their rules:\n// {\n// \"one\": 0,\n// \"other\": 1\n// }\nfunction indexPluralForms (forms, rules) {\n // Iterate over all plural forms.\n return Object\n .keys(forms)\n .reduce((result, formName) => {\n // Refer to plural rules in the de-duplication array.\n let rule = forms[formName]\n if (typeof rule === 'string') {\n rule = rule\n .trim()\n .replace(/ {2}/g, ' ')\n let ruleIndex = rules.indexOf(rule)\n if (ruleIndex < 0) {\n ruleIndex = rules.length\n rules.push(rule)\n }\n rule = ruleIndex\n }\n // Cut off prefixes \"pluralRule-count- from plural forms.\n if (formName.length > 17) {\n formName = formName.substr(17)\n }\n result[formName] = rule\n return result\n }, {})\n}\n\nexport { indexPluralForms, parsePluralForms }\n","import parsePluralRule from 'cldrpluralruleparser'\nimport { indexPluralForms, parsePluralForms } from './data-indexer.js'\n\nlet rules = []\nlet cardinals = {}\n\nfunction normalizeLocale (locale) {\n return locale.toLowerCase().replace('_', '-')\n}\n\nfunction getLanguage (locale) {\n const separator = locale.indexOf('-')\n return separator > 0 && locale.substr(0, separator)\n}\n\nfunction getPluralRulesForCardinals (locale) {\n locale = normalizeLocale(locale)\n let forms = cardinals[locale]\n let language\n if (forms === undefined) {\n language = getLanguage(locale)\n if (language) {\n forms = cardinals[language]\n }\n }\n if (forms === undefined) {\n throw new Error(`Unrecognised locale: \"${locale}\".`)\n } else if (typeof forms === 'string') {\n forms = parsePluralForms(forms)\n cardinals[language || locale] = forms\n }\n return forms\n}\n\nfunction getPluralFormForCardinal (locale, count) {\n const forms = typeof locale !== 'string'\n ? locale\n : getPluralRulesForCardinals(locale)\n for (const form in forms) {\n const rule = forms[form]\n if (parsePluralRule(rules[rule], count)) {\n return form\n }\n }\n}\n\nfunction setPluralFormsForCardinals (locale, forms) {\n locale = normalizeLocale(locale)\n cardinals[locale] = indexPluralForms(forms, rules)\n}\n\nfunction populatePluralData (data) {\n rules = data.rules\n cardinals = data.cardinals\n}\n\nlet supportedLocales\n\nfunction getSupportedLocales() {\n if (!supportedLocales) supportedLocales = Object.keys(cardinals)\n return supportedLocales\n}\n\nfunction getPluralFormsForLocale(locale) {\n const cardinal = cardinals[locale]\n if (cardinal === undefined) return\n return cardinal\n .split(',')\n .map(form => form.substring(0, form.indexOf(':')))\n}\n\nexport {\n getPluralRulesForCardinals, getPluralFormForCardinal,\n setPluralFormsForCardinals, populatePluralData,\n getSupportedLocales, getPluralFormsForLocale\n}\n","export default {\n \"version\": {\n \"_unicodeVersion\": \"12.1.0\",\n \"_cldrVersion\": \"36\"\n },\n \"rules\": [\n \"n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000\",\n \"@integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000\",\n \"@integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04\",\n \"@integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000\",\n \"n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000\",\n \"n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …\",\n \"n % 100 = 11..99 @integer 11~26, 111, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …\",\n \"@integer 100~102, 200~202, 300~302, 400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"i = 1 and v = 0 @integer 1\",\n \"@integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …\",\n \"n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …\",\n \"n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"@decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …\",\n \"@integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n % 10 = 1 and n % 100 != 11,71,91 @integer 1, 21, 31, 41, 51, 61, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 81.0, 101.0, 1001.0, …\",\n \"n % 10 = 2 and n % 100 != 12,72,92 @integer 2, 22, 32, 42, 52, 62, 82, 102, 1002, … @decimal 2.0, 22.0, 32.0, 42.0, 52.0, 62.0, 82.0, 102.0, 1002.0, …\",\n \"n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0, 9.0, 23.0, 24.0, 29.0, 33.0, 34.0, 103.0, 1003.0, …\",\n \"n != 0 and n % 1000000 = 0 @integer 1000000, … @decimal 1000000.0, 1000000.00, 1000000.000, …\",\n \"@integer 0, 5~8, 10~20, 100, 1000, 10000, 100000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, …\",\n \"v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …\",\n \"v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …\",\n \"@integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9 @integer 0~3, 5, 7, 8, 10~13, 15, 17, 18, 20, 21, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.3, 0.5, 0.7, 0.8, 1.0~1.3, 1.5, 1.7, 1.8, 2.0, 2.1, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"@integer 4, 6, 9, 14, 16, 19, 24, 26, 104, 1004, … @decimal 0.4, 0.6, 0.9, 1.4, 1.6, 1.9, 2.4, 2.6, 10.4, 100.4, 1000.4, …\",\n \"i = 2..4 and v = 0 @integer 2~4\",\n \"v != 0 @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"@integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …\",\n \"n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000\",\n \"n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000\",\n \"@integer 4, 5, 7~20, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6\",\n \"@integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"v = 0 and i % 100 = 1 or f % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …\",\n \"v = 0 and i % 100 = 2 or f % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, … @decimal 0.2, 1.2, 2.2, 3.2, 4.2, 5.2, 6.2, 7.2, 10.2, 100.2, 1000.2, …\",\n \"v = 0 and i % 100 = 3..4 or f % 100 = 3..4 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.3, 0.4, 1.3, 1.4, 2.3, 2.4, 3.3, 3.4, 4.3, 4.4, 5.3, 5.4, 6.3, 6.4, 7.3, 7.4, 10.3, 100.3, 1000.3, …\",\n \"i = 0,1 @integer 0, 1 @decimal 0.0~1.5\",\n \"@integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00, 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000\",\n \"n = 7..10 @integer 7~10 @decimal 7.0, 8.0, 9.0, 10.0, 7.00, 8.00, 9.00, 10.00, 7.000, 8.000, 9.000, 10.000, 7.0000, 8.0000, 9.0000, 10.0000\",\n \"@integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n = 1,11 @integer 1, 11 @decimal 1.0, 11.0, 1.00, 11.00, 1.000, 11.000, 1.0000\",\n \"n = 2,12 @integer 2, 12 @decimal 2.0, 12.0, 2.00, 12.00, 2.000, 12.000, 2.0000\",\n \"n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00\",\n \"@integer 0, 20~34, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"v = 0 and i % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, …\",\n \"v = 0 and i % 10 = 2 @integer 2, 12, 22, 32, 42, 52, 62, 72, 102, 1002, …\",\n \"v = 0 and i % 100 = 0,20,40,60,80 @integer 0, 20, 40, 60, 80, 100, 120, 140, 1000, 10000, 100000, 1000000, …\",\n \"@integer 3~10, 13~19, 23, 103, 1003, …\",\n \"i = 2 and v = 0 @integer 2\",\n \"v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, …\",\n \"@integer 0, 3~17, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 1000.1, …\",\n \"@integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"@integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n % 100 = 2,22,42,62,82 or n % 1000 = 0 and n % 100000 = 1000..20000,40000,60000,80000 or n != 0 and n % 1000000 = 100000 @integer 2, 22, 42, 62, 82, 102, 122, 142, 1000, 10000, 100000, … @decimal 2.0, 22.0, 42.0, 62.0, 82.0, 102.0, 122.0, 142.0, 1000.0, 10000.0, 100000.0, …\",\n \"n % 100 = 3,23,43,63,83 @integer 3, 23, 43, 63, 83, 103, 123, 143, 1003, … @decimal 3.0, 23.0, 43.0, 63.0, 83.0, 103.0, 123.0, 143.0, 1003.0, …\",\n \"n != 1 and n % 100 = 1,21,41,61,81 @integer 21, 41, 61, 81, 101, 121, 141, 161, 1001, … @decimal 21.0, 41.0, 61.0, 81.0, 101.0, 121.0, 141.0, 161.0, 1001.0, …\",\n \"@integer 4~19, 100, 1004, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.1, 1000000.0, …\",\n \"i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6\",\n \"n % 10 = 1 and n % 100 != 11..19 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …\",\n \"n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, … @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002.0, …\",\n \"f != 0 @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …\",\n \"@integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …\",\n \"@integer 2~9, 22~29, 102, 1002, … @decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, …\",\n \"@integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.0, 1.2~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"v != 0 or n = 0 or n % 100 = 2..19 @integer 0, 2~16, 102, 1002, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"@integer 20~35, 100, 1000, 10000, 100000, 1000000, …\",\n \"n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …\",\n \"n % 100 = 11..19 @integer 11~19, 111~117, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …\",\n \"@integer 20~35, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …\",\n \"v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …\",\n \"@decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"i = 0..1 @integer 0, 1 @decimal 0.0~1.5\",\n \"v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …\",\n \"v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …\",\n \"n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00\",\n \"@integer 11~26, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~1.9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.00, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000\",\n \"@integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0.9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"v = 0 and i % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, …\",\n \"v = 0 and i % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, …\",\n \"v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\",\n \"n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0\",\n \"@integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …\"\n ],\n \"cardinals\": {\n \"af\": \"one:0,other:1\",\n \"ak\": \"one:2,other:3\",\n \"am\": \"one:4,other:5\",\n \"an\": \"one:0,other:1\",\n \"ar\": \"zero:6,one:0,two:7,few:8,many:9,other:10\",\n \"ars\": \"zero:6,one:0,two:7,few:8,many:9,other:10\",\n \"as\": \"one:4,other:5\",\n \"asa\": \"one:0,other:1\",\n \"ast\": \"one:11,other:12\",\n \"az\": \"one:0,other:1\",\n \"be\": \"one:13,few:14,many:15,other:16\",\n \"bem\": \"one:0,other:1\",\n \"bez\": \"one:0,other:1\",\n \"bg\": \"one:0,other:1\",\n \"bho\": \"one:2,other:3\",\n \"bm\": \"other:17\",\n \"bn\": \"one:4,other:5\",\n \"bo\": \"other:17\",\n \"br\": \"one:18,two:19,few:20,many:21,other:22\",\n \"brx\": \"one:0,other:1\",\n \"bs\": \"one:23,few:24,other:25\",\n \"ca\": \"one:11,other:12\",\n \"ce\": \"one:0,other:1\",\n \"ceb\": \"one:26,other:27\",\n \"cgg\": \"one:0,other:1\",\n \"chr\": \"one:0,other:1\",\n \"ckb\": \"one:0,other:1\",\n \"cs\": \"one:11,few:28,many:29,other:30\",\n \"cy\": \"zero:6,one:0,two:7,few:31,many:32,other:33\",\n \"da\": \"one:34,other:35\",\n \"de\": \"one:11,other:12\",\n \"dsb\": \"one:36,two:37,few:38,other:25\",\n \"dv\": \"one:0,other:1\",\n \"dz\": \"other:17\",\n \"ee\": \"one:0,other:1\",\n \"el\": \"one:0,other:1\",\n \"en\": \"one:11,other:12\",\n \"eo\": \"one:0,other:1\",\n \"es\": \"one:0,other:1\",\n \"et\": \"one:11,other:12\",\n \"eu\": \"one:0,other:1\",\n \"fa\": \"one:4,other:5\",\n \"ff\": \"one:39,other:40\",\n \"fi\": \"one:11,other:12\",\n \"fil\": \"one:26,other:27\",\n \"fo\": \"one:0,other:1\",\n \"fr\": \"one:39,other:40\",\n \"fur\": \"one:0,other:1\",\n \"fy\": \"one:11,other:12\",\n \"ga\": \"one:0,two:7,few:41,many:42,other:43\",\n \"gd\": \"one:44,two:45,few:46,other:47\",\n \"gl\": \"one:11,other:12\",\n \"gsw\": \"one:0,other:1\",\n \"gu\": \"one:4,other:5\",\n \"guw\": \"one:2,other:3\",\n \"gv\": \"one:48,two:49,few:50,many:29,other:51\",\n \"ha\": \"one:0,other:1\",\n \"haw\": \"one:0,other:1\",\n \"he\": \"one:11,two:52,many:53,other:54\",\n \"hi\": \"one:4,other:5\",\n \"hr\": \"one:23,few:24,other:25\",\n \"hsb\": \"one:36,two:37,few:38,other:25\",\n \"hu\": \"one:0,other:1\",\n \"hy\": \"one:39,other:40\",\n \"ia\": \"one:11,other:12\",\n \"id\": \"other:17\",\n \"ig\": \"other:17\",\n \"ii\": \"other:17\",\n \"in\": \"other:17\",\n \"io\": \"one:11,other:12\",\n \"is\": \"one:55,other:56\",\n \"it\": \"one:11,other:12\",\n \"iu\": \"one:0,two:7,other:57\",\n \"iw\": \"one:11,two:52,many:53,other:54\",\n \"ja\": \"other:17\",\n \"jbo\": \"other:17\",\n \"jgo\": \"one:0,other:1\",\n \"ji\": \"one:11,other:12\",\n \"jmc\": \"one:0,other:1\",\n \"jv\": \"other:17\",\n \"jw\": \"other:17\",\n \"ka\": \"one:0,other:1\",\n \"kab\": \"one:39,other:40\",\n \"kaj\": \"one:0,other:1\",\n \"kcg\": \"one:0,other:1\",\n \"kde\": \"other:17\",\n \"kea\": \"other:17\",\n \"kk\": \"one:0,other:1\",\n \"kkj\": \"one:0,other:1\",\n \"kl\": \"one:0,other:1\",\n \"km\": \"other:17\",\n \"kn\": \"one:4,other:5\",\n \"ko\": \"other:17\",\n \"ks\": \"one:0,other:1\",\n \"ksb\": \"one:0,other:1\",\n \"ksh\": \"zero:6,one:0,other:3\",\n \"ku\": \"one:0,other:1\",\n \"kw\": \"zero:6,one:0,two:58,few:59,many:60,other:61\",\n \"ky\": \"one:0,other:1\",\n \"lag\": \"zero:6,one:62,other:40\",\n \"lb\": \"one:0,other:1\",\n \"lg\": \"one:0,other:1\",\n \"lkt\": \"other:17\",\n \"ln\": \"one:2,other:3\",\n \"lo\": \"other:17\",\n \"lt\": \"one:63,few:64,many:65,other:66\",\n \"lv\": \"zero:67,one:68,other:69\",\n \"mas\": \"one:0,other:1\",\n \"mg\": \"one:2,other:3\",\n \"mgo\": \"one:0,other:1\",\n \"mk\": \"one:23,other:70\",\n \"ml\": \"one:0,other:1\",\n \"mn\": \"one:0,other:1\",\n \"mo\": \"one:11,few:71,other:72\",\n \"mr\": \"one:0,other:1\",\n \"ms\": \"other:17\",\n \"mt\": \"one:0,few:73,many:74,other:75\",\n \"my\": \"other:17\",\n \"nah\": \"one:0,other:1\",\n \"naq\": \"one:0,two:7,other:57\",\n \"nb\": \"one:0,other:1\",\n \"nd\": \"one:0,other:1\",\n \"ne\": \"one:0,other:1\",\n \"nl\": \"one:11,other:12\",\n \"nn\": \"one:0,other:1\",\n \"nnh\": \"one:0,other:1\",\n \"no\": \"one:0,other:1\",\n \"nqo\": \"other:17\",\n \"nr\": \"one:0,other:1\",\n \"nso\": \"one:2,other:3\",\n \"ny\": \"one:0,other:1\",\n \"nyn\": \"one:0,other:1\",\n \"om\": \"one:0,other:1\",\n \"or\": \"one:0,other:1\",\n \"os\": \"one:0,other:1\",\n \"osa\": \"other:17\",\n \"pa\": \"one:2,other:3\",\n \"pap\": \"one:0,other:1\",\n \"pl\": \"one:11,few:76,many:77,other:78\",\n \"prg\": \"zero:67,one:68,other:69\",\n \"ps\": \"one:0,other:1\",\n \"pt\": \"one:79,other:40\",\n \"pt-pt\": \"one:11,other:12\",\n \"rm\": \"one:0,other:1\",\n \"ro\": \"one:11,few:71,other:72\",\n \"rof\": \"one:0,other:1\",\n \"root\": \"other:17\",\n \"ru\": \"one:80,few:76,many:81,other:78\",\n \"rwk\": \"one:0,other:1\",\n \"sah\": \"other:17\",\n \"saq\": \"one:0,other:1\",\n \"sc\": \"one:11,other:12\",\n \"scn\": \"one:11,other:12\",\n \"sd\": \"one:0,other:1\",\n \"sdh\": \"one:0,other:1\",\n \"se\": \"one:0,two:7,other:57\",\n \"seh\": \"one:0,other:1\",\n \"ses\": \"other:17\",\n \"sg\": \"other:17\",\n \"sh\": \"one:23,few:24,other:25\",\n \"shi\": \"one:4,few:82,other:83\",\n \"si\": \"one:84,other:85\",\n \"sk\": \"one:11,few:28,many:29,other:30\",\n \"sl\": \"one:86,two:87,few:88,other:30\",\n \"sma\": \"one:0,two:7,other:57\",\n \"smi\": \"one:0,two:7,other:57\",\n \"smj\": \"one:0,two:7,other:57\",\n \"smn\": \"one:0,two:7,other:57\",\n \"sms\": \"one:0,two:7,other:57\",\n \"sn\": \"one:0,other:1\",\n \"so\": \"one:0,other:1\",\n \"sq\": \"one:0,other:1\",\n \"sr\": \"one:23,few:24,other:25\",\n \"ss\": \"one:0,other:1\",\n \"ssy\": \"one:0,other:1\",\n \"st\": \"one:0,other:1\",\n \"su\": \"other:17\",\n \"sv\": \"one:11,other:12\",\n \"sw\": \"one:11,other:12\",\n \"syr\": \"one:0,other:1\",\n \"ta\": \"one:0,other:1\",\n \"te\": \"one:0,other:1\",\n \"teo\": \"one:0,other:1\",\n \"th\": \"other:17\",\n \"ti\": \"one:2,other:3\",\n \"tig\": \"one:0,other:1\",\n \"tk\": \"one:0,other:1\",\n \"tl\": \"one:26,other:27\",\n \"tn\": \"one:0,other:1\",\n \"to\": \"other:17\",\n \"tr\": \"one:0,other:1\",\n \"ts\": \"one:0,other:1\",\n \"tzm\": \"one:89,other:90\",\n \"ug\": \"one:0,other:1\",\n \"uk\": \"one:80,few:76,many:81,other:78\",\n \"ur\": \"one:11,other:12\",\n \"uz\": \"one:0,other:1\",\n \"ve\": \"one:0,other:1\",\n \"vi\": \"other:17\",\n \"vo\": \"one:0,other:1\",\n \"vun\": \"one:0,other:1\",\n \"wa\": \"one:2,other:3\",\n \"wae\": \"one:0,other:1\",\n \"wo\": \"other:17\",\n \"xh\": \"one:0,other:1\",\n \"xog\": \"one:0,other:1\",\n \"yi\": \"one:11,other:12\",\n \"yo\": \"other:17\",\n \"yue\": \"other:17\",\n \"zh\": \"other:17\",\n \"zu\": \"one:4,other:5\"\n }\n}","import {\n getPluralRulesForCardinals, getPluralFormForCardinal,\n setPluralFormsForCardinals, populatePluralData,\n getSupportedLocales, getPluralFormsForLocale\n} from './code.js'\nimport pluralData from './data.js'\n\npopulatePluralData(pluralData)\n\nexport {\n getPluralRulesForCardinals, getPluralFormForCardinal,\n setPluralFormsForCardinals,\n getSupportedLocales, getPluralFormsForLocale\n}\n"],"names":[],"mappings":"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"}