Files
deb-python-django-babel/babeldjango/middleware.py

45 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
#
# Copyright (C) 2007 Edgewall Software
# All rights reserved.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at http://babel.edgewall.org/wiki/License.
#
# This software consists of voluntary contributions made by many
# individuals. For the exact contribution history, see the revision
# history and logs, available at http://babel.edgewall.org/log/.
from babel import Locale, UnknownLocaleError
try:
from threading import local
except ImportError:
from django.utils._threading_local import local
__all__ = ['get_current_locale', 'LocaleMiddleware']
_thread_locals = local()
def get_current_locale():
"""Get current locale data outside views.
See http://babel.edgewall.org/wiki/ApiDocs/babel.core for Locale
objects documentation
"""
return getattr(_thread_locals, 'locale', None)
class LocaleMiddleware(object):
"""Simple Django middleware that makes available a Babel `Locale` object
via the `request.locale` attribute.
"""
def process_request(self, request):
try:
locale = Locale.parse(request.LANGUAGE_CODE, sep='-')
except (ValueError, UnknownLocaleError):
pass
else:
_thread_locals.locale = request.locale = locale