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.
Features
MongoDb
All translations are stored into a MongoDb.
Dotrine
Usable with Doctrine ODM and ORM.
PSR-11
Interoperable with any framework implementing the PSR-11 recommendation.
Cloner le projet sur GitHub
Projet sous licence open source! Hébergé, développé et maintenu sur GitHub.
Voir le projet sur GitHub
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>