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

 

 

関連タグ: 

この記事をシェアする:

Author
この記事を書いた人:阿部 正幸

KDDIウェブコミュニケーションズ
クラウドホスティング事業本部 エバンジェリスト

CPIスタッフブログ編集長。ACE01,SmartReleaseをリリース後、現職の「エバンジェリスト」として、web制作に関する様々なイベントに登場

Line@登録よろしくお願いします

Web制作に関する情報や、CPIノベルティのプレゼント、サーバーの無償提供などを定期的に発信しています。
ぜひ、登録ください。