According to the django docs
http://docs.djangoproject.com/en/dev/topics/i18n/#id2
LocaleMiddleware tries to determine
the user's language preference by
following this algorithm:
* First, it looks for a django_language key in the current user's session.
* Failing that, it looks for a cookie.
[...]
*Failing that, it looks at the Accept-Language HTTP header. This header is sent by your browser and tells the server which language(s) you prefer, in order by priority. Django > tries each language in the header until it finds one with available translations.
* Failing that, it uses the global LANGUAGE_CODE setting.
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/:
enter code here
class ForceDefaultLanguageMiddleware(object):
"""
Ignore Accept-Language HTTP headers
This will force the I18N machinery to always choose settings.LANGUAGE_CODE
as the default initial language, unless another one is set via sessions or cookies
Should be installed *before* any middleware that checks request.META['HTTP_ACCEPT_LANGUAGE'],
namely django.middleware.locale.LocaleMiddleware
"""
def process_request(self, request):
if request.META.has_key('HTTP_ACCEPT_LANGUAGE'):
del request.META['HTTP_ACCEPT_LANGUAGE']