here および here のように、バンドルフィールドの翻訳されたラベルを取得する(複雑な)方法があります。
use Drupal\field\Entity\FieldConfig;
// Override language before loading field configuration.
$language = \Drupal::languageManager()->getLanguage('fr');
\Drupal::languageManager()->setConfigOverrideLanguage($language);
// $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($language);
$field_override = BaseFieldOverride::loadByName('entity_type', 'bundle', 'myField');
if ($field_override) {
$label = $field_override->getLabel();
}