我正在尝试实现一个语言切换器,为此我使用了 Django 推荐的表单:
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
{% get_current_language as LANGUAGE_CODE %}
<input name="next" type="hidden" value="{{ redirect_to }}">
<input name="language" type="hidden" value="{% if LANGUAGE_CODE == 'en' %}es{% else %}en{% endif %}">
</form>
我的 urls.py 设置如下:
urlpatterns = [
# Wagtail urls
re_path(r'^cms/', include(wagtailadmin_urls)),
re_path(r'^documents/', include(wagtaildocs_urls)),
# Django urls
path('admin/', admin.site.urls),
path('i18n/', include('django.conf.urls.i18n')),
]
urlpatterns += i18n_patterns(
path(r'', include(wagtail_urls))
)
当我单击更改我的语言时,我会正确转发到/en/slug
或es/slug
,具体取决于我选择的语言。但是,实际的 slug 值没有被转换。因为我有西班牙语页面的西班牙语 slug,所以当我切换语言时,我会得到 404,因为我被定向到与西班牙语言环境前缀 ( es
) 配对的英语 slug 值。
我也尝试使用slugurl_trans
模板标签,但这似乎不起作用(可能是因为我没有在i18n_patterns
调用中明确定义任何 URL?)。
任何有关这方面的指导都会非常有帮助,因为我在这方面花了太多时间!