i18n / gettext: configurazione setlocale nelle applicazioni web
-
18-09-2019 - |
Domanda
Così ho iniziato a fare in giro con gettext
ma sono ancora perplesso su certe cose, sarebbe bello se qualcuno mi potrebbe aiutare e colmare le lacune per me.
-
Di solito la maggior parte delle implementazioni solo invocare
setlocale
sulla base di un parametro della lingua. C'è un caso in cui ho bisogno di usareputenv
, forse per i casi limite sulle impostazioni di Windows? -
La lingua predefinita per il mio framework PHP è inglese, UTF-8 - così mi aveva impostato
LC_ALL
aen_US.utf-8
, dal momento cheen_US
è ISO-8859-1 / Latin1 e, ovviamente, che non è così favorevole come UTF-8? -
Ci sono dei trucchi che dovrei sapere dopo aver invocato
setlocale(LC_ALL, 'en_US.utf-8')
? Dal momento che cambia tutti questi:LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, and LC_MESSAGES
- dovrò aggiornare gli script, per esempio, che generano il tempo o qualcosa di simile ?
-
Diciamo ad esempio un server appena configurato non ha potuto locale
es_ES.utf-8
configurato, so come generare il locale, ma se non fosse disponibile, allora dovrei fornire backup in un array? Sarebbe bello se qualcuno potrebbe fornire un esempio pratico, come:setlocale( LC_ALL, array('es_ES.UTF-8', 'es_ES', 'es') )
C'è una sorta di sito web che offre esempi come questo, o la gente di solito venire con la priorità di ordinare se stessi?
-
Ho letto da qualche parte che la consueta struttura della cartella
locale
oi18n
è qualcosa di simile al di sotto.La struttura veramente importante? Sembra che tutto ciò che sta accadendo è quando non si
bindtextdomain('messages', 'locale')
ricorsivamente ricerche che directory permessages.mo
, potrei non essere notando ma potrebbe essere tenuto le directory in considerazione.
Come rigoroso dovrei essere con la struttura?
locale
en_US
LC_MESSAGES
messages.po
es_ES
LC_MESSAGES
messages.po
6. Devo nemmeno con il tentativo di verificare se il sistema supporta in realtà il locale o no? Perché per esempio, se un server non ha avuto un locale e ho tentato di impostare con setlocale
non sarebbe errore fuori o niente, sarebbe solo silenzio lasciarlo passare.
Soluzione
Questa è non di una risposta qualificata alla tua domanda, e non sto dicendo che usando gettext è male - ho mai lavorato abbastanza con esso per avere un parere molto profonda su di esso - ma ho deciso di lasciare gettext solo a causa della sua complessità e imprevedibilità massiccia su diverse piattaforme con diverse impostazioni internazionali. Ho postato una domanda alla ricerca di alternative qui e mentre c'è non c'è molto in giro, il pacchetto Zend_translate sembra essere la pena dare un'occhiata. Non ho ancora trovato il tempo di me stesso.
Se si lavora con gettext, assicurati di controllare le note Contributo PHP Manuale dell'utente su Gettext .