The “local flavor” add-ons¶
Historically, Django has shipped with
assorted pieces of code that are useful for particular countries or cultures.
This code is now distributed separately from Django, for easier maintenance
and to trim the size of Django’s codebase.
The new localflavor package is named
django-localflavor, with a main
localflavor and many subpackages using an
ISO 3166 country code. For example:
localflavor.us is the
localflavor package for the U.S.A.
Most of these
localflavor add-ons are country-specific fields for the
forms framework – for example, a
USStateField that knows how to validate U.S. state abbreviations and a
FISocialSecurityNumber that knows how to validate Finnish social security
To use one of these localized components, just import the relevant subpackage. For example, here’s how you can create a form with a field representing a French telephone number:
from django import forms from localflavor.fr.forms import FRPhoneNumberField class MyForm(forms.Form): my_french_phone_no = FRPhoneNumberField()
For documentation on a given country’s localflavor helpers, see its README file.
See the official documentation for more information:
Internationalization of localflavors¶
To activate translations for the
localflavor application, you must include
the application’s name in the
INSTALLED_APPS setting, so the
internationalization system can find the catalog, as explained in
How Django discovers translations.
How to migrate¶
If you’ve used the old
django.contrib.localflavor package or one of the
django-localflavor-* releases, follow these two easy steps to
update your code:
Install the third-party
django-localflavorpackage from PyPI.
Change your app’s import statements to reference the new package.
For example, change this:
from django.contrib.localflavor.fr.forms import FRPhoneNumberField
from localflavor.fr.forms import FRPhoneNumberField
The code in the new package is the same (it was copied directly from Django), so you don’t have to worry about backwards compatibility in terms of functionality. Only the imports have changed.
In Django 1.5, importing from
django.contrib.localflavor will result in a
DeprecationWarning. This means your code will still work, but you should
change it as soon as possible.
In Django 1.6, importing from
django.contrib.localflavor will no longer