Django url更改语言cod

2024-04-29 01:06:12 发布

您现在位置:Python中文网/ 问答频道 /正文

当用户点击Django中的一个按钮时,我试图改变网站的语言。在

我有一个基本项目,网址是:

urlpatterns += i18n_patterns(
    # Ecommerce is the app where I want to change the language
    url(r'^', include("ecommerce.urls")),
)

里面的url电子商务网址是:

^{pr2}$

当我访问上面的url时,我首先转到:http://localhost/en/testing/。在

我想设置一个链接<a href="{% url 'url_testing' %}">Change Language</a>,这样当用户单击它时,它将把语言改为http://localhost/zh-hans/testing/。如何在模板中执行此操作?在

编辑

我现在可以使用以下代码更改语言,但问题是它只能工作一次:

<form id="languageForm" action="/i18n/setlang/" method="post">
    {% csrf_token %}
    <input name="next" type="hidden" value="{% url 'url_testing' %}" /> 
    <input id="newLanguageInput" type="hidden" name="language"/>
</form>

我的链接是:

<li><a onclick="changeLanguage('zh-hans')">简体</a></li>
<li><a onclick="changeLanguage('zh-hant')">繁體</a></li>

函数changeLanguage的定义如下:

function changeLanguage(newLanguage) {
    $('input[name="newLanguageInput"]').val(newLanguage);
    $('#languageForm').submit();
}

当我第一次单击这两个链接中的任何一个时,代码就会工作,我将被重定向到url http://localhost/zh-hans/testing/或{}。问题是我换了一次语言之后,它就不再变了。我的提交有问题吗?在


Tags: 用户name语言localhosthttpurlinput链接
2条回答

当用户单击如下链接(无url翻译、无帖子)时,您可以更改网站的语言:

导航.html(使用bootstrap4和字体awesome)

<li class="nav-item dropdown">
  {% get_current_language as LANGUAGE_CODE %}
  <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown">{{ LANGUAGE_CODE }}</a>
  <div class="dropdown-menu dropdown-menu-right">

    {% get_available_languages as languages %}
    {% for lang_code, lang_name in languages %}

    <a href="{% url 'main:activate_language' lang_code %}" class="dropdown-item">
      {% if lang_code == LANGUAGE_CODE %}
        <i class="fas fa-check-circle"></i>&nbsp;&nbsp;
      {% else %}
        <i class="far fa-circle"></i>&nbsp;&nbsp;
      {% endif %}
      {{ lang_name }} ({{ lang_code }})
    </a>

    {% endfor %}
  </div>
</li>

视图.py

^{pr2}$

网址.py

from django.urls import path
from .views import ActivateLanguageView

app_name = 'main'
urlpatterns = [
    path('language/activate/<language_code>/', ActivateLanguageView.as_view(), name='activate_language'),
]

这是我的工作。在

实际上,它不是一个简单的<a>链接,而是<form>。在

阅读how to ^{} redirect view。此表格将负责更改语言。这很简单。在

请确保您已经设置了一些^{}。在

相关问题 更多 >