如何使用 apostrophe-workflow 在 nunjucks 文件中获取 apostrophecms 中的当前语言环境
How to get the current locale in apostrophecms in a nunjucks file using apostrophe-workflow
我刚开始使用 apostrophcms,apostrophe-workflow 很抱歉,如果这看起来很明显。
我目前正在尝试在 header 中添加语言下拉菜单。我以所有区域设置都出现在下拉列表中的方式工作,但我尝试做的是显示当前语言,而其他语言隐藏在下拉列表中,代码可能更明确:
<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">
<pre>{{ apos.i18n | dump}}</pre>
{# I WANT THE CURRENT LANGUAGE HERE but I don't know where to find it #}
</a>
<div class="dropdown-menu" aria-labelledby="lang-dropdown">
{% for localization in apos
.workflow
.localizations() %}
{% if localization.name != CURRENT_LOCALE_I_CANT_FIND %}
<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>
希望大家多多帮助,先谢谢了。
你可以通过 apos.workflow.lang()
获取活动语言 这在与 HTML lang
属性相关的 README 中提到,但它可用于设置活动项目切换器也是如此。
我最近在一个项目中使用了这个。与您的类似,ul
使用 CSS 和 JS 变成了下拉选择器,button
将其打开,但也显示活动语言。第一个循环和条件用于获取活动语言的可读标签,因为 lang()
returns language/locale 代码。
{% set lang = '' %}
{% set activeLocale = apos.workflow.lang() %}
{% for l in apos.workflow.localizations() %}
{% if l.workflowLocale === activeLocale %}
{% set lang = l.label %}
{% endif %}
{% endfor %}
<button type="button" data-role="lang-toggle">
<span>{{ lang }}</span>
</button>
<ul data-role="lang-list">
{% for locale in apos.workflow.localizations() %}
{% if locale.workflowLocale !== activeLocale %}
<li>
<a href="{{ locale._url | build({ workflowLocale: locale.workflowLocale }) }}" >{{ locale.label }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
我刚开始使用 apostrophcms,apostrophe-workflow 很抱歉,如果这看起来很明显。
我目前正在尝试在 header 中添加语言下拉菜单。我以所有区域设置都出现在下拉列表中的方式工作,但我尝试做的是显示当前语言,而其他语言隐藏在下拉列表中,代码可能更明确:
<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">
<pre>{{ apos.i18n | dump}}</pre>
{# I WANT THE CURRENT LANGUAGE HERE but I don't know where to find it #}
</a>
<div class="dropdown-menu" aria-labelledby="lang-dropdown">
{% for localization in apos
.workflow
.localizations() %}
{% if localization.name != CURRENT_LOCALE_I_CANT_FIND %}
<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>
希望大家多多帮助,先谢谢了。
你可以通过 apos.workflow.lang()
获取活动语言 这在与 HTML lang
属性相关的 README 中提到,但它可用于设置活动项目切换器也是如此。
我最近在一个项目中使用了这个。与您的类似,ul
使用 CSS 和 JS 变成了下拉选择器,button
将其打开,但也显示活动语言。第一个循环和条件用于获取活动语言的可读标签,因为 lang()
returns language/locale 代码。
{% set lang = '' %}
{% set activeLocale = apos.workflow.lang() %}
{% for l in apos.workflow.localizations() %}
{% if l.workflowLocale === activeLocale %}
{% set lang = l.label %}
{% endif %}
{% endfor %}
<button type="button" data-role="lang-toggle">
<span>{{ lang }}</span>
</button>
<ul data-role="lang-list">
{% for locale in apos.workflow.localizations() %}
{% if locale.workflowLocale !== activeLocale %}
<li>
<a href="{{ locale._url | build({ workflowLocale: locale.workflowLocale }) }}" >{{ locale.label }}</a>
</li>
{% endif %}
{% endfor %}
</ul>