Mercurial > babel > old > babel-test
annotate babel/messages/plurals.py @ 507:b29ff192b610 stable-0.9.x
Python 2.3 compatibility: backporting r456 and r457 to 0.9 branch (see #233)
author | fschwarz |
---|---|
date | Fri, 04 Mar 2011 13:14:03 +0000 |
parents | 6e4905cc919e |
children |
rev | line source |
---|---|
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
2 # |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
3 # Copyright (C) 2007 Edgewall Software |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
4 # All rights reserved. |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
5 # |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
6 # This software is licensed as described in the file COPYING, which |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
7 # you should have received as part of this distribution. The terms |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
8 # are also available at http://babel.edgewall.org/wiki/License. |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
9 # |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
10 # This software consists of voluntary contributions made by many |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
11 # individuals. For the exact contribution history, see the revision |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
12 # history and logs, available at http://babel.edgewall.org/log/. |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
13 |
56
27fba894d3ca
Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
54
diff
changeset
|
14 """Plural form definitions.""" |
27fba894d3ca
Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
54
diff
changeset
|
15 |
379 | 16 from babel.core import default_locale, Locale |
507
b29ff192b610
Python 2.3 compatibility: backporting r456 and r457 to 0.9 branch (see #233)
fschwarz
parents:
490
diff
changeset
|
17 from babel.util import itemgetter |
379 | 18 |
19 | |
20 LC_CTYPE = default_locale('LC_CTYPE') | |
21 | |
22 | |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
23 PLURALS = { |
318
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
24 # Afar |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
25 # 'aa': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
26 # Abkhazian |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
27 # 'ab': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
28 # Avestan |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
29 # 'ae': (), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
30 # Afrikaans - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
31 'af': (2, '(n != 1)'), |
318
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
32 # Akan |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
33 # 'ak': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
34 # Amharic |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
35 # 'am': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
36 # Aragonese |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
37 # 'an': (), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
38 # Arabic - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
39 'ar': (6, '(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n>=3 && n<=10 ? 3 : n>=11 && n<=99 ? 4 : 5)'), |
318
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
40 # Assamese |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
41 # 'as': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
42 # Avaric |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
43 # 'av': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
44 # Aymara |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
45 # 'ay': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
46 # Azerbaijani |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
47 # 'az': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
48 # Bashkir |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
49 # 'ba': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
50 # Belarusian |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
51 # 'be': (), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
52 # Bulgarian - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
53 'bg': (2, '(n != 1)'), |
318
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
54 # Bihari |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
55 # 'bh': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
56 # Bislama |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
57 # 'bi': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
58 # Bambara |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
59 # 'bm': (), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
60 # Bengali - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
61 'bn': (2, '(n != 1)'), |
300 | 62 # Tibetan - as discussed in private with Andrew West |
63 'bo': (1, '0'), | |
318
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
64 # Breton |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
65 # 'br': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
66 # Bosnian |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
67 # 'bs': (), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
68 # Catalan - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
69 'ca': (2, '(n != 1)'), |
318
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
70 # Chechen |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
71 # 'ce': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
72 # Chamorro |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
73 # 'ch': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
74 # Corsican |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
75 # 'co': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
76 # Cree |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
77 # 'cr': (), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
78 # Czech |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
79 'cs': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'), |
318
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
80 # Church Slavic |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
81 # 'cu': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
82 # Chuvash |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
83 'cv': (1, '0'), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
84 # Welsh |
346
faf0ead3a132
Merged revisions [358:360], [364:370], [373:378], [380:382] from [source:trunk].
cmlenz
parents:
318
diff
changeset
|
85 'cy': (5, '(n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 0)'), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
86 # Danish |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
87 'da': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
88 # German |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
89 'de': (2, '(n != 1)'), |
318
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
90 # Divehi |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
91 # 'dv': (), |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
92 # Dzongkha |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
93 'dz': (1, '0'), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
94 # Greek |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
95 'el': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
96 # English |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
97 'en': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
98 # Esperanto |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
99 'eo': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
100 # Spanish |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
101 'es': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
102 # Estonian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
103 'et': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
104 # Basque - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
105 'eu': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
106 # Persian - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
107 'fa': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
108 # Finnish |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
109 'fi': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
110 # French |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
111 'fr': (2, '(n > 1)'), |
300 | 112 # Friulian - From Pootle's PO's |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
113 'fur': (2, '(n > 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
114 # Irish |
346
faf0ead3a132
Merged revisions [358:360], [364:370], [373:378], [380:382] from [source:trunk].
cmlenz
parents:
318
diff
changeset
|
115 'ga': (3, '(n==1 ? 0 : n==2 ? 1 : 2)'), |
300 | 116 # Galician - From Pootle's PO's |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
117 'gl': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
118 # Hausa - From Pootle's PO's |
346
faf0ead3a132
Merged revisions [358:360], [364:370], [373:378], [380:382] from [source:trunk].
cmlenz
parents:
318
diff
changeset
|
119 'ha': (2, '(n != 1)'), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
120 # Hebrew |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
121 'he': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
122 # Hindi - From Pootle's PO's |
346
faf0ead3a132
Merged revisions [358:360], [364:370], [373:378], [380:382] from [source:trunk].
cmlenz
parents:
318
diff
changeset
|
123 'hi': (2, '(n != 1)'), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
124 # Croatian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
125 'hr': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
126 # Hungarian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
127 'hu': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
128 # Armenian - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
129 'hy': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
130 # Icelandic - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
131 'is': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
132 # Italian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
133 'it': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
134 # Japanese |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
135 'ja': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
136 # Georgian - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
137 'ka': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
138 # Kongo - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
139 'kg': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
140 # Khmer - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
141 'km': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
142 # Korean |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
143 'ko': (1, '0'), |
300 | 144 # Kurdish - From Pootle's PO's |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
145 'ku': (2, '(n != 1)'), |
318
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
146 # Lao - Another member of the Tai language family, like Thai. |
e7e6eb212628
Ported [335:338], [345], and [351] to 0.9.x stable branch.
cmlenz
parents:
300
diff
changeset
|
147 'lo': (1, '0'), |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
148 # Lithuanian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
149 'lt': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
150 # Latvian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
151 'lv': (3, '(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
152 # Maltese - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
153 'mt': (4, '(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3)'), |
300 | 154 # Norwegian Bokmål |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
155 'nb': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
156 # Dutch |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
157 'nl': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
158 # Norwegian Nynorsk |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
159 'nn': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
160 # Norwegian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
161 'no': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
162 # Punjabi - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
163 'pa': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
164 # Polish |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
165 'pl': (3, '(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
166 # Portuguese |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
167 'pt': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
168 # Brazilian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
169 'pt_BR': (2, '(n > 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
170 # Romanian - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
171 'ro': (3, '(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
172 # Russian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
173 'ru': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
174 # Slovak |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
175 'sk': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
176 # Slovenian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
177 'sl': (4, '(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
178 # Serbian - From Pootle's PO's |
490 | 179 'sr': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'), |
300 | 180 # Southern Sotho - From Pootle's PO's |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
181 'st': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
182 # Swedish |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
183 'sv': (2, '(n != 1)'), |
300 | 184 # Thai |
185 'th': (1, '0'), | |
51
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
186 # Turkish |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
187 'tr': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
188 # Ukrainian |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
189 'uk': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
190 # Venda - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
191 've': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
192 # Vietnamese - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
193 'vi': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
194 # Xhosa - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
195 'xh': (2, '(n != 1)'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
196 # Chinese - From Pootle's PO's |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
197 'zh_CN': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
198 'zh_HK': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
199 'zh_TW': (1, '0'), |
7f61453c1bea
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
200 } |
379 | 201 |
202 | |
203 DEFAULT_PLURAL = (2, '(n != 1)') | |
204 | |
205 | |
206 class _PluralTuple(tuple): | |
207 """A tuple with plural information.""" | |
208 | |
209 __slots__ = () | |
210 num_plurals = property(itemgetter(0), doc=""" | |
211 The number of plurals used by the locale.""") | |
212 plural_expr = property(itemgetter(1), doc=""" | |
213 The plural expression used by the locale.""") | |
214 plural_forms = property(lambda x: 'npurals=%s; plural=%s' % x, doc=""" | |
215 The plural expression used by the catalog or locale.""") | |
216 | |
217 def __str__(self): | |
218 return self.plural_forms | |
219 | |
220 | |
221 def get_plural(locale=LC_CTYPE): | |
222 """A tuple with the information catalogs need to perform proper | |
223 pluralization. The first item of the tuple is the number of plural | |
224 forms, the second the plural expression. | |
225 | |
226 >>> get_plural(locale='en') | |
227 (2, '(n != 1)') | |
228 >>> get_plural(locale='ga') | |
229 (3, '(n==1 ? 0 : n==2 ? 1 : 2)') | |
230 | |
231 The object returned is a special tuple with additional members: | |
232 | |
233 >>> tup = get_plural("ja") | |
234 >>> tup.num_plurals | |
235 1 | |
236 >>> tup.plural_expr | |
237 '0' | |
238 >>> tup.plural_forms | |
239 'npurals=1; plural=0' | |
240 | |
241 Converting the tuple into a string prints the plural forms for a | |
242 gettext catalog: | |
243 | |
244 >>> str(tup) | |
245 'npurals=1; plural=0' | |
246 """ | |
247 locale = Locale.parse(locale) | |
248 try: | |
249 tup = PLURALS[str(locale)] | |
250 except KeyError: | |
251 try: | |
252 tup = PLURALS[locale.language] | |
253 except KeyError: | |
254 tup = DEFAULT_PLURAL | |
255 return _PluralTuple(tup) |