diff --git a/src/Entity/FieldParentInterface.php b/src/Entity/FieldParentInterface.php index d7ed15b7d..9590678b1 100644 --- a/src/Entity/FieldParentInterface.php +++ b/src/Entity/FieldParentInterface.php @@ -12,4 +12,6 @@ interface FieldParentInterface public function setLocale(string $locale): Field; public function getValue(): ?array; + + public function isTranslatable(): bool; } diff --git a/src/Entity/FieldParentTrait.php b/src/Entity/FieldParentTrait.php index 3bdd0a58d..1c3d48b98 100644 --- a/src/Entity/FieldParentTrait.php +++ b/src/Entity/FieldParentTrait.php @@ -4,6 +4,8 @@ namespace Bolt\Entity; +use Bolt\Configuration\Content\FieldType; + /** * Implements the methods of the FieldParentInterface. */ @@ -25,4 +27,20 @@ public function setLocale(?string $locale): Field return $this; } + + /** + * Override isTranslatable so that if one child definition + * has localize: true, the whole field is considered localizable. + */ + public function isTranslatable(): bool + { + /** @var FieldType $fieldDefinition */ + foreach ($this->getDefinition()->get('fields', []) as $fieldDefinition) { + if ($fieldDefinition->get('localize', false)) { + return true; + } + } + + return parent::isTranslatable(); + } }