annotate babel/core.py @ 39:3b314a78015d

Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
author cmlenz
date Wed, 06 Jun 2007 11:02:24 +0000
parents 3666f3d3df15
children e967fbafcda1
rev   line source
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
2 #
12
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
3 # Copyright (C) 2007 Edgewall Software
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
4 # All rights reserved.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
5 #
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
6 # This software is licensed as described in the file COPYING, which
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
7 # you should have received as part of this distribution. The terms
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
8 # are also available at http://babel.edgewall.org/wiki/License.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
9 #
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
10 # This software consists of voluntary contributions made by many
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
11 # individuals. For the exact contribution history, see the revision
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
12 # history and logs, available at http://babel.edgewall.org/log/.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
13
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
14 """Core locale representation and locale data access gateway."""
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
15
39
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
16 import os
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
17
26
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
18 from babel import localedata
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
19
39
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
20 __all__ = ['UnknownLocaleError', 'Locale', 'getdefault', 'negotiate', 'parse']
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
21 __docformat__ = 'restructuredtext en'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
22
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
23
31
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
24 class UnknownLocaleError(Exception):
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
25 """Exception thrown when a locale is requested for which no locale data
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
26 is available.
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
27 """
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
28
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
29 def __init__(self, identifier):
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
30 """Create the exception.
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
31
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
32 :param identifier: the identifier string of the unsupported locale
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
33 """
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
34 Exception.__init__(self, 'unknown locale %r' % identifier)
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
35 self.identifier = identifier
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
36
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
37
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
38 class Locale(object):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
39 """Representation of a specific locale.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
40
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
41 >>> locale = Locale('en', territory='US')
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
42 >>> repr(locale)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
43 '<Locale "en_US">'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
44 >>> locale.display_name
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
45 u'English (United States)'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
46
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
47 A `Locale` object can also be instantiated from a raw locale string:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
48
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
49 >>> locale = Locale.parse('en-US', sep='-')
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
50 >>> repr(locale)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
51 '<Locale "en_US">'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
52
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
53 `Locale` objects provide access to a collection of locale data, such as
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
54 territory and language names, number and date format patterns, and more:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
55
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
56 >>> locale.number_symbols['decimal']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
57 u'.'
31
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
58
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
59 If a locale is requested for which no locale data is available, an
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
60 `UnknownLocaleError` is raised:
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
61
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
62 >>> Locale.parse('en_DE')
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
63 Traceback (most recent call last):
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
64 ...
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
65 UnknownLocaleError: unknown locale 'en_DE'
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
66
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
67 :see: `IETF RFC 3066 <http://www.ietf.org/rfc/rfc3066.txt>`_
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
68 """
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
69
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
70 def __init__(self, language, territory=None, variant=None):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
71 """Initialize the locale object from the given identifier components.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
72
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
73 >>> locale = Locale('en', 'US')
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
74 >>> locale.language
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
75 'en'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
76 >>> locale.territory
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
77 'US'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
78
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
79 :param language: the language code
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
80 :param territory: the territory (country or region) code
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
81 :param variant: the variant code
31
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
82 :raise `UnknownLocaleError`: if no locale data is available for the
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
83 requested locale
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
84 """
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
85 self.language = language
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
86 self.territory = territory
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
87 self.variant = variant
31
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
88 identifier = str(self)
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
89 try:
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
90 self._data = localedata.load(identifier)
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
91 except IOError:
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
92 raise UnknownLocaleError(identifier)
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
93
39
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
94 def default(cls, category=None):
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
95 """Return the system default locale for the specified category.
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
96
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
97 >>> for name in ['LANGUAGE', 'LC_ALL', 'LC_CTYPE']:
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
98 ... os.environ[name] = ''
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
99 >>> os.environ['LANG'] = 'fr_FR.UTF-8'
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
100 >>> Locale.default('LC_MESSAGES')
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
101 <Locale "fr_FR">
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
102
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
103 :param category: one of the ``LC_XXX`` environment variable names
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
104 :return: the value of the variable, or any of the fallbacks
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
105 (``LANGUAGE``, ``LC_ALL``, ``LC_CTYPE``, and ``LANG``)
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
106 :rtype: `Locale`
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
107 """
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
108 return cls(getdefault(category))
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
109 default = classmethod(default)
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
110
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
111 def parse(cls, identifier, sep='_'):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
112 """Create a `Locale` instance for the given locale identifier.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
113
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
114 >>> l = Locale.parse('de-DE', sep='-')
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
115 >>> l.display_name
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
116 u'Deutsch (Deutschland)'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
117
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
118 If the `identifier` parameter is not a string, but actually a `Locale`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
119 object, that object is returned:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
120
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
121 >>> Locale.parse(l)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
122 <Locale "de_DE">
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
123
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
124 :param identifier: the locale identifier string
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
125 :param sep: optional component separator
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
126 :return: a corresponding `Locale` instance
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
127 :rtype: `Locale`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
128 :raise `ValueError`: if the string does not appear to be a valid locale
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
129 identifier
31
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
130 :raise `UnknownLocaleError`: if no locale data is available for the
b6ff3e4b43e5 Raise error on unsupported locales. Closes #5.
cmlenz
parents: 28
diff changeset
131 requested locale
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
132 """
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
133 if type(identifier) is cls:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
134 return identifier
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
135 return cls(*parse(identifier, sep=sep))
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
136 parse = classmethod(parse)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
137
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
138 def __repr__(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
139 return '<Locale "%s">' % str(self)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
140
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
141 def __str__(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
142 return '_'.join(filter(None, [self.language, self.territory,
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
143 self.variant]))
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
144
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
145 def display_name(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
146 retval = self.languages.get(self.language)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
147 if self.territory:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
148 variant = ''
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
149 if self.variant:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
150 variant = ', %s' % self.variants.get(self.variant)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
151 retval += ' (%s%s)' % (self.territories.get(self.territory), variant)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
152 return retval
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
153 display_name = property(display_name, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
154 The localized display name of the locale.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
155
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
156 >>> Locale('en').display_name
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
157 u'English'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
158 >>> Locale('en', 'US').display_name
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
159 u'English (United States)'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
160
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
161 :type: `unicode`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
162 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
163
8
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
164 #{ General Locale Display Names
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
165
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
166 def languages(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
167 return self._data['languages']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
168 languages = property(languages, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
169 Mapping of language codes to translated language names.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
170
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
171 >>> Locale('de', 'DE').languages['ja']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
172 u'Japanisch'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
173
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
174 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
175 :see: `ISO 639 <http://www.loc.gov/standards/iso639-2/>`_
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
176 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
177
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
178 def scripts(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
179 return self._data['scripts']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
180 scripts = property(scripts, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
181 Mapping of script codes to translated script names.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
182
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
183 >>> Locale('en', 'US').scripts['Hira']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
184 u'Hiragana'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
185
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
186 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
187 :see: `ISO 15924 <http://www.evertype.com/standards/iso15924/>`_
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
188 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
189
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
190 def territories(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
191 return self._data['territories']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
192 territories = property(territories, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
193 Mapping of script codes to translated script names.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
194
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
195 >>> Locale('es', 'CO').territories['DE']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
196 u'Alemania'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
197
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
198 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
199 :see: `ISO 3166 <http://www.iso.org/iso/en/prods-services/iso3166ma/>`_
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
200 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
201
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
202 def variants(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
203 return self._data['variants']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
204 variants = property(variants, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
205 Mapping of script codes to translated script names.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
206
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
207 >>> Locale('de', 'DE').variants['1901']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
208 u'alte deutsche Rechtschreibung'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
209
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
210 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
211 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
212
8
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
213 #{ Number Formatting
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
214
26
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
215 def currencies(self):
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
216 return self._data['currency_names']
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
217 currencies = property(currencies, doc="""\
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
218 Mapping of currency codes to translated currency names.
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
219
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
220 >>> Locale('en').currencies['COP']
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
221 u'Colombian Peso'
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
222 >>> Locale('de', 'DE').currencies['COP']
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
223 u'Kolumbianischer Peso'
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
224
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
225 :type: `dict`
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
226 """)
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
227
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
228 def currency_symbols(self):
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
229 return self._data['currency_symbols']
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
230 currency_symbols = property(currency_symbols, doc="""\
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
231 Mapping of currency codes to symbols.
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
232
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
233 >>> Locale('en').currency_symbols['USD']
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
234 u'US$'
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
235 >>> Locale('en', 'US').currency_symbols['USD']
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
236 u'$'
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
237
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
238 :type: `dict`
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
239 """)
710090104678 * Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents: 22
diff changeset
240
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
241 def number_symbols(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
242 return self._data['number_symbols']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
243 number_symbols = property(number_symbols, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
244 Symbols used in number formatting.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
245
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
246 >>> Locale('fr', 'FR').number_symbols['decimal']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
247 u','
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
248
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
249 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
250 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
251
12
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
252 def decimal_formats(self):
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
253 return self._data['decimal_formats']
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
254 decimal_formats = property(decimal_formats, doc="""\
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
255 Locale patterns for decimal number formatting.
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
256
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
257 >>> Locale('en', 'US').decimal_formats[None]
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
258 <NumberPattern u'#,##0.###'>
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
259
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
260 :type: `dict`
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
261 """)
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
262
22
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
263 def percent_formats(self):
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
264 return self._data['percent_formats']
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
265 percent_formats = property(percent_formats, doc="""\
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
266 Locale patterns for percent number formatting.
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
267
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
268 >>> Locale('en', 'US').percent_formats[None]
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
269 <NumberPattern u'#,##0%'>
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
270
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
271 :type: `dict`
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
272 """)
7d37639a7411 Implemented babel.numbers.format_percent
jonas
parents: 15
diff changeset
273
8
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
274 #{ Calendar Information and Date Formatting
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
275
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
276 def periods(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
277 return self._data['periods']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
278 periods = property(periods, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
279 Locale display names for day periods (AM/PM).
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
280
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
281 >>> Locale('en', 'US').periods['am']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
282 u'AM'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
283
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
284 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
285 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
286
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
287 def days(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
288 return self._data['days']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
289 days = property(days, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
290 Locale display names for weekdays.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
291
15
76985c08a339 Minor date formatting improvements.
cmlenz
parents: 12
diff changeset
292 >>> Locale('de', 'DE').days['format']['wide'][3]
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
293 u'Donnerstag'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
294
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
295 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
296 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
297
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
298 def months(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
299 return self._data['months']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
300 months = property(months, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
301 Locale display names for months.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
302
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
303 >>> Locale('de', 'DE').months['format']['wide'][10]
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
304 u'Oktober'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
305
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
306 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
307 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
308
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
309 def quarters(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
310 return self._data['quarters']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
311 quarters = property(quarters, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
312 Locale display names for quarters.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
313
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
314 >>> Locale('de', 'DE').quarters['format']['wide'][1]
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
315 u'1. Quartal'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
316
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
317 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
318 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
319
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
320 def eras(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
321 return self._data['eras']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
322 eras = property(eras, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
323 Locale display names for eras.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
324
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
325 >>> Locale('en', 'US').eras['wide'][1]
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
326 u'Anno Domini'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
327 >>> Locale('en', 'US').eras['abbreviated'][0]
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
328 u'BC'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
329
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
330 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
331 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
332
28
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
333 def time_zones(self):
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
334 return self._data['time_zones']
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
335 time_zones = property(time_zones, doc="""\
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
336 Locale display names for time zones.
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
337
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
338 >>> Locale('en', 'US').time_zones['America/Los_Angeles']['long']['standard']
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
339 u'Pacific Standard Time'
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
340 >>> Locale('en', 'US').time_zones['Europe/Dublin']['city']
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
341 u'Dublin'
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
342
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
343 :type: `dict`
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
344 """)
11278622ede9 Import basic timezone info from CLDR (see #3). Still missing a couple other pieces in the puzzle.
cmlenz
parents: 26
diff changeset
345
34
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
346 def zone_aliases(self):
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
347 return self._data['zone_aliases']
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
348 zone_aliases = property(zone_aliases, doc="""\
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
349 Mapping of time zone aliases to their respective canonical identifer.
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
350
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
351 >>> Locale('en').zone_aliases['UTC']
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
352 'Etc/GMT'
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
353
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
354 :type: `dict`
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
355 :note: this doesn't really belong here, as it does not change between
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
356 locales
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
357 """)
3666f3d3df15 Extended time-zone support.
cmlenz
parents: 33
diff changeset
358
8
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
359 def first_week_day(self):
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
360 return self._data['week_data']['first_day']
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
361 first_week_day = property(first_week_day, doc="""\
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
362 The first day of a week.
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
363
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
364 >>> Locale('de', 'DE').first_week_day
15
76985c08a339 Minor date formatting improvements.
cmlenz
parents: 12
diff changeset
365 0
8
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
366 >>> Locale('en', 'US').first_week_day
15
76985c08a339 Minor date formatting improvements.
cmlenz
parents: 12
diff changeset
367 6
8
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
368
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
369 :type: `int`
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
370 """)
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
371
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
372 def weekend_start(self):
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
373 return self._data['week_data']['weekend_start']
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
374 weekend_start = property(weekend_start, doc="""\
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
375 The day the weekend starts.
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
376
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
377 >>> Locale('de', 'DE').weekend_start
15
76985c08a339 Minor date formatting improvements.
cmlenz
parents: 12
diff changeset
378 5
8
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
379
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
380 :type: `int`
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
381 """)
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
382
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
383 def weekend_end(self):
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
384 return self._data['week_data']['weekend_end']
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
385 weekend_end = property(weekend_end, doc="""\
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
386 The day the weekend ends.
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
387
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
388 >>> Locale('de', 'DE').weekend_end
15
76985c08a339 Minor date formatting improvements.
cmlenz
parents: 12
diff changeset
389 6
8
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
390
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
391 :type: `int`
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
392 """)
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
393
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
394 def min_week_days(self):
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
395 return self._data['week_data']['min_days']
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
396 min_week_days = property(min_week_days, doc="""\
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
397 The minimum number of days in a week so that the week is counted as the
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
398 first week of a year or month.
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
399
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
400 >>> Locale('de', 'DE').min_week_days
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
401 4
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
402
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
403 :type: `int`
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
404 """)
9132c9218745 Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents: 1
diff changeset
405
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
406 def date_formats(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
407 return self._data['date_formats']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
408 date_formats = property(date_formats, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
409 Locale patterns for date formatting.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
410
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
411 >>> Locale('en', 'US').date_formats['short']
12
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
412 <DateTimePattern u'M/d/yy'>
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
413 >>> Locale('fr', 'FR').date_formats['long']
12
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
414 <DateTimePattern u'd MMMM yyyy'>
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
415
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
416 :type: `dict`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
417 """)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
418
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
419 def time_formats(self):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
420 return self._data['time_formats']
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
421 time_formats = property(time_formats, doc="""\
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
422 Locale patterns for time formatting.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
423
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
424 >>> Locale('en', 'US').time_formats['short']
12
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
425 <DateTimePattern u'h:mm a'>
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
426 >>> Locale('fr', 'FR').time_formats['long']
12
a2c54ef107c2 * Removed pkg_resources/setuptools requirement from various places.
cmlenz
parents: 9
diff changeset
427 <DateTimePattern u'HH:mm:ss z'>
9
3be73c6f01f1 Add basic support for number format patterns.
jonas
parents: 8
diff changeset
428
3be73c6f01f1 Add basic support for number format patterns.
jonas
parents: 8
diff changeset
429 :type: `dict`
3be73c6f01f1 Add basic support for number format patterns.
jonas
parents: 8
diff changeset
430 """)
3be73c6f01f1 Add basic support for number format patterns.
jonas
parents: 8
diff changeset
431
33
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
432 def datetime_formats(self):
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
433 return self._data['datetime_formats']
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
434 datetime_formats = property(datetime_formats, doc="""\
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
435 Locale patterns for datetime formatting.
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
436
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
437 >>> Locale('en').datetime_formats[None]
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
438 u'{1} {0}'
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
439 >>> Locale('th').datetime_formats[None]
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
440 u'{1}, {0}'
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
441
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
442 :type: `dict`
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
443 """)
0740b6d31799 * Import datetime patterns from CLDR.
cmlenz
parents: 31
diff changeset
444
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
445
39
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
446 def getdefault(category=None):
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
447 """Returns the system default locale for a given category, based on
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
448 environment variables.
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
449
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
450 >>> for name in ['LANGUAGE', 'LC_ALL', 'LC_CTYPE']:
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
451 ... os.environ[name] = ''
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
452 >>> os.environ['LANG'] = 'fr_FR.UTF-8'
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
453 >>> getdefault('LC_MESSAGES')
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
454 'fr_FR'
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
455
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
456 :param category: one of the ``LC_XXX`` environment variable names
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
457 :return: the value of the variable, or any of the fallbacks (``LANGUAGE``,
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
458 ``LC_ALL``, ``LC_CTYPE``, and ``LANG``)
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
459
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
460 :rtype: `str`
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
461 """
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
462 varnames = (category, 'LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LANG')
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
463 for name in filter(None, varnames):
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
464 locale = os.getenv(name)
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
465 if locale:
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
466 return '_'.join(filter(None, parse(locale)))
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
467
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
468 def negotiate(preferred, available):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
469 """Find the best match between available and requested locale strings.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
470
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
471 >>> negotiate(['de_DE', 'en_US'], ['de_DE', 'de_AT'])
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
472 'de_DE'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
473 >>> negotiate(['de_DE', 'en_US'], ['en', 'de'])
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
474 'de'
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
475
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
476 :param preferred: the list of locale strings preferred by the user
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
477 :param available: the list of locale strings available
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
478 :return: the locale identifier for the best match, or `None` if no match
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
479 was found
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
480 :rtype: `str`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
481 """
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
482 for locale in preferred:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
483 if locale in available:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
484 return locale
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
485 parts = locale.split('_')
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
486 if len(parts) > 1 and parts[0] in available:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
487 return parts[0]
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
488 return None
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
489
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
490 def parse(identifier, sep='_'):
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
491 """Parse a locale identifier into a ``(language, territory, variant)``
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
492 tuple.
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
493
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
494 >>> parse('zh_CN')
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
495 ('zh', 'CN', None)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
496
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
497 The default component separator is "_", but a different separator can be
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
498 specified using the `sep` parameter:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
499
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
500 >>> parse('zh-CN', sep='-')
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
501 ('zh', 'CN', None)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
502
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
503 :param identifier: the locale identifier string
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
504 :param sep: character that separates the different parts of the locale
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
505 string
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
506 :return: the ``(language, territory, variant)`` tuple
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
507 :rtype: `tuple`
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
508 :raise `ValueError`: if the string does not appear to be a valid locale
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
509 identifier
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
510
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
511 :see: `IETF RFC 3066 <http://www.ietf.org/rfc/rfc3066.txt>`_
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
512 """
39
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
513 if '.' in identifier:
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
514 # this is probably the charset/encoding, which we don't care about
3b314a78015d Move function for determining the system default locale to `babel.core`, and make it available as a class method on `Locale`.
cmlenz
parents: 34
diff changeset
515 identifier = identifier.split('.', 1)[0]
1
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
516 parts = identifier.split(sep)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
517 lang, territory, variant = parts[0].lower(), None, None
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
518 if not lang.isalpha():
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
519 raise ValueError('expected only letters, got %r' % lang)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
520 if len(parts) > 1:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
521 territory = parts[1].upper().split('.', 1)[0]
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
522 if not territory.isalpha():
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
523 raise ValueError('expected only letters, got %r' % territory)
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
524 if len(parts) > 2:
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
525 variant = parts[2].upper().split('.', 1)[0]
f71ca60f2a4a Import of initial code base.
cmlenz
parents:
diff changeset
526 return lang, territory, variant
Copyright (C) 2012-2017 Edgewall Software