public function getTranslatedFieldDefinitionProperty(ContentType $contentType, $fieldDefIdentifier, $property = 'name', $forcedLanguage = null)
{
$fieldDefinition = $contentType->getFieldDefinition($fieldDefIdentifier);
if (!$fieldDefinition instanceof FieldDefinition) {
throw new InvalidArgumentException('$fieldDefIdentifier', "Field '{$fieldDefIdentifier}' not found on {$contentType->identifier}");
}
$method = 'get' . $property;
if (!method_exists($fieldDefinition, $method)) {
throw new InvalidArgumentException('$property', "Method get'{$property}'() not found on FieldDefinition");
}
// Loop over prioritized languages to get the appropriate translated field definition name
// Should ideally have used array_unique, but in that case the loop should ideally never reach last item
foreach ($this->getLanguages($forcedLanguage, $contentType->mainLanguageCode) as $lang) {
if ($name = $fieldDefinition->{$method}($lang)) {
return $name;
}
}
}