A set of extra tools for symfony2: a translation extractor, a locale date parser/formatter, a unit converter...
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Resources Changed the way services are assigned to twig extension. Fixes extens… Jul 9, 2012
Util Unit converter supports conversion from numeric as string Nov 21, 2012
vendor Support for travis Mar 3, 2012


Intro to ExtraTools

It a bundle that contains some usefull symfony2 tools.

Build Status


The bcc:trans:update command had been merged into the framework and thus won't be maintained here anymore. The new name is translation:extract.


  • a bcc:trans:update command that extract all your missing i18n message from your twig templates and saves into yaml, xliff, php or pot translation files.
  • a twig extension that translates dates and contries
  • a date formatter that formats and translates dates and also parses multiple forms of localized date string
  • a unit converter that is ignly extensible and convert units

Installation and configuration:

Get the bundle

Add to your /deps file :


And make a php bin/vendors install.

Register the namespace


    // app/autoload.php
        'BCC' => __DIR__.'/../vendor/bundles',
        // your other namespaces

Add ExtraToolsBundle to your application kernel


    // app/AppKernel.php
    public function registerBundles()
        return array(
            // ...
            new BCC\ExtraToolsBundle\BCCExtraToolsBundle(),
            // ...

Register the twig extension

If you want to use the twig extension you must have the apache intl module installed.

Add to your config.yml:

#BCC configuration
        class: BCC\ExtraToolsBundle\Twig\TwigExtension
            -  { name: twig.extension }

Usage examples:

bcc:trans:update command example

You now have the new command. You can use it as follows:

  • To extract messages from your bundle and display in the console:

    bcc:trans:update --dump-messages fr MyBundle

  • You can save them to the MyBundle\Resources\translations directory:

    bcc:trans:update --force fr MyBundle

  • In another language:

    bcc:trans:update --force en MyBundle

  • Specify the output format with the --output-format option (either yml, xliff, php or pot):

    bcc:trans:update --output-format="xliff" --force en MyBundle

  • Change the prefix used for newly added messages with the --prefix option:

    bcc:trans:update --output-format="xliff" --force --prefix='myprefix' en MyBundle

Twig extensions examples

Translate a date value :

  • {{ user.createdAt | localeDate }} to have a medium date and no time, in the current locale

  • {{ user.createdAt | localeDate('long','medium') }} to have a long date and medium time, in the current locale

Translate a contry :

  • {{ user.country | country }} to have the country, in the current locale

  • {{ user.country | country('c ountry does not exist') }} Define the returned value if the country does not exist

DateFormatter examples

Get the service:


$dateFormatter = $container->get('bcc_extra_tools.date_formatter');

Parse a date:


$date = $dateFormatter->parse('November 1, 2011', 'en'); // obtains a datetime instance

Format a date:


echo $dateFormatter->format($date, 'long', 'none', 'fr'); // echoes : "1 novembre 2011"

Note that the locale parameter (here 'fr' and 'en') are optionnal, default is the current locale.

Unit converter examples

Get the service:


$unitConverter = $container->get('bcc_extra_tools.unit_converter');

Convert a value:


echo $unitConverter->parse(1000, 'm', 'km'); // echoes : 1

Guess the source unit:


echo $unitConverter->parse('1h', 'm'); // echoes : 60

More examples in the tests: ./Tests/Util/UnitConverterTest.