# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. "Mapping of locales to CLDR plural categories as implemented by PluralForm.jsm" CATEGORIES_BY_INDEX = ( # 0 (Chinese) ("other",), # 1 (English) ("one", "other"), # 2 (French) ("one", "other"), # 3 (Latvian) ("zero", "one", "other"), # 4 (Scottish Gaelic) ("one", "two", "few", "other"), # 5 (Romanian) ("one", "few", "other"), # 6 (Lithuanian) # CLDR: one, few, many (fractions), other ("one", "other", "few"), # 7 (Russian) # CLDR: one, few, many, other (fractions) ("one", "few", "many"), # 8 (Slovak) # CLDR: one, few, many (fractions), other ("one", "few", "other"), # 9 (Polish) # CLDR: one, few, many, other (fractions) ("one", "few", "many"), # 10 (Slovenian) ("one", "two", "few", "other"), # 11 (Irish Gaelic) ("one", "two", "few", "many", "other"), # 12 (Arabic) # CLDR: zero, one, two, few, many, other ("one", "two", "few", "many", "other", "zero"), # 13 (Maltese) ("one", "few", "many", "other"), # 14 (Unused) # CLDR: one, other ("one", "two", "other"), # 15 (Icelandic, Macedonian) ("one", "other"), # 16 (Breton) ("one", "two", "few", "many", "other"), # 17 (Shuar) # CLDR: (missing) ("zero", "other"), # 18 (Welsh), ("zero", "one", "two", "few", "many", "other"), # 19 (Bosnian, Croatian, Serbian) ("one", "few", "other"), ) CATEGORIES_EXCEPTIONS = {} CATEGORIES_BY_LOCALE = { "ace": 0, "ach": 1, "af": 1, "ak": 2, "an": 1, "ar": 12, "arn": 1, "as": 1, "ast": 1, "az": 1, "be": 7, "bg": 1, "bn": 2, "bo": 0, "br": 16, "brx": 1, "bs": 19, "ca": 1, "cak": 1, "ckb": 1, "crh": 1, "cs": 8, "csb": 9, "cv": 1, "cy": 18, "da": 1, "de": 1, "dsb": 10, "el": 1, "en": 1, "eo": 1, "es": 1, "et": 1, "eu": 1, "fa": 2, "ff": 1, "fi": 1, "fr": 2, "frp": 2, "fur": 1, "fy": 1, "ga": 11, "gd": 4, "gl": 1, "gn": 1, "gu": 2, "he": 1, "hi": 2, "hr": 19, "hsb": 10, "hto": 1, "hu": 1, "hy": 1, "hye": 1, "ia": 1, "id": 0, "ilo": 0, "is": 15, "it": 1, "ja": 0, "jiv": 17, "ka": 1, "kab": 1, "kk": 1, "km": 0, "kn": 1, "ko": 0, "ks": 1, "ku": 1, "lb": 1, "lg": 1, "lij": 1, "lo": 0, "lt": 6, "ltg": 3, "lv": 3, "lus": 0, "mai": 1, "meh": 0, "mix": 0, "mk": 15, "ml": 1, "mn": 1, "mr": 1, "ms": 0, "my": 0, "nb": 1, "ne": 1, "nl": 1, "nn": 1, "nr": 1, "nso": 2, "ny": 1, "oc": 2, "or": 1, "pa": 2, "pai": 0, "pl": 9, "pt": 1, "quy": 1, "qvi": 1, "rm": 1, "ro": 5, "ru": 7, "rw": 1, "sah": 0, "sat": 1, "sc": 1, "scn": 1, "sco": 1, "si": 1, "sk": 8, "skr": 1, "sl": 10, "son": 1, "sq": 1, "sr": 19, "ss": 1, "st": 1, "sv": 1, "sw": 1, "szl": 9, "ta": 1, "te": 1, "tg": 1, "th": 0, "tl": 1, "tn": 1, "tr": 1, "trs": 1, "ts": 1, "tsz": 1, "uk": 7, "ur": 1, "uz": 1, "ve": 1, "vi": 0, "wo": 0, "xh": 1, "zam": 1, "zh-CN": 0, "zh-TW": 0, "zu": 2, } def get_plural(locale): plural_form = get_plural_rule(locale) if plural_form is None: return None return CATEGORIES_BY_INDEX[plural_form] def get_plural_rule(locale): if locale is None: return None if locale in CATEGORIES_BY_LOCALE: return CATEGORIES_BY_LOCALE[locale] locale = locale.split("-", 1)[0] return CATEGORIES_BY_LOCALE.get(locale)