2009-12-09 6 views
1

У меня есть пользовательский каталог, например /www/phpstuff, который находится в моем include_path. Внутри этого каталога phpstuff находится папка i18n. Он содержит серверный уровень .mo файлов.Локальные области приложения с Gettext и Zend_Translate?

Zend_Translate позволяет указать каталог в качестве второго параметра конструктора, я не могу сделать

Zend_Translate('gettext', 'i18n/', 'en'); 

Он пытается прочитать из каталога, в котором вызывается этот скрипт, есть какой-либо трюк, который я могу использовать, чтобы не указывать явно /www/phpstuff/i18n? Причина, по которой эта структура, с которой я работаю, будет использоваться на многих разных платформах, и было бы проще указать каталог в include_path, чем абсолютный путь.

Единственное обходное решение, которое я могу придумать, это ручное чтение пути включения, разделение на разделитель, проверка того, называется ли какой-либо из каталогов «gettext», а затем захватить абсолютный путь для первого найденного каталога и установить его.

ответ

1

Необходимо где-то определить путь приложения. Если вы не хотите устанавливать абсолютный путь, вам нужно установить относительный путь. Возьмите эту реж структуру, например:

/application/ 
/application/i18n/ 
/public_html/ 
/public_html/index.php 

Путь приложения в этом случае будет:

define('APPLICATION_PATH', '../application'); 

И вы можете использовать его как это:

Zend_Translate('gettext', APPLICATION_PATH . '/i18n', 'en'); 

Надежда, что помогает.

+0

Да, но это все еще применимо к конкретным приложениям. Что делать, если я хотел использовать одни и те же файлы .mo для нескольких приложений, поэтому я могу обновить один файл mo, и он будет отражать их все? –

+0

Поместите папку i18n куда-нибудь из приложения и определите путь к ней. Вопрос заключается не в том, где вы помещаете папку i18n, а в том, что вы определяете путь где-то конкретно для приложения. – Basher

+0

Я получаю то, что вы говорите, но я не использую Zend для этого приложения - только используя Zend_Translate, и независимо от того, что я пытаюсь реализовать на нескольких серверах, я не могу просто поместить i18n в родительский родительский каталог всех моих приложений, поскольку иногда он непоследовательно структурирован ... Думаю, это оставляет меня без выбора, кроме как определить абсолютную константу пути и использовать ее. –