Change locale for django-admin-tools

django, django-admin, django-admin-tools, internationalization, python

Solution

You need to set the language specifically for the admin app. Since django does not provide a language drop down as part of the default login, you have a few options:

Login to your normal (non admin view), with superuser/staff credentials and the correct language, then shift over to the admin URL.

Update the admin templates and add a language dropdown see this snippet.

Create some custom middleware to set the language for admin:

from django.conf import settings
from django.utils import translation

class AdminLocaleMiddleware:

    def process_request(self, request):
        if request.path.startswith('/admin'):
            request.LANG = getattr(settings, 'ADMIN_LANGUAGE_CODE',
                                   settings.LANGUAGE_CODE)
            translation.activate(request.LANG)
            request.LANGUAGE_CODE = request.LANG

Add it to your `MIDDLEWARE_CLASSES`

MIDDLEWARE_CLASSES = {
    # ...
    'foo.bar.AdminLocaleMiddleware',
    # ...
}

Set the language you want for the admin in `settings.py`:

ADMIN_LANGUAGE_CODE = 'ru-RU'

Problem

In my `settings.py` file I have: ``` LANGUAGE_CODE = 'ru-RU' ``` also, I have installed and working django-admin-tools. But admin language still english. What I'm doing wrong? PS. ``` $ cat settings.py | grep USE | grep -v USER USE_I18N = True USE_L10N = True USE_TZ = True ```

Original source