====== Plural Forms ====== This is a list of the plural forms, as used by Gettext PO, that are appropriate to each language. If your language isn't represented - please add it, or if the information is inaccurate or inadequate in some way - please edit it. The Plural information is usually very hard to find and also in many ways hard for a new localiser to understand. So please see this as a repository that can help localisers. Understanding how the Gettext functions use plural forms will help you [[http://www.gnu.org/software/gettext/manual/gettext.html.gz#Plural-forms|design a correct plural form]]. Note: Launchpad also has [[https://translations.launchpad.net/+languages|plural information about many languages]], please add it here if your language is missing. Note: Mozilla now also uses [[http://developer.mozilla.org/en/docs/Localization_and_Plurals|plural forms]]. Although they follow a slightly different form, the [[http://mxr.mozilla.org/mozilla/source/intl/locale/src/PluralForm.jsm#59|underlying equations]] seem to be the same as those used by Gettext. Note: [[http://unicode.org/cldr|Unicode CLDR]] also collects [[http://www.unicode.org/cldr/data/charts/supplemental/language_plural_rules.html|plural information about many languages]]. Many of these equations contain the word "or" instead of the correct "||" operator (the wiki table markup uses | so we can't use it). 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 [[http://wiki.arabeyes.org/%D9%83%D9%8A%D8%AF%D9%8A#.D8.A7.D9.84.D8.AC.D9.85.D9.88.D8.B9|notes]]| nplurals=6; plural= n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5; | | arn | Mapudungun | nplurals=2; plural=(n > 1) | | 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 | | csb | Kashubian | nplurals=3; n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 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) | | es_AR | Argentinean 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=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4| | 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) | | hy | Armenian | nplurals=1; plural=0 | | 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 | | jv | Javanese | nplurals=2; plural=n!=0 | ===== K ===== | ka | Georgian | nplurals=1; plural=0 | | km | Khmer | nplurals=1; plural=0 | | kn | Kannada | nplurals=1; plural=0 | | ko | Korean | nplurals=1; plural=0 | | ku | Kurdish | nplurals=2; plural=(n!= 1) | | ky | Kyrgyz | nplurals=1; plural=0 | ===== 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 ===== | mk | Macedonian | nplurals=3; plural= n==1 or n%10==1 ? 0 : 1 | | mg | Malagasy | nplurals=2; plural=(n > 1) | | mi | Maori | nplurals=2; plural=(n > 1) | | ml | Malayalam | 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) | | mr | Marathi | nplurals=2; plural=(n != 1) | | mn | Mongolian | nplurals=2; plural=(n != 1) | ===== 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) | | pap | Papiamento | 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 ===== | sco | Scots | nplurals=2; plural=(n != 1) | | 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=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 or n%100>=20) ? 1 : 2 | | su | Sundanese | nplurals=1; plural=0 | | sv | Swedish | nplurals=2; plural=(n != 1) | ===== T ===== | ta | Tamil | nplurals=2; plural=(n != 1) | | te | Telugu | nplurals=2; plural=(n != 1) | | tg | Tajik | nplurals=2; plural=(n != 1) | | ti | Tigrinya | nplurals=2; plural=n > 1 | | th | Thai | nplurals=1; plural=0 | | 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) | | ur | Urdu | nplurals=2; plural=(n != 1) | | uz | Uzbek | nplurals=1; plural=0; | ===== 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) |