带有默认内容的 Sonata Admin 翻译

Sonata Admin translations with default content

我能够使用 Gedmo Doctrine Extensions:

为翻译后的实体设置 Sonata Admin
# Doctrine Extensions Configuration
stof_doctrine_extensions:
    default_locale: '%locale%'
    orm:
        default:
            timestampable: true
            blameable: true
            translatable: true

# Sonata Translation Configuration
sonata_translation:
    locales: [en, fr, it]
    default_locale: '%locale%'
    gedmo:
        enabled: true

然而,每次我创建一个新实体时,其他语言的可翻译字段开始为空。

选择的英语语言:

选择的意大利语:

如果我不知道英文内容,翻译起来非常困难

是否有一个选项可以让我在创建英文实体时也用相同的内容填充其他语言的实体?

我猜你忘了加载事件侦听器服务。 对于每个 Gedmo 扩展(Timestampable、Blameable、Translatable 等),您必须在服务容器中注册服务。

可翻译:

    ## app/config/services.yml

    services:

        ## ...

        gedmo.listener.translatable:
        class: Gedmo\Translatable\TranslatableListener
        tags:
            - { name: doctrine.event_subscriber, connection: default }
        calls:
            - [ setAnnotationReader, [ @annotation_reader ] ]
            - [ setDefaultLocale, [ %locale% ] ]
            - [ setTranslationFallback, [ false ] ]

您应该为您需要的字段添加回退选项:

/**
 * @var string
 *
 * @Assert\NotBlank()
 *
 * @Gedmo\Translatable(fallback=true)
 *
 * @ORM\Column(type="string", length=255)
 */
private $title;