Anwendungsweiten Gebietsschema mit Gettext und Zend_Translate?
-
18-09-2019 - |
Frage
Ich habe ein eigenes Verzeichnis, zB /www/phpstuff
die in meinem include_path
ist. Innerhalb dieses phpstuff
Verzeichnis ist ein Ordner i18n
. Es enthält serverseitige Ebene .mo
Dateien.
Zend_Translate
können Sie ein Verzeichnis, in dem zweiten Parameter des Konstruktors angeben, kann ich nicht wirklich tun
Zend_Translate( 'gettext', 'i18n/', 'en' );
Es wird versucht, aus dem Verzeichnis zu lesen, in dem dieses Skript aufgerufen wird, gibt es eine Art von Trick kann ich nicht explizit angeben /www/phpstuff/i18n
verwenden zu müssen? Grund dafür ist dieser Rahmen ich bin arbeiten, wird in vielen verschiedenen Plattformen verwendet werden, und es wäre einfacher, ein Verzeichnis in einem include_path als ein absoluter Pfad angeben.
Die einzige Abhilfe, die ich mit oben kommen kann manuell liest den Pfad enthalten, Splitting durch den Separator überprüft, wenn eine der Verzeichnisse namens ‚gettext‘ und dann den absoluten Pfad des ersten Verzeichnisses greifen gefunden und legen Sie es.
Lösung
Sie müssen den Anwendungspfad irgendwo definieren. Wenn Sie nicht über einen absoluten Pfad festlegen möchten, müssen Sie einen relativen Pfad setzen. Nehmen Sie diese Richt Struktur zum Beispiel:
/application/
/application/i18n/
/public_html/
/public_html/index.php
Der Anwendungspfad in diesem Fall sei:
define('APPLICATION_PATH', '../application');
Und Sie können es wie folgt verwendet werden:
Zend_Translate( 'gettext', APPLICATION_PATH . '/i18n', 'en' );
Ich hoffe, das hilft.