12 September 2007
This might have gone lost, either due to lack of interest, or due to myself having been flagged by some magical and over-ambitious “troll” filter on the django-developers mailing list. Anyway…
I recently released a project that provides integration between Django and Babel. This improves the support for internationalization and localization in Django quite a bit, in my humble opinion. The project is based on work by Ramiro Morales and Massimo Scamarcia, so kudos to them.
First, it provides a template tag library for using the Babel date & number formatting in Django templates. If you ever wondered how to get localized number formatting to work in your Django application, this is for you. Or more comprehensive localized date/time formatting. Or rendering decimals with currency symbols (as in, you know, prices). Etc.
Second, you can use the Babel message extraction framework with Django projects, including both Python code (obviously) and Django templates. Considering that the builtin message extraction for Django templates only works when you store your templates inside your projects' package directory, and only when the template files have the
.html extension, using the Babel extraction routines can be quite liberating (I've had to use the
Note that this does not replace the tried and tested
gettext infrastructure. Somehow people tend to get that impression, probably needs to be clarified somewhere. What Babel does is build on top of
gettext for message catalogs. The only part that it actually does replace is some of the most common command line tools, such as
xgettext for message extraction or
msgmerge for updating catalogs.
There's also a piece of middleware that adds the Babel
Locale object to the request object. And for the future, I'd want to add
django.newforms fields that parse and format date/time and number data in a locale-sensitive way. As soon as Babel properly supports date/number parsing, that is.