softspring / doctrine-simple-translation-type-bundle
此包为Doctrine提供了使用JSON类型的简单翻译类型。
v5.3.0-beta2
2024-09-25 11:36 UTC
Requires
- php: >=8.1
- doctrine/doctrine-bundle: ^2.5
- doctrine/orm: ^2.10 | ^3.0
- symfony/form: ^5.4|^6.0|^7.0
- symfony/http-kernel: ^5.4|^6.0|^7.0
- twig/twig: ^2.0|^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.64.*
- phpstan/phpstan: ^1.10
- rector/rector: ^1.0
- 5.3.x-dev
- v5.3.0-beta2
- v5.3.0-beta1
- 5.2.x-dev
- v5.2.7
- v5.2.6
- v5.2.5
- v5.2.4
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2.0
- v5.2.0-rc10
- v5.2.0-rc9
- v5.2.0-rc8
- v5.2.0-rc7
- v5.2.0-rc6
- v5.2.0-rc5
- v5.2.0-rc4
- v5.2.0-rc1
- 5.1.x-dev
- v5.1.25
- v5.1.24
- v5.1.23
- v5.1.22
- v5.1.21
- v5.1.20
- v5.1.19
- v5.1.18
- v5.1.17
- v5.1.16
- v5.1.15
- v5.1.14
- v5.1.13
- v5.1.12
- v5.1.11
- v5.1.10
- v5.1.9
- v5.1.8
- v5.1.7
- v5.1.6
- v5.1.5
- v5.1.2
- v5.1.1
- v5.1.0
- v5.0.6
- v5.0.5
- v5.0.4
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v5.0.0-rc1
- v5.0.0-beta1
- v4.1.1
- 4.1.0
- 4.0.0
- v1.0.0
- dev-dependabot/composer/friendsofphp/php-cs-fixer-3.64.star
- dev-dependabot/composer/doctrine/orm-tw-3.1
- dev-detached
- dev-some-front-improvements
This package is auto-updated.
Last update: 2024-09-25 14:22:29 UTC
README
此包为Doctrine提供了一个简单的翻译类型,并包含其与Symfony的集成包。
安装
使用Symfony Flex的应用程序
打开命令行,进入您的项目目录并执行
$ composer require softspring/doctrine-simple-translation-type-bundle
配置
配置Doctrine类型
# config/packages/doctrine.yaml
doctrine:
dbal:
types:
simple_translation: 'Softspring\DoctrineSimpleTranslationTypeBundle\Doctrine\Type\SimpleTranslationType'
使用方法
配置使用该类型的实体
use Doctrine\ORM\Mapping as ORM;
/**
* @var SimpleTranslation
* @ORM\Column(name="translated_name", type="simple_translation", nullable=false)
*/
protected $translatedName;
public function __construct()
{
$this->translatedName = new SimpleTranslation();
}
/**
* @return SimpleTranslation
*/
public function getName(): SimpleTranslation
{
return $this->translatedName;
}
/**
* @param SimpleTranslation $translatedName
*/
public function setName(SimpleTranslation $translatedName): void
{
$this->translatedName = $translatedName;
}
管理模型
模型类为 Softspring\DoctrineSimpleTranslationTypeBundle\Model\SimpleTranslation。
设置默认翻译
$entity->getName()->setDefaultLocale('es');
$entity->getName()->setTranslation(null, 'Nombre de la entidad'); // null means default locale
$entity->getName()->setTranslation('es', 'Nombre de la entidad'); // it's also posible to specify the locale
添加额外翻译
$entity->getName()->setTranslation('en', 'Entity name');
获取值
$entity->getName()->translate(); // returns the default value 'Nombre de la entidad'
$entity->getName()->translate('es'); // returns 'Nombre de la entidad'
$entity->getName()->translate('en'); // returns 'Entity name'
使用完整方法
$entity->getName()->getTranslations(); // returns ['es'=>'Nombre de la entidad', 'en'=>'Entity name']
$entity->getName()->setTranslations(['es'=>'Nombre de la entidad', 'en'=>'Entity name']);
作为数组使用
模型实现了ArrayAccess接口,因此可以作为数组使用
$entity->getName()['en']; // returns 'Entity name'
$entity->getName()['es']; // returns 'Nombre de la entidad'
Twig使用
{{ entity.name|translate }} {# returns 'Nombre de la entidad' if app.request.locale is 'es' #}
{{ entity.name|translate('es') }} {# returns 'Nombre de la entidad' #}
{{ entity.name|translate('en') }} {# returns 'Entity name' #}
在表单中编辑值
您可以使用 Softspring\DoctrineSimpleTranslationTypeBundle\Form\SimpleTranslationType
use Symfony\Component\Form\FormBuilderInterface;
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('translatedName'); // automatically uses the SimpleTranslationType thanks to the TypeGuesser
}
强制语言
$builder->add('translatedName', SimpleTranslationType::class, [
'languages' => ['es','en','de'],
]);