我遵循here描述的方法。Django +夾層翻譯問題
在索引頁上我有一個表格,可以讓我切換網站語言。我已將「下一次」發佈屬性啓用重定向添加到頁面的正確語言版本。
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
<input name="language" type="hidden" value="{{ language.code }}" />
<input name="next" type="hidden" value="/{{ language.code }}/{{ request.path|slice:"4:" }}" />
<input type="submit" value="{{ language.code }}"
class="btn-link{% if language.code == LANGUAGE_CODE %} current{% endif %}" /></form>
我有我自己的set_language視圖,如第一個鏈接中所述。以下是在會話中存儲LANGUAGE_SESSION_KEY的視圖的最後部分。
if language and check_for_language(language):
if hasattr(request, 'session'):
request.session[LANGUAGE_SESSION_KEY] = language
else:
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language)
return response
我的urls.py的樣子:
urlpatterns = i18n_patterns("",
("^admin/", include(admin.site.urls)),
("^", include("mezzanine.urls")),
url("^$", "mezzanine.pages.views.page", {"slug": "/"}, name="home"),
)
一般的做法是工作的罰款。當用戶在索引頁面上時,他可以更改語言並將其重定向到正確的頁面。
第一個問題是與夾層鏈接。如果用戶點擊鏈接,他將被重定向到settings.py中由LANGUAGE_CODE定義的語言。同時,如果用戶單擊夾層頁面的菜單項,則一切正常。
第二個問題是當用戶單擊夾層主頁鏈接。在這種情況下,用戶也被重定向到由LANGUAGE_CODE定義的網站版本。
問題是,爲什麼在會話中設置LANGUAGE_SESSION_KEY之後,它對使用正確語言的未來頁面呈現沒有任何影響?