The We Provide Translation Bundle for Symfony incorporates the JMS/TranslationBundle into the Sonata/AdminBundle. Both bundles are awesome but do not work together out of the box. Using this bundle you'll be able to extract and manage your translations through the easy-to-use admin.
This bundle is developed with a Symfony Standard Edition on PHP 7.1 using We Provide's version of valet. Obviously it has dependencies to other projects and/or bundles. Below a list of dependencies, please use the installation guides of these bundles first.
- Symfony Standard Edition 3.3
- Sonata Admin Bundle 3.18 (with SonataDoctrineORMAdminBundle)
- JMS Translation Bundle 1.3
- Ivory CK Editor ^4.0
Install this bundle into your project using Composer.
composer require weprovide/symfony-translation-bundle
Enable the bundle by inserting it in your Symfony's AppKernel.php
.
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new WeProvide\TranslationBundle\WeProvideTranslationBundle(),
);
// ...
}
// ...
}
Import the global config of this bundle in your project's config.yml
.
imports:
- { resource: "@WeProvideTranslationBundle/Resources/config/config.yml" }
Configure your locales and translation files folder in your config.yml
.
we_provide_translation:
# defaults to 'en' if not set, you can use strings like 'en' or a parameter
default_locale: '%locale%'
# required, array with locales you wish the manage
locales: [en, nl_NL]
# optional, array with (paths of) your bundles to extract translations from
# if omitted, extracts from your complete project
translate_bundles: [YourAppBundle]
# optional, location where translation files will be written
# if omitted, '@WeProvidePortalBundle/Resources/translations' will be the target
resource: '@YourAppBundle/Resources/translations'
In production or other non-debug environments the translations stored in YML are only updated when the cache is cleared. This bundle provides a command to clear cache when a translation has been changed. It's safe to execute or set this command as cron.
php bin/console weprovide:translation:recache --env=[prod,stag,dev]
You can schedule an extraction of translations from the admin interface. This will not extract the translations directly because this can take a long time. Instead set the command below as cron to do actually execute the scheduled extraction. This will also clear the cache after extraction.
php bin/console weprovide:translation:reextract
You can use the command below to extract the translations.
php bin/console weprovide:translation:extract
This bundle has been released under the MIT license and open for improvements, please share your thoughts which will be much appreciated.
- Mischa Braam (@mischabraam)