Drupal 8 和 Twig 获得语言

Drupal 8 and Twig get language

我想获取在节点中的 drupal 8 站点上选择的实际语言,并在例如语言是"en"放一些内容。

这是我已经尝试过的方法:

{% global language %}
{% set lang_name = language %}
{{ lang_name }}

{{ app.session.locale }}
{{ app.request.locale }}

但它不起作用。 有人可以提示我如何通过 drupal 8 上的树枝获取语言吗?或者这根本不可能吗?

我认为你需要在 php 中设置 $language 在 twig 中使用 {% global language %} 之前:

$language = \Drupal::languageManager()->getCurrentLanguage()->getId();

在您的 XXX.theme 文件中:

function XXX_preprocess_node(&$variables) {
  $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
  $variables['language'] = $language;
}

在您的节点模板中:

{{ language }}

对于语言 ID,您可以使用:

{{ language.getId() }}

对于语言名称:

{{ language.getName() }}

例如:

{% if language.getId() == 'sr' %}
   <p>Zdravo svete!</p>
{% elseif language.getId() == 'hu' %}
   <p>Helló világ!</p>
{% else %}
   <p>Hello world!</p>
{% endif %}

对于分类术语,您可以这样做:

{{ term.langcode.langcode }}