start

# Plural Forms

On this page, we’re putting together a list of the plural forms appropriate to each language. If your language isn’t represented, or if the information is inaccurate or inadequate in some way, please edit it or add to it. Launchpad also has plural information about many languages. See it here.

This combination of our experience and ideas is a very useful internationalization tool.

PLEASE NOTE: Many of these equations contain the word “or” instead of the correct “||” operator. Before you can use these equations, you need to replace the “or” with “||”.

## A

ISO | English name | Plurals header in .po files
--- | --- | ---
af | Afrikaans | nplurals=2; plural=(n != 1)
am | Amharic | nplurals = 2; plural=(n > 1)
ar | Arabic | nplurals=6; n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n>=3 && n<=10 ? 3 : n>=11 && n<=99 ? 4 : 5
az | Azerbaijani | nplurals=2; plural=(n != 1)

## B

be | Belarusian | nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10< =4 && (n%100<10 or n%100>=20) ? 1 : 2)
bg | Bulgarian | nplurals=2; plural=(n != 1)
bn | Bengali | nplurals=2; plural=(n != 1)
bo | Tibetan | nplurals=1; plural=0
bs | Bosnian | nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10< =4 && (n%100<10 or n%100>=20) ? 1 : 2)

## C

ca | Catalan | nplurals=2; plural=(n != 1)
cs | Czech | nplurals=3; plural=(n==1) ? 0 : (n>=2 && n< =4) ? 1 : 2
cy | Welsh | nplurals=4; plural= (n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3

## D

da | Danish | nplurals=2; plural=(n != 1)
de | German | nplurals=2; plural=(n != 1)
dz | Dzongkha | nplurals=1; plural=0

## E

el | Greek | nplurals=2; plural=(n != 1)
en | English | nplurals=2; plural=(n != 1)
eo | Esperanto | nplurals=2; plural=(n != 1)
es | Spanish | nplurals=2; plural=(n != 1)
et | Estonian | nplurals=2; plural=(n != 1)
eu | Basque | nplurals=2; plural=(n != 1)

## F

fa | Persian | nplurals=1; plural=0
fi | Finnish | nplurals=2; plural=(n != 1)
fil | Filipino | nplurals=2; plural=n > 1
fo | Faroese | nplurals=2; plural=(n != 1)
fr | French | nplurals=2; plural=(n > 1)
fur | Friulian | nplurals=2; plural=(n != 1)
fy | Frisian | nplurals=2; plural=(n != 1)

## G

ga | Irish | nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2
gl | Galician | nplurals=2; plural=(n != 1)
gu | Gujarati | nplurals=2; plural=(n != 1)
gun | Gun | nplurals=1; plural = (n > 1)

## H

ha | Hausa | nplurals=2; plural=(n != 1)
he | Hebrew | nplurals=2; plural=(n != 1)
hi | Hindi | nplurals=2; plural=(n != 1)
hr | Croatian | nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10< =4 && (n%100<10 or n%100>=20) ? 1 : 2)
hu | Hungarian | nplurals=1; plural=0

## I

id | Indonesian | nplurals=1; plural=0
is | Icelandic | nplurals=2; plural=(n != 1)
it | Italian | nplurals=2; plural=(n != 1)

## J

ja | Japanese | nplurals=1; plural=0

## K

ka | Georgian | nplurals=1; plural=0
km | Khmer | nplurals=1; plural=0
ko | Korean | nplurals=1; plural=0
ku | Kurdish | nplurals=2; plural=(n!= 1)

## L

lb | Letzeburgesch | nplurals=2; plural=(n != 1)
ln | Lingala | nplurals=2; plural=n>1;
lt | Lithuanian | nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 or n%100>=20) ? 1 : 2)
lv | Latvian | nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)

## M

mn | Mongolian | nplurals=2; plural=(n != 1)
mr | Marathi | nplurals=2; plural=(n != 1)
ms | Malay | nplurals=1; plural=0
mt | Maltese | nplurals=4; plural=(n==1 ? 0 : n==0 or ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3)

## N

nah | Nahuatl | nplurals=2; plural=(n != 1)
nb | Norwegian Bokmal | nplurals=2; plural=(n != 1)
ne | Nepali | nplurals=2; plural=(n != 1)
nl | Dutch | nplurals=2; plural=(n != 1)
nn | Norwegian Nynorsk | nplurals=2; plural=(n != 1)
no | Norwegian (old code) | nplurals=2; plural=(n != 1)
nso | Northern Sotho | nplurals=2; plural=(n > 1)

## O

or | Oriya | nplurals=2; plural=(n != 1)

## P

pa | Punjabi | nplurals=2; plural=(n != 1)
pl | Polish | nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10< =4 && (n%100<10 or n%100>=20) ? 1 : 2)
pt | Portuguese | nplurals=2; plural=(n != 1)
pt_BR | Brazilian Portuguese | nplurals=2; plural=(n > 1)

## R

ro | Romanian | nplurals=3; plural=(n==1 ? 0 : (n==0 or (n%100 > 0 && n%100 < 20)) ? 1 : 2);
ru | Russian | nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10< =4 && (n%100<10 or n%100>=20) ? 1 : 2)

## S

sk | Slovak | nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2
sl | Slovenian | nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 or n%100==4 ? 2 : 3)
so | Somali | nplurals=2; plural=n != 1
sq | Albanian | nplurals=2; plural=(n != 1)
sr | Serbian | nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10< =4 && (n%100<10 or n%100>=20) ? 1 : 2)
sv | Swedish | nplurals=2; plural=(n != 1)

## T

ta | Tamil | nplurals=2; plural=(n != 1)
ti | Tigrinya | nplurals=2; plural=n > 1
tk | Turkmen | nplurals=2; plural=(n != 1)
tr | Turkish | nplurals=1; plural=0

## U

uk | Ukrainian | nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10< =4 && (n%100<10 or n%100>=20) ? 1 : 2)

## V

vi | Vietnamese | nplurals=1; plural=0

## W

wa | Walloon | nplurals=2; plural=(n > 1)

## Z

zh | Chinese | nplurals=1; plural=0

zh means all districts and all variants of Chinese, such as zh_CN, zh_HK, zh_TW and so on.

Note: In rare cases where plural form introduces difference in personal pronoun (such as her vs. they, we vs. I), the plural form is different:

zh | Chinese | nplurals=2; plural=(n > 1)