albertofem / translatableroutepath-bundle
JpnForPhp Symfony2 bundle integration
Requires
- symfony/symfony: ~2.5
Requires (Dev)
- jms/i18n-routing-bundle: 1.1.*
- phpunit/phpunit: 4.1.*
- sensio/framework-extra-bundle: ~3.0
Suggests
- jms/i18n-routing-bundle: Support JMSI18nRoutingBundle route path translations
This package is not auto-updated.
Last update: 2024-11-09 15:37:10 UTC
README
Allows using translations in routes paths:
/** * @Route("/[my.translatable.key]/route/{param}", options={"translatable"=true}) */ public function myAction() { }
If my.transatable.key
is defined in English as: my_translatable_route
, this will produce a route:
/my_translatable_route/route/whatever_param
Installation
Require it in composer:
composer require albertofem/translatableroutepath-bundle dev-master
Install it:
composer update albertofem/translatableroutepath-bundle
Add it to your bundles:
$bundles = array( ..., new \AFM\Bundle\TranslatableRoutePathBundle\AFMTranslatableRoutePathBundle() );
Additionally, you can use this bundle with JMSI18nRoutingBundle
in which case you will need to register it before this one:
$bundles = array( ... new \JMS\I18nRoutingBundle\JMSI18nRoutingBundle(), new \AFM\Bundle\TranslatableRoutePathBundle\AFMTranslatableRoutePathBundle() );
If you need to run the tests:
./vendor/bin/phpunit
Usage
You need to add the option to your route to be translatable:
/** * @Route("/[my.translatable.key]/route/{param}", options={"translatable"=true}) */ public function myAction() { }
Using YAML:
my_translatable_route: path: /[my.translatable.key]/route/{param} options: { translatable: true }
Use the syntax [...]
to referer to translations in your routes paths. You can use this syntax in annotations/yaml/PHP indistintively.
Integration with JMSI18nRoutingBundle
If your are using this great bundle, routes will be automatically translated to all the locales set in the configuration.
Integration with Symfony core Router
When using Symfony core router, all routes are translated into the default locale. If you need a Route to be translated in another language, you must specify the _locale
default parameter:
my_translatable_route: path: /[my.translatable.key]/route/{param} options: { translatable: true } defaults: { _locale: en } # this route will translated in English
TODO
- Support parameters for translations (domains, etc.)
- Support transChoice