【问题标题】:Issue with translation in Django + MezzanineDjango + Mezzanine 中的翻译问题
【发布时间】:2015-12-04 16:20:50
【问题描述】:

我已遵循here 描述的方法。

在索引页面上,我有一个表单,可以让我在网站语言之间切换。我已经添加了“下一个”帖子属性启用重定向到页面的正确语言版本。

<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 定义的语言。同时如果用户点击Mezzanine Page的菜单项则一切正常。

第二个问题是当用户点击 Mezzanine home 链接时。在这种情况下,用户也会被重定向到 LANGUAGE_CODE 定义的网站版本。

问题是为什么我在会话中设置 LANGUAGE_SESSION_KEY 后它对以后以正确语言呈现页面没有任何影响?

【问题讨论】:

    标签: python django mezzanine


    【解决方案1】:

    我已经通过以下方式解决了我的问题。首先,改变形式:

    <form action="{% url 'set_language' %}" method="post">
    {% csrf_token %}
    <input name="language" type="hidden" value="{{ language.code }}" />
    {% if request.path|slice:"4:"|length > 0 %}
        <input name="next" type="hidden" value="/{{ language.code }}/{{ request.path|slice:"4:" }}" />
    {% else %}
        <input name="next" type="hidden" value="/" />
    {% endif %}
    <input type="submit" value="{{ language.code }}"
    class="btn-link{% if language.code == LANGUAGE_CODE %} current{% endif %}" />
    </form>
    

    如果用户从主页选择语言,那么下一个值将是“/”,如果用户在其他页面上更改语言,那么它会更改语言前缀。

    我也不再使用 Mezzanine 中的链接,因为它们没有根据当前语言正确解析。我创建了普通的夹层页面,而不是链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 2021-06-26
      • 2012-10-27
      相关资源
      最近更新 更多