Skip to content

Commit

Permalink
Merge pull request #368 from akx/char-order-and-measurement-systems
Browse files Browse the repository at this point in the history
Character order and measurement systems
  • Loading branch information
akx committed Apr 5, 2016
2 parents 124294a + 99dc0c7 commit 84415b2
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
34 changes: 34 additions & 0 deletions babel/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -885,6 +885,40 @@ def ordinal_form(self):
"""
return self._data.get('ordinal_form', _default_plural_rule)

@property
def measurement_systems(self):
"""Localized names for various measurement systems.
>>> Locale('fr', 'FR').measurement_systems['US']
u'am\\xe9ricain'
>>> Locale('en', 'US').measurement_systems['US']
u'US'
"""
return self._data['measurement_systems']

@property
def character_order(self):
"""The text direction for the language.
>>> Locale('de', 'DE').character_order
'left-to-right'
>>> Locale('ar', 'SA').character_order
'right-to-left'
"""
return self._data['character_order']

@property
def text_direction(self):
"""The text direction for the language in CSS short-hand form.
>>> Locale('de', 'DE').text_direction
'ltr'
>>> Locale('ar', 'SA').text_direction
'rtl'
"""
return ''.join(word[0] for word in self.character_order.split('-'))


def default_locale(category=None, aliases=LOCALE_ALIASES):
"""Returns the system default locale for a given category, based on
Expand Down
15 changes: 15 additions & 0 deletions scripts/import_cldr.py
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,8 @@ def _process_local_datas(sup, srcdir, destdir, force=False, dump_json=False):
parse_currency_names(data, tree)
parse_unit_patterns(data, tree)
parse_date_fields(data, tree)
parse_character_order(data, tree)
parse_measurement_systems(data, tree)

write_datafile(data_filename, data, dump_json=dump_json)

Expand Down Expand Up @@ -839,6 +841,19 @@ def parse_day_period_rules(tree):
return day_periods


def parse_character_order(data, tree):
for elem in tree.findall('.//layout/orientation/characterOrder'):
data['character_order'] = elem.text


def parse_measurement_systems(data, tree):
measurement_systems = data.setdefault('measurement_systems', {})
for measurement_system in tree.findall('.//measurementSystemNames/measurementSystemName'):
type = measurement_system.attrib['type']
if not _should_skip_elem(measurement_system, type=type, dest=measurement_systems):
_import_type_text(measurement_systems, measurement_system, type=type)



if __name__ == '__main__':
main()

0 comments on commit 84415b2

Please sign in to comment.