![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.
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(),
);
}
# app/config/config.yml
avoo_serializer_translation:
metadata:
cache: file
file_cache:
dir: %kernel.cache_dir%/avoo
For example, you want to translate acme.foo.bar
from BDD.
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>
Acme\DemoBundle\Entity\Sample:
exclusion_policy: ALL
xml_root_name: sample
properties:
property:
expose: true
type: string
translate: true
Important: The annotation need to be defined.
use Avoo\SerializerTranslation\Configuration\Annotation as AvooSerializer;
/**
* @var string $property
*
* @AvooSerializer\Translate()
*/
protected $property;
{
"property": "welcome."
}
Into your translation file:
# Acme/DemoBundle/Resources/translations/messages.en.yml
acme:
foo.bar: "welcome %foo%"
<?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>
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
use Avoo\SerializerTranslation\Configuration\Annotation as AvooSerializer;
/**
* @var string $property
*
* @AvooSerializer\Translate(
* parameters = {
* "%foo%" = "expr(object.getProperty())"
* },
* domain = "messages",
* locale = "en"
* )
*/
protected $property;
{
"property": "welcome Superman",
}
This bundle is released under the MIT license. See the complete license in the bundle: