python - Django url更改语言代码

标签 python django django-i18n

我试图在用户单击 Django 中的按钮时更改网站的语言。

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

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

Ecommerce.urls 中的 url 是:

urlpatterns = [
    url(r'^testing/$', views.test, name='url_testing'),
    ... other urls
]

当我访问上面的 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();
}

当我第一次点击 2 个链接中的任何一个时,代码有效,我将被重定向到 url http://localhost/zh-hans/testing/http://localhost/zh-hant/testing/ .问题是我改了一次语言之后,就不再改了。我的提交有问题吗?

最佳答案

其实这不会是一个简单的<a>链接但是一个<form> .

阅读 how to set_language redirect view .此表格将负责更改语言。这很容易。

确保你设置了一些 LANGUAGES 首先。

关于python - Django url更改语言代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42745198/

相关文章:

python - Flask OIDC 用户登录为 true 但 token 为 None

python - Django 时间字段格式

django - AM/PM 在 django HTML 模板中不起作用

django - Django 如何决定将 makemessages 的输出放在哪里?

python - 如何在JS代码中正确使用gettext?

python - 更新 python 中的部分表面或透明表面

python - 使用 Ruby popen3 运行 Python 脚本而不显示终端

django - django 管理中的错误语言

mysql - 无法将外键的值更改为对象Django的外键

django - 如何使用 Django 查询将两个 ManyToMany 字段相交?