Frage

Also fing ich an, mit zu spielen gettext Aber ich bin immer noch verwirrt über bestimmte Dinge, wäre großartig, wenn mir jemand helfen könnte, die Lücken für mich zu füllen.

  1. Normalerweise rufen die meisten Implementierungen nur auf setlocale Basierend auf einem Sprachparameter. Gibt es einen Fall, in dem ich verwenden muss putenv, Vielleicht für Kantenfälle auf Windows -Setups?

  2. Die Standardsprache für mein PHP -Framework ist Englisch, UTF -8 - also würde ich festgelegt LC_ALL zu en_US.utf-8, seit en_US Ist ISO-8859-1/Latin1 und offensichtlich nicht so unterstützend wie UTF-8?

  3. Gibt es irgendwelche Gotchas, von dem ich nach dem Aufrufen wissen sollte? setlocale(LC_ALL, 'en_US.utf-8')? Da es all dies ändert: LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, and LC_MESSAGES - Muss ich zum Beispiel irgendwelche Skripte aktualisieren, die Zeit oder ähnliches generieren?

  4. Nehmen wir zum Beispiel an, ein frisch konfigurierter Server hatte nicht es_ES.utf-8 Gebietsschema konfiguriert, ich weiß, wie man das Gebietsschema generiert, aber wenn es nicht verfügbar war, sollte ich Backups in einem Array bereitstellen? Wäre großartig, wenn jemand ein praktisches Beispiel geben könnte, wie:

    setlocale( LC_ALL, array('es_ES.UTF-8', 'es_ES', 'es') )

    Gibt es eine Art von Website, die Beispiele wie diese anbietet, oder haben die Menschen normalerweise die Priorität, sich selbst zu bestellen?

  5. Ich habe irgendwo gelesen, dass die übliche Struktur der locale oder i18n Ordner ist so etwas wie unten.

    Ist die Struktur wirklich wichtig? Es scheint, als ob alles passiert, wenn Sie es tun bindtextdomain('messages', 'locale') es sucht dieses Verzeichnis nach rekursiv nach messages.mo, Ich kann es vielleicht nicht bemerken, aber es könnte die Verzeichnisse berücksichtigen.

Wie streng sollte ich mit der Struktur zusammen sein?

locale
  en_US
      LC_MESSAGES
         messages.po
  es_ES
      LC_MESSAGES
         messages.po


6. Sollte ich mich überhaupt darum kümmern, zu testen, ob das System das Gebietsschema tatsächlich unterstützt oder nicht? Denn beispielsweise, wenn ein Server kein Gebietsschema hatte und ich versucht habe, ihn mit festzulegen setlocale Es würde nicht fehlerhaft sein oder so, es würde es einfach schweigend vergehen lassen.

War es hilfreich?

Lösung

Das ist nicht Eine qualifizierte Antwort auf Ihre Frage, und ich sage nicht, dass die Verwendung von GetText schlecht ist - ich habe nie genug daran gearbeitet, um eine wirklich tiefe Meinung dazu zu haben - aber ich habe beschlossen, GetText aufgrund seiner Komplexität und massiven Unvorhersehbarkeit auf verschiedenen Plattformen in Ruhe zu lassen mit verschiedenen Orten. Ich habe eine Frage veröffentlicht, die nach Alternativen gesucht hat hier Und obwohl es nicht wirklich viel gibt, scheint das Zend_Translate -Paket einen Blick wert zu sein. Ich bin selbst noch nicht dazu gekommen.

Wenn Sie mit GetText arbeiten, lesen Sie unbedingt das PHP Manual User beitrug Anmerkungen zum GetText.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top