Blog entries tagged with "babel"

Babel and Django integration updates

Posted Aug. 20, 2007, 6:50 p.m.

The middleware that I’ve posted on djangosnippets and on this blog entry now is included into Babel’s contrib addons. Ramiro Morales has also written some very useful template filters for dates, decimals and currencies.

Have a look at BabelDjango for more details.

Add to: Add to deliciousAdd to DiggAdd to FurlAdd to redditAdd to YahooAdd to NewsvineAdd to Spurl

Tags: django babel i18n localization l10n


Babel integration in django

Posted July 16, 2007, 2:50 a.m.

Few months ago I looked for i18n data collections and I found WeBDA. It’s used by Satchmo and it could be easily integrated with other django projects.

I looked also at Babel and I wrote a simple middleware class that allows to have locale data collections available accessing the LOCALE attribute of request objects:

import babel

try:
    from threading import local
except ImportError:
    from django.utils._threading_local import local

_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 BabelMiddleware(object):
    “””
    This is a very simple middleware that uses
    babel (http://babel.edgewall.org) for accessing locale
    data in request objects through request.LOCALE attribute
    “””
    def process_request(self, request):
        try:
            locale = babel.Locale.parse(request.LANGUAGE_CODE, sep=’-‘)
        except (ValueError, babel.UnknownLocaleError):
            pass
        else:
            _thread_locals.locale = locale
            setattr(request, ‘LOCALE’, locale)

The get_current_locale function allows also to access locale data outside application views. This middleware configuration must be placed after the ‘django.middleware.locale.LocaleMiddleware’ MIDDLEWARE_CLASSES setting.

MIDDLEWARE_CLASSES = (
    … cut …
    ‘django.middleware.locale.LocaleMiddleware’,
    ‘middleware.locale.BabelMiddleware’,
    … cut …
)

Add to: Add to deliciousAdd to DiggAdd to FurlAdd to redditAdd to YahooAdd to NewsvineAdd to Spurl

Tags: i18n l10n django babel internationalization localization

0 comments

Archive

Meta

Python

A Django site.

Hosting by Webfaction

Creative Commons License

View Massimo Scamarcia's profile on LinkedIn

Ads