web-dev-qa-db-ja.com

基本フィールド定義の翻訳済みラベルを取得するにはどうすればよいですか?

here および here のように、バンドルフィールドの翻訳されたラベルを取得する(複雑な)方法があります。

use Drupal\field\Entity\FieldConfig;

// Override language before loading field configuration.
$language = \Drupal::languageManager()->getLanguage('fr');
\Drupal::languageManager()->setConfigOverrideLanguage($langu‌​age);

// $entity_type, $bundle, $field.
$field_info = FieldConfig::loadByName('entity_type', 'bundle', 'myField'); 

$label = $field_info->getLabel();

しかし、私は方法を見つけることができません。ベースフィールドでこれを達成する方法。 a(any) bundleを提供するようなハックも成功しません。

基本フィールドには、インターフェース変換と構成変換の2つの可能な変換方法があります。

基本フィールドはコードで定義され、t()によって変換されます。これにより、コアインターフェース変換テーブルから変換可能な文字列が取得されます。

$translatableMarkup = t($label, [], ["langcode" => $langcode]);
//optionally, render to string
$translatedLabel = $translatableMarkup->render();

基本フィールドのオーバーライドが構成に存在する場合は、翻訳可能なラベルが含まれています。

// Override language before loading field configuration.
$language = \Drupal::languageManager()->getLanguage('fr');
\Drupal::languageManager()->setConfigOverrideLanguage($langu‌​age);

$field_override = BaseFieldOverride::loadByName('entity_type', 'bundle', 'myField');
if ($field_override) {
  $label = $field_override->getLabel();
}
3
4k4