簡體   English   中英

Django urlpatterns用ugettext lazy翻譯 - 如果404如何再次檢查url是否匹配另一種語言?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM