Drupal8 Twigテンプレートで言語コードを取得する

Drupal8から、Twigが採用されたことにより、テンプレート内でPHPが使えなくなりました。
D6、D7では下記のように言語コードを取得できました。

D7

<?php
global $language;
echo $language->language;

 

D8では下記コードで現ページの言語が取得できます。

\Drupal::languageManager()->getCurrentLanguage()->getId();

 

取得した言語コードを、Twigに渡す方法です。
まずはカスタムモジュールを作成するか、「/themes/THEME_NAME/THEMENAME.theme」を作成します。
作成後下記コードを追加します。

THEMENAME.theme

// block.html.twigに渡す
function THEMENAME_preprocess_block(&$variables) {
    $thislanguage = \Drupal::languageManager()->getCurrentLanguage()->getId();
    $variables['thislanguage'] = $thislanguage;
}

// page.html.twigに渡す
function THEMENAME_preprocess_page(&$variables) {
    $thislanguage = \Drupal::languageManager()->getCurrentLanguage()->getId();
    $variables['thislanguage'] = $thislanguage;
}

hook_preprocess_page() を使うと、「page.html.twig」に、指定した変数を受け取ることができます。

 

page.html.twig

{{ thislanguage }}

{# 出力結果: ja #}

 

 

関連タグ:

この記事をシェアする

次へ
前へ