Zend_Translate e plugin per il caricamento della lingua

Dopo un pò di agonia per il router è passato il momento della stesura del plugin per il caricamento del linguaggio.

Da quello che ho confabulato e dalla discreta esperienza accumulata con lo zend posso dire che i file di traduzione tendono a contenere troppe parole che non vengono utilizzate fourchè dal loro ristretto contesto.

quindi ho deciso di scrivere un plugin che mi carichi i file di linguaggio:

* linguaggio dell'applicazione, salvato in

/locale/<locale>.mo

* linguaggio del modulo, salvato in

modules/<modulo>/locale/<locale>.mo

quindi prima del caricamento controllo l'esistenza del file di traduzione del modulo, in caso di esistenza lo carico altrimenti passo avanti.

<?php
    public function preDispatch($request)
    {
       $locale = $request->locale;
       
        if (isset($locale[2])) {
            return;
        }
        
        $language = new Zend_Translate('gettext', 'locale/' . $locale . '.mo', $locale);
        
        if (file_exists('application/modules/' . $request->module . '/locale/' . $locale . '.mo')) {
            $language->addTranslation('application/modules/' . $request->module . '/locale/' . $locale . '.mo', $locale);
        }
    }

il mio dubbio è questo : agendo su addTranslation() il linguaggio caricato viene aggiunto all'array di parole di Zend_Translate?

Nel caso si, perfetto non devo far altro che usarlo :D

Nel caso no, come posso fare ad usare il secondo "mini linguaggio" caricato per il modulo?

ps @Gianni: Secondo te è meglio un plugin che carica il linguaggio in preDispatch o caricarli nella classe di bootstrap?

 :bye:

inviato 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Si, addTranslation aggiunge, non sovrascrive, a meno che non gli si passi l'opzione "clear" come terzo paraemtro.

Nel file di bootstrap come recuperi il locale, passato via URL?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

si tramite $request che contiene la variabile speciale locale. (creta attraverso il router)

e non nel file di bootstrap, ma nel plugin, nel file di bootstrap registro il plugin nel broker soltanto.

ecco perchè sono passato direttamente al plugin senza fare i controlli nel file di bootstrap.

ho solo paura che i procedimenti che scelgo possano rallentare il programma :)

quindi mi basta fare $request->locale, dal plugin per ottenere il locale.

nel caso non fosse specificato vorrei usare quello di default (ok) e fare il redirect a /default locale/

come fa zend.com.

e come accidenti faccio ad avere i linguaggi "localizzati" per il modulo in uso?

EDIT : ora che leggo bene il linguaggio aggiunto con AddTranslation viene sommato a quello esistente in $lang, quindi dai moduli posso caricare il loro linguaggio ed usarlo con $lang->_('bla')....lol...giusto?

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
modificato 8 anni fa
X 0 X

Si, ma non ho mai provato, fammi sapere se funge.

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

si per ora funziona, devo solo testare che il linguaggio venga effettivamente aggiunto nelle traduzioni in modo da usarlo :D.

I linguaggio vengono caricati in base al parametro passato nell'url (o quello di default se non specificato ) e viene caricato anche il file del modulo (se esiste).

ripeto, l'unico interrogativo è sull'effettiva aggiunta del secondo linguaggio nell'array di linguaggio generale.

:bye:

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda