web-dev-qa-db-ja.com

ノードエイリアスを使用して言語を検出する方法

私はウェブサイトの現在の言語を取得することを知っています:

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

ただし、ノードエイリアスがあることを考えると

$alias = \Drupal::service('path.alias_manager')->getAliasByPath('/node/'.$nid);

その言語を取得するにはどうすればよいですか$aliasノード?

1
user agent

特定の言語のパスエイリアスを取得するには、次のコマンドを試してください。

$current_lang = \Drupal::languageManager()->getCurrentLanguage()->getId();
/** @var \Drupal\Core\Path\AliasManager $aliasManager */
$aliasManager =  \Drupal::service('path.alias_manager');
$alias = $aliasManager->getAliasByPath('/node/10', $current_lang);

エイリアスから言語コードを取得したい場合は、次を試してください:

$aliasArray = \Drupal::service('path.alias_storage')->load(['source' => '/node/' . $nid]);
$lang_code = $aliasArray['langcode'];
1
berramou