web-dev-qa-db-ja.com

Drupal 8で言語プレフィックスを取得する方法

Drupal 8: https://www.drupal.org/project/taxonomy_facets に移植するカスタムモジュールの内部を構築しています

リンクの前に追加できるように、現在の言語プレフィックスを取得する必要があります。 I Drupal 7それは次のように単純でした:

global $language;
$prefix = $language->prefix;
$mylink = $prefix . '/example/something';

Drupal 8でこれをどのように行うことができますか?

編集:特に私の問題は、Home >> Administration >> Configuration >> Regional and language >> Languages >> Detection and selectionのデフォルト言語の言語プレフィックスをNONEに設定していることです。 (admin/config/regional/language/detection/url)

デフォルトの言語の場合、コードで実際のプレフィックスを返すようにします。 e。 NONEではなくen(デフォルト言語の英語のコード)。

4
Darko Kantic

Drupal 8では、 languageManager クラスを使用して言語コードを取得します。

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

編集:現在の言語がデフォルト言語である場合にNONEを返したい場合、おそらくヘルパー関数を作成する必要があります:

$languagecode = \Drupal::languageManager()->getCurrentLanguage()->getId();
$default_languagecode = \Drupal::languageManager()->getDefaultLanguage()->getId();
if ($languagecode == $default_languagecode) {
  return "NONE";
}
else {
  return $languagecode;
}

設定からそれを取得するヘルパー関数

function getLanguagePrefix() {
    if($prefixes = \Drupal::config('language.negotiation')->get('url.prefixes')) {
      $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
      return "/". $prefixes[$language];
    }
    return null;
  }
6
Patrick Kenny