[英]Django urlpatterns translated with ugettext lazy - if 404 how to check again if url matches for another language?
讀堆棧溢出很長一段時間,我第一次需要問這里。
該應用程序是雙語的。 我在urlpatterns中定義了urls,用ugettext_lazy進行翻譯。 用戶選擇第一語言和網址工作,如果他將lang改為第二語言,它也可以正常工作。
但是如果用戶選擇第一語言並在第二個lang中輸入url,他會得到404,因為沒有匹配,因為urlpatterns被翻譯成第一個lang。
我怎么能強制Django再次檢查翻譯成第二語言的urlpatterns? 我想顯示一個頁面,如果它存在,就像在第一個lang中輸入url一樣。
我使用LocaleMiddleware。
我想過設置cookie和重定向,但如果沒有找到,在用戶url中會顯示url翻譯成第二個lang,而不是用戶輸入的內容,這可能會產生誤導。
有任何想法嗎?
問候,邁克
編輯:我不使用那些i18n模式。 我有點像:
url(_(r'^ contact /'),include('contact.urls')),
並且希望Django能夠顯示適當的視圖而不管選擇的語言。 如果用戶輸入/ contact /或翻譯成第二語言/ 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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.