You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wagtail的{% slugurl 'page' %}标签是否兼容Wagtail-localize?

问题:Wagtail Localize环境下slugurl标签始终生成默认语言链接

我使用Django、Wagtail和Wagtail Localize搭建网站,当访问https://exemple.com/fr/时,模板中的slugurl标签生成的链接始终为href="/en/about/"。

已完成以下配置:

  • 按要求配置了urls.py:
    urlpatterns = urlpatterns + i18n_patterns(
        path("search/", search_views.search, name="search"),
        path("", include(wagtail_urls)),
    )
    
  • 添加了必要的多语言中间件及LANGUAGES等设置,页面可正常翻译并通过对应语言URL访问
  • LANGUAGE_CODE检测正常(如{% if LANGUAGE_CODE == "fr" %}可正确执行)

但模板中以下代码始终输出英文路径:

<a href="{% slugurl 'about' %}" class="nav-links">about</a>

这导致导航时每次都需要重新选择语言,想确认slugurl标签是否兼容Wagtail-localize?


解答

slugurl标签本身不会自动适配Wagtail Localize的多语言页面,它默认只会匹配网站默认语言版本的页面slug。要生成当前请求语言对应的页面链接,有两种解决方式:

  1. 使用Wagtail Localize提供的localized_slugurl标签
    先在模板顶部加载wagtail_localize标签库,然后替换原有标签:

    {% load wagtail_localize %}
    <a href="{% localized_slugurl 'about' %}" class="nav-links">about</a>
    

    该标签会自动识别当前请求的语言,生成对应翻译版本页面的URL。

  2. 给slugurl指定语言参数
    如果不想更换标签,可以手动传入当前语言的LANGUAGE_CODE作为参数:

    <a href="{% slugurl 'about' LANGUAGE_CODE %}" class="nav-links">about</a>
    

    这会强制slugurl匹配指定语言版本的页面。

另外需要确认:每个语言版本的页面都已正确创建,且页面slug与标签中传入的参数匹配(比如法语页面的slug是否为about),否则标签会因找不到对应页面而 fallback 到默认语言路径。


内容的提问来源于stack exchange,提问作者AnxiousDeadlift

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 16:29:56