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.

  1. 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 usare putenv, forse per i casi limite sulle impostazioni di Windows?

  2. La lingua predefinita per il mio framework PHP è inglese, UTF-8 - così mi aveva impostato LC_ALL a en_US.utf-8, dal momento che en_US è ISO-8859-1 / Latin1 e, ovviamente, che non è così favorevole come UTF-8?

  3. 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

  4. ?
  5. 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?

  6. Ho letto da qualche parte che la consueta struttura della cartella locale o i18n è 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 per messages.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.

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top