File Coverage

blib/lib/Locale/CLDR/Plurals.pm
Criterion Covered Total %
statement 57 58 98.2
branch 12 14 85.7
condition 11 16 68.7
subroutine 14 14 100.0
pod 0 2 0.0
total 94 104 90.3


line stmt bran cond sub pod time code
1             package Locale::CLDR::Plurals;
2             # This file auto generated from Data\common\supplemental\pluralRanges.xml
3             # on Fri 17 Jan 12:03:31 pm GMT
4              
5 23     23   30024 use strict;
  23         65  
  23         1114  
6 23     23   138 use warnings;
  23         48  
  23         1403  
7 23     23   170 use version;
  23         48  
  23         190  
8              
9             our $VERSION = version->declare('v0.46.0');
10              
11 23     23   3325 use v5.12.0;
  23         119  
12 23     23   158 use mro 'c3';
  23         63  
  23         237  
13 23     23   1073 use utf8;
  23         73  
  23         236  
14 23     23   1085 use feature 'unicode_strings';
  23         60  
  23         3903  
15 23     23   196 use Types::Standard qw( Str Int HashRef ArrayRef CodeRef RegexpRef );
  23         61  
  23         275  
16 23     23   66785 use Moo::Role;
  23         63  
  23         239  
17              
18             sub _parse_number_plurals {
19 23     23   18836 use bigfloat;
  23         59  
  23         275  
20 1198     1198   2380 my $number = shift;
21 1198   50     6704 my $e = my $c = ($number =~ /[ce](.*)$/ // 0);
22              
23 1198 50       3075 if ($e) {
24 0         0 $number =~ s/[ce].*$//;
25             }
26              
27 1198 50       3686 $number *= 10 ** $e
28             if $e;
29              
30 1198         2354 my $n = abs($number);
31 1198         2934 my $i = int($n);
32 1198         3202 my ($f) = $number =~ /\.(.*)$/;
33 1198   100     5749 $f //= '';
34 1198 100       3528 my $t = length $f ? $f + 0 : '';
35 1198         4506 my $v = length $f;
36 1198         2156 my $w = length $t;
37 1198   100     9904 $t ||= 0;
38              
39 1198         36134 return ( $n, $i, $v, $w, $f, $t, $c, $e );
40             }
41              
42             my %_plurals = (
43              
44             cardinal => {
45             af => {
46             one => sub {
47             my $number = shift;
48             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
49             return scalar (grep {$n == $_} (1)) ;
50             },
51             },
52             ak => {
53             one => sub {
54             my $number = shift;
55             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
56             return scalar (grep {$n == $_} (0..1)) ;
57             },
58             },
59             am => {
60             one => sub {
61             my $number = shift;
62             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
63             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
64             },
65             },
66             an => {
67             one => sub {
68             my $number = shift;
69             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
70             return scalar (grep {$n == $_} (1)) ;
71             },
72             },
73             ar => {
74             few => sub {
75             my $number = shift;
76             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
77             return scalar (grep {$n % 100 == $_} (3..10)) ;
78             },
79             many => sub {
80             my $number = shift;
81             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
82             return scalar (grep {$n % 100 == $_} (11..99)) ;
83             },
84             one => sub {
85             my $number = shift;
86             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
87             return scalar (grep {$n == $_} (1)) ;
88             },
89             two => sub {
90             my $number = shift;
91             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
92             return scalar (grep {$n == $_} (2)) ;
93             },
94             zero => sub {
95             my $number = shift;
96             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
97             return scalar (grep {$n == $_} (0)) ;
98             },
99             },
100             ars => {
101             few => sub {
102             my $number = shift;
103             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
104             return scalar (grep {$n % 100 == $_} (3..10)) ;
105             },
106             many => sub {
107             my $number = shift;
108             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
109             return scalar (grep {$n % 100 == $_} (11..99)) ;
110             },
111             one => sub {
112             my $number = shift;
113             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
114             return scalar (grep {$n == $_} (1)) ;
115             },
116             two => sub {
117             my $number = shift;
118             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
119             return scalar (grep {$n == $_} (2)) ;
120             },
121             zero => sub {
122             my $number = shift;
123             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
124             return scalar (grep {$n == $_} (0)) ;
125             },
126             },
127             as => {
128             one => sub {
129             my $number = shift;
130             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
131             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
132             },
133             },
134             asa => {
135             one => sub {
136             my $number = shift;
137             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
138             return scalar (grep {$n == $_} (1)) ;
139             },
140             },
141             ast => {
142             one => sub {
143             my $number = shift;
144             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
145             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
146             },
147             },
148             az => {
149             one => sub {
150             my $number = shift;
151             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
152             return scalar (grep {$n == $_} (1)) ;
153             },
154             },
155             bal => {
156             one => sub {
157             my $number = shift;
158             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
159             return scalar (grep {$n == $_} (1)) ;
160             },
161             },
162             be => {
163             few => sub {
164             my $number = shift;
165             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
166             return scalar (grep {$n % 10 == $_} (2..4)) && ! scalar (grep {$n % 100 == $_} (12..14)) ;
167             },
168             many => sub {
169             my $number = shift;
170             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
171             return scalar (grep {$n % 10 == $_} (0)) || scalar (grep {$n % 10 == $_} (5..9)) || scalar (grep {$n % 100 == $_} (11..14)) ;
172             },
173             one => sub {
174             my $number = shift;
175             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
176             return scalar (grep {$n % 10 == $_} (1)) && ! scalar (grep {$n % 100 == $_} (11)) ;
177             },
178             },
179             bem => {
180             one => sub {
181             my $number = shift;
182             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
183             return scalar (grep {$n == $_} (1)) ;
184             },
185             },
186             bez => {
187             one => sub {
188             my $number = shift;
189             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
190             return scalar (grep {$n == $_} (1)) ;
191             },
192             },
193             bg => {
194             one => sub {
195             my $number = shift;
196             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
197             return scalar (grep {$n == $_} (1)) ;
198             },
199             },
200             bho => {
201             one => sub {
202             my $number = shift;
203             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
204             return scalar (grep {$n == $_} (0..1)) ;
205             },
206             },
207             blo => {
208             one => sub {
209             my $number = shift;
210             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
211             return scalar (grep {$n == $_} (1)) ;
212             },
213             zero => sub {
214             my $number = shift;
215             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
216             return scalar (grep {$n == $_} (0)) ;
217             },
218             },
219             bn => {
220             one => sub {
221             my $number = shift;
222             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
223             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
224             },
225             },
226             br => {
227             few => sub {
228             my $number = shift;
229             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
230             return scalar (grep {$n % 10 == $_} (3..4,9)) && ! scalar (grep {$n % 100 == $_} (10..19,70..79,90..99)) ;
231             },
232             many => sub {
233             my $number = shift;
234             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
235             return ! scalar (grep {$n == $_} (0)) && scalar (grep {$n % 1000000 == $_} (0)) ;
236             },
237             one => sub {
238             my $number = shift;
239             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
240             return scalar (grep {$n % 10 == $_} (1)) && ! scalar (grep {$n % 100 == $_} (11,71,91)) ;
241             },
242             two => sub {
243             my $number = shift;
244             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
245             return scalar (grep {$n % 10 == $_} (2)) && ! scalar (grep {$n % 100 == $_} (12,72,92)) ;
246             },
247             },
248             brx => {
249             one => sub {
250             my $number = shift;
251             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
252             return scalar (grep {$n == $_} (1)) ;
253             },
254             },
255             bs => {
256             few => sub {
257             my $number = shift;
258             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
259             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (2..4)) && ! scalar (grep {$i % 100 == $_} (12..14)) || scalar (grep {$f % 10 == $_} (2..4)) && ! scalar (grep {$f % 100 == $_} (12..14)) ;
260             },
261             one => sub {
262             my $number = shift;
263             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
264             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (1)) && ! scalar (grep {$i % 100 == $_} (11)) || scalar (grep {$f % 10 == $_} (1)) && ! scalar (grep {$f % 100 == $_} (11)) ;
265             },
266             },
267             ca => {
268             many => sub {
269             my $number = shift;
270             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
271             return scalar (grep {$e == $_} (0)) && ! scalar (grep {$i == $_} (0)) && scalar (grep {$i % 1000000 == $_} (0)) && scalar (grep {$v == $_} (0)) || ! scalar (grep {$e == $_} (0..5)) ;
272             },
273             one => sub {
274             my $number = shift;
275             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
276             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
277             },
278             },
279             ce => {
280             one => sub {
281             my $number = shift;
282             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
283             return scalar (grep {$n == $_} (1)) ;
284             },
285             },
286             ceb => {
287             one => sub {
288             my $number = shift;
289             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
290             return scalar (grep {$v == $_} (0)) && scalar (grep {$i == $_} (1,2,3)) || scalar (grep {$v == $_} (0)) && ! scalar (grep {$i % 10 == $_} (4,6,9)) || ! scalar (grep {$v == $_} (0)) && ! scalar (grep {$f % 10 == $_} (4,6,9)) ;
291             },
292             },
293             cgg => {
294             one => sub {
295             my $number = shift;
296             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
297             return scalar (grep {$n == $_} (1)) ;
298             },
299             },
300             chr => {
301             one => sub {
302             my $number = shift;
303             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
304             return scalar (grep {$n == $_} (1)) ;
305             },
306             },
307             ckb => {
308             one => sub {
309             my $number = shift;
310             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
311             return scalar (grep {$n == $_} (1)) ;
312             },
313             },
314             cs => {
315             few => sub {
316             my $number = shift;
317             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
318             return scalar (grep {$i == $_} (2..4)) && scalar (grep {$v == $_} (0)) ;
319             },
320             many => sub {
321             my $number = shift;
322             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
323             return ! scalar (grep {$v == $_} (0)) ;
324             },
325             one => sub {
326             my $number = shift;
327             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
328             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
329             },
330             },
331             csw => {
332             one => sub {
333             my $number = shift;
334             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
335             return scalar (grep {$n == $_} (0..1)) ;
336             },
337             },
338             cy => {
339             few => sub {
340             my $number = shift;
341             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
342             return scalar (grep {$n == $_} (3)) ;
343             },
344             many => sub {
345             my $number = shift;
346             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
347             return scalar (grep {$n == $_} (6)) ;
348             },
349             one => sub {
350             my $number = shift;
351             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
352             return scalar (grep {$n == $_} (1)) ;
353             },
354             two => sub {
355             my $number = shift;
356             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
357             return scalar (grep {$n == $_} (2)) ;
358             },
359             zero => sub {
360             my $number = shift;
361             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
362             return scalar (grep {$n == $_} (0)) ;
363             },
364             },
365             da => {
366             one => sub {
367             my $number = shift;
368             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
369             return scalar (grep {$n == $_} (1)) || ! scalar (grep {$t == $_} (0)) && scalar (grep {$i == $_} (0,1)) ;
370             },
371             },
372             de => {
373             one => sub {
374             my $number = shift;
375             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
376             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
377             },
378             },
379             doi => {
380             one => sub {
381             my $number = shift;
382             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
383             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
384             },
385             },
386             dsb => {
387             few => sub {
388             my $number = shift;
389             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
390             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (3..4)) || scalar (grep {$f % 100 == $_} (3..4)) ;
391             },
392             one => sub {
393             my $number = shift;
394             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
395             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (1)) || scalar (grep {$f % 100 == $_} (1)) ;
396             },
397             two => sub {
398             my $number = shift;
399             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
400             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (2)) || scalar (grep {$f % 100 == $_} (2)) ;
401             },
402             },
403             dv => {
404             one => sub {
405             my $number = shift;
406             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
407             return scalar (grep {$n == $_} (1)) ;
408             },
409             },
410             ee => {
411             one => sub {
412             my $number = shift;
413             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
414             return scalar (grep {$n == $_} (1)) ;
415             },
416             },
417             el => {
418             one => sub {
419             my $number = shift;
420             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
421             return scalar (grep {$n == $_} (1)) ;
422             },
423             },
424             en => {
425             one => sub {
426             my $number = shift;
427             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
428             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
429             },
430             },
431             eo => {
432             one => sub {
433             my $number = shift;
434             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
435             return scalar (grep {$n == $_} (1)) ;
436             },
437             },
438             es => {
439             many => sub {
440             my $number = shift;
441             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
442             return scalar (grep {$e == $_} (0)) && ! scalar (grep {$i == $_} (0)) && scalar (grep {$i % 1000000 == $_} (0)) && scalar (grep {$v == $_} (0)) || ! scalar (grep {$e == $_} (0..5)) ;
443             },
444             one => sub {
445             my $number = shift;
446             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
447             return scalar (grep {$n == $_} (1)) ;
448             },
449             },
450             et => {
451             one => sub {
452             my $number = shift;
453             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
454             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
455             },
456             },
457             eu => {
458             one => sub {
459             my $number = shift;
460             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
461             return scalar (grep {$n == $_} (1)) ;
462             },
463             },
464             fa => {
465             one => sub {
466             my $number = shift;
467             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
468             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
469             },
470             },
471             ff => {
472             one => sub {
473             my $number = shift;
474             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
475             return scalar (grep {$i == $_} (0,1)) ;
476             },
477             },
478             fi => {
479             one => sub {
480             my $number = shift;
481             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
482             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
483             },
484             },
485             fil => {
486             one => sub {
487             my $number = shift;
488             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
489             return scalar (grep {$v == $_} (0)) && scalar (grep {$i == $_} (1,2,3)) || scalar (grep {$v == $_} (0)) && ! scalar (grep {$i % 10 == $_} (4,6,9)) || ! scalar (grep {$v == $_} (0)) && ! scalar (grep {$f % 10 == $_} (4,6,9)) ;
490             },
491             },
492             fo => {
493             one => sub {
494             my $number = shift;
495             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
496             return scalar (grep {$n == $_} (1)) ;
497             },
498             },
499             fr => {
500             many => sub {
501             my $number = shift;
502             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
503             return scalar (grep {$e == $_} (0)) && ! scalar (grep {$i == $_} (0)) && scalar (grep {$i % 1000000 == $_} (0)) && scalar (grep {$v == $_} (0)) || ! scalar (grep {$e == $_} (0..5)) ;
504             },
505             one => sub {
506             my $number = shift;
507             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
508             return scalar (grep {$i == $_} (0,1)) ;
509             },
510             },
511             fur => {
512             one => sub {
513             my $number = shift;
514             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
515             return scalar (grep {$n == $_} (1)) ;
516             },
517             },
518             fy => {
519             one => sub {
520             my $number = shift;
521             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
522             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
523             },
524             },
525             ga => {
526             few => sub {
527             my $number = shift;
528             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
529             return scalar (grep {$n == $_} (3..6)) ;
530             },
531             many => sub {
532             my $number = shift;
533             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
534             return scalar (grep {$n == $_} (7..10)) ;
535             },
536             one => sub {
537             my $number = shift;
538             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
539             return scalar (grep {$n == $_} (1)) ;
540             },
541             two => sub {
542             my $number = shift;
543             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
544             return scalar (grep {$n == $_} (2)) ;
545             },
546             },
547             gd => {
548             few => sub {
549             my $number = shift;
550             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
551             return scalar (grep {$n == $_} (3..10,13..19)) ;
552             },
553             one => sub {
554             my $number = shift;
555             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
556             return scalar (grep {$n == $_} (1,11)) ;
557             },
558             two => sub {
559             my $number = shift;
560             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
561             return scalar (grep {$n == $_} (2,12)) ;
562             },
563             },
564             gl => {
565             one => sub {
566             my $number = shift;
567             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
568             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
569             },
570             },
571             gsw => {
572             one => sub {
573             my $number = shift;
574             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
575             return scalar (grep {$n == $_} (1)) ;
576             },
577             },
578             gu => {
579             one => sub {
580             my $number = shift;
581             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
582             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
583             },
584             },
585             guw => {
586             one => sub {
587             my $number = shift;
588             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
589             return scalar (grep {$n == $_} (0..1)) ;
590             },
591             },
592             gv => {
593             few => sub {
594             my $number = shift;
595             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
596             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (0,20,40,60,80)) ;
597             },
598             many => sub {
599             my $number = shift;
600             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
601             return ! scalar (grep {$v == $_} (0)) ;
602             },
603             one => sub {
604             my $number = shift;
605             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
606             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (1)) ;
607             },
608             two => sub {
609             my $number = shift;
610             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
611             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (2)) ;
612             },
613             },
614             ha => {
615             one => sub {
616             my $number = shift;
617             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
618             return scalar (grep {$n == $_} (1)) ;
619             },
620             },
621             haw => {
622             one => sub {
623             my $number = shift;
624             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
625             return scalar (grep {$n == $_} (1)) ;
626             },
627             },
628             he => {
629             one => sub {
630             my $number = shift;
631             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
632             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) || scalar (grep {$i == $_} (0)) && ! scalar (grep {$v == $_} (0)) ;
633             },
634             two => sub {
635             my $number = shift;
636             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
637             return scalar (grep {$i == $_} (2)) && scalar (grep {$v == $_} (0)) ;
638             },
639             },
640             hi => {
641             one => sub {
642             my $number = shift;
643             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
644             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
645             },
646             },
647             hr => {
648             few => sub {
649             my $number = shift;
650             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
651             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (2..4)) && ! scalar (grep {$i % 100 == $_} (12..14)) || scalar (grep {$f % 10 == $_} (2..4)) && ! scalar (grep {$f % 100 == $_} (12..14)) ;
652             },
653             one => sub {
654             my $number = shift;
655             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
656             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (1)) && ! scalar (grep {$i % 100 == $_} (11)) || scalar (grep {$f % 10 == $_} (1)) && ! scalar (grep {$f % 100 == $_} (11)) ;
657             },
658             },
659             hsb => {
660             few => sub {
661             my $number = shift;
662             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
663             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (3..4)) || scalar (grep {$f % 100 == $_} (3..4)) ;
664             },
665             one => sub {
666             my $number = shift;
667             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
668             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (1)) || scalar (grep {$f % 100 == $_} (1)) ;
669             },
670             two => sub {
671             my $number = shift;
672             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
673             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (2)) || scalar (grep {$f % 100 == $_} (2)) ;
674             },
675             },
676             hu => {
677             one => sub {
678             my $number = shift;
679             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
680             return scalar (grep {$n == $_} (1)) ;
681             },
682             },
683             hy => {
684             one => sub {
685             my $number = shift;
686             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
687             return scalar (grep {$i == $_} (0,1)) ;
688             },
689             },
690             ia => {
691             one => sub {
692             my $number = shift;
693             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
694             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
695             },
696             },
697             io => {
698             one => sub {
699             my $number = shift;
700             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
701             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
702             },
703             },
704             is => {
705             one => sub {
706             my $number = shift;
707             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
708             return scalar (grep {$t == $_} (0)) && scalar (grep {$i % 10 == $_} (1)) && ! scalar (grep {$i % 100 == $_} (11)) || scalar (grep {$t % 10 == $_} (1)) && ! scalar (grep {$t % 100 == $_} (11)) ;
709             },
710             },
711             it => {
712             many => sub {
713             my $number = shift;
714             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
715             return scalar (grep {$e == $_} (0)) && ! scalar (grep {$i == $_} (0)) && scalar (grep {$i % 1000000 == $_} (0)) && scalar (grep {$v == $_} (0)) || ! scalar (grep {$e == $_} (0..5)) ;
716             },
717             one => sub {
718             my $number = shift;
719             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
720             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
721             },
722             },
723             iu => {
724             one => sub {
725             my $number = shift;
726             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
727             return scalar (grep {$n == $_} (1)) ;
728             },
729             two => sub {
730             my $number = shift;
731             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
732             return scalar (grep {$n == $_} (2)) ;
733             },
734             },
735             iw => {
736             one => sub {
737             my $number = shift;
738             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
739             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) || scalar (grep {$i == $_} (0)) && ! scalar (grep {$v == $_} (0)) ;
740             },
741             two => sub {
742             my $number = shift;
743             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
744             return scalar (grep {$i == $_} (2)) && scalar (grep {$v == $_} (0)) ;
745             },
746             },
747             jgo => {
748             one => sub {
749             my $number = shift;
750             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
751             return scalar (grep {$n == $_} (1)) ;
752             },
753             },
754             ji => {
755             one => sub {
756             my $number = shift;
757             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
758             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
759             },
760             },
761             jmc => {
762             one => sub {
763             my $number = shift;
764             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
765             return scalar (grep {$n == $_} (1)) ;
766             },
767             },
768             ka => {
769             one => sub {
770             my $number = shift;
771             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
772             return scalar (grep {$n == $_} (1)) ;
773             },
774             },
775             kab => {
776             one => sub {
777             my $number = shift;
778             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
779             return scalar (grep {$i == $_} (0,1)) ;
780             },
781             },
782             kaj => {
783             one => sub {
784             my $number = shift;
785             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
786             return scalar (grep {$n == $_} (1)) ;
787             },
788             },
789             kcg => {
790             one => sub {
791             my $number = shift;
792             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
793             return scalar (grep {$n == $_} (1)) ;
794             },
795             },
796             kk => {
797             one => sub {
798             my $number = shift;
799             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
800             return scalar (grep {$n == $_} (1)) ;
801             },
802             },
803             kkj => {
804             one => sub {
805             my $number = shift;
806             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
807             return scalar (grep {$n == $_} (1)) ;
808             },
809             },
810             kl => {
811             one => sub {
812             my $number = shift;
813             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
814             return scalar (grep {$n == $_} (1)) ;
815             },
816             },
817             kn => {
818             one => sub {
819             my $number = shift;
820             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
821             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
822             },
823             },
824             ks => {
825             one => sub {
826             my $number = shift;
827             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
828             return scalar (grep {$n == $_} (1)) ;
829             },
830             },
831             ksb => {
832             one => sub {
833             my $number = shift;
834             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
835             return scalar (grep {$n == $_} (1)) ;
836             },
837             },
838             ksh => {
839             one => sub {
840             my $number = shift;
841             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
842             return scalar (grep {$n == $_} (1)) ;
843             },
844             zero => sub {
845             my $number = shift;
846             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
847             return scalar (grep {$n == $_} (0)) ;
848             },
849             },
850             ku => {
851             one => sub {
852             my $number = shift;
853             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
854             return scalar (grep {$n == $_} (1)) ;
855             },
856             },
857             kw => {
858             few => sub {
859             my $number = shift;
860             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
861             return scalar (grep {$n % 100 == $_} (3,23,43,63,83)) ;
862             },
863             many => sub {
864             my $number = shift;
865             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
866             return ! scalar (grep {$n == $_} (1)) && scalar (grep {$n % 100 == $_} (1,21,41,61,81)) ;
867             },
868             one => sub {
869             my $number = shift;
870             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
871             return scalar (grep {$n == $_} (1)) ;
872             },
873             two => sub {
874             my $number = shift;
875             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
876             return scalar (grep {$n % 100 == $_} (2,22,42,62,82)) || scalar (grep {$n % 1000 == $_} (0)) && scalar (grep {$n % 100000 == $_} (1000..20000,40000,60000,80000)) || ! scalar (grep {$n == $_} (0)) && scalar (grep {$n % 1000000 == $_} (100000)) ;
877             },
878             zero => sub {
879             my $number = shift;
880             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
881             return scalar (grep {$n == $_} (0)) ;
882             },
883             },
884             ky => {
885             one => sub {
886             my $number = shift;
887             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
888             return scalar (grep {$n == $_} (1)) ;
889             },
890             },
891             lag => {
892             one => sub {
893             my $number = shift;
894             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
895             return scalar (grep {$i == $_} (0,1)) && ! scalar (grep {$n == $_} (0)) ;
896             },
897             zero => sub {
898             my $number = shift;
899             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
900             return scalar (grep {$n == $_} (0)) ;
901             },
902             },
903             lb => {
904             one => sub {
905             my $number = shift;
906             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
907             return scalar (grep {$n == $_} (1)) ;
908             },
909             },
910             lg => {
911             one => sub {
912             my $number = shift;
913             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
914             return scalar (grep {$n == $_} (1)) ;
915             },
916             },
917             lij => {
918             one => sub {
919             my $number = shift;
920             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
921             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
922             },
923             },
924             lld => {
925             many => sub {
926             my $number = shift;
927             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
928             return scalar (grep {$e == $_} (0)) && ! scalar (grep {$i == $_} (0)) && scalar (grep {$i % 1000000 == $_} (0)) && scalar (grep {$v == $_} (0)) || ! scalar (grep {$e == $_} (0..5)) ;
929             },
930             one => sub {
931             my $number = shift;
932             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
933             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
934             },
935             },
936             ln => {
937             one => sub {
938             my $number = shift;
939             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
940             return scalar (grep {$n == $_} (0..1)) ;
941             },
942             },
943             lt => {
944             few => sub {
945             my $number = shift;
946             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
947             return scalar (grep {$n % 10 == $_} (2..9)) && ! scalar (grep {$n % 100 == $_} (11..19)) ;
948             },
949             many => sub {
950             my $number = shift;
951             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
952             return ! scalar (grep {$f == $_} (0)) ;
953             },
954             one => sub {
955             my $number = shift;
956             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
957             return scalar (grep {$n % 10 == $_} (1)) && ! scalar (grep {$n % 100 == $_} (11..19)) ;
958             },
959             },
960             lv => {
961             one => sub {
962             my $number = shift;
963             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
964             return scalar (grep {$n % 10 == $_} (1)) && ! scalar (grep {$n % 100 == $_} (11)) || scalar (grep {$v == $_} (2)) && scalar (grep {$f % 10 == $_} (1)) && ! scalar (grep {$f % 100 == $_} (11)) || ! scalar (grep {$v == $_} (2)) && scalar (grep {$f % 10 == $_} (1)) ;
965             },
966             zero => sub {
967             my $number = shift;
968             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
969             return scalar (grep {$n % 10 == $_} (0)) || scalar (grep {$n % 100 == $_} (11..19)) || scalar (grep {$v == $_} (2)) && scalar (grep {$f % 100 == $_} (11..19)) ;
970             },
971             },
972             mas => {
973             one => sub {
974             my $number = shift;
975             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
976             return scalar (grep {$n == $_} (1)) ;
977             },
978             },
979             mg => {
980             one => sub {
981             my $number = shift;
982             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
983             return scalar (grep {$n == $_} (0..1)) ;
984             },
985             },
986             mgo => {
987             one => sub {
988             my $number = shift;
989             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
990             return scalar (grep {$n == $_} (1)) ;
991             },
992             },
993             mk => {
994             one => sub {
995             my $number = shift;
996             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
997             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (1)) && ! scalar (grep {$i % 100 == $_} (11)) || scalar (grep {$f % 10 == $_} (1)) && ! scalar (grep {$f % 100 == $_} (11)) ;
998             },
999             },
1000             ml => {
1001             one => sub {
1002             my $number = shift;
1003             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1004             return scalar (grep {$n == $_} (1)) ;
1005             },
1006             },
1007             mn => {
1008             one => sub {
1009             my $number = shift;
1010             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1011             return scalar (grep {$n == $_} (1)) ;
1012             },
1013             },
1014             mo => {
1015             few => sub {
1016             my $number = shift;
1017             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1018             return ! scalar (grep {$v == $_} (0)) || scalar (grep {$n == $_} (0)) || ! scalar (grep {$n == $_} (1)) && scalar (grep {$n % 100 == $_} (1..19)) ;
1019             },
1020             one => sub {
1021             my $number = shift;
1022             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1023             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1024             },
1025             },
1026             mr => {
1027             one => sub {
1028             my $number = shift;
1029             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1030             return scalar (grep {$n == $_} (1)) ;
1031             },
1032             },
1033             mt => {
1034             few => sub {
1035             my $number = shift;
1036             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1037             return scalar (grep {$n == $_} (0)) || scalar (grep {$n % 100 == $_} (3..10)) ;
1038             },
1039             many => sub {
1040             my $number = shift;
1041             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1042             return scalar (grep {$n % 100 == $_} (11..19)) ;
1043             },
1044             one => sub {
1045             my $number = shift;
1046             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1047             return scalar (grep {$n == $_} (1)) ;
1048             },
1049             two => sub {
1050             my $number = shift;
1051             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1052             return scalar (grep {$n == $_} (2)) ;
1053             },
1054             },
1055             nah => {
1056             one => sub {
1057             my $number = shift;
1058             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1059             return scalar (grep {$n == $_} (1)) ;
1060             },
1061             },
1062             naq => {
1063             one => sub {
1064             my $number = shift;
1065             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1066             return scalar (grep {$n == $_} (1)) ;
1067             },
1068             two => sub {
1069             my $number = shift;
1070             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1071             return scalar (grep {$n == $_} (2)) ;
1072             },
1073             },
1074             nb => {
1075             one => sub {
1076             my $number = shift;
1077             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1078             return scalar (grep {$n == $_} (1)) ;
1079             },
1080             },
1081             nd => {
1082             one => sub {
1083             my $number = shift;
1084             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1085             return scalar (grep {$n == $_} (1)) ;
1086             },
1087             },
1088             ne => {
1089             one => sub {
1090             my $number = shift;
1091             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1092             return scalar (grep {$n == $_} (1)) ;
1093             },
1094             },
1095             nl => {
1096             one => sub {
1097             my $number = shift;
1098             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1099             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1100             },
1101             },
1102             nn => {
1103             one => sub {
1104             my $number = shift;
1105             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1106             return scalar (grep {$n == $_} (1)) ;
1107             },
1108             },
1109             nnh => {
1110             one => sub {
1111             my $number = shift;
1112             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1113             return scalar (grep {$n == $_} (1)) ;
1114             },
1115             },
1116             no => {
1117             one => sub {
1118             my $number = shift;
1119             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1120             return scalar (grep {$n == $_} (1)) ;
1121             },
1122             },
1123             nr => {
1124             one => sub {
1125             my $number = shift;
1126             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1127             return scalar (grep {$n == $_} (1)) ;
1128             },
1129             },
1130             nso => {
1131             one => sub {
1132             my $number = shift;
1133             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1134             return scalar (grep {$n == $_} (0..1)) ;
1135             },
1136             },
1137             ny => {
1138             one => sub {
1139             my $number = shift;
1140             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1141             return scalar (grep {$n == $_} (1)) ;
1142             },
1143             },
1144             nyn => {
1145             one => sub {
1146             my $number = shift;
1147             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1148             return scalar (grep {$n == $_} (1)) ;
1149             },
1150             },
1151             om => {
1152             one => sub {
1153             my $number = shift;
1154             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1155             return scalar (grep {$n == $_} (1)) ;
1156             },
1157             },
1158             or => {
1159             one => sub {
1160             my $number = shift;
1161             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1162             return scalar (grep {$n == $_} (1)) ;
1163             },
1164             },
1165             os => {
1166             one => sub {
1167             my $number = shift;
1168             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1169             return scalar (grep {$n == $_} (1)) ;
1170             },
1171             },
1172             pa => {
1173             one => sub {
1174             my $number = shift;
1175             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1176             return scalar (grep {$n == $_} (0..1)) ;
1177             },
1178             },
1179             pap => {
1180             one => sub {
1181             my $number = shift;
1182             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1183             return scalar (grep {$n == $_} (1)) ;
1184             },
1185             },
1186             pcm => {
1187             one => sub {
1188             my $number = shift;
1189             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1190             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
1191             },
1192             },
1193             pl => {
1194             few => sub {
1195             my $number = shift;
1196             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1197             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (2..4)) && ! scalar (grep {$i % 100 == $_} (12..14)) ;
1198             },
1199             many => sub {
1200             my $number = shift;
1201             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1202             return scalar (grep {$v == $_} (0)) && ! scalar (grep {$i == $_} (1)) && scalar (grep {$i % 10 == $_} (0..1)) || scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (5..9)) || scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (12..14)) ;
1203             },
1204             one => sub {
1205             my $number = shift;
1206             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1207             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1208             },
1209             },
1210             prg => {
1211             one => sub {
1212             my $number = shift;
1213             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1214             return scalar (grep {$n % 10 == $_} (1)) && ! scalar (grep {$n % 100 == $_} (11)) || scalar (grep {$v == $_} (2)) && scalar (grep {$f % 10 == $_} (1)) && ! scalar (grep {$f % 100 == $_} (11)) || ! scalar (grep {$v == $_} (2)) && scalar (grep {$f % 10 == $_} (1)) ;
1215             },
1216             zero => sub {
1217             my $number = shift;
1218             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1219             return scalar (grep {$n % 10 == $_} (0)) || scalar (grep {$n % 100 == $_} (11..19)) || scalar (grep {$v == $_} (2)) && scalar (grep {$f % 100 == $_} (11..19)) ;
1220             },
1221             },
1222             ps => {
1223             one => sub {
1224             my $number = shift;
1225             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1226             return scalar (grep {$n == $_} (1)) ;
1227             },
1228             },
1229             pt => {
1230             many => sub {
1231             my $number = shift;
1232             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1233             return scalar (grep {$e == $_} (0)) && ! scalar (grep {$i == $_} (0)) && scalar (grep {$i % 1000000 == $_} (0)) && scalar (grep {$v == $_} (0)) || ! scalar (grep {$e == $_} (0..5)) ;
1234             },
1235             one => sub {
1236             my $number = shift;
1237             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1238             return scalar (grep {$i == $_} (0..1)) ;
1239             },
1240             },
1241             pt_PT => {
1242             many => sub {
1243             my $number = shift;
1244             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1245             return scalar (grep {$e == $_} (0)) && ! scalar (grep {$i == $_} (0)) && scalar (grep {$i % 1000000 == $_} (0)) && scalar (grep {$v == $_} (0)) || ! scalar (grep {$e == $_} (0..5)) ;
1246             },
1247             one => sub {
1248             my $number = shift;
1249             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1250             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1251             },
1252             },
1253             rm => {
1254             one => sub {
1255             my $number = shift;
1256             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1257             return scalar (grep {$n == $_} (1)) ;
1258             },
1259             },
1260             ro => {
1261             few => sub {
1262             my $number = shift;
1263             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1264             return ! scalar (grep {$v == $_} (0)) || scalar (grep {$n == $_} (0)) || ! scalar (grep {$n == $_} (1)) && scalar (grep {$n % 100 == $_} (1..19)) ;
1265             },
1266             one => sub {
1267             my $number = shift;
1268             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1269             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1270             },
1271             },
1272             rof => {
1273             one => sub {
1274             my $number = shift;
1275             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1276             return scalar (grep {$n == $_} (1)) ;
1277             },
1278             },
1279             ru => {
1280             few => sub {
1281             my $number = shift;
1282             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1283             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (2..4)) && ! scalar (grep {$i % 100 == $_} (12..14)) ;
1284             },
1285             many => sub {
1286             my $number = shift;
1287             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1288             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (0)) || scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (5..9)) || scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (11..14)) ;
1289             },
1290             one => sub {
1291             my $number = shift;
1292             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1293             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (1)) && ! scalar (grep {$i % 100 == $_} (11)) ;
1294             },
1295             },
1296             rwk => {
1297             one => sub {
1298             my $number = shift;
1299             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1300             return scalar (grep {$n == $_} (1)) ;
1301             },
1302             },
1303             saq => {
1304             one => sub {
1305             my $number = shift;
1306             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1307             return scalar (grep {$n == $_} (1)) ;
1308             },
1309             },
1310             sat => {
1311             one => sub {
1312             my $number = shift;
1313             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1314             return scalar (grep {$n == $_} (1)) ;
1315             },
1316             two => sub {
1317             my $number = shift;
1318             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1319             return scalar (grep {$n == $_} (2)) ;
1320             },
1321             },
1322             sc => {
1323             one => sub {
1324             my $number = shift;
1325             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1326             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1327             },
1328             },
1329             scn => {
1330             many => sub {
1331             my $number = shift;
1332             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1333             return scalar (grep {$e == $_} (0)) && ! scalar (grep {$i == $_} (0)) && scalar (grep {$i % 1000000 == $_} (0)) && scalar (grep {$v == $_} (0)) || ! scalar (grep {$e == $_} (0..5)) ;
1334             },
1335             one => sub {
1336             my $number = shift;
1337             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1338             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1339             },
1340             },
1341             sd => {
1342             one => sub {
1343             my $number = shift;
1344             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1345             return scalar (grep {$n == $_} (1)) ;
1346             },
1347             },
1348             sdh => {
1349             one => sub {
1350             my $number = shift;
1351             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1352             return scalar (grep {$n == $_} (1)) ;
1353             },
1354             },
1355             se => {
1356             one => sub {
1357             my $number = shift;
1358             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1359             return scalar (grep {$n == $_} (1)) ;
1360             },
1361             two => sub {
1362             my $number = shift;
1363             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1364             return scalar (grep {$n == $_} (2)) ;
1365             },
1366             },
1367             seh => {
1368             one => sub {
1369             my $number = shift;
1370             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1371             return scalar (grep {$n == $_} (1)) ;
1372             },
1373             },
1374             sh => {
1375             few => sub {
1376             my $number = shift;
1377             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1378             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (2..4)) && ! scalar (grep {$i % 100 == $_} (12..14)) || scalar (grep {$f % 10 == $_} (2..4)) && ! scalar (grep {$f % 100 == $_} (12..14)) ;
1379             },
1380             one => sub {
1381             my $number = shift;
1382             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1383             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (1)) && ! scalar (grep {$i % 100 == $_} (11)) || scalar (grep {$f % 10 == $_} (1)) && ! scalar (grep {$f % 100 == $_} (11)) ;
1384             },
1385             },
1386             shi => {
1387             few => sub {
1388             my $number = shift;
1389             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1390             return scalar (grep {$n == $_} (2..10)) ;
1391             },
1392             one => sub {
1393             my $number = shift;
1394             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1395             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
1396             },
1397             },
1398             si => {
1399             one => sub {
1400             my $number = shift;
1401             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1402             return scalar (grep {$n == $_} (0,1)) || scalar (grep {$i == $_} (0)) && scalar (grep {$f == $_} (1)) ;
1403             },
1404             },
1405             sk => {
1406             few => sub {
1407             my $number = shift;
1408             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1409             return scalar (grep {$i == $_} (2..4)) && scalar (grep {$v == $_} (0)) ;
1410             },
1411             many => sub {
1412             my $number = shift;
1413             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1414             return ! scalar (grep {$v == $_} (0)) ;
1415             },
1416             one => sub {
1417             my $number = shift;
1418             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1419             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1420             },
1421             },
1422             sl => {
1423             few => sub {
1424             my $number = shift;
1425             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1426             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (3..4)) || ! scalar (grep {$v == $_} (0)) ;
1427             },
1428             one => sub {
1429             my $number = shift;
1430             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1431             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (1)) ;
1432             },
1433             two => sub {
1434             my $number = shift;
1435             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1436             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (2)) ;
1437             },
1438             },
1439             sma => {
1440             one => sub {
1441             my $number = shift;
1442             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1443             return scalar (grep {$n == $_} (1)) ;
1444             },
1445             two => sub {
1446             my $number = shift;
1447             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1448             return scalar (grep {$n == $_} (2)) ;
1449             },
1450             },
1451             smi => {
1452             one => sub {
1453             my $number = shift;
1454             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1455             return scalar (grep {$n == $_} (1)) ;
1456             },
1457             two => sub {
1458             my $number = shift;
1459             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1460             return scalar (grep {$n == $_} (2)) ;
1461             },
1462             },
1463             smj => {
1464             one => sub {
1465             my $number = shift;
1466             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1467             return scalar (grep {$n == $_} (1)) ;
1468             },
1469             two => sub {
1470             my $number = shift;
1471             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1472             return scalar (grep {$n == $_} (2)) ;
1473             },
1474             },
1475             smn => {
1476             one => sub {
1477             my $number = shift;
1478             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1479             return scalar (grep {$n == $_} (1)) ;
1480             },
1481             two => sub {
1482             my $number = shift;
1483             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1484             return scalar (grep {$n == $_} (2)) ;
1485             },
1486             },
1487             sms => {
1488             one => sub {
1489             my $number = shift;
1490             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1491             return scalar (grep {$n == $_} (1)) ;
1492             },
1493             two => sub {
1494             my $number = shift;
1495             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1496             return scalar (grep {$n == $_} (2)) ;
1497             },
1498             },
1499             sn => {
1500             one => sub {
1501             my $number = shift;
1502             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1503             return scalar (grep {$n == $_} (1)) ;
1504             },
1505             },
1506             so => {
1507             one => sub {
1508             my $number = shift;
1509             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1510             return scalar (grep {$n == $_} (1)) ;
1511             },
1512             },
1513             sq => {
1514             one => sub {
1515             my $number = shift;
1516             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1517             return scalar (grep {$n == $_} (1)) ;
1518             },
1519             },
1520             sr => {
1521             few => sub {
1522             my $number = shift;
1523             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1524             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (2..4)) && ! scalar (grep {$i % 100 == $_} (12..14)) || scalar (grep {$f % 10 == $_} (2..4)) && ! scalar (grep {$f % 100 == $_} (12..14)) ;
1525             },
1526             one => sub {
1527             my $number = shift;
1528             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1529             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (1)) && ! scalar (grep {$i % 100 == $_} (11)) || scalar (grep {$f % 10 == $_} (1)) && ! scalar (grep {$f % 100 == $_} (11)) ;
1530             },
1531             },
1532             ss => {
1533             one => sub {
1534             my $number = shift;
1535             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1536             return scalar (grep {$n == $_} (1)) ;
1537             },
1538             },
1539             ssy => {
1540             one => sub {
1541             my $number = shift;
1542             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1543             return scalar (grep {$n == $_} (1)) ;
1544             },
1545             },
1546             st => {
1547             one => sub {
1548             my $number = shift;
1549             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1550             return scalar (grep {$n == $_} (1)) ;
1551             },
1552             },
1553             sv => {
1554             one => sub {
1555             my $number = shift;
1556             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1557             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1558             },
1559             },
1560             sw => {
1561             one => sub {
1562             my $number = shift;
1563             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1564             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1565             },
1566             },
1567             syr => {
1568             one => sub {
1569             my $number = shift;
1570             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1571             return scalar (grep {$n == $_} (1)) ;
1572             },
1573             },
1574             ta => {
1575             one => sub {
1576             my $number = shift;
1577             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1578             return scalar (grep {$n == $_} (1)) ;
1579             },
1580             },
1581             te => {
1582             one => sub {
1583             my $number = shift;
1584             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1585             return scalar (grep {$n == $_} (1)) ;
1586             },
1587             },
1588             teo => {
1589             one => sub {
1590             my $number = shift;
1591             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1592             return scalar (grep {$n == $_} (1)) ;
1593             },
1594             },
1595             ti => {
1596             one => sub {
1597             my $number = shift;
1598             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1599             return scalar (grep {$n == $_} (0..1)) ;
1600             },
1601             },
1602             tig => {
1603             one => sub {
1604             my $number = shift;
1605             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1606             return scalar (grep {$n == $_} (1)) ;
1607             },
1608             },
1609             tk => {
1610             one => sub {
1611             my $number = shift;
1612             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1613             return scalar (grep {$n == $_} (1)) ;
1614             },
1615             },
1616             tl => {
1617             one => sub {
1618             my $number = shift;
1619             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1620             return scalar (grep {$v == $_} (0)) && scalar (grep {$i == $_} (1,2,3)) || scalar (grep {$v == $_} (0)) && ! scalar (grep {$i % 10 == $_} (4,6,9)) || ! scalar (grep {$v == $_} (0)) && ! scalar (grep {$f % 10 == $_} (4,6,9)) ;
1621             },
1622             },
1623             tn => {
1624             one => sub {
1625             my $number = shift;
1626             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1627             return scalar (grep {$n == $_} (1)) ;
1628             },
1629             },
1630             tr => {
1631             one => sub {
1632             my $number = shift;
1633             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1634             return scalar (grep {$n == $_} (1)) ;
1635             },
1636             },
1637             ts => {
1638             one => sub {
1639             my $number = shift;
1640             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1641             return scalar (grep {$n == $_} (1)) ;
1642             },
1643             },
1644             tzm => {
1645             one => sub {
1646             my $number = shift;
1647             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1648             return scalar (grep {$n == $_} (0..1)) || scalar (grep {$n == $_} (11..99)) ;
1649             },
1650             },
1651             ug => {
1652             one => sub {
1653             my $number = shift;
1654             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1655             return scalar (grep {$n == $_} (1)) ;
1656             },
1657             },
1658             uk => {
1659             few => sub {
1660             my $number = shift;
1661             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1662             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (2..4)) && ! scalar (grep {$i % 100 == $_} (12..14)) ;
1663             },
1664             many => sub {
1665             my $number = shift;
1666             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1667             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (0)) || scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (5..9)) || scalar (grep {$v == $_} (0)) && scalar (grep {$i % 100 == $_} (11..14)) ;
1668             },
1669             one => sub {
1670             my $number = shift;
1671             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1672             return scalar (grep {$v == $_} (0)) && scalar (grep {$i % 10 == $_} (1)) && ! scalar (grep {$i % 100 == $_} (11)) ;
1673             },
1674             },
1675             ur => {
1676             one => sub {
1677             my $number = shift;
1678             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1679             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1680             },
1681             },
1682             uz => {
1683             one => sub {
1684             my $number = shift;
1685             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1686             return scalar (grep {$n == $_} (1)) ;
1687             },
1688             },
1689             ve => {
1690             one => sub {
1691             my $number = shift;
1692             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1693             return scalar (grep {$n == $_} (1)) ;
1694             },
1695             },
1696             vec => {
1697             many => sub {
1698             my $number = shift;
1699             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1700             return scalar (grep {$e == $_} (0)) && ! scalar (grep {$i == $_} (0)) && scalar (grep {$i % 1000000 == $_} (0)) && scalar (grep {$v == $_} (0)) || ! scalar (grep {$e == $_} (0..5)) ;
1701             },
1702             one => sub {
1703             my $number = shift;
1704             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1705             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1706             },
1707             },
1708             vo => {
1709             one => sub {
1710             my $number = shift;
1711             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1712             return scalar (grep {$n == $_} (1)) ;
1713             },
1714             },
1715             vun => {
1716             one => sub {
1717             my $number = shift;
1718             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1719             return scalar (grep {$n == $_} (1)) ;
1720             },
1721             },
1722             wa => {
1723             one => sub {
1724             my $number = shift;
1725             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1726             return scalar (grep {$n == $_} (0..1)) ;
1727             },
1728             },
1729             wae => {
1730             one => sub {
1731             my $number = shift;
1732             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1733             return scalar (grep {$n == $_} (1)) ;
1734             },
1735             },
1736             xh => {
1737             one => sub {
1738             my $number = shift;
1739             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1740             return scalar (grep {$n == $_} (1)) ;
1741             },
1742             },
1743             xog => {
1744             one => sub {
1745             my $number = shift;
1746             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1747             return scalar (grep {$n == $_} (1)) ;
1748             },
1749             },
1750             yi => {
1751             one => sub {
1752             my $number = shift;
1753             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1754             return scalar (grep {$i == $_} (1)) && scalar (grep {$v == $_} (0)) ;
1755             },
1756             },
1757             zu => {
1758             one => sub {
1759             my $number = shift;
1760             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1761             return scalar (grep {$i == $_} (0)) || scalar (grep {$n == $_} (1)) ;
1762             },
1763             },
1764             },
1765             ordinal => {
1766             as => {
1767             few => sub {
1768             my $number = shift;
1769             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1770             return scalar (grep {$n == $_} (4)) ;
1771             },
1772             many => sub {
1773             my $number = shift;
1774             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1775             return scalar (grep {$n == $_} (6)) ;
1776             },
1777             one => sub {
1778             my $number = shift;
1779             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1780             return scalar (grep {$n == $_} (1,5,7,8,9,10)) ;
1781             },
1782             two => sub {
1783             my $number = shift;
1784             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1785             return scalar (grep {$n == $_} (2,3)) ;
1786             },
1787             },
1788             az => {
1789             few => sub {
1790             my $number = shift;
1791             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1792             return scalar (grep {$i % 10 == $_} (3,4)) || scalar (grep {$i % 1000 == $_} (100,200,300,400,500,600,700,800,900)) ;
1793             },
1794             many => sub {
1795             my $number = shift;
1796             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1797             return scalar (grep {$i == $_} (0)) || scalar (grep {$i % 10 == $_} (6)) || scalar (grep {$i % 100 == $_} (40,60,90)) ;
1798             },
1799             one => sub {
1800             my $number = shift;
1801             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1802             return scalar (grep {$i % 10 == $_} (1,2,5,7,8)) || scalar (grep {$i % 100 == $_} (20,50,70,80)) ;
1803             },
1804             },
1805             bal => {
1806             one => sub {
1807             my $number = shift;
1808             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1809             return scalar (grep {$n == $_} (1)) ;
1810             },
1811             },
1812             be => {
1813             few => sub {
1814             my $number = shift;
1815             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1816             return scalar (grep {$n % 10 == $_} (2,3)) && ! scalar (grep {$n % 100 == $_} (12,13)) ;
1817             },
1818             },
1819             blo => {
1820             few => sub {
1821             my $number = shift;
1822             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1823             return scalar (grep {$i == $_} (2,3,4,5,6)) ;
1824             },
1825             one => sub {
1826             my $number = shift;
1827             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1828             return scalar (grep {$i == $_} (1)) ;
1829             },
1830             zero => sub {
1831             my $number = shift;
1832             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1833             return scalar (grep {$i == $_} (0)) ;
1834             },
1835             },
1836             bn => {
1837             few => sub {
1838             my $number = shift;
1839             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1840             return scalar (grep {$n == $_} (4)) ;
1841             },
1842             many => sub {
1843             my $number = shift;
1844             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1845             return scalar (grep {$n == $_} (6)) ;
1846             },
1847             one => sub {
1848             my $number = shift;
1849             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1850             return scalar (grep {$n == $_} (1,5,7,8,9,10)) ;
1851             },
1852             two => sub {
1853             my $number = shift;
1854             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1855             return scalar (grep {$n == $_} (2,3)) ;
1856             },
1857             },
1858             ca => {
1859             few => sub {
1860             my $number = shift;
1861             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1862             return scalar (grep {$n == $_} (4)) ;
1863             },
1864             one => sub {
1865             my $number = shift;
1866             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1867             return scalar (grep {$n == $_} (1,3)) ;
1868             },
1869             two => sub {
1870             my $number = shift;
1871             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1872             return scalar (grep {$n == $_} (2)) ;
1873             },
1874             },
1875             cy => {
1876             few => sub {
1877             my $number = shift;
1878             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1879             return scalar (grep {$n == $_} (3,4)) ;
1880             },
1881             many => sub {
1882             my $number = shift;
1883             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1884             return scalar (grep {$n == $_} (5,6)) ;
1885             },
1886             one => sub {
1887             my $number = shift;
1888             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1889             return scalar (grep {$n == $_} (1)) ;
1890             },
1891             two => sub {
1892             my $number = shift;
1893             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1894             return scalar (grep {$n == $_} (2)) ;
1895             },
1896             zero => sub {
1897             my $number = shift;
1898             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1899             return scalar (grep {$n == $_} (0,7,8,9)) ;
1900             },
1901             },
1902             en => {
1903             few => sub {
1904             my $number = shift;
1905             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1906             return scalar (grep {$n % 10 == $_} (3)) && ! scalar (grep {$n % 100 == $_} (13)) ;
1907             },
1908             one => sub {
1909             my $number = shift;
1910             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1911             return scalar (grep {$n % 10 == $_} (1)) && ! scalar (grep {$n % 100 == $_} (11)) ;
1912             },
1913             two => sub {
1914             my $number = shift;
1915             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1916             return scalar (grep {$n % 10 == $_} (2)) && ! scalar (grep {$n % 100 == $_} (12)) ;
1917             },
1918             },
1919             fil => {
1920             one => sub {
1921             my $number = shift;
1922             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1923             return scalar (grep {$n == $_} (1)) ;
1924             },
1925             },
1926             fr => {
1927             one => sub {
1928             my $number = shift;
1929             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1930             return scalar (grep {$n == $_} (1)) ;
1931             },
1932             },
1933             ga => {
1934             one => sub {
1935             my $number = shift;
1936             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1937             return scalar (grep {$n == $_} (1)) ;
1938             },
1939             },
1940             gd => {
1941             few => sub {
1942             my $number = shift;
1943             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1944             return scalar (grep {$n == $_} (3,13)) ;
1945             },
1946             one => sub {
1947             my $number = shift;
1948             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1949             return scalar (grep {$n == $_} (1,11)) ;
1950             },
1951             two => sub {
1952             my $number = shift;
1953             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1954             return scalar (grep {$n == $_} (2,12)) ;
1955             },
1956             },
1957             gu => {
1958             few => sub {
1959             my $number = shift;
1960             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1961             return scalar (grep {$n == $_} (4)) ;
1962             },
1963             many => sub {
1964             my $number = shift;
1965             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1966             return scalar (grep {$n == $_} (6)) ;
1967             },
1968             one => sub {
1969             my $number = shift;
1970             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1971             return scalar (grep {$n == $_} (1)) ;
1972             },
1973             two => sub {
1974             my $number = shift;
1975             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1976             return scalar (grep {$n == $_} (2,3)) ;
1977             },
1978             },
1979             hi => {
1980             few => sub {
1981             my $number = shift;
1982             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1983             return scalar (grep {$n == $_} (4)) ;
1984             },
1985             many => sub {
1986             my $number = shift;
1987             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1988             return scalar (grep {$n == $_} (6)) ;
1989             },
1990             one => sub {
1991             my $number = shift;
1992             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1993             return scalar (grep {$n == $_} (1)) ;
1994             },
1995             two => sub {
1996             my $number = shift;
1997             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
1998             return scalar (grep {$n == $_} (2,3)) ;
1999             },
2000             },
2001             hu => {
2002             one => sub {
2003             my $number = shift;
2004             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2005             return scalar (grep {$n == $_} (1,5)) ;
2006             },
2007             },
2008             hy => {
2009             one => sub {
2010             my $number = shift;
2011             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2012             return scalar (grep {$n == $_} (1)) ;
2013             },
2014             },
2015             it => {
2016             many => sub {
2017             my $number = shift;
2018             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2019             return scalar (grep {$n == $_} (11,8,80,800)) ;
2020             },
2021             },
2022             ka => {
2023             many => sub {
2024             my $number = shift;
2025             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2026             return scalar (grep {$i == $_} (0)) || scalar (grep {$i % 100 == $_} (2..20,40,60,80)) ;
2027             },
2028             one => sub {
2029             my $number = shift;
2030             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2031             return scalar (grep {$i == $_} (1)) ;
2032             },
2033             },
2034             kk => {
2035             many => sub {
2036             my $number = shift;
2037             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2038             return scalar (grep {$n % 10 == $_} (6)) || scalar (grep {$n % 10 == $_} (9)) || scalar (grep {$n % 10 == $_} (0)) && ! scalar (grep {$n == $_} (0)) ;
2039             },
2040             },
2041             kw => {
2042             many => sub {
2043             my $number = shift;
2044             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2045             return scalar (grep {$n == $_} (5)) || scalar (grep {$n % 100 == $_} (5)) ;
2046             },
2047             one => sub {
2048             my $number = shift;
2049             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2050             return scalar (grep {$n == $_} (1..4)) || scalar (grep {$n % 100 == $_} (1..4,21..24,41..44,61..64,81..84)) ;
2051             },
2052             },
2053             lij => {
2054             many => sub {
2055             my $number = shift;
2056             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2057             return scalar (grep {$n == $_} (11,8,80..89,800..899)) ;
2058             },
2059             },
2060             lld => {
2061             many => sub {
2062             my $number = shift;
2063             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2064             return scalar (grep {$n == $_} (11,8,80,800)) ;
2065             },
2066             },
2067             lo => {
2068             one => sub {
2069             my $number = shift;
2070             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2071             return scalar (grep {$n == $_} (1)) ;
2072             },
2073             },
2074             mk => {
2075             many => sub {
2076             my $number = shift;
2077             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2078             return scalar (grep {$i % 10 == $_} (7,8)) && ! scalar (grep {$i % 100 == $_} (17,18)) ;
2079             },
2080             one => sub {
2081             my $number = shift;
2082             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2083             return scalar (grep {$i % 10 == $_} (1)) && ! scalar (grep {$i % 100 == $_} (11)) ;
2084             },
2085             two => sub {
2086             my $number = shift;
2087             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2088             return scalar (grep {$i % 10 == $_} (2)) && ! scalar (grep {$i % 100 == $_} (12)) ;
2089             },
2090             },
2091             mo => {
2092             one => sub {
2093             my $number = shift;
2094             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2095             return scalar (grep {$n == $_} (1)) ;
2096             },
2097             },
2098             mr => {
2099             few => sub {
2100             my $number = shift;
2101             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2102             return scalar (grep {$n == $_} (4)) ;
2103             },
2104             one => sub {
2105             my $number = shift;
2106             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2107             return scalar (grep {$n == $_} (1)) ;
2108             },
2109             two => sub {
2110             my $number = shift;
2111             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2112             return scalar (grep {$n == $_} (2,3)) ;
2113             },
2114             },
2115             ms => {
2116             one => sub {
2117             my $number = shift;
2118             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2119             return scalar (grep {$n == $_} (1)) ;
2120             },
2121             },
2122             ne => {
2123             one => sub {
2124             my $number = shift;
2125             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2126             return scalar (grep {$n == $_} (1..4)) ;
2127             },
2128             },
2129             or => {
2130             few => sub {
2131             my $number = shift;
2132             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2133             return scalar (grep {$n == $_} (4)) ;
2134             },
2135             many => sub {
2136             my $number = shift;
2137             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2138             return scalar (grep {$n == $_} (6)) ;
2139             },
2140             one => sub {
2141             my $number = shift;
2142             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2143             return scalar (grep {$n == $_} (1,5,7..9)) ;
2144             },
2145             two => sub {
2146             my $number = shift;
2147             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2148             return scalar (grep {$n == $_} (2,3)) ;
2149             },
2150             },
2151             ro => {
2152             one => sub {
2153             my $number = shift;
2154             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2155             return scalar (grep {$n == $_} (1)) ;
2156             },
2157             },
2158             sc => {
2159             many => sub {
2160             my $number = shift;
2161             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2162             return scalar (grep {$n == $_} (11,8,80,800)) ;
2163             },
2164             },
2165             scn => {
2166             many => sub {
2167             my $number = shift;
2168             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2169             return scalar (grep {$n == $_} (11,8,80,800)) ;
2170             },
2171             },
2172             sq => {
2173             many => sub {
2174             my $number = shift;
2175             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2176             return scalar (grep {$n % 10 == $_} (4)) && ! scalar (grep {$n % 100 == $_} (14)) ;
2177             },
2178             one => sub {
2179             my $number = shift;
2180             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2181             return scalar (grep {$n == $_} (1)) ;
2182             },
2183             },
2184             sv => {
2185             one => sub {
2186             my $number = shift;
2187             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2188             return scalar (grep {$n % 10 == $_} (1,2)) && ! scalar (grep {$n % 100 == $_} (11,12)) ;
2189             },
2190             },
2191             tk => {
2192             few => sub {
2193             my $number = shift;
2194             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2195             return scalar (grep {$n % 10 == $_} (6,9)) || scalar (grep {$n == $_} (10)) ;
2196             },
2197             },
2198             tl => {
2199             one => sub {
2200             my $number = shift;
2201             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2202             return scalar (grep {$n == $_} (1)) ;
2203             },
2204             },
2205             uk => {
2206             few => sub {
2207             my $number = shift;
2208             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2209             return scalar (grep {$n % 10 == $_} (3)) && ! scalar (grep {$n % 100 == $_} (13)) ;
2210             },
2211             },
2212             vec => {
2213             many => sub {
2214             my $number = shift;
2215             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2216             return scalar (grep {$n == $_} (11,8,80,800)) ;
2217             },
2218             },
2219             vi => {
2220             one => sub {
2221             my $number = shift;
2222             my ( $n, $i, $v, $w, $f, $t, $c, $e ) = _parse_number_plurals( $number );
2223             return scalar (grep {$n == $_} (1)) ;
2224             },
2225             },
2226             },
2227             );
2228              
2229             sub plural {
2230 1194     1194 0 237485 my ($self, $number, $type) = @_;
2231 1194   100     6470 $type //= 'cardinal';
2232 1194   33     46423 my $language_id = $self->language_id || $self->likely_subtag->language_id;
2233              
2234 1194         3585 foreach my $count (qw( zero one two few many )) {
2235 4783 100       18800 next unless exists $_plurals{$type}{$language_id}{$count};
2236 1198 100       4209 return $count if $_plurals{$type}{$language_id}{$count}->($number);
2237             }
2238 797         3620 return 'other';
2239             }
2240              
2241             my %_plural_ranges = (
2242             af => {
2243             one => {
2244             other => 'other',
2245             },
2246             other => {
2247             one => 'other',
2248             other => 'other',
2249             },
2250             },
2251             ak => {
2252             one => {
2253             one => 'other',
2254             other => 'other',
2255             },
2256             other => {
2257             one => 'one',
2258             other => 'other',
2259             },
2260             },
2261             am => {
2262             one => {
2263             one => 'one',
2264             other => 'other',
2265             },
2266             other => {
2267             other => 'other',
2268             },
2269             },
2270             an => {
2271             one => {
2272             other => 'other',
2273             },
2274             other => {
2275             one => 'other',
2276             other => 'other',
2277             },
2278             },
2279             ar => {
2280             few => {
2281             few => 'few',
2282             many => 'many',
2283             other => 'other',
2284             },
2285             many => {
2286             few => 'few',
2287             many => 'many',
2288             other => 'other',
2289             },
2290             one => {
2291             few => 'few',
2292             many => 'many',
2293             other => 'other',
2294             two => 'other',
2295             },
2296             other => {
2297             few => 'few',
2298             many => 'many',
2299             one => 'other',
2300             other => 'other',
2301             two => 'other',
2302             },
2303             two => {
2304             few => 'few',
2305             many => 'many',
2306             other => 'other',
2307             },
2308             zero => {
2309             few => 'few',
2310             many => 'many',
2311             one => 'zero',
2312             other => 'other',
2313             two => 'zero',
2314             },
2315             },
2316             as => {
2317             one => {
2318             one => 'one',
2319             other => 'other',
2320             },
2321             other => {
2322             other => 'other',
2323             },
2324             },
2325             az => {
2326             one => {
2327             other => 'other',
2328             },
2329             other => {
2330             one => 'one',
2331             other => 'other',
2332             },
2333             },
2334             be => {
2335             few => {
2336             few => 'few',
2337             many => 'many',
2338             one => 'one',
2339             other => 'other',
2340             },
2341             many => {
2342             few => 'few',
2343             many => 'many',
2344             one => 'one',
2345             other => 'other',
2346             },
2347             one => {
2348             few => 'few',
2349             many => 'many',
2350             one => 'one',
2351             other => 'other',
2352             },
2353             other => {
2354             few => 'few',
2355             many => 'many',
2356             one => 'one',
2357             other => 'other',
2358             },
2359             },
2360             bg => {
2361             one => {
2362             other => 'other',
2363             },
2364             other => {
2365             one => 'other',
2366             other => 'other',
2367             },
2368             },
2369             bn => {
2370             one => {
2371             one => 'one',
2372             other => 'other',
2373             },
2374             other => {
2375             other => 'other',
2376             },
2377             },
2378             bs => {
2379             few => {
2380             few => 'few',
2381             one => 'one',
2382             other => 'other',
2383             },
2384             one => {
2385             few => 'few',
2386             one => 'one',
2387             other => 'other',
2388             },
2389             other => {
2390             few => 'few',
2391             one => 'one',
2392             other => 'other',
2393             },
2394             },
2395             ca => {
2396             one => {
2397             other => 'other',
2398             },
2399             other => {
2400             one => 'other',
2401             other => 'other',
2402             },
2403             },
2404             cs => {
2405             few => {
2406             few => 'few',
2407             many => 'many',
2408             other => 'other',
2409             },
2410             many => {
2411             few => 'few',
2412             many => 'many',
2413             one => 'one',
2414             other => 'other',
2415             },
2416             one => {
2417             few => 'few',
2418             many => 'many',
2419             other => 'other',
2420             },
2421             other => {
2422             few => 'few',
2423             many => 'many',
2424             one => 'one',
2425             other => 'other',
2426             },
2427             },
2428             cy => {
2429             few => {
2430             many => 'many',
2431             other => 'other',
2432             },
2433             many => {
2434             other => 'other',
2435             },
2436             one => {
2437             few => 'few',
2438             many => 'many',
2439             other => 'other',
2440             two => 'two',
2441             },
2442             other => {
2443             few => 'few',
2444             many => 'many',
2445             one => 'one',
2446             other => 'other',
2447             two => 'two',
2448             },
2449             two => {
2450             few => 'few',
2451             many => 'many',
2452             other => 'other',
2453             },
2454             zero => {
2455             few => 'few',
2456             many => 'many',
2457             one => 'one',
2458             other => 'other',
2459             two => 'two',
2460             },
2461             },
2462             da => {
2463             one => {
2464             one => 'one',
2465             other => 'other',
2466             },
2467             other => {
2468             one => 'one',
2469             other => 'other',
2470             },
2471             },
2472             de => {
2473             one => {
2474             other => 'other',
2475             },
2476             other => {
2477             one => 'one',
2478             other => 'other',
2479             },
2480             },
2481             el => {
2482             one => {
2483             other => 'other',
2484             },
2485             other => {
2486             one => 'one',
2487             other => 'other',
2488             },
2489             },
2490             en => {
2491             one => {
2492             other => 'other',
2493             },
2494             other => {
2495             one => 'other',
2496             other => 'other',
2497             },
2498             },
2499             es => {
2500             one => {
2501             other => 'other',
2502             },
2503             other => {
2504             one => 'other',
2505             other => 'other',
2506             },
2507             },
2508             et => {
2509             one => {
2510             other => 'other',
2511             },
2512             other => {
2513             one => 'other',
2514             other => 'other',
2515             },
2516             },
2517             eu => {
2518             one => {
2519             other => 'other',
2520             },
2521             other => {
2522             one => 'other',
2523             other => 'other',
2524             },
2525             },
2526             fa => {
2527             one => {
2528             one => 'other',
2529             other => 'other',
2530             },
2531             other => {
2532             one => 'one',
2533             other => 'other',
2534             },
2535             },
2536             fi => {
2537             one => {
2538             other => 'other',
2539             },
2540             other => {
2541             one => 'other',
2542             other => 'other',
2543             },
2544             },
2545             fil => {
2546             one => {
2547             one => 'one',
2548             other => 'other',
2549             },
2550             other => {
2551             one => 'one',
2552             other => 'other',
2553             },
2554             },
2555             fr => {
2556             one => {
2557             one => 'one',
2558             other => 'other',
2559             },
2560             other => {
2561             other => 'other',
2562             },
2563             },
2564             ga => {
2565             few => {
2566             few => 'few',
2567             many => 'many',
2568             other => 'other',
2569             },
2570             many => {
2571             many => 'many',
2572             other => 'other',
2573             },
2574             one => {
2575             few => 'few',
2576             many => 'many',
2577             other => 'other',
2578             two => 'two',
2579             },
2580             other => {
2581             few => 'few',
2582             many => 'many',
2583             one => 'one',
2584             other => 'other',
2585             two => 'two',
2586             },
2587             two => {
2588             few => 'few',
2589             many => 'many',
2590             other => 'other',
2591             },
2592             },
2593             gl => {
2594             one => {
2595             other => 'other',
2596             },
2597             other => {
2598             one => 'one',
2599             other => 'other',
2600             },
2601             },
2602             gsw => {
2603             one => {
2604             other => 'other',
2605             },
2606             other => {
2607             one => 'one',
2608             other => 'other',
2609             },
2610             },
2611             gu => {
2612             one => {
2613             one => 'one',
2614             other => 'other',
2615             },
2616             other => {
2617             other => 'other',
2618             },
2619             },
2620             he => {
2621             one => {
2622             other => 'other',
2623             two => 'other',
2624             },
2625             other => {
2626             one => 'other',
2627             other => 'other',
2628             two => 'other',
2629             },
2630             two => {
2631             other => 'other',
2632             },
2633             },
2634             hi => {
2635             one => {
2636             one => 'one',
2637             other => 'other',
2638             },
2639             other => {
2640             other => 'other',
2641             },
2642             },
2643             hr => {
2644             few => {
2645             few => 'few',
2646             one => 'one',
2647             other => 'other',
2648             },
2649             one => {
2650             few => 'few',
2651             one => 'one',
2652             other => 'other',
2653             },
2654             other => {
2655             few => 'few',
2656             one => 'one',
2657             other => 'other',
2658             },
2659             },
2660             hu => {
2661             one => {
2662             other => 'other',
2663             },
2664             other => {
2665             one => 'one',
2666             other => 'other',
2667             },
2668             },
2669             hy => {
2670             one => {
2671             one => 'one',
2672             other => 'other',
2673             },
2674             other => {
2675             other => 'other',
2676             },
2677             },
2678             ia => {
2679             one => {
2680             other => 'other',
2681             },
2682             other => {
2683             one => 'other',
2684             other => 'other',
2685             },
2686             },
2687             id => {
2688             other => {
2689             other => 'other',
2690             },
2691             },
2692             io => {
2693             one => {
2694             other => 'other',
2695             },
2696             other => {
2697             one => 'other',
2698             other => 'other',
2699             },
2700             },
2701             is => {
2702             one => {
2703             one => 'one',
2704             other => 'other',
2705             },
2706             other => {
2707             one => 'one',
2708             other => 'other',
2709             },
2710             },
2711             it => {
2712             one => {
2713             other => 'other',
2714             },
2715             other => {
2716             one => 'one',
2717             other => 'other',
2718             },
2719             },
2720             ja => {
2721             other => {
2722             other => 'other',
2723             },
2724             },
2725             ka => {
2726             one => {
2727             other => 'one',
2728             },
2729             other => {
2730             one => 'other',
2731             other => 'other',
2732             },
2733             },
2734             kk => {
2735             one => {
2736             other => 'other',
2737             },
2738             other => {
2739             one => 'one',
2740             other => 'other',
2741             },
2742             },
2743             km => {
2744             other => {
2745             other => 'other',
2746             },
2747             },
2748             kn => {
2749             one => {
2750             one => 'one',
2751             other => 'other',
2752             },
2753             other => {
2754             other => 'other',
2755             },
2756             },
2757             ko => {
2758             other => {
2759             other => 'other',
2760             },
2761             },
2762             ky => {
2763             one => {
2764             other => 'other',
2765             },
2766             other => {
2767             one => 'one',
2768             other => 'other',
2769             },
2770             },
2771             lij => {
2772             one => {
2773             other => 'other',
2774             },
2775             other => {
2776             one => 'one',
2777             other => 'other',
2778             },
2779             },
2780             lo => {
2781             other => {
2782             other => 'other',
2783             },
2784             },
2785             lt => {
2786             few => {
2787             few => 'few',
2788             many => 'many',
2789             one => 'one',
2790             other => 'other',
2791             },
2792             many => {
2793             few => 'few',
2794             many => 'many',
2795             one => 'one',
2796             other => 'other',
2797             },
2798             one => {
2799             few => 'few',
2800             many => 'many',
2801             one => 'one',
2802             other => 'other',
2803             },
2804             other => {
2805             few => 'few',
2806             many => 'many',
2807             one => 'one',
2808             other => 'other',
2809             },
2810             },
2811             lv => {
2812             one => {
2813             one => 'one',
2814             other => 'other',
2815             zero => 'other',
2816             },
2817             other => {
2818             one => 'one',
2819             other => 'other',
2820             zero => 'other',
2821             },
2822             zero => {
2823             one => 'one',
2824             other => 'other',
2825             zero => 'other',
2826             },
2827             },
2828             mk => {
2829             one => {
2830             one => 'other',
2831             other => 'other',
2832             },
2833             other => {
2834             one => 'other',
2835             other => 'other',
2836             },
2837             },
2838             ml => {
2839             one => {
2840             other => 'other',
2841             },
2842             other => {
2843             one => 'one',
2844             other => 'other',
2845             },
2846             },
2847             mn => {
2848             one => {
2849             other => 'other',
2850             },
2851             other => {
2852             one => 'one',
2853             other => 'other',
2854             },
2855             },
2856             mr => {
2857             one => {
2858             one => 'one',
2859             other => 'other',
2860             },
2861             other => {
2862             other => 'other',
2863             },
2864             },
2865             ms => {
2866             other => {
2867             other => 'other',
2868             },
2869             },
2870             my => {
2871             other => {
2872             other => 'other',
2873             },
2874             },
2875             nb => {
2876             one => {
2877             other => 'other',
2878             },
2879             other => {
2880             one => 'other',
2881             other => 'other',
2882             },
2883             },
2884             ne => {
2885             one => {
2886             other => 'other',
2887             },
2888             other => {
2889             one => 'one',
2890             other => 'other',
2891             },
2892             },
2893             nl => {
2894             one => {
2895             other => 'other',
2896             },
2897             other => {
2898             one => 'one',
2899             other => 'other',
2900             },
2901             },
2902             no => {
2903             one => {
2904             other => 'other',
2905             },
2906             other => {
2907             one => 'other',
2908             other => 'other',
2909             },
2910             },
2911             or => {
2912             one => {
2913             one => 'other',
2914             other => 'other',
2915             },
2916             other => {
2917             one => 'one',
2918             other => 'other',
2919             },
2920             },
2921             pa => {
2922             one => {
2923             one => 'one',
2924             other => 'other',
2925             },
2926             other => {
2927             one => 'one',
2928             other => 'other',
2929             },
2930             },
2931             pcm => {
2932             one => {
2933             other => 'other',
2934             },
2935             other => {
2936             one => 'other',
2937             other => 'other',
2938             },
2939             },
2940             pl => {
2941             few => {
2942             few => 'few',
2943             many => 'many',
2944             other => 'other',
2945             },
2946             many => {
2947             few => 'few',
2948             many => 'many',
2949             one => 'one',
2950             other => 'other',
2951             },
2952             one => {
2953             few => 'few',
2954             many => 'many',
2955             other => 'other',
2956             },
2957             other => {
2958             few => 'few',
2959             many => 'many',
2960             one => 'one',
2961             other => 'other',
2962             },
2963             },
2964             ps => {
2965             one => {
2966             one => 'one',
2967             other => 'other',
2968             },
2969             other => {
2970             other => 'other',
2971             },
2972             },
2973             pt => {
2974             one => {
2975             one => 'one',
2976             other => 'other',
2977             },
2978             other => {
2979             other => 'other',
2980             },
2981             },
2982             ro => {
2983             few => {
2984             few => 'few',
2985             one => 'few',
2986             other => 'other',
2987             },
2988             one => {
2989             few => 'few',
2990             other => 'other',
2991             },
2992             other => {
2993             few => 'few',
2994             other => 'other',
2995             },
2996             },
2997             ru => {
2998             few => {
2999             few => 'few',
3000             many => 'many',
3001             one => 'one',
3002             other => 'other',
3003             },
3004             many => {
3005             few => 'few',
3006             many => 'many',
3007             one => 'one',
3008             other => 'other',
3009             },
3010             one => {
3011             few => 'few',
3012             many => 'many',
3013             one => 'one',
3014             other => 'other',
3015             },
3016             other => {
3017             few => 'few',
3018             many => 'many',
3019             one => 'one',
3020             other => 'other',
3021             },
3022             },
3023             sc => {
3024             one => {
3025             other => 'other',
3026             },
3027             other => {
3028             one => 'one',
3029             other => 'other',
3030             },
3031             },
3032             scn => {
3033             one => {
3034             other => 'other',
3035             },
3036             other => {
3037             one => 'one',
3038             other => 'other',
3039             },
3040             },
3041             sd => {
3042             one => {
3043             one => 'other',
3044             other => 'other',
3045             },
3046             other => {
3047             one => 'one',
3048             other => 'other',
3049             },
3050             },
3051             si => {
3052             one => {
3053             one => 'one',
3054             other => 'other',
3055             },
3056             other => {
3057             one => 'other',
3058             other => 'other',
3059             },
3060             },
3061             sk => {
3062             few => {
3063             few => 'few',
3064             many => 'many',
3065             other => 'other',
3066             },
3067             many => {
3068             few => 'few',
3069             many => 'many',
3070             one => 'one',
3071             other => 'other',
3072             },
3073             one => {
3074             few => 'few',
3075             many => 'many',
3076             other => 'other',
3077             },
3078             other => {
3079             few => 'few',
3080             many => 'many',
3081             one => 'one',
3082             other => 'other',
3083             },
3084             },
3085             sl => {
3086             few => {
3087             few => 'few',
3088             one => 'few',
3089             other => 'other',
3090             two => 'two',
3091             },
3092             one => {
3093             few => 'few',
3094             one => 'few',
3095             other => 'other',
3096             two => 'two',
3097             },
3098             other => {
3099             few => 'few',
3100             one => 'few',
3101             other => 'other',
3102             two => 'two',
3103             },
3104             two => {
3105             few => 'few',
3106             one => 'few',
3107             other => 'other',
3108             two => 'two',
3109             },
3110             },
3111             sq => {
3112             one => {
3113             other => 'other',
3114             },
3115             other => {
3116             one => 'one',
3117             other => 'other',
3118             },
3119             },
3120             sr => {
3121             few => {
3122             few => 'few',
3123             one => 'one',
3124             other => 'other',
3125             },
3126             one => {
3127             few => 'few',
3128             one => 'one',
3129             other => 'other',
3130             },
3131             other => {
3132             few => 'few',
3133             one => 'one',
3134             other => 'other',
3135             },
3136             },
3137             sv => {
3138             one => {
3139             other => 'other',
3140             },
3141             other => {
3142             one => 'other',
3143             other => 'other',
3144             },
3145             },
3146             sw => {
3147             one => {
3148             other => 'other',
3149             },
3150             other => {
3151             one => 'one',
3152             other => 'other',
3153             },
3154             },
3155             ta => {
3156             one => {
3157             other => 'other',
3158             },
3159             other => {
3160             one => 'one',
3161             other => 'other',
3162             },
3163             },
3164             te => {
3165             one => {
3166             other => 'other',
3167             },
3168             other => {
3169             one => 'one',
3170             other => 'other',
3171             },
3172             },
3173             th => {
3174             other => {
3175             other => 'other',
3176             },
3177             },
3178             tk => {
3179             one => {
3180             other => 'other',
3181             },
3182             other => {
3183             one => 'one',
3184             other => 'other',
3185             },
3186             },
3187             tr => {
3188             one => {
3189             other => 'other',
3190             },
3191             other => {
3192             one => 'one',
3193             other => 'other',
3194             },
3195             },
3196             ug => {
3197             one => {
3198             other => 'other',
3199             },
3200             other => {
3201             one => 'one',
3202             other => 'other',
3203             },
3204             },
3205             uk => {
3206             few => {
3207             few => 'few',
3208             many => 'many',
3209             one => 'one',
3210             other => 'other',
3211             },
3212             many => {
3213             few => 'few',
3214             many => 'many',
3215             one => 'one',
3216             other => 'other',
3217             },
3218             one => {
3219             few => 'few',
3220             many => 'many',
3221             one => 'one',
3222             other => 'other',
3223             },
3224             other => {
3225             few => 'few',
3226             many => 'many',
3227             one => 'one',
3228             other => 'other',
3229             },
3230             },
3231             ur => {
3232             one => {
3233             other => 'other',
3234             },
3235             other => {
3236             one => 'other',
3237             other => 'other',
3238             },
3239             },
3240             uz => {
3241             one => {
3242             other => 'other',
3243             },
3244             other => {
3245             one => 'one',
3246             other => 'other',
3247             },
3248             },
3249             vi => {
3250             other => {
3251             other => 'other',
3252             },
3253             },
3254             yue => {
3255             other => {
3256             other => 'other',
3257             },
3258             },
3259             zh => {
3260             other => {
3261             other => 'other',
3262             },
3263             },
3264             zu => {
3265             one => {
3266             one => 'one',
3267             other => 'other',
3268             },
3269             other => {
3270             other => 'other',
3271             },
3272             },
3273             );
3274              
3275             sub plural_range {
3276 158     158 0 178147 my ($self, $start, $end) = @_;
3277 158   33     9688 my $language_id = $self->language_id || $self->likely_subtag->language_id;
3278              
3279 158 100       1533 $start = $self->plural($start) if $start =~ /^-?(?:[0-9]+\.)?[0-9]+$/;
3280 158 100       1685 $end = $self->plural($end) if $end =~ /^-?(?:[0-9]+\.)?[0-9]+$/;
3281              
3282 158   100     2072 return $_plural_ranges{$language_id}{$start}{$end} // 'other';
3283             }
3284              
3285              
3286 23     23   1040227 no Moo::Role;
  23         80  
  23         263  
3287              
3288             1;
3289              
3290             # vim: tabstop=4