>>> Catalog(locale='en').num_plurals
2
>>> Catalog(locale='ga').num_plurals
- 3
+ 5
:type: `int`"""
if self._num_plurals is None:
>>> Catalog(locale='en').plural_expr
'(n != 1)'
>>> Catalog(locale='ga').plural_expr
- '(n==1 ? 0 : n==2 ? 1 : 2)'
+ '(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)'
:type: `string_types`"""
if self._plural_expr is None:
# Aragonese
# 'an': (),
# Arabic - From Pootle's PO's
- 'ar': (6, '(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n>=3 && n<=10 ? 3 : n>=11 && n<=99 ? 4 : 5)'),
+ 'ar': (6, '(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=0 && n%100<=2 ? 4 : 5)'),
# Assamese
# 'as': (),
# Avaric
# Bashkir
# 'ba': (),
# Belarusian
- # 'be': (),
+ 'be': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'),
# Bulgarian - From Pootle's PO's
'bg': (2, '(n != 1)'),
# Bihari
# Tibetan - as discussed in private with Andrew West
'bo': (1, '0'),
# Breton
- # 'br': (),
+ 'br': (
+ 6,
+ '(n==1 ? 0 : n%10==1 && n%100!=11 && n%100!=71 && n%100!=91 ? 1 : n%10==2 && n%100!=12 && n%100!=72 && '
+ 'n%100!=92 ? 2 : (n%10==3 || n%10==4 || n%10==9) && n%100!=13 && n%100!=14 && n%100!=19 && n%100!=73 && '
+ 'n%100!=74 && n%100!=79 && n%100!=93 && n%100!=94 && n%100!=99 ? 3 : n%1000000==0 ? 4 : 5)'
+ ),
# Bosnian
- # 'bs': (),
+ 'bs': (3, '(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)'),
# Catalan - From Pootle's PO's
'ca': (2, '(n != 1)'),
# Chechen
# Friulian - From Pootle's PO's
'fur': (2, '(n > 1)'),
# Irish
- 'ga': (3, '(n==1 ? 0 : n==2 ? 1 : 2)'),
+ 'ga': (5, '(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)'),
# Galician - From Pootle's PO's
'gl': (2, '(n != 1)'),
# Hausa - From Pootle's PO's
# Armenian - From Pootle's PO's
'hy': (1, '0'),
# Icelandic - From Pootle's PO's
- 'is': (2, '(n != 1)'),
+ 'is': (2, '(n%10==1 && n%100!=11 ? 0 : 1)'),
# Italian
'it': (2, '(n != 1)'),
# Japanese
# Latvian
'lv': (3, '(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)'),
# Maltese - From Pootle's PO's
- 'mt': (4, '(n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3)'),
+ 'mt': (4, '(n==1 ? 0 : n==0 || ( n%100=>1 && n%100<=10) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3)'),
# Norwegian Bokmål
'nb': (2, '(n != 1)'),
# Dutch
>>> get_plural(locale='en')
(2, '(n != 1)')
>>> get_plural(locale='ga')
- (3, '(n==1 ? 0 : n==2 ? 1 : 2)')
+ (5, '(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)')
The object returned is a special tuple with additional members:
def test_catalog_num_plurals():
assert catalog.Catalog(locale='en').num_plurals == 2
- assert catalog.Catalog(locale='ga').num_plurals == 3
+ assert catalog.Catalog(locale='ga').num_plurals == 5
def test_catalog_plural_expr():
assert catalog.Catalog(locale='en').plural_expr == '(n != 1)'
assert (catalog.Catalog(locale='ga').plural_expr
- == '(n==1 ? 0 : n==2 ? 1 : 2)')
+ == '(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)')
def test_catalog_plural_forms():
def test_get_plural_accpets_strings():
- assert plurals.get_plural(locale='ga') == (3, '(n==1 ? 0 : n==2 ? 1 : 2)')
+ assert plurals.get_plural(locale='ga') == (5, '(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)')
def test_get_plural_falls_back_to_default():
def test_get_plural():
# See https://localization-guide.readthedocs.io/en/latest/l10n/pluralforms.html for more details.
assert plurals.get_plural(locale='en') == (2, '(n != 1)')
- assert plurals.get_plural(locale='ga') == (3, '(n==1 ? 0 : n==2 ? 1 : 2)')
+ assert plurals.get_plural(locale='ga') == (5, '(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : n>=7 && n<=10 ? 3 : 4)')
plural_ja = plurals.get_plural("ja")
assert str(plural_ja) == 'nplurals=1; plural=0;'