Mercurial > babel > old > mirror
annotate babel/messages/plurals.py @ 549:12d5425fb430
babel.messages.pofile should only apply encoding when actually writing a file (eases Python 3 transition, closes #251)
author | fschwarz |
---|---|
date | Sat, 19 Mar 2011 19:50:21 +0000 |
parents | e93f68837913 |
children |
rev | line source |
---|---|
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
2 # |
532 | 3 # Copyright (C) 2007-2011 Edgewall Software |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
4 # All rights reserved. |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
5 # |
52dbebdd3789
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 |
52dbebdd3789
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 |
52dbebdd3789
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. |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
9 # |
52dbebdd3789
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 |
52dbebdd3789
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 |
52dbebdd3789
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/. |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
13 |
58
068952b4d4c0
Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
56
diff
changeset
|
14 """Plural form definitions.""" |
068952b4d4c0
Add actual data structures for handling message catalogs, so that more code can be reused here between the frontends.
cmlenz
parents:
56
diff
changeset
|
15 |
375
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
16 from babel.core import default_locale, Locale |
529
5b62a9699780
Get rid of the utility code for itemgetter(), we now simply import this
jruigrok
parents:
491
diff
changeset
|
17 from operator import itemgetter |
375
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
18 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
19 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
20 LC_CTYPE = default_locale('LC_CTYPE') |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
21 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
22 |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
23 PLURALS = { |
304 | 24 # Afar |
25 # 'aa': (), | |
26 # Abkhazian | |
27 # 'ab': (), | |
28 # Avestan | |
29 # 'ae': (), | |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
30 # Afrikaans - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
31 'af': (2, '(n != 1)'), |
304 | 32 # Akan |
33 # 'ak': (), | |
34 # Amharic | |
35 # 'am': (), | |
36 # Aragonese | |
37 # 'an': (), | |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
38 # Arabic - From Pootle's PO's |
52dbebdd3789
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)'), |
304 | 40 # Assamese |
41 # 'as': (), | |
42 # Avaric | |
43 # 'av': (), | |
44 # Aymara | |
45 # 'ay': (), | |
46 # Azerbaijani | |
47 # 'az': (), | |
48 # Bashkir | |
49 # 'ba': (), | |
50 # Belarusian | |
51 # 'be': (), | |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
52 # Bulgarian - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
53 'bg': (2, '(n != 1)'), |
304 | 54 # Bihari |
55 # 'bh': (), | |
56 # Bislama | |
57 # 'bi': (), | |
58 # Bambara | |
59 # 'bm': (), | |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
60 # Bengali - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
61 'bn': (2, '(n != 1)'), |
299 | 62 # Tibetan - as discussed in private with Andrew West |
63 'bo': (1, '0'), | |
304 | 64 # Breton |
65 # 'br': (), | |
66 # Bosnian | |
67 # 'bs': (), | |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
68 # Catalan - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
69 'ca': (2, '(n != 1)'), |
304 | 70 # Chechen |
71 # 'ce': (), | |
72 # Chamorro | |
73 # 'ch': (), | |
74 # Corsican | |
75 # 'co': (), | |
76 # Cree | |
77 # 'cr': (), | |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
78 # Czech |
52dbebdd3789
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)'), |
304 | 80 # Church Slavic |
81 # 'cu': (), | |
82 # Chuvash | |
306
e6fc64278d1c
Assume that, since Chuvash is a Turkic language, Chuvash follows the same
jruigrok
parents:
305
diff
changeset
|
83 'cv': (1, '0'), |
304 | 84 # Welsh |
337 | 85 'cy': (5, '(n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 0)'), |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
86 # Danish |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
87 'da': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
88 # German |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
89 'de': (2, '(n != 1)'), |
304 | 90 # Divehi |
91 # 'dv': (), | |
92 # Dzongkha | |
305
a3984ac20b86
Given Dzongkha's relation to Tibetan for now assume the same plurality rules
jruigrok
parents:
304
diff
changeset
|
93 'dz': (1, '0'), |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
94 # Greek |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
95 'el': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
96 # English |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
97 'en': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
98 # Esperanto |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
99 'eo': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
100 # Spanish |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
101 'es': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
102 # Estonian |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
103 'et': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
104 # Basque - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
105 'eu': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
106 # Persian - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
107 'fa': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
108 # Finnish |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
109 'fi': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
110 # French |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
111 'fr': (2, '(n > 1)'), |
301
21762d2a345c
Use consistent English names for all language names.
jruigrok
parents:
299
diff
changeset
|
112 # Friulian - From Pootle's PO's |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
113 'fur': (2, '(n > 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
114 # Irish |
337 | 115 'ga': (3, '(n==1 ? 0 : n==2 ? 1 : 2)'), |
301
21762d2a345c
Use consistent English names for all language names.
jruigrok
parents:
299
diff
changeset
|
116 # Galician - From Pootle's PO's |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
117 'gl': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
118 # Hausa - From Pootle's PO's |
337 | 119 'ha': (2, '(n != 1)'), |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
120 # Hebrew |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
121 'he': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
122 # Hindi - From Pootle's PO's |
337 | 123 'hi': (2, '(n != 1)'), |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
124 # Croatian |
52dbebdd3789
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)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
126 # Hungarian |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
127 'hu': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
128 # Armenian - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
129 'hy': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
130 # Icelandic - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
131 'is': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
132 # Italian |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
133 'it': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
134 # Japanese |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
135 'ja': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
136 # Georgian - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
137 'ka': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
138 # Kongo - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
139 'kg': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
140 # Khmer - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
141 'km': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
142 # Korean |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
143 'ko': (1, '0'), |
301
21762d2a345c
Use consistent English names for all language names.
jruigrok
parents:
299
diff
changeset
|
144 # Kurdish - From Pootle's PO's |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
145 'ku': (2, '(n != 1)'), |
303 | 146 # Lao - Another member of the Tai language family, like Thai. |
147 'lo': (1, '0'), | |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
148 # Lithuanian |
52dbebdd3789
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)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
150 # Latvian |
52dbebdd3789
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)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
152 # Maltese - From Pootle's PO's |
52dbebdd3789
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)'), |
301
21762d2a345c
Use consistent English names for all language names.
jruigrok
parents:
299
diff
changeset
|
154 # Norwegian Bokmål |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
155 'nb': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
156 # Dutch |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
157 'nl': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
158 # Norwegian Nynorsk |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
159 'nn': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
160 # Norwegian |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
161 'no': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
162 # Punjabi - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
163 'pa': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
164 # Polish |
52dbebdd3789
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)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
166 # Portuguese |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
167 'pt': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
168 # Brazilian |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
169 'pt_BR': (2, '(n > 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
170 # Romanian - From Pootle's PO's |
52dbebdd3789
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)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
172 # Russian |
52dbebdd3789
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)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
174 # Slovak |
52dbebdd3789
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)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
176 # Slovenian |
52dbebdd3789
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)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
178 # Serbian - From Pootle's PO's |
491 | 179 'sr': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'), |
301
21762d2a345c
Use consistent English names for all language names.
jruigrok
parents:
299
diff
changeset
|
180 # Southern Sotho - From Pootle's PO's |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
181 'st': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
182 # Swedish |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
183 'sv': (2, '(n != 1)'), |
298 | 184 # Thai |
185 'th': (1, '0'), | |
53
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
186 # Turkish |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
187 'tr': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
188 # Ukrainian |
52dbebdd3789
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)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
190 # Venda - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
191 've': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
192 # Vietnamese - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
193 'vi': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
194 # Xhosa - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
195 'xh': (2, '(n != 1)'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
196 # Chinese - From Pootle's PO's |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
197 'zh_CN': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
198 'zh_HK': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
199 'zh_TW': (1, '0'), |
52dbebdd3789
Fixed a bug regarding plural msgid's handling when writing the `.pot` file.
palgarvio
parents:
diff
changeset
|
200 } |
375
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
201 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
202 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
203 DEFAULT_PLURAL = (2, '(n != 1)') |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
204 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
205 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
206 class _PluralTuple(tuple): |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
207 """A tuple with plural information.""" |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
208 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
209 __slots__ = () |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
210 num_plurals = property(itemgetter(0), doc=""" |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
211 The number of plurals used by the locale.""") |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
212 plural_expr = property(itemgetter(1), doc=""" |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
213 The plural expression used by the locale.""") |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
214 plural_forms = property(lambda x: 'npurals=%s; plural=%s' % x, doc=""" |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
215 The plural expression used by the catalog or locale.""") |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
216 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
217 def __str__(self): |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
218 return self.plural_forms |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
219 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
220 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
221 def get_plural(locale=LC_CTYPE): |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
222 """A tuple with the information catalogs need to perform proper |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
223 pluralization. The first item of the tuple is the number of plural |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
224 forms, the second the plural expression. |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
225 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
226 >>> get_plural(locale='en') |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
227 (2, '(n != 1)') |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
228 >>> get_plural(locale='ga') |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
229 (3, '(n==1 ? 0 : n==2 ? 1 : 2)') |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
230 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
231 The object returned is a special tuple with additional members: |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
232 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
233 >>> tup = get_plural("ja") |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
234 >>> tup.num_plurals |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
235 1 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
236 >>> tup.plural_expr |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
237 '0' |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
238 >>> tup.plural_forms |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
239 'npurals=1; plural=0' |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
240 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
241 Converting the tuple into a string prints the plural forms for a |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
242 gettext catalog: |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
243 |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
244 >>> str(tup) |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
245 'npurals=1; plural=0' |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
246 """ |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
247 locale = Locale.parse(locale) |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
248 try: |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
249 tup = PLURALS[str(locale)] |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
250 except KeyError: |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
251 try: |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
252 tup = PLURALS[locale.language] |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
253 except KeyError: |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
254 tup = DEFAULT_PLURAL |
324e747f0b09
Added babel.messages.plurals.get_plural which returns a special tuple with the plural information.
aronacher
parents:
337
diff
changeset
|
255 return _PluralTuple(tup) |