2009-12-09 3 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 파일을 사용하고 싶다면 하나의 파일을 업데이트 할 수 있으며 모든 파일을 반영 할 수 있습니까? –

+0

i18n 폴더를 응용 프로그램의 어딘가에 놓고 경로를 지정하십시오. 질문은 i18n 폴더를 어디에 두는 것이 아니라 응용 프로그램과 관련된 어딘가에 경로를 정의하는 것입니다. – Basher

+0

나는 당신이 말하는 것을 얻지 만, Zend_Translate만을 사용하고, 여러 서버에 걸쳐 이러한 것을 구현하려고하지 않는다면, 나는 부모 애플리케이션에 i18n을 넣을 수 없다. 부모 디렉토리에 내 모든 응용 프로그램의 가끔 일관성없는 구조로 ... 그 선택의 여지가 있지만 절대 경로 상수를 정의하고 그것을 사용하는 것 같아요. –