East Translation

East Translation - Extension pour apporter la traduction dans les applications ou sites Web #East et facilement gérer des objets traduisibles.


Paquet, utilisable avec East Common, pour traduire facilement vos objets métier persistants dans plusieurs langues, sans à avoir gérer à les traductions dans pour chaque objet.

Ce package est également construit sur MongoDB (et Doctrine ODM) pour enregistrer tous les contenus, mais peut-être utilisé sur d'autres configurations. Le système de traduction provient de l'extension de Doctrine Gedmo, mais elle a été entièrement retravaillée et réécrite et incluse dans ce package (Gedmo n'est plus requis). Cette fonctionnalité est maintenant fournie grâce au package East Translation, inclus avec ce package.

Ce package n'est couplé à aucun framework et est donc facileement intégrable avec toutes applications PHP moderne.

Une implémentation pour Doctrine est incluse.

Ce site Web est construit sur ce package avec Doctrine ODM 2.9.

Translation illustration

Features


MongoDb

All translations are stored into a MongoDb.

sf

Dotrine

Usable with Doctrine ODM and ORM.

PSR-11

Interoperable with any framework implementing the PSR-11 recommendation.

GitHub


Cloner le projet sur GitHub

Projet sous licence open source! Hébergé, développé et maintenu sur GitHub.


Voir le projet sur GitHub

Patreon


Supporter le projet sur Patreon

Ce projet est logiciel libre et le restera, mais son développement a un coût. Si vous l'appréciez et si vous souhaitez nous aider à le maintenir et à le faire évoluer. N'hésitez pas à nous supporter sur Patreon.


Supporter le p[rojet

Exemple


<?php
    //// Configuration

    //These operations are not reauired with teknoo/east-translation-symfony
    //config/packages/east_translation_di.yaml:
    di_bridge:
        definitions:
            - '%kernel.project_dir%/vendor/teknoo/east-translation/infrastructures/doctrine/di.php'

    //In doctrine config (east_translation_doctrine_mongodb.yaml)
    doctrine_mongodb:
        document_managers:
            default:
                auto_mapping: true
                mappings:
                    TeknooEastTranslationDoctrine:
                        type: 'xml'
                        dir: '%kernel.project_dir%/vendor/teknoo/east-translation/infrastructures/doctrine/config/doctrine'
                        is_bundle: false
                        prefix: 'Teknoo\East\Translation\Doctrine\Object'
                   
    //// PHP Class
                        
    namespace Acme;
                        
    class Article implements TranslatableInterface 
    {
        private string $localeField = '';
        
        public function __construct(
            public readonly string $id,
            public string $name,
            public string $content
        ) {
        }

        public function getId(): string
        {
            return $this->id;
        }
    
        public function getLocaleField(): ?string
        {
            return $this->localeField;
        }

        public function setLocaleField(?string $localeField): TranslatableInterface
        {
            $this->localeField = $localeField;

            return $this;
        }
    }

    //// Doctrine configuration
    <?xml version="1.0" encoding="UTF-8"?>
    <!--Article.mongodb.yml-->
    <doctrine-mongo-mapping xmlns="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping"
                            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                            xsi:schemaLocation="http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping
                                                http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping.xsd">

        <document name="Acme\Article" collection="contents" inheritance-type="COLLECTION_PER_CLASS">
            <id type="string" strategy="UUID"/>
            <field field-name="name" type="string" nullable="false"/>
            <field field-name="content" type="string" />
        </document>
    </doctrine-mongo-mapping>

    <?xml version="1.0" encoding="UTF-8"?>
    <!--Article.mongodb.translate.yml-->
    <east-translation xmlns="http://xml.teknoo.it/schemas/doctrine/east-translation"
                            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                            xsi:schemaLocation="http://xml.teknoo.it/schemas/doctrine/east-translation
                                                http://xml.teknoo.it/schemas/doctrine/east-translation.xsd">

        <object name="Acme\Article">
            <field field-name="title" fallback="true"/>
            <field field-name="content"/>
        </object>
    </east-translation>