2013-06-05 14 views
5

Ho un progetto di applicazioni multiple simile a questoSymfony2: multipli applicazioni, una cartella condivisa traduzioni

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

Ogni applicazione ha il suo kernel, console, cache, ... ma come faccio a condividere traduzioni comuni?

Ho letto lì https://stackoverflow.com/a/11630933/689429 che su una struttura ad app, è possibile utilizzare app/Resources/translations. Che ne dici di una struttura di app multiplo?

Vorrei poter fare /apps/Resources/translations che verrebbe caricato automaticamente (o caricato manualmente) in tutte le mie app, ma è anche possibile?

+2

È possibile utilizzare collegamenti simbolici da/app/risorse/traduzioni alle singole app/app1/risorse/directory delle traduzioni? So che questo non è l'ideale ... – redbirdo

+0

Sì, potrei, ma significa che non c'è modo di avere traduzioni specifiche per app e app traduzioni comuni. Lo farò se non trovo altre soluzioni. Grazie per il consiglio. – MaximeBernard

risposta

4

non ho ancora provato, ma forse il seguente è possibile:

Scrivere e registrare un EventListener su kernel.request in una delle tue applicazioni e iniettare il servizio traduttore in esso, così si è in grado di modificarlo. Forse deve essere eseguito prima del LocaleListener che significa che deve avere un priority superiore a da eseguire prima.

Quindi nel metodo onKernelRequest() del listener di eventi, è quindi possibile chiamare il metodo Symfony\Component\Translation\Translator::addResource() per aggiungere file di traduzione al volo.

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

Il parametro $resource contiene il percorso dei file traduzione a livello mondiale.

(Che cosa si sta cercando di fare davvero è un caso limite, ma ci Hase di essere qualche metodo farlo senza un collegamento simbolico tutto.)

Spero che questo pensiero aiuta. Lo proverò appena possibile e pubblicherò i miei risultati e come l'ho fatto.

+0

Grazie per questa risposta! Lo proverò appena possibile. In teoria, dovrebbe funzionare. Stabilirò questa risposta come "accettata" non appena avrò i miei risultati. – MaximeBernard

+0

Grazie per il vostro feedback! Tieni presente che forse devi registrare questo listener di eventi in tutte le tue app perché questi listener di eventi teoricamente funzionano solo sulle richieste nell'app in cui sono registrati, ma almeno i tuoi file di traduzione saranno centralizzati. Come ho detto, lo proverò anch'io perché questo è davvero un caso d'uso interessante che stai avendo. Se hai successo, potresti fornire la tua soluzione? – thormeier

+0

Certo che lo farò, conta su di me! – MaximeBernard

Problemi correlati