Mercurial > babel > old > babel-test
diff babel/core.py @ 41:e967fbafcda1
Load locale data lazily to avoid penalizing usage of `Locale` objects when no locale data is actually needed.
author | cmlenz |
---|---|
date | Wed, 06 Jun 2007 12:12:44 +0000 |
parents | 3b314a78015d |
children | 83f3f70c6ca3 |
line wrap: on
line diff
--- a/babel/core.py +++ b/babel/core.py @@ -85,10 +85,10 @@ self.language = language self.territory = territory self.variant = variant + self.__data = None + identifier = str(self) - try: - self._data = localedata.load(identifier) - except IOError: + if not localedata.exists(identifier): raise UnknownLocaleError(identifier) def default(cls, category=None): @@ -142,13 +142,20 @@ return '_'.join(filter(None, [self.language, self.territory, self.variant])) + def _data(self): + if self.__data is None: + self.__data = localedata.load(str(self)) + return self.__data + _data = property(_data) + def display_name(self): retval = self.languages.get(self.language) if self.territory: variant = '' if self.variant: variant = ', %s' % self.variants.get(self.variant) - retval += ' (%s%s)' % (self.territories.get(self.territory), variant) + retval += ' (%s%s)' % (self.territories.get(self.territory), + variant) return retval display_name = property(display_name, doc="""\ The localized display name of the locale. @@ -157,6 +164,8 @@ u'English' >>> Locale('en', 'US').display_name u'English (United States)' + >>> Locale('sv').display_name + u'svenska' :type: `unicode` """)