Skip to content

Latest commit

 

History

History
199 lines (119 loc) · 4.37 KB

README.md

File metadata and controls

199 lines (119 loc) · 4.37 KB

TranslatorBundle

This bundle's purpose is to provide an interface for edition, addition and deletion of translations messages.

Currently supported formats:

  • YAML
  • XLIFF
  • CSV

Install & setup the bundle

  1. Fetch the source code

    Using Git to control your project from project root directory:

    git submodule add git://github.com/docteurklein/TranslatorBundle.git vendor/bundles/Knp/Bundle/TranslatorBundle
    

    By cloning repository:

    mkdir -p vendor/bundles/Knp/Bundle
    cd !$
    git clone git://github.com/docteurklein/TranslatoBundle.git
    
  2. Add the bundle to your AppKernel class

    // app/AppKernerl.php
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Knp\Bundle\TranslatorBundle\KnpTranslatorBundle,
            // ...
        );
        // ...
    }
  3. Add the Knp namespace to your autoloader

    // app/autoload.php
    $loader->registerNamespaces(array(
        'Knp' => __DIR__.'/../vendor/bundles',
        // your other namespaces
    );
  4. Add routing

    // app/config/routing.yml
    
    knplabs_translator_admin:
        resource: @KnpTranslatorBundle/Resources/config/routing/edition.yml
            prefix:   /trans/admin
    
    knplabs_translator:
        resource: @KnpTranslatorBundle/Resources/config/routing/routing.yml
            prefix:   /trans
    

These route files provide the following routes:

[router] Current routes
Name                     Method  Pattern
knplabs_translator_list  GET    /trans/admin/list
knplabs_translator_get   GET    /trans/{id}/{domain}/{locale}
knplabs_translator_put   PUT    /trans/

Minimal configuration

This bundle requires the activation of the core translator:

``` yaml

// app/config/config.yml
framework:
    # ...
    translator:    { fallback: en }
    # ...

```

Additional configuration

This bundle relies on the Ext Core library. You can decide wheter or not it will be included automatically.

``` yaml

knplabs_translator:
    include_vendor_assets: false # defaults to true

```

Services

This bundle introduces those services:

translator.dumper.csv                    container Knp\Bundle\TranslatorBundle\Dumper\CsvDumper
translator.dumper.xliff                  container Knp\Bundle\TranslatorBundle\Dumper\XliffDumper
translator.dumper.yaml                   container Knp\Bundle\TranslatorBundle\Dumper\YamlDumper
translator.writer                        container Knp\Bundle\TranslatorBundle\Translation\Translator

controllers are services too:

knplabs_translator.controller.edition    request   Knp\Bundle\TranslatorBundle\Controller\EditionController
knplabs_translator.controller.translator request   Knp\Bundle\TranslatorBundle\Controller\TranslatorController

API

``` php

class Knp\Bundle\TranslatorBundle\Translation\Translator extends Symfony\Bundle\FrameworkBundle\Translation\Translator
{

    // equivalent of parent::trans
    public function getTranslatedValue($id, array $parameters = array(), $domain = 'messages', $locale = null);

    public function wrap($id, $domain = 'messages', $locale = null);

    public function isTranslated($id, $domain, $locale);

    public function update($id, $value, $domain, $locale);

    public function getResources($locale, $domain);

    public function getFallbackLocale();

    public function getCatalog($locale);

    public function getLocales();

    public function all();


```

Updating a given translation key is really simple:

``` php

$this->get('translator.writer')->update('the key to translate', 'the translated string', 'messages', 'en');

```

Rest API

  • Update english translations files for domain tests with translated value for key foo.bar.baz

    curl -X PUT http://project-url/trans/  \
        -F 'id=foo.bar.baz' \
        -F 'domain=messages' \
        -F 'locale=en' \
        -F 'value=translate value' 
    
  • Get the translated value of key foo.bar.baz for english locale for tests domain

    curl http://project-url/trans/foo.bar.baz/tests/en