This is something we're using over at Curse to keep things clean and simple for our users.
- We needed a url for any language code (which the domain provides) vs a cookie
- We needed a to only store 2 letter codes in the db for each language (thus the key doesn't always match the code)
This consists of two major modifications:
- LANGUAGES in settings.py is a completely different format and would need changed based on your setup
- the locale middleware has a couple absolute instances of where to point a user by default.