複数の言語の配列を持つノードがあります。
_ [19] => Drupal\node\Entity\Node Object
(
[in_preview] =>
[values:protected] => Array
(
[vid] => Array
(
[x-default] => 19
)
[langcode] => Array
(
[x-default] => en
[ca] => ca
)
_
私はそのURLを次のように取得しています:
_$options = array('absolute' => TRUE);
$link = \Drupal\Core\Url::fromRoute('entity.node.canonical', ['node' => $key], $options);
_
print($link)
は_http://test-d8.local/en/node/19
_を提供しています。ここで、「ca
」言語ではなく「en
」言語のURLが必要です。つまり、_http://test-d8.local/ca/node/19
_
特定の言語コードのノード翻訳を提供する方法はありますか?
この行$language = $entity->get('langcode')->value;
は、選択リストから選択された言語の値を提供しています。
言語オプションを指定してtoUrl()を使用したい。
$node->toUrl('canonical', ['language' => $node->language()]);
残念ながら、現在toUrl()はアクティブな言語を自動的に考慮しません。
$language = 'ca';
$link = $value->getTranslation($language)->url();
$title = $value->getTranslation($language)->title->value;
これは私のために働いた。
次のようにノードの翻訳を取得できます。
$node = $node->getTranslation('ca');
そして、必要に応じて、次のようにリンクまたはURLを取得できます。
$link = $node->toLink();
$url = $node->toUrl();