Локали для всего приложения с Gettext и Zend_Translate?
-
18-09-2019 - |
Вопрос
У меня есть пользовательский каталог, например /www/phpstuff
который находится в моем include_path
.Внутри этого phpstuff
каталог - это папка i18n
.Он содержит уровень на стороне сервера .mo
Файлы.
Zend_Translate
позволяет вам указать каталог во втором параметре конструктора, я действительно не могу этого сделать
Zend_Translate( 'gettext', 'i18n/', 'en' );
Он пытается прочитать из каталога, в котором вызывается этот скрипт, есть ли какой-нибудь трюк, который я могу использовать, чтобы не указывать /www/phpstuff/i18n
явно?Причина в том, что этот фреймворк, с которым я работаю, будет использоваться на многих разных платформах, и было бы проще указать каталог в include_path, чем абсолютный путь.
Единственное обходное решение, которое я могу придумать, - это вручную прочитать включаемый путь, разделить разделителем, проверить, есть ли у какого-либо из каталогов имя 'gettext', а затем получить абсолютный путь к первому найденному каталогу и установить его.
Решение
Вам нужно будет где-то определить путь к приложению.Если вы не хотите задавать абсолютный путь, вам нужно будет задать относительный путь.Возьмем, к примеру, эту структуру dir:
/application/
/application/i18n/
/public_html/
/public_html/index.php
Путь к приложению в этом случае будет следующим:
define('APPLICATION_PATH', '../application');
И вы можете использовать это следующим образом:
Zend_Translate( 'gettext', APPLICATION_PATH . '/i18n', 'en' );
Надеюсь, это поможет.