It a bundle that contains some usefull symfony2 tools.
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
Add to your /deps
file :
[BCCExtraToolsBundle]
git=http://github.com/michelsalib/BCCExtraToolsBundle.git
target=/bundles/BCC/ExtraToolsBundle
And make a php bin/vendors install
.
<?php
// app/autoload.php
$loader->registerNamespaces(array(
'BCC' => __DIR__.'/../vendor/bundles',
// your other namespaces
));
<?php
// app/AppKernel.php
public function registerBundles()
{
return array(
// ...
new BCC\ExtraToolsBundle\BCCExtraToolsBundle(),
// ...
);
}
If you want to use the twig extension you must have the apache intl module installed.
Add to your config.yml
:
#BCC configuration
services:
bcc.twig.extension:
class: BCC\ExtraToolsBundle\Twig\TwigExtension
tags:
- { name: twig.extension }
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 (eitheryml
,xliff
,php
orpot
):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
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
Get the service:
<?php
$dateFormatter = $container->get('bcc_extra_tools.date_formatter');
Parse a date:
<?php
$date = $dateFormatter->parse('November 1, 2011', 'en'); // obtains a datetime instance
Format a date:
<?php
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.
Get the service:
<?php
$unitConverter = $container->get('bcc_extra_tools.unit_converter');
Convert a value:
<?php
echo $unitConverter->parse(1000, 'm', 'km'); // echoes : 1
Guess the source unit:
<?php
echo $unitConverter->parse('1h', 'm'); // echoes : 60
More examples in the tests: ./Tests/Util/UnitConverterTest.