I have file locale/es/LC_MESSAGES/django.mo (and .po), ran makemessages and compilemessages. Definitely all messages are translated
in settings.py have:
USE_I18N = True
LANGUAGE_CODE = 'es'
Still django stubbornly takes strings from the english .po file… Why can that be?
There must be some gotcha… Thanks.
EDIT this appears to be the case only when LocaleMiddleware is active.
Best Answer
According to the django docs
http://docs.djangoproject.com/en/dev/topics/i18n/#id2
If you only need one language, 'es', you can disable the middleware. If you really need LocaleMiddleware active, try this recipe to override the headers from the client's browser http://www.djangosnippets.org/snippets/218/: