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

如何在ApostropheCMS的Nunjucks文件中通过apostrophe-workflow获取当前区域设置

解决ApostropheCMS workflow语言下拉菜单的当前语言显示问题

别担心,刚开始接触ApostropheCMS和workflow模块的时候有疑问太正常啦!我来帮你搞定这个语言下拉菜单的问题~

你需要的当前语言信息其实可以直接从apos.workflow提供的变量里获取,修改后的代码如下:

<ul class="navbar-nav nav-flex-icons">
  <a class="nav-link dropdown-item" href="#" id="lang-dropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    <span class="flag-icon flag-icon-{{ apos.workflow.currentLocalization.workflowLocale.split('-')[1] | lower }}"></span> {{ apos.workflow.currentLocalization.label }}
  </a>
  <div class="dropdown-menu" aria-labelledby="lang-dropdown">
    {% for localization in apos.workflow.localizations() %}
      {% if localization.workflowLocale != apos.workflow.currentLocalization.workflowLocale %}
        <a class="dropdown-item" href="{{ localization._url | build({ workflowLocale: localization.workflowLocale }) }}">
          <span class="flag-icon flag-icon-{{localization.workflowLocale.split('-')[1] | lower}}"></span> {{ localization.label }}
        </a>
      {% endif %}
    {% endfor %}
  </div>
</ul>

关键说明:

  1. 当前语言按钮显示:

    • apos.workflow.currentLocalization是workflow模块在模板中自动提供的变量,它包含当前页面的本地化完整信息,比如label(友好的语言名称,比如"English"或"Français")和workflowLocale(语言代码,比如en-US)。
    • 用它来渲染按钮上的国旗和语言名称,和下拉选项的样式保持一致,体验更统一。
  2. 排除当前语言的下拉项:

    • 在循环判断里,直接对比每个本地化项的workflowLocale和当前的apos.workflow.currentLocalization.workflowLocale,这样就能确保下拉列表里只显示非当前语言的选项。

如果你的项目里currentLocalization有特殊情况无法使用,也可以用apos.i18n.locale来获取当前语言代码(比如en-US),不过前者更贴合workflow的本地化数据结构,推荐优先使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:28:14