braunstetter/translated-forms

翻译您的表单。简单易用。

安装: 283

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

v0.1.3 2022-12-03 19:13 UTC

This package is auto-updated.

Last update: 2024-09-30 01:48:59 UTC


README

Scrutinizer Code Quality Build Status License

此包为您提供了Symfony表单的translated选项。因此,当您切换语言时,表单会自动翻译并正常工作。

假设您正在使用KNP Doctrine Behaviours进行翻译。

安装

composer require braunstetter/translated-forms

用法

安装完成后,此包允许您在表单参数数组中设置一个选项

public function configureOptions(OptionsResolver $resolver): void
{
    $resolver->setDefaults([
        'translated' => true
    ]);
}

当设置为true时,表单将响应对象中当前的区域设置。

重要的是要使用代理翻译以允许此包通过魔法方法读取数据。

为什么您应该使用此包?

有流行的a2lix/translation-form-bundle。它正在积极维护,如果您喜欢它,您可以继续使用它。

但是,要使用a2lix/translation-form-bundle,需要一些CSS和JavaScript。此外,它还附带了一个专门的FormType。因此,您必须将每个字段包裹在这个FormType中。它为每个翻译字段提供可点击的标签,当您只想翻译整个表单时,这并不太方便。

braunstetter/translated-forms将直接与您的所有Symfony表单一起工作。无需额外的CSS、JavaScript或额外的FormType来实现。您的表单保持不变。只需切换语言,甚至嵌套表单也会被翻译。

自定义特性

Knp Doctrine Behaviours为您可翻译的实体和翻译带来了特性。

默认情况下,它假定您将翻译实体放在与可翻译实体相同的文件夹中。当翻译大量内容时,这会变得相当混乱。

因此,braunstetter/translated-forms包提供了两个特性。 TranslatableTraitTranslationTrait

它们与默认的Knp特性工作方式相同(实际上,它们在底层使用它),但它们将翻译放入一个Translation文件夹中,并实现了必需的魔法__call方法,以使此包能够翻译您的表单。

这个魔法是如何发生的?

读取数据(mapDataToForms)

如果启用,此包将设置一个新的数据映射器到您的表单。

默认的Symfony表单组件的数据映射器不与魔法属性一起工作 - 此包的数据映射器则可以。

写入数据(mapFormsToData)

当表单的数据将要保存时,此数据映射器将尝试以正常方式保存它。

如果基本实体的字段不能直接写入,它将选择当前翻译并将其写入其中。