Django: get_language в settings.py - PullRequest
1 голос
/ 18 марта 2011

Я ввел логин / регистрацию пользователя, используя систему аутентификации Django, но врезался в стену, и, надеюсь, кто-нибудь мне поможет.

Этот сайт использует django-localeurl и в настоящее время работает на 3 языках.

У меня проблемы с передачей логина на нужный язык. Я хочу передать текущий язык в переменную LOGIN_REDIRECT_URL (в settings.py), чтобы вместо:

LOGIN_REDIRECT_URL = '/accounts/my_account/'

У меня было бы что-то вроде:

LOGIN_REDIRECT_URL = '/%s/accounts/my_account/' % request.LANGUAGE_CODE

, что, конечно, не работает, потому что я не передаю запросы в settings.py.

Есть ли действительно очень простой и умный способ сделать это? По умолчанию всегда используется английский, и это большая проблема. Если пользователь просматривает сайт на испанском языке, после входа в систему он перенаправляется на английский: /

У меня есть языки, настроенные так:

gettext = lambda s: s
LANGUAGES = (
    ('pt', gettext('Portuguese')),
    ('es', gettext('Spanish')),
    ('en', gettext('English')),
)

и

LANGUAGE_CODE = 'en'

потому что администратор должен быть на английском языке.

Может кто-нибудь помочь?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 29 ноября 2011

Для своих собственных проектов такого рода я использую свой собственный декоратор login_redirect вместо того, который предоставлен Django, который всегда отправлял меня на статический URL, определенный в settings.py.Мой декоратор i18n выглядит так:

def i18n_login_required(function):
    def wrap(request, *args, **kwargs):
        if not request.user.is_authenticated():
            return HttpResponseRedirect('/%s/accounts/login/?next=%s' % (get_language(), request.GET.get('next', urlquote(request.get_full_path()))))
        return function(request, *args, **kwargs)
    wrap.__doc__=function.__doc__
    wrap.__name__=function.__name__
    return wrap
1 голос
/ 18 мая 2011

для перевода я использую: http://code.google.com/p/django-transmeta/, и он отлично работает для меня с 3 языками и 14 локациями. проверить это, может привести вас куда-то.

1 голос
/ 18 марта 2011

Полагаю, это не сработает так, как вы пытаетесь ее решить. Я бы настроил представление, которое вызывается при вашем перенаправлении входа в систему, и в этом представлении определите настройки языка и т. Д. И снова перенаправьте на правильный просмотр + правильные настройки локали!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...