【问题标题】:Django translation redirect back to the current pageDjango 翻译重定向回当前页面
【发布时间】:2020-12-14 15:30:35
【问题描述】:

如何重定向回当前页面。 在我的网站中,我正在实现两种语言,即“en”和“fa” 现在它正在工作,但不会像 docs.djangoproject.com 这样重定向到当前页面,而是将我重定向到主页 'localhost:8000/fa/' 或 /en

代码如下: 对于模板hearers.py

<li class="dropdown default-dropdown">
    <form action="{% url 'selectlanguage' %}" method="POST">{% csrf_token %}
        <input name="next" type="hidden" value="{{ redirect_to }}">
        <select name="language">
            {% get_current_language as LANGUAGE_CODE %}
            {% get_available_languages as LANGUAGES %}
            {% get_language_info_list for LANGUAGES as languages %}
            {% for language in languages %}
                <option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected{% endif %}>
                    {{ language.name_local }} ({{ language.code }})
                </option>
            {% endfor %}
        </select>
        <input type="submit" value="{% trans 'Go' %}">
    </form>
</li>

urls.py 的代码是:

    path('selectlanguage', views.selectlanguage, name='selectlanguage'),

views.py 是:


def selectlanguage(request):
    if request.method == 'POST':  # check post
        cur_language = translation.get_language()
        lasturl= request.META.get('HTTP_REFERER')
        lang = request.POST['language']
        translation.activate(lang)
        request.session[translation.LANGUAGE_SESSION_KEY]=lang
        #return HttpResponse(lang)
        return HttpResponseRedirect(lang)

【问题讨论】:

  • 你有什么理由不能使用内置的语言网址吗?
  • 感谢您的评论@MichaelLindsay。实际上这是我第一次从事翻译工作,有什么技巧可以实现我想要的这样一个系统吗?提前致谢。

标签: python django localization internationalization translation


【解决方案1】:

您是否将网址包装在 i18n_patterns 中?

from django.conf.urls.i18n import i18n_patterns

urlpatterns += i18n_patterns(
    path('about/', about_views.main, name='about'),
    path('news/', include(news_patterns, namespace='news')),
)

【讨论】:

  • 感谢您的回答 Michael Lindsay,是的,我将网址包装在 i18n_patterns 中。实际上一切正常,我可以更改语言,但它不会将我重定向回当前页面。
  • 啊,我明白了,我最终使用 javascript 来操作 url。它不是 django,但它避免了 get + 重定向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
相关资源
最近更新 更多