Phalcon fornisce servizi per siti Web multilingue?Funzione di traduzione in Phalcon
Qual è la migliore procedura per lo sviluppo di un sito basato su falco MVC? Come devo implementare il livello di visualizzazione?
Phalcon fornisce servizi per siti Web multilingue?Funzione di traduzione in Phalcon
Qual è la migliore procedura per lo sviluppo di un sito basato su falco MVC? Come devo implementare il livello di visualizzazione?
Questa applicazione di esempio (https://github.com/phalcon/php-site) implementa la conversione utilizzando Phalcon.
Phalcon non offre funzionalità I18n. Esiste un'estensione PECL che offre questo tipo di funzionalità, denominata intl (vedere manual).
Tuttavia, se si è per lo più interessati a presentare il sito web in diverse lingue, è possibile utilizzare il componente
\Phalcon\Translate\Adapter\NativeArray
. Questo componente utilizza un array di chiavi/valori che contengono le stringhe che conoscono la lingua. Per esempio si può utilizzare questo nella configurazione:
$trans_config = array(
'en' => array(
'bye' => 'Good Bye',
'song-key' => 'This song is %song% (%artist%)',
),
'es' => array(
'bye' => 'Adiós',
'song-key' => 'La canción es %song% (%artist%)',
),
);
Un test per dimostrare l'utilizzo di cui sopra è:
public function testVariableSubstitutionTwoEnglish()
{
$language = $trans_config['en'];
$params = array('content' => $language);
$translator = new \Phalcon\Translate\Adapter\NativeArray($params);
$vars = array(
'song' => 'Dust in the wind',
'artist' => 'Kansas',
);
$expected = 'This song is Dust in the wind (Kansas)';
$actual = $translator->_('song-key', $vars);
$this->assertEquals(
$expected,
$actual,
'Translator does not translate English correctly - many parameters'
);
}
È possibile che questo dimostra quanto è possibile ottenere i messaggi con variabili segnaposto tradotto. Per ottenere semplicemente una stringa in una lingua diversa, basta chiamare lo _()
sul traduttore con la chiave pertinente e non passare nessuna variabile.
MODIFICA Nella vista puoi lavorare come preferisci. È possibile impostare variabili che vengono visualizzate nel livello di visualizzazione o passare l'oggetto di traduzione ed eseguire la traduzione lì. Sta a te.
HTH
Grazie, quale altro adattatore pensate di implementare? Creare e usare tali array è un po 'prolisso, inoltre sarebbe stato meglio se '_ (' x ', array (' 1 ',' 2 '))' potesse essere usato in aggiunta a '_ (' x ', array (' un '=>' 1' , 'b' => '2')) '. È un buon lavoro creare un servizio a cui è possibile accedere tramite viste? – PHPst
Quali sono i pro e i contro dell'uso di '\ Phalcon \ Translate \ Adapter \ NativeArray' anziché di Gettext? – PHPst
Re Gettext molto piccolo, per lo più basato su prestazioni e preferenze. Le prestazioni in realtà non sono un problema enorme. –
Penso che la soluzione migliore sia usare Phalcon Gettext Adapter. Il vantaggio più importante di Gettext è la gestione dei plurali.
Come posso utilizzare gettext nell'architettura Phalcon? – PHPst
Lasciatemi creare un esempio per te – twistedxtra
Tuttavia, ricorda che gettext non è thread-safe, se stai eseguendo l'applicazione con Apache potresti avere problemi – twistedxtra