2013-06-05 15 views
5

mam stwardnienie projekt aplikacje wyglądające jak toSymfony2: wielokrotności aplikacje, jeden wspólny tłumaczenia folderów

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

Każda aplikacja ma swoje jądra, konsoli, cache, ... Ale jak mam wspólne tłumaczenia?

Przeczytałem tam https://stackoverflow.com/a/11630933/689429, że na strukturze z jedną aplikacją można użyć app/Resources/translations. Co powiesz na strukturę wielu aplikacji?

Chciałbym móc zrobić /apps/Resources/translations, który byłby ładowany automatycznie (lub ładowany ręcznie) we wszystkich moich aplikacjach, ale czy jest to możliwe?

+2

Czy możesz użyć dowiązań symbolicznych z/apps/Resources/translations do poszczególnych katalogów aplikacji/app1/Resources/translations? Wiem, że to nie jest idealne ... – redbirdo

+0

Tak, ale mogłem, ale oznacza to, że nie ma możliwości, aby aplikacje i tłumaczenia zwykłe tłumaczenia aplikacji. Zrobię to, jeśli nie znajdę innych rozwiązań. Dzięki za wskazówkę. – MaximeBernard

Odpowiedz

4

nie próbowałem tego jeszcze, ale być może po to możliwe:

Zapis i zarejestrować EventListener na kernel.request w jednym ze swoich aplikacji i wstrzyknąć usługę tłumacza w nim, dzięki czemu są w stanie go zmienić. Być może trzeba go wykonać przed LocaleListener, co oznacza, że ​​musi on być wcześniejszy niżwyższy niż .

Następnie w metodzie onKernelRequest() detektora zdarzeń można wywołać metodę Symfony\Component\Translation\Translator::addResource() w celu dodania plików translacji w locie.

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

Parametr $resource zawiera ścieżkę do globalnych plików tłumaczeń.

(Co próbujesz zrobić naprawdę jest sprawa krawędzi, ale nie Hase być niektóre sposób to zrobić bez symlinking wszystko.)

Nadzieja ta myśl pomaga. Wypróbuję to jak najszybciej i opublikuję wyniki i sposób, w jaki to zrobiłem.

+0

Dzięki za tę odpowiedź! Wypróbuję to jak najszybciej. Teoretycznie powinno działać. Ustawię tę odpowiedź jako "zaakceptowaną", gdy tylko otrzymam wyniki. – MaximeBernard

+0

Dziękujemy za opinię! Pamiętaj, że być może musisz zarejestrować ten detektor zdarzeń we wszystkich aplikacjach, ponieważ te detektory zdarzeń teoretycznie działają tylko na żądania w aplikacji, w której są zarejestrowane, ale przynajmniej pliki tłumaczeń będą scentralizowane. Jak już powiedziałem, sam wypróbuję to, ponieważ jest to interesujący przypadek użycia. Jeśli osiągniesz sukces, czy możesz podać swoje rozwiązanie? – thormeier

+0

Pewnie, że będę, liczyć na mnie! – MaximeBernard

Powiązane problemy