阅读堆栈溢出很长时间,我第一次需要在这里问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))