不能用djang改变语言

2024-04-29 14:18:39 发布

您现在位置:Python中文网/ 问答频道 /正文

此方法应使用语言代码设置语言:

def set_language(request):
    if request.method == 'POST':
        response = HttpResponseRedirect(reverse('root'))
        lang_code = request.POST.get('language', None)
        if lang_code and check_for_language(lang_code):
            if hasattr(request, 'session'):
                request.session['django_language'] = lang_code
            else:
                response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
        return response
    return render(request, 'profile/change_language.html')

下面的表单是在html中更改的_语言.html在

^{pr2}$

在设置.py我有以下相关设置:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.security.SecurityMiddleware',
)


LANGUAGE_CODE = 'en'
TIME_ZONE = 'CET'
USE_I18N = True
USE_L10N = True
USE_TZ = True

# Languages available
LANGUAGES = (
    ('de', 'German'),
    ('en', 'English'),
)

当我启动网站时,我的语言是德语(我在德国)。当我转到“更改语言”页面并尝试将语言从德语设置为英语时,它不会更改任何内容。有什么事我可能忘了吗?在


Tags: django语言truelangifuseresponserequest
1条回答
网友
1楼 · 发布于 2024-04-29 14:18:39

你需要先激活语言。你只需要:

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

def set_language(request):
    language = request.POST.get('language', settings.LANGUAGE_CODE)
    translation.activate(language)
    request.session[translation.LANGUAGE_SESSION_KEY] = language
    return redirect('root')

相关问题 更多 >