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;
            }
        }
    }