2011-03-18 40 views
1

我使用Django的身份验证系统实现了用户登录/注册,但碰到了墙壁,希望有人能帮助我。Django:在settings.py中的get_language

本网站使用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' 

由于admin需要用英语。

任何人都可以帮忙吗?

谢谢!

回答

2

对于我自己的那种项目,我使用自己的login_redirect修饰器,而不是Django提供的修饰器,它总是将我发送到settings.py中定义的静态url。我的国际化装饰看起来像这样:

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

我想它不会以你试图解决它的方式工作。我将设置在您的登录重定向上调用的视图,并在此视图内确定语言设置等,然后再次重定向到正确的视图+正确的区域设置!

+0

我想已经没有成功:(我得再看看,看看我能解决它的一些其他的方式感谢 – 2011-03-19 17:50:02

+0

什么是你的问题 – 2011-03-19 19:02:59

1

翻译我使用:http://code.google.com/p/django-transmeta/它适用于3种语言和14位置的完美选择。检查出来,可能会引导你到某个地方。

+0

我用。?它也是艾哈迈德,谢谢。:) – 2011-05-31 14:52:19