sonofwinter / translation-bundle
此Bundle提供了一个从实体转换的功能
v0.10.1
2023-09-20 13:02 UTC
Requires
- php: >=8.0
- doctrine/annotations: ^2.0
- symfony/dependency-injection: ^6.0
- symfony/framework-bundle: ^6.0
- symfony/orm-pack: *
- symfony/yaml: ^6.0
Requires (Dev)
- phpunit/phpunit: ^9
- symfony/phpunit-bridge: ^6.0
This package is not auto-updated.
Last update: 2024-09-18 17:47:58 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) 删除属性的翻译