django urlpatterns用ugetText懒惰翻译 - 如果404如何再次检查URL是否匹配另一种语言



阅读堆栈溢出很长时间,我第一次需要在这里问STH。

该应用是双语的。我将URLPATTERNS中的URL定义为使用ugetText_lazy翻译。用户选择单语言,而URL可以正常工作,如果将Lang更改为第二种语言,它也可以很好地工作。

但是,如果用户选择第一语言并进入第二个lang,则获得404,因为没有匹配,因为urlpatterns被翻译为第一个lang。

我如何强迫django再次检查urlpatterns转换为第二语言?如果存在,我想显示一个页面,就好像将在第一个lang中输入URL。

我使用localemiddleware。

我考虑过设置cookie和重定向,但是如果找不到的话,将在用户URL中显示URL转换为第二个lang,而不是用户输入的内容,这可能会误导。

有什么想法?

问候,迈克

编辑:我不使用这些I18N模式。我有STH喜欢:

url(_(r'^contact/'),包括('Contact.urls')),

并希望django不论选择的语言如何显示适当的视图。如果用户类型/联系/或转换为第二语言/kontakt/应显示视图。

我真的不喜欢翻译URL的想法,但请尝试这样的事情:

en/django.po:

msgid "^contact/"
msgstr "^en/contact/"
msgid "^wrong_lang/(?P<url_part>.+)"
msgstr "^ru/(?P<url_part>.+)"

urls.py:

url(_(r'^contact/'), include('contact.urls')), # matches "en/contact/" URL
url(_(r'^wrong_lang/(?P<url_part>.+)', redirect_to_current_lang), # matches "ru/..." URLs

views.py:

def redirect_to_current_lang(request, url_part):
   return HttpResponseRedirect(_('^%s' % url_part))

相关内容

最新更新