avoo / serializer-translation
Translation component for JMS Serializer
Installs: 26 070
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 4
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.3.3
Requires (Dev)
This package is not auto-updated.
Last update: 2023-05-22 20:08:29 UTC
README
![Build Status] (https://scrutinizer-ci.com/g/avoo/SerializerTranslation/badges/build.png?b=master) ![Scrutinizer Code Quality] (https://scrutinizer-ci.com/g/avoo/SerializerTranslation/badges/quality-score.png?b=master) ![Latest Stable Version] (https://poser.pugx.org/avoo/serializer-translation/v/stable.svg) ![License] (https://poser.pugx.org/avoo/serializer-translation/license.svg)
This is a PHP library based on JMS Serializer, and add translation option configuration for any properties.
Installation
Require avoo/serializer-translation-bundle
into your composer.json
file:
{ "require": { "avoo/serializer-translation-bundle": "@dev-master" } }
Register the bundle in app/AppKernel.php
:
// app/AppKernel.php public function registerBundles() { return array( // ... new Avoo\SerializerTranslationBundle\AvooSerializerTranslationBundle(), ); }
Default Configuration
# app/config/config.yml avoo_serializer_translation: metadata: cache: file file_cache: dir: %kernel.cache_dir%/avoo
Default Usage
For example, you want to translate acme.foo.bar
from BDD.
Default activation
Into your translation file:
# Acme/DemoBundle/Resources/translations/messages.en.yml acme: foo.bar: "Welcome."
<?xml version="1.0" encoding="UTF-8" ?> <serializer> <class name="Acme\DemoBundle\Entity\Sample" exclusion-policy="ALL" xml-root-name="sample" xmlns:a="https://github.com/avoo/SerializerTranslationBundle"> <property name="property" expose="true" type="string"> <a:translate /> </property> </class> </serializer>
YAML
Acme\DemoBundle\Entity\Sample: exclusion_policy: ALL xml_root_name: sample properties: property: expose: true type: string translate: true
Annotations
Important: The annotation need to be defined.
use Avoo\SerializerTranslation\Configuration\Annotation as AvooSerializer; /** * @var string $property * * @AvooSerializer\Translate() */ protected $property;
Json output sample
{ "property": "welcome." }
With custom parameters
With custom parameters
Into your translation file:
# Acme/DemoBundle/Resources/translations/messages.en.yml acme: foo.bar: "welcome %foo%"
XML
<?xml version="1.0" encoding="UTF-8" ?> <serializer> <class name="Acme\DemoBundle\Entity\Sample" exclusion-policy="ALL" xml-root-name="sample" xmlns:a="https://github.com/avoo/SerializerTranslationBundle"> <property name="property" expose="true" type="string"> <a:translate domain="messages" locale="en"> <a:parameter name="%foo%" value="expr(object.getProperty())" /> </a:translate> </property> </class> </serializer>
YAML
Acme\DemoBundle\Entity\Sample: exclusion_policy: ALL xml_root_name: sample properties: property: expose: true type: string translate: parameters: %foo%: expr(object.getProperty()) locale: en domain: messages
Annotations
use Avoo\SerializerTranslation\Configuration\Annotation as AvooSerializer; /** * @var string $property * * @AvooSerializer\Translate( * parameters = { * "%foo%" = "expr(object.getProperty())" * }, * domain = "messages", * locale = "en" * ) */ protected $property;
Json output sample
{ "property": "welcome Superman", }
License
This bundle is released under the MIT license. See the complete license in the bundle: