Quali sono i buoni strumenti / framework per i18n di una base di codice php?
-
03-07-2019 - |
Domanda
Ho esaminato alcune opzioni per consentire la localizzazione e l'internazionalizzazione di un'applicazione php dinamica. Sembra esserci una varietà di strumenti disponibili come gettext e Yahoo R3 e sono interessato a conoscere sia gli sviluppatori che i traduttori su quali strumenti sono buoni da usare e quali funzionalità sono importanti per facilitare il compito di implementazione e traduzione.
Soluzione
L'implementazione di PHP gettext funziona in modo molto fluido. E i file po con po edit e gettext sono il modo migliore per gestire la localizzazione tenendo presente che nessuna soluzione di questo tipo può gestire completamente la complessità delle varie lingue. Ad esempio, il metodo gettext è molto buono su forme plurali, ma nulla di ciò che ho visto può gestire cose come la coniugazione.
Per maggiori informazioni vedi il mio post qui: Come costruisci un sito web multilingue?
Altri suggerimenti
Abbiamo armeggiato con Zend_Translate , dal momento che usiamo lo Zend Framework comunque. È molto ben documentato e finora estremamente solido.
In passato, ho praticamente usato la mia soluzione coltivata in casa principalmente. Ciò implica file di lingue con costanti o variabili che contengono tutte le parti di testo e vengono ripetutamente ripresi nella vista / modello in seguito.
Per quanto riguarda gettext, in passato ho sentito riferimenti sull'implementazione di gettext di PHP difettosa, ma non riesco davvero a fare il backup né ho riferimenti al momento.
Esistono numerose estensioni utili in pecl: http://pecl.php.net/packages.php?catpid=28& catname = Internazionalizzazione
In particolare, potresti voler controllare php-intl, che fornisce la maggior parte delle funzioni chiave i18n di International Components for Unicode (ICU)
la soluzione basata su database per mostrare i messaggi non è sempre buona, ho lavorato in un sito con più di 15 lingue e le traduzioni sono state un problema.
quindi il nostro design era:
- app di traduzione in php-mysql (accesso alla traduzione, ecc.)
- quindi le traduzioni sono scritte in arrangiamenti php
- questi array sono anche memorizzati nella cache di APC per velocizzare il sito.
quindi per localizzare lingue diverse devi solo includere un
come
<?php
include('lang/en.php');
include('lang/en_us.php'); // this file overrides few keys from the last one.
?>
Xataface può essere usato abbastanza facilmente per internazionalizzare un'applicazione PHP / MySQL arbitraria. Supporta la traduzione sia del testo statico che dei dati del database. Tutto quello che devi fare è aggiungere una riga o 2 di codice in un paio di posizioni nella tua applicazione ed è bello andare.
http://xataface.com/documentation/tutorial/internationalization-with-dataface-0.6