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

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

「Webサイトからお問い合わせが来ない…」とお悩みの方必見!
当サイトのノウハウを詰め込んだ『Web集客の無料ガイド』をご提供

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 #}

 

 

関連タグ:

CPIの最新情報をTwitterでチェックできます!
@cpiadjp
次へ
前へ