i18n/getText: SetLocale -Konfiguration in Webanwendungen
-
18-09-2019 - |
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.
Normalerweise rufen die meisten Implementierungen nur auf
setlocale
Basierend auf einem Sprachparameter. Gibt es einen Fall, in dem ich verwenden mussputenv
, Vielleicht für Kantenfälle auf Windows -Setups?Die Standardsprache für mein PHP -Framework ist Englisch, UTF -8 - also würde ich festgelegt
LC_ALL
zuen_US.utf-8
, seiten_US
Ist ISO-8859-1/Latin1 und offensichtlich nicht so unterstützend wie UTF-8?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?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?
Ich habe irgendwo gelesen, dass die übliche Struktur der
locale
oderi18n
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 nachmessages.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.
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.