"""
return self._data['list_patterns']
+ @property
+ def ordinal_form(self):
+ """Plural rules for the locale.
+
+ >>> Locale('en').ordinal_form(1)
+ 'one'
+ >>> Locale('en').ordinal_form(2)
+ 'two'
+ >>> Locale('en').ordinal_form(3)
+ 'few'
+ >>> Locale('fr').ordinal_form(2)
+ 'other'
+ >>> Locale('ru').ordinal_form(100)
+ 'other'
+ """
+ return self._data.get('ordinal_form', _default_plural_rule)
+
def default_locale(category=None, aliases=LOCALE_ALIASES):
"""Returns the system default locale for a given category, based on
return int(not tender), start or (1, 1, 1)
+def _extract_plural_rules(file_path):
+ rule_dict = {}
+ prsup = parse(file_path)
+ for elem in prsup.findall('.//plurals/pluralRules'):
+ rules = []
+ for rule in elem.findall('pluralRule'):
+ rules.append((rule.attrib['count'], text_type(rule.text)))
+ pr = PluralRule(rules)
+ for locale in elem.attrib['locales'].split():
+ rule_dict[locale] = pr
+ return rule_dict
+
+
def main():
parser = OptionParser(usage='%prog path/to/cldr')
options, args = parser.parse_args()
containers.add(group)
# prepare the per-locale plural rules definitions
- plural_rules = {}
- prsup = parse(os.path.join(srcdir, 'supplemental', 'plurals.xml'))
- for elem in prsup.findall('.//plurals/pluralRules'):
- rules = []
- for rule in elem.findall('pluralRule'):
- rules.append((rule.attrib['count'], text_type(rule.text)))
- pr = PluralRule(rules)
- for locale in elem.attrib['locales'].split():
- plural_rules[locale] = pr
+ plural_rules = _extract_plural_rules(os.path.join(srcdir, 'supplemental', 'plurals.xml'))
+ ordinal_rules = _extract_plural_rules(os.path.join(srcdir, 'supplemental', 'ordinals.xml'))
filenames = os.listdir(os.path.join(srcdir, 'main'))
filenames.remove('root.xml')
]))
if locale_id in plural_rules:
data['plural_form'] = plural_rules[locale_id]
+ if locale_id in ordinal_rules:
+ data['ordinal_form'] = ordinal_rules[locale_id]
# <localeDisplayNames>