123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # -*- coding: utf-8 -*-
- """
- babel.lists
- ~~~~~~~~~~~
- Locale dependent formatting of lists.
- The default locale for the functions in this module is determined by the
- following environment variables, in that order:
- * ``LC_ALL``, and
- * ``LANG``
- :copyright: (c) 2015 by the Babel Team.
- :license: BSD, see LICENSE for more details.
- """
- from babel.core import Locale, default_locale
- DEFAULT_LOCALE = default_locale()
- def format_list(lst, locale=DEFAULT_LOCALE):
- """
- Format the items in `lst` as a list.
- >>> format_list(['apples', 'oranges', 'pears'], 'en')
- u'apples, oranges, and pears'
- >>> format_list(['apples', 'oranges', 'pears'], 'zh')
- u'apples\u3001oranges\u548cpears'
- :param lst: a sequence of items to format in to a list
- :param locale: the locale
- """
- locale = Locale.parse(locale)
- if not lst:
- return ''
- if len(lst) == 1:
- return lst[0]
- if len(lst) == 2:
- return locale.list_patterns['2'].format(*lst)
- result = locale.list_patterns['start'].format(lst[0], lst[1])
- for elem in lst[2:-1]:
- result = locale.list_patterns['middle'].format(result, elem)
- result = locale.list_patterns['end'].format(result, lst[-1])
- return result
|