plurals.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885
  1. const a = (n, ord) => {
  2. if (ord) return 'other';
  3. return n == 1 ? 'one' : 'other';
  4. };
  5. const b = (n, ord) => {
  6. if (ord) return 'other';
  7. return (n == 0 || n == 1) ? 'one' : 'other';
  8. };
  9. const c = (n, ord) => {
  10. if (ord) return 'other';
  11. return n >= 0 && n <= 1 ? 'one' : 'other';
  12. };
  13. const d = (n, ord) => {
  14. const s = String(n).split('.'), v0 = !s[1];
  15. if (ord) return 'other';
  16. return n == 1 && v0 ? 'one' : 'other';
  17. };
  18. const e = (n, ord) => 'other';
  19. const f = (n, ord) => {
  20. if (ord) return 'other';
  21. return n == 1 ? 'one'
  22. : n == 2 ? 'two'
  23. : 'other';
  24. };
  25. (function (root, plurals) {
  26. Object.defineProperty(plurals, '__esModule', { value: true });
  27. if (typeof define === 'function' && define.amd) define(plurals);
  28. else if (typeof exports === 'object') module.exports = plurals;
  29. else root.plurals = plurals;
  30. }(this, {
  31. af: a,
  32. ak: b,
  33. am: c,
  34. an: a,
  35. ar: (n, ord) => {
  36. const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);
  37. if (ord) return 'other';
  38. return n == 0 ? 'zero'
  39. : n == 1 ? 'one'
  40. : n == 2 ? 'two'
  41. : (n100 >= 3 && n100 <= 10) ? 'few'
  42. : (n100 >= 11 && n100 <= 99) ? 'many'
  43. : 'other';
  44. },
  45. ars: (n, ord) => {
  46. const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);
  47. if (ord) return 'other';
  48. return n == 0 ? 'zero'
  49. : n == 1 ? 'one'
  50. : n == 2 ? 'two'
  51. : (n100 >= 3 && n100 <= 10) ? 'few'
  52. : (n100 >= 11 && n100 <= 99) ? 'many'
  53. : 'other';
  54. },
  55. as: (n, ord) => {
  56. if (ord) return (n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10) ? 'one'
  57. : (n == 2 || n == 3) ? 'two'
  58. : n == 4 ? 'few'
  59. : n == 6 ? 'many'
  60. : 'other';
  61. return n >= 0 && n <= 1 ? 'one' : 'other';
  62. },
  63. asa: a,
  64. ast: d,
  65. az: (n, ord) => {
  66. const s = String(n).split('.'), i = s[0], i10 = i.slice(-1), i100 = i.slice(-2), i1000 = i.slice(-3);
  67. if (ord) return (i10 == 1 || i10 == 2 || i10 == 5 || i10 == 7 || i10 == 8) || (i100 == 20 || i100 == 50 || i100 == 70 || i100 == 80) ? 'one'
  68. : (i10 == 3 || i10 == 4) || (i1000 == 100 || i1000 == 200 || i1000 == 300 || i1000 == 400 || i1000 == 500 || i1000 == 600 || i1000 == 700 || i1000 == 800 || i1000 == 900) ? 'few'
  69. : i == 0 || i10 == 6 || (i100 == 40 || i100 == 60 || i100 == 90) ? 'many'
  70. : 'other';
  71. return n == 1 ? 'one' : 'other';
  72. },
  73. bal: (n, ord) => n == 1 ? 'one' : 'other',
  74. be: (n, ord) => {
  75. const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);
  76. if (ord) return (n10 == 2 || n10 == 3) && n100 != 12 && n100 != 13 ? 'few' : 'other';
  77. return n10 == 1 && n100 != 11 ? 'one'
  78. : (n10 >= 2 && n10 <= 4) && (n100 < 12 || n100 > 14) ? 'few'
  79. : t0 && n10 == 0 || (n10 >= 5 && n10 <= 9) || (n100 >= 11 && n100 <= 14) ? 'many'
  80. : 'other';
  81. },
  82. bem: a,
  83. bez: a,
  84. bg: a,
  85. bho: b,
  86. bm: e,
  87. bn: (n, ord) => {
  88. if (ord) return (n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10) ? 'one'
  89. : (n == 2 || n == 3) ? 'two'
  90. : n == 4 ? 'few'
  91. : n == 6 ? 'many'
  92. : 'other';
  93. return n >= 0 && n <= 1 ? 'one' : 'other';
  94. },
  95. bo: e,
  96. br: (n, ord) => {
  97. const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), n1000000 = t0 && s[0].slice(-6);
  98. if (ord) return 'other';
  99. return n10 == 1 && n100 != 11 && n100 != 71 && n100 != 91 ? 'one'
  100. : n10 == 2 && n100 != 12 && n100 != 72 && n100 != 92 ? 'two'
  101. : ((n10 == 3 || n10 == 4) || n10 == 9) && (n100 < 10 || n100 > 19) && (n100 < 70 || n100 > 79) && (n100 < 90 || n100 > 99) ? 'few'
  102. : n != 0 && t0 && n1000000 == 0 ? 'many'
  103. : 'other';
  104. },
  105. brx: a,
  106. bs: (n, ord) => {
  107. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);
  108. if (ord) return 'other';
  109. return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'
  110. : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'
  111. : 'other';
  112. },
  113. ca: (n, ord) => {
  114. const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);
  115. if (ord) return (n == 1 || n == 3) ? 'one'
  116. : n == 2 ? 'two'
  117. : n == 4 ? 'few'
  118. : 'other';
  119. return n == 1 && v0 ? 'one'
  120. : i != 0 && i1000000 == 0 && v0 ? 'many'
  121. : 'other';
  122. },
  123. ce: a,
  124. ceb: (n, ord) => {
  125. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);
  126. if (ord) return 'other';
  127. return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';
  128. },
  129. cgg: a,
  130. chr: a,
  131. ckb: a,
  132. cs: (n, ord) => {
  133. const s = String(n).split('.'), i = s[0], v0 = !s[1];
  134. if (ord) return 'other';
  135. return n == 1 && v0 ? 'one'
  136. : (i >= 2 && i <= 4) && v0 ? 'few'
  137. : !v0 ? 'many'
  138. : 'other';
  139. },
  140. cy: (n, ord) => {
  141. if (ord) return (n == 0 || n == 7 || n == 8 || n == 9) ? 'zero'
  142. : n == 1 ? 'one'
  143. : n == 2 ? 'two'
  144. : (n == 3 || n == 4) ? 'few'
  145. : (n == 5 || n == 6) ? 'many'
  146. : 'other';
  147. return n == 0 ? 'zero'
  148. : n == 1 ? 'one'
  149. : n == 2 ? 'two'
  150. : n == 3 ? 'few'
  151. : n == 6 ? 'many'
  152. : 'other';
  153. },
  154. da: (n, ord) => {
  155. const s = String(n).split('.'), i = s[0], t0 = Number(s[0]) == n;
  156. if (ord) return 'other';
  157. return n == 1 || !t0 && (i == 0 || i == 1) ? 'one' : 'other';
  158. },
  159. de: d,
  160. doi: c,
  161. dsb: (n, ord) => {
  162. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i100 = i.slice(-2), f100 = f.slice(-2);
  163. if (ord) return 'other';
  164. return v0 && i100 == 1 || f100 == 1 ? 'one'
  165. : v0 && i100 == 2 || f100 == 2 ? 'two'
  166. : v0 && (i100 == 3 || i100 == 4) || (f100 == 3 || f100 == 4) ? 'few'
  167. : 'other';
  168. },
  169. dv: a,
  170. dz: e,
  171. ee: a,
  172. el: a,
  173. en: (n, ord) => {
  174. const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);
  175. if (ord) return n10 == 1 && n100 != 11 ? 'one'
  176. : n10 == 2 && n100 != 12 ? 'two'
  177. : n10 == 3 && n100 != 13 ? 'few'
  178. : 'other';
  179. return n == 1 && v0 ? 'one' : 'other';
  180. },
  181. eo: a,
  182. es: (n, ord) => {
  183. const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);
  184. if (ord) return 'other';
  185. return n == 1 ? 'one'
  186. : i != 0 && i1000000 == 0 && v0 ? 'many'
  187. : 'other';
  188. },
  189. et: d,
  190. eu: a,
  191. fa: c,
  192. ff: (n, ord) => {
  193. if (ord) return 'other';
  194. return n >= 0 && n < 2 ? 'one' : 'other';
  195. },
  196. fi: d,
  197. fil: (n, ord) => {
  198. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);
  199. if (ord) return n == 1 ? 'one' : 'other';
  200. return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';
  201. },
  202. fo: a,
  203. fr: (n, ord) => {
  204. const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);
  205. if (ord) return n == 1 ? 'one' : 'other';
  206. return n >= 0 && n < 2 ? 'one'
  207. : i != 0 && i1000000 == 0 && v0 ? 'many'
  208. : 'other';
  209. },
  210. fur: a,
  211. fy: d,
  212. ga: (n, ord) => {
  213. const s = String(n).split('.'), t0 = Number(s[0]) == n;
  214. if (ord) return n == 1 ? 'one' : 'other';
  215. return n == 1 ? 'one'
  216. : n == 2 ? 'two'
  217. : (t0 && n >= 3 && n <= 6) ? 'few'
  218. : (t0 && n >= 7 && n <= 10) ? 'many'
  219. : 'other';
  220. },
  221. gd: (n, ord) => {
  222. const s = String(n).split('.'), t0 = Number(s[0]) == n;
  223. if (ord) return (n == 1 || n == 11) ? 'one'
  224. : (n == 2 || n == 12) ? 'two'
  225. : (n == 3 || n == 13) ? 'few'
  226. : 'other';
  227. return (n == 1 || n == 11) ? 'one'
  228. : (n == 2 || n == 12) ? 'two'
  229. : ((t0 && n >= 3 && n <= 10) || (t0 && n >= 13 && n <= 19)) ? 'few'
  230. : 'other';
  231. },
  232. gl: d,
  233. gsw: a,
  234. gu: (n, ord) => {
  235. if (ord) return n == 1 ? 'one'
  236. : (n == 2 || n == 3) ? 'two'
  237. : n == 4 ? 'few'
  238. : n == 6 ? 'many'
  239. : 'other';
  240. return n >= 0 && n <= 1 ? 'one' : 'other';
  241. },
  242. guw: b,
  243. gv: (n, ord) => {
  244. const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);
  245. if (ord) return 'other';
  246. return v0 && i10 == 1 ? 'one'
  247. : v0 && i10 == 2 ? 'two'
  248. : v0 && (i100 == 0 || i100 == 20 || i100 == 40 || i100 == 60 || i100 == 80) ? 'few'
  249. : !v0 ? 'many'
  250. : 'other';
  251. },
  252. ha: a,
  253. haw: a,
  254. he: (n, ord) => {
  255. const s = String(n).split('.'), i = s[0], v0 = !s[1];
  256. if (ord) return 'other';
  257. return i == 1 && v0 || i == 0 && !v0 ? 'one'
  258. : i == 2 && v0 ? 'two'
  259. : 'other';
  260. },
  261. hi: (n, ord) => {
  262. if (ord) return n == 1 ? 'one'
  263. : (n == 2 || n == 3) ? 'two'
  264. : n == 4 ? 'few'
  265. : n == 6 ? 'many'
  266. : 'other';
  267. return n >= 0 && n <= 1 ? 'one' : 'other';
  268. },
  269. hnj: e,
  270. hr: (n, ord) => {
  271. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);
  272. if (ord) return 'other';
  273. return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'
  274. : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'
  275. : 'other';
  276. },
  277. hsb: (n, ord) => {
  278. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i100 = i.slice(-2), f100 = f.slice(-2);
  279. if (ord) return 'other';
  280. return v0 && i100 == 1 || f100 == 1 ? 'one'
  281. : v0 && i100 == 2 || f100 == 2 ? 'two'
  282. : v0 && (i100 == 3 || i100 == 4) || (f100 == 3 || f100 == 4) ? 'few'
  283. : 'other';
  284. },
  285. hu: (n, ord) => {
  286. if (ord) return (n == 1 || n == 5) ? 'one' : 'other';
  287. return n == 1 ? 'one' : 'other';
  288. },
  289. hy: (n, ord) => {
  290. if (ord) return n == 1 ? 'one' : 'other';
  291. return n >= 0 && n < 2 ? 'one' : 'other';
  292. },
  293. ia: d,
  294. id: e,
  295. ig: e,
  296. ii: e,
  297. io: d,
  298. is: (n, ord) => {
  299. const s = String(n).split('.'), i = s[0], t = (s[1] || '').replace(/0+$/, ''), t0 = Number(s[0]) == n, i10 = i.slice(-1), i100 = i.slice(-2);
  300. if (ord) return 'other';
  301. return t0 && i10 == 1 && i100 != 11 || t % 10 == 1 && t % 100 != 11 ? 'one' : 'other';
  302. },
  303. it: (n, ord) => {
  304. const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);
  305. if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';
  306. return n == 1 && v0 ? 'one'
  307. : i != 0 && i1000000 == 0 && v0 ? 'many'
  308. : 'other';
  309. },
  310. iu: f,
  311. ja: e,
  312. jbo: e,
  313. jgo: a,
  314. jmc: a,
  315. jv: e,
  316. jw: e,
  317. ka: (n, ord) => {
  318. const s = String(n).split('.'), i = s[0], i100 = i.slice(-2);
  319. if (ord) return i == 1 ? 'one'
  320. : i == 0 || ((i100 >= 2 && i100 <= 20) || i100 == 40 || i100 == 60 || i100 == 80) ? 'many'
  321. : 'other';
  322. return n == 1 ? 'one' : 'other';
  323. },
  324. kab: (n, ord) => {
  325. if (ord) return 'other';
  326. return n >= 0 && n < 2 ? 'one' : 'other';
  327. },
  328. kaj: a,
  329. kcg: a,
  330. kde: e,
  331. kea: e,
  332. kk: (n, ord) => {
  333. const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1);
  334. if (ord) return n10 == 6 || n10 == 9 || t0 && n10 == 0 && n != 0 ? 'many' : 'other';
  335. return n == 1 ? 'one' : 'other';
  336. },
  337. kkj: a,
  338. kl: a,
  339. km: e,
  340. kn: c,
  341. ko: e,
  342. ks: a,
  343. ksb: a,
  344. ksh: (n, ord) => {
  345. if (ord) return 'other';
  346. return n == 0 ? 'zero'
  347. : n == 1 ? 'one'
  348. : 'other';
  349. },
  350. ku: a,
  351. kw: (n, ord) => {
  352. const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2), n1000 = t0 && s[0].slice(-3), n100000 = t0 && s[0].slice(-5), n1000000 = t0 && s[0].slice(-6);
  353. if (ord) return (t0 && n >= 1 && n <= 4) || ((n100 >= 1 && n100 <= 4) || (n100 >= 21 && n100 <= 24) || (n100 >= 41 && n100 <= 44) || (n100 >= 61 && n100 <= 64) || (n100 >= 81 && n100 <= 84)) ? 'one'
  354. : n == 5 || n100 == 5 ? 'many'
  355. : 'other';
  356. return n == 0 ? 'zero'
  357. : n == 1 ? 'one'
  358. : (n100 == 2 || n100 == 22 || n100 == 42 || n100 == 62 || n100 == 82) || t0 && n1000 == 0 && ((n100000 >= 1000 && n100000 <= 20000) || n100000 == 40000 || n100000 == 60000 || n100000 == 80000) || n != 0 && n1000000 == 100000 ? 'two'
  359. : (n100 == 3 || n100 == 23 || n100 == 43 || n100 == 63 || n100 == 83) ? 'few'
  360. : n != 1 && (n100 == 1 || n100 == 21 || n100 == 41 || n100 == 61 || n100 == 81) ? 'many'
  361. : 'other';
  362. },
  363. ky: a,
  364. lag: (n, ord) => {
  365. const s = String(n).split('.'), i = s[0];
  366. if (ord) return 'other';
  367. return n == 0 ? 'zero'
  368. : (i == 0 || i == 1) && n != 0 ? 'one'
  369. : 'other';
  370. },
  371. lb: a,
  372. lg: a,
  373. lij: (n, ord) => {
  374. const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n;
  375. if (ord) return (n == 11 || n == 8 || (t0 && n >= 80 && n <= 89) || (t0 && n >= 800 && n <= 899)) ? 'many' : 'other';
  376. return n == 1 && v0 ? 'one' : 'other';
  377. },
  378. lkt: e,
  379. ln: b,
  380. lo: (n, ord) => {
  381. if (ord) return n == 1 ? 'one' : 'other';
  382. return 'other';
  383. },
  384. lt: (n, ord) => {
  385. const s = String(n).split('.'), f = s[1] || '', t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);
  386. if (ord) return 'other';
  387. return n10 == 1 && (n100 < 11 || n100 > 19) ? 'one'
  388. : (n10 >= 2 && n10 <= 9) && (n100 < 11 || n100 > 19) ? 'few'
  389. : f != 0 ? 'many'
  390. : 'other';
  391. },
  392. lv: (n, ord) => {
  393. const s = String(n).split('.'), f = s[1] || '', v = f.length, t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);
  394. if (ord) return 'other';
  395. return t0 && n10 == 0 || (n100 >= 11 && n100 <= 19) || v == 2 && (f100 >= 11 && f100 <= 19) ? 'zero'
  396. : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one'
  397. : 'other';
  398. },
  399. mas: a,
  400. mg: b,
  401. mgo: a,
  402. mk: (n, ord) => {
  403. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);
  404. if (ord) return i10 == 1 && i100 != 11 ? 'one'
  405. : i10 == 2 && i100 != 12 ? 'two'
  406. : (i10 == 7 || i10 == 8) && i100 != 17 && i100 != 18 ? 'many'
  407. : 'other';
  408. return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : 'other';
  409. },
  410. ml: a,
  411. mn: a,
  412. mo: (n, ord) => {
  413. const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);
  414. if (ord) return n == 1 ? 'one' : 'other';
  415. return n == 1 && v0 ? 'one'
  416. : !v0 || n == 0 || n != 1 && (n100 >= 1 && n100 <= 19) ? 'few'
  417. : 'other';
  418. },
  419. mr: (n, ord) => {
  420. if (ord) return n == 1 ? 'one'
  421. : (n == 2 || n == 3) ? 'two'
  422. : n == 4 ? 'few'
  423. : 'other';
  424. return n == 1 ? 'one' : 'other';
  425. },
  426. ms: (n, ord) => {
  427. if (ord) return n == 1 ? 'one' : 'other';
  428. return 'other';
  429. },
  430. mt: (n, ord) => {
  431. const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);
  432. if (ord) return 'other';
  433. return n == 1 ? 'one'
  434. : n == 2 ? 'two'
  435. : n == 0 || (n100 >= 3 && n100 <= 10) ? 'few'
  436. : (n100 >= 11 && n100 <= 19) ? 'many'
  437. : 'other';
  438. },
  439. my: e,
  440. nah: a,
  441. naq: f,
  442. nb: a,
  443. nd: a,
  444. ne: (n, ord) => {
  445. const s = String(n).split('.'), t0 = Number(s[0]) == n;
  446. if (ord) return (t0 && n >= 1 && n <= 4) ? 'one' : 'other';
  447. return n == 1 ? 'one' : 'other';
  448. },
  449. nl: d,
  450. nn: a,
  451. nnh: a,
  452. no: a,
  453. nqo: e,
  454. nr: a,
  455. nso: b,
  456. ny: a,
  457. nyn: a,
  458. om: a,
  459. or: (n, ord) => {
  460. const s = String(n).split('.'), t0 = Number(s[0]) == n;
  461. if (ord) return (n == 1 || n == 5 || (t0 && n >= 7 && n <= 9)) ? 'one'
  462. : (n == 2 || n == 3) ? 'two'
  463. : n == 4 ? 'few'
  464. : n == 6 ? 'many'
  465. : 'other';
  466. return n == 1 ? 'one' : 'other';
  467. },
  468. os: a,
  469. osa: e,
  470. pa: b,
  471. pap: a,
  472. pcm: c,
  473. pl: (n, ord) => {
  474. const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);
  475. if (ord) return 'other';
  476. return n == 1 && v0 ? 'one'
  477. : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'
  478. : v0 && i != 1 && (i10 == 0 || i10 == 1) || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 12 && i100 <= 14) ? 'many'
  479. : 'other';
  480. },
  481. prg: (n, ord) => {
  482. const s = String(n).split('.'), f = s[1] || '', v = f.length, t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);
  483. if (ord) return 'other';
  484. return t0 && n10 == 0 || (n100 >= 11 && n100 <= 19) || v == 2 && (f100 >= 11 && f100 <= 19) ? 'zero'
  485. : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one'
  486. : 'other';
  487. },
  488. ps: a,
  489. pt: (n, ord) => {
  490. const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);
  491. if (ord) return 'other';
  492. return (i == 0 || i == 1) ? 'one'
  493. : i != 0 && i1000000 == 0 && v0 ? 'many'
  494. : 'other';
  495. },
  496. pt_PT: (n, ord) => {
  497. const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);
  498. if (ord) return 'other';
  499. return n == 1 && v0 ? 'one'
  500. : i != 0 && i1000000 == 0 && v0 ? 'many'
  501. : 'other';
  502. },
  503. rm: a,
  504. ro: (n, ord) => {
  505. const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);
  506. if (ord) return n == 1 ? 'one' : 'other';
  507. return n == 1 && v0 ? 'one'
  508. : !v0 || n == 0 || n != 1 && (n100 >= 1 && n100 <= 19) ? 'few'
  509. : 'other';
  510. },
  511. rof: a,
  512. ru: (n, ord) => {
  513. const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);
  514. if (ord) return 'other';
  515. return v0 && i10 == 1 && i100 != 11 ? 'one'
  516. : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'
  517. : v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 11 && i100 <= 14) ? 'many'
  518. : 'other';
  519. },
  520. rwk: a,
  521. sah: e,
  522. saq: a,
  523. sat: f,
  524. sc: (n, ord) => {
  525. const s = String(n).split('.'), v0 = !s[1];
  526. if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';
  527. return n == 1 && v0 ? 'one' : 'other';
  528. },
  529. scn: (n, ord) => {
  530. const s = String(n).split('.'), v0 = !s[1];
  531. if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';
  532. return n == 1 && v0 ? 'one' : 'other';
  533. },
  534. sd: a,
  535. sdh: a,
  536. se: f,
  537. seh: a,
  538. ses: e,
  539. sg: e,
  540. sh: (n, ord) => {
  541. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);
  542. if (ord) return 'other';
  543. return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'
  544. : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'
  545. : 'other';
  546. },
  547. shi: (n, ord) => {
  548. const s = String(n).split('.'), t0 = Number(s[0]) == n;
  549. if (ord) return 'other';
  550. return n >= 0 && n <= 1 ? 'one'
  551. : (t0 && n >= 2 && n <= 10) ? 'few'
  552. : 'other';
  553. },
  554. si: (n, ord) => {
  555. const s = String(n).split('.'), i = s[0], f = s[1] || '';
  556. if (ord) return 'other';
  557. return (n == 0 || n == 1) || i == 0 && f == 1 ? 'one' : 'other';
  558. },
  559. sk: (n, ord) => {
  560. const s = String(n).split('.'), i = s[0], v0 = !s[1];
  561. if (ord) return 'other';
  562. return n == 1 && v0 ? 'one'
  563. : (i >= 2 && i <= 4) && v0 ? 'few'
  564. : !v0 ? 'many'
  565. : 'other';
  566. },
  567. sl: (n, ord) => {
  568. const s = String(n).split('.'), i = s[0], v0 = !s[1], i100 = i.slice(-2);
  569. if (ord) return 'other';
  570. return v0 && i100 == 1 ? 'one'
  571. : v0 && i100 == 2 ? 'two'
  572. : v0 && (i100 == 3 || i100 == 4) || !v0 ? 'few'
  573. : 'other';
  574. },
  575. sma: f,
  576. smi: f,
  577. smj: f,
  578. smn: f,
  579. sms: f,
  580. sn: a,
  581. so: a,
  582. sq: (n, ord) => {
  583. const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);
  584. if (ord) return n == 1 ? 'one'
  585. : n10 == 4 && n100 != 14 ? 'many'
  586. : 'other';
  587. return n == 1 ? 'one' : 'other';
  588. },
  589. sr: (n, ord) => {
  590. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);
  591. if (ord) return 'other';
  592. return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'
  593. : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'
  594. : 'other';
  595. },
  596. ss: a,
  597. ssy: a,
  598. st: a,
  599. su: e,
  600. sv: (n, ord) => {
  601. const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);
  602. if (ord) return (n10 == 1 || n10 == 2) && n100 != 11 && n100 != 12 ? 'one' : 'other';
  603. return n == 1 && v0 ? 'one' : 'other';
  604. },
  605. sw: d,
  606. syr: a,
  607. ta: a,
  608. te: a,
  609. teo: a,
  610. th: e,
  611. ti: b,
  612. tig: a,
  613. tk: (n, ord) => {
  614. const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1);
  615. if (ord) return (n10 == 6 || n10 == 9) || n == 10 ? 'few' : 'other';
  616. return n == 1 ? 'one' : 'other';
  617. },
  618. tl: (n, ord) => {
  619. const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);
  620. if (ord) return n == 1 ? 'one' : 'other';
  621. return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';
  622. },
  623. tn: a,
  624. to: e,
  625. tpi: e,
  626. tr: a,
  627. ts: a,
  628. tzm: (n, ord) => {
  629. const s = String(n).split('.'), t0 = Number(s[0]) == n;
  630. if (ord) return 'other';
  631. return (n == 0 || n == 1) || (t0 && n >= 11 && n <= 99) ? 'one' : 'other';
  632. },
  633. ug: a,
  634. uk: (n, ord) => {
  635. const s = String(n).split('.'), i = s[0], v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), i10 = i.slice(-1), i100 = i.slice(-2);
  636. if (ord) return n10 == 3 && n100 != 13 ? 'few' : 'other';
  637. return v0 && i10 == 1 && i100 != 11 ? 'one'
  638. : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'
  639. : v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 11 && i100 <= 14) ? 'many'
  640. : 'other';
  641. },
  642. und: e,
  643. ur: d,
  644. uz: a,
  645. ve: a,
  646. vec: (n, ord) => {
  647. const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);
  648. if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';
  649. return n == 1 && v0 ? 'one'
  650. : i != 0 && i1000000 == 0 && v0 ? 'many'
  651. : 'other';
  652. },
  653. vi: (n, ord) => {
  654. if (ord) return n == 1 ? 'one' : 'other';
  655. return 'other';
  656. },
  657. vo: a,
  658. vun: a,
  659. wa: b,
  660. wae: a,
  661. wo: e,
  662. xh: a,
  663. xog: a,
  664. yi: d,
  665. yo: e,
  666. yue: e,
  667. zh: e,
  668. zu: c
  669. }));