Skip to content


System requirements

  • Ibexa DXP 4.3 or newer (use the 1.0 branch for eZ Platform 3.3 / PHP 7.4 compatibility)
  • PHP with zip extension
  • Any message queue compatible with the Symfony Messenger component such as RabbitMQ.

Step 1: Bundle installation

You can choose between install with or without symfony/flex.

Installation with symfony/flex

composer config --global gitlab+deploy-token <token>
composer config --json extra.symfony.endpoint '["","","flex://defaults"]'
composer config composer
composer require xrow/translation-bundle:2.0.0-alpha15

Continue with database schema.

Installation without symfony/flex

composer config --global gitlab+deploy-token <token>
composer config '{"type": "composer", "url": ""}'
composer require xrow/translation-bundle:2.0.0-alpha15

Bundle configuration

Add the bundle to config/bundles.php and be strict on the order:

    Ibexa\AdminUiBundle\EzPlatformAdminUiBundle::class => ['all' => true],
    EzSystems\EzPlatformAutomatedTranslationBundle\EzPlatformAutomatedTranslationBundle::class => ['all' => true],
    Xrow\TranslationBundle\XrowTranslationBundle::class => ['all' => true],

Route configuration

Register the routes in config/routes/xrow_translation.yaml:

    resource: '@XrowTranslationBundle/Resources/config/routing.yml'

Continue with database schema.

Step 2: Database schema

Preview and create the database tables:

bin/console doctrine:schema:update --dump-sql
bin/console doctrine:schema:update --force

Step 3: Configure RabbitMQ

Install RabbitMQ

Use the official installation guide by the vendor.

Symfony Configuration

We use the MESSENGER_TRANSPORT_DSN environment variable to define how RabbitMQ can be reached.



The bundle will create a default transport called translation-manager that uses the instance defined by MESSENGER_TRANSPORT_DSN. But if you have a custom requirement you can define it in config/packages/xrow_translation.yaml. For example:

        transport: my-custom-transport

                dsn: 'amqp://bunny:password@rabbitmq:5672/%2f/messages'
                    max_retries: 0
                failure_transport: my-custom-failure-transport
                dsn: 'amqp://bunny:password@rabbitmq:5672/%2f/messages'
                        name: my-custom-failure-transport
                        messages_my-custom-failure-transport: ~

You will also need to set up a worker to consume the messages (see Symfony documentation). If you use the default transport created by the bundle this will be:

bin/console messenger:consume translation-manager -vv

or if you use a custom transport:

bin/console messenger:consume my-custom-transport -vv

Messages are only handled by the consumer once. Any failed messages will be sent to another queue for manual execution by running the following interactive command:

bin/console messenger:failed:retry --transport=translation-manager-failed -vv

or if you defined a custom transport following the example above, run:

bin/console messenger:failed:retry --transport=my-custom-failure-transport -vv

It's not possible currently to disable the dependency on RabbitMQ, it is needed for importing and exporting.

See also symfony/messenger documentation.

Last update: February 13, 2023