How to use Loco Adapter

When your application has reached a certain number of languages and you can’t translate all of them yourself you need a translation platform to ease your work with external translators. This article shows how to set up a storage adapter using Loco. Loco is just an example here. All storage adapters have a similar way of being configured.

Installation

Assuming you have already installed the Symfony bundle, you need to find and install a storage adapter. See our list of storage adapters.

composer require php-translation/loco-adapter

The storage adapter does also contain a bundle which needs to be enabled.

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Translation\PlatformAdapter\Loco\Bridge\Symfony\TranslationAdapterLocoBundle(),
    );
}

Configuration

Once the adapter bundle is installed you must configure it with your API keys. For Loco the configuration looks like this:

# /app/config/config.yml
translation_adapter_loco:
  projects:
    messages:
      api_key: 'foobar'
    navigation:
      api_key: 'bazbar'

When the storage adapter bundle is configured it will register a service with id php_translation.adapter.loco. Now we need to tell the TranslationBundle to use this adapter.

Note

The terminology for “adapters” in the context of the Symfony bundle is “storage”.

The TranslationBundle supports multiple storages. You can even use them at the same time. There are local storages and remote storages. One should consider the local storage as a cache. Which means that the absolute truth is always the remote storage. By default there is a local file storage which would be suitable for most applications.

Lets configure the bundle to use Loco as a remote storage.

translation:
    locales: ["en", "fr", "sv"]
    configs:
        app:
            dirs: ["%kernel.root_dir%/Resources/views", "%kernel.root_dir%/../src"]
            output_dir: "%kernel.root_dir%/Resources/translations"
            remote_storage: ["php_translation.adapter.loco"]

Usage

You may use the TranslationBundle as you normally do. When you add new translations in the Symfony Profiler they will automatically be added in Loco. You can also run Symfony commands to upload and download translations to your remote storages.