Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony2: multiples apps, one shared translations folder

Tags:

symfony

I have a multiple apps project looking like this

/apps/app1
/apps/app2
/apps/app3
/apps/config
/src
/vendor
/web/app1
/web/app2
/web/app3

Each app has its kernel, console, cache, ... But how do I share common translations ?

I read there https://stackoverflow.com/a/11630933/689429 that on a one-app structure, you can use app/Resources/translations. How about a multiples-apps structure ?

I wish I could make /apps/Resources/translations that would be autoloaded (or loaded manually) in all my apps but is it even possible ?

like image 923
MaximeBernard Avatar asked Oct 03 '22 22:10

MaximeBernard


1 Answers

Haven't tried it yet, but perhaps the following is possible:

Write and register an EventListener on kernel.request in one of your apps and inject the translator service in it, so you are able to modify it. Maybe it needs to be executed before the LocaleListener which means it has to have a priority higher than 16 to be executed before.

Then in the onKernelRequest() method of your event listener, you could then call the Symfony\Component\Translation\Translator::addResource() method to add translation files on the fly.

See: http://api.symfony.com/2.3/Symfony/Component/Translation/Translator.html#method_addResource

The parameter $resource contains the path to your global translation files.

(What you are trying to do really is an edge case, but there has to be some method to do it without symlinking everything.)

Hope this thought helps. I'll try it out as soon as possible and post my results and how I've done it.

like image 178
thormeier Avatar answered Oct 07 '22 19:10

thormeier