Skip to content

Translates words in properties. This makes it way easier to translate product names, taxon titles etc.

License

Notifications You must be signed in to change notification settings

Setono/SyliusFragmentTranslationPlugin

Repository files navigation

Sylius Fragment Translation Plugin

Latest Version Latest Unstable Version Software License Build Status

Will translate fragments of text automatically.

Installation

Step 1: Install dependencies

This plugin uses the Doctrine ORM Batcher bundle. Install that first.

Step 2: Download the plugin

Open a command console, enter your project directory and execute the following command to download the latest stable version of this plugin:

$ composer require setono/sylius-fragment-translation-plugin

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.

Step 3: Enable the plugin

Then, enable the plugin by adding it to the list of registered plugins/bundles in config/bundles.php file of your project before (!) SyliusGridBundle:

<?php
$bundles = [
    Setono\SyliusFragmentTranslationPlugin\SetonoSyliusFragmentTranslationPlugin::class => ['all' => true],
    Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true],
];

Step 4: Configure plugin

First import the general configuration:

# config/packages/_sylius.yaml
imports:
    # ...
    - { resource: "@SetonoSyliusFragmentTranslationPlugin/Resources/config/app/config.yaml" }
    # ...

Then configure what resources you want to 'fragment translate':

# config/packages/setono_sylius_fragment_translation.yaml
setono_sylius_fragment_translation:
    resource_translations:
        -
            name: sylius.product
            properties:
                - name

Step 5: Import routing

# config/routes/setono_sylius_fragment_translation.yaml
setono_sylius_fragment_translation:
    resource: "@SetonoSyliusFragmentTranslationPlugin/Resources/config/routing.yaml"

Step 6: Update your database schema

$ php bin/console doctrine:migrations:diff
$ php bin/console doctrine:migrations:migrate

Step 7: Using asynchronous transport (optional, but recommended)

All commands in this plugin will extend the CommandInterface. Therefore you can route all commands easily by adding this to your Messenger config:

# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            # Route all command messages to the async transport
            # This presumes that you have already set up an 'async' transport
            # See docs on how to setup a transport like that: https://symfony.com/doc/current/messenger.html#transports-async-queued-messages
            'Setono\SyliusFragmentTranslationPlugin\Message\Command\CommandInterface': async

Usage

Step 1: Create a fragment translation

Go to /admin/fragment-translations/new and try to input:

Field Value
Locale da_DK (or any other secondary locale you have created)
Search string Sticker
Replace string Klistermærke

Step 2: Run CLI command

$ php bin/console setono:sylius-fragment-translation:translate

If you look in your database you should now have Danish translations for the products with names containing Sticker and the names should have been translated into Klistermærke.

Step 3: Using asynchronous transport (recommended)

# config/packages/messenger.yaml
framework:
    messenger:
        routing:
            # Route all command messages to the async transport
            # This presumes that you have already set up an 'async' transport
            'Setono\SyliusFragmentTranslationPlugin\Message\Command\CommandInterface': async

About

Translates words in properties. This makes it way easier to translate product names, taxon titles etc.

Topics

Resources

License

Stars

Watchers

Forks