Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
an edit-in-place, i18n translator bundle for Symfony2
PHP JavaScript
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
Controller
DependencyInjection
Dumper
Exception
Features
Listener
Resources
Templating
Tests
Translation
.gitignore
KnpTranslatorBundle.php
LICENSE
README.md
composer.json
phpunit.xml.dist

README.md

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/TranslatorBundle.git
    

    By including into deps file:

    
    [TranslatorBundle]
        git=git://github.com/docteurklein/TranslatorBundle.git
        target=/bundles/Knp/Bundle/TranslatorBundle
    
    
  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
{

    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
    
Something went wrong with that request. Please try again.