更改django-admin-tools的区域设置

Dra*_*ail 6 python django internationalization django-admin django-admin-tools

在我的settings.py档案中,我有:

LANGUAGE_CODE = 'ru-RU'
Run Code Online (Sandbox Code Playgroud)

另外,我已经安装并使用了django-admin-tools.但管理语言仍然是英语.我做错了什么?

PS.

$ cat settings.py | grep USE | grep -v USER
USE_I18N = True
USE_L10N = True
USE_TZ = True
Run Code Online (Sandbox Code Playgroud)

Bur*_*lid 8

您需要专门为管理员应用程序设置语言.由于django不提供语言下拉作为默认登录的一部分,因此您有以下几种选择:

  1. 使用超级用户/员工凭据和正确的语言登录到正常(非管理员视图),然后切换到管理URL.

  2. 更新管理模板并添加语言下拉列表请参阅此代码段.

  3. 创建一些自定义中间件来设置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
    
    Run Code Online (Sandbox Code Playgroud)

    把它添加到你的 MIDDLEWARE_CLASSES

    MIDDLEWARE_CLASSES = {
        # ...
        'foo.bar.AdminLocaleMiddleware',
        # ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

    为管理员设置所需的语言settings.py:

    ADMIN_LANGUAGE_CODE = 'ru-RU'
    
    Run Code Online (Sandbox Code Playgroud)