Вопрос

У меня есть пользовательский каталог, например /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' );

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top