Skip to content
This repository was archived by the owner on May 16, 2023. It is now read-only.

avoo/SerializerTranslation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SerializerTranslation

![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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages