sonofwinter/translation-bundle

此Bundle提供了一个从实体转换的功能

安装: 781

依赖项: 0

建议者: 0

安全性: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

v0.10.1 2023-09-20 13:02 UTC

README

安装

打开命令行,进入您的项目目录并执行

$ composer require sonofwinter/translation-bundle

配置

您可以将sow_translation.available_locales参数覆盖为新列表以设置可用的语言列表,默认为 [ 'en', 'fr', 'es', 'de', 'it' ]

默认情况下,存在一个Translation实体类,但您可以创建一个扩展AbstractTranslation的自定义翻译实体类。要使用它,请将sow_translation.translation_class_name参数设置为

<parameter key="sow_translation.translation_class_name">App\Entity\YourTranslationClass</parameter>

用法

您的翻译实体必须实现Translatable接口,然后在实体中定义翻译属性

    /**
     * @var string
     * @Translate(key="firstname")
     */
    private $firstname;

    /**
     * @var string
     * @Translate(key="lastname", setter="setOtherName")
     */
    private $lastname;

您可以定义用于匹配另一个名称的键属性,如果未定义,则默认使用属性名称。如果想要使用另一个setter,则使用setter属性。如果setter不存在,则会抛出TranslatableConfigurationException异常。

新版本 V0.8

此bundle现在需要php >= 8.0

您可以使用属性代替注解

use SOW\TranslationBundle\Attribute\Translation;

class MyClasse {

    #[Translation(key: "firstname")]
    private string $firstname = '';

    #[Translation(key: "lastname", setter: "setOtherName")]
    private string $lastname = '';
}

默认情况下,该bundle使用注解方法,您必须更改配置以使用属性

    sow_translation.translation_method: attribute

如果您想覆盖属性类,别忘了在配置中定义它

    sow_translation.attribute_class_name: SOW\TranslationBundle\Attribute\Translation

翻译

您可以使用一些方法来翻译实体

  • translate(Translatable $entity, string $lang) 将实体翻译为 $lang
  • translateForLangs(Translatable $entity, array $langs) 将实体翻译为多种语言

设置翻译

这些方法用于设置翻译

  • setTranslationForLangAndValue(Translatable $translatable, string $lang, string $key, string $value) 设置单个翻译
  • setTranslationForLangAndValues(Translatable $translatable, string $lang, array $values) 在一种语言中设置多个值
  • setTranslations(Translatable $translatable, array $translations) 为多种语言设置多个翻译

删除翻译

这些方法用于删除翻译

  • removeByObjectKeyAndLang(Translatable $object, string $key, string $lang) 删除特定翻译
  • removeAllForTranslatable(Translatable $object) 删除对象的所有翻译
  • removeAllByKey(string $key) 删除属性的翻译