avoo/serializer-translation

This package is abandoned and no longer maintained. No replacement package was suggested.

Translation component for JMS Serializer

Installs: 26 063

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 4

Open Issues: 0

Type:symfony-bundle

0.1.1 2015-06-01 13:40 UTC

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:

License