def get_metadata(app, docname): ''' Extracts metadata from a document. ''' env = app.builder.env language = app.config.language locale = Locale.parse(language) if language else Locale.default() format_ui_date = partial( format_date, format=UIStr.TIMESTAMP_FMT, locale=locale) format_short_ui_short = partial( format_date, format=UIStr.TIMESTAMP_FMT_SHORT, locale=locale) env.blog_metadata[docname] = Metadata() metadata = env.blog_metadata[docname] # if it's a page if docname.startswith("pages/"): metadata.is_page = True return # posts are identified by ($YEAR)/($MONTH)/($DAY) paths match = re.match(r"\d{4}/\d{2}/\d{2}/", docname) # if not post return if not match: return metadata.is_post = True metadata.link = docname metadata.date = datetime.datetime.strptime(match.group(), "%Y/%m/%d/") # we format date here instead of inside template due to localization issues # and Python2 vs Python3 incompatibility metadata.formatted_date = format_ui_date(metadata.date) metadata.formatted_date_short = format_short_ui_short(metadata.date)
def get_currencies(): """ Returns a list of currencies. """ return sorted( Locale.default().currencies.items(), key=operator.itemgetter(1) )
def defaultLocale(): try: lang, _ = locale.getdefaultlocale() except Exception: lang = None if lang is not None: return Locale.parse(lang) else: try: return Locale.default() except UnknownLocaleError: return Locale('en', 'US')
def get_console_locale(env=None, lang=LANG): """Return negotiated locale for console by LANG environment and [trac] default_language.""" if has_babel: from babel.core import Locale, UnknownLocaleError, parse_locale try: lang = '_'.join(filter(None, parse_locale(lang))) except: lang = None default = env.config.get('trac', 'default_language', '') \ if env else None try: return get_negotiated_locale([lang, default]) or Locale.default() except UnknownLocaleError: pass return None
def defaultLocale(): try: lang, _ = locale.getdefaultlocale() except Exception: lang = None if lang is not None: try: return Locale.parse(lang) except UnknownLocaleError: pass else: try: return Locale.default() except UnknownLocaleError: return Locale('en', 'US')
def test_default(self, os_environ): for name in ['LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LC_MESSAGES']: os_environ[name] = '' os_environ['LANG'] = 'fr_FR.UTF-8' default = Locale.default('LC_MESSAGES') assert (default.language, default.territory) == ('fr', 'FR')
def test_can_return_default_locale(os_environ): os_environ['LC_MESSAGES'] = 'fr_FR.UTF-8' assert Locale('fr', 'FR') == Locale.default('LC_MESSAGES')
def get_currencies(): """ Returns a list of currencies. """ return sorted(Locale.default().currencies.items(), key=operator.itemgetter(1))
def test_can_return_default_locale(self): os.environ['LC_MESSAGES'] = 'fr_FR.UTF-8' self.assertEqual(Locale('fr', 'FR'), Locale.default('LC_MESSAGES'))