2009-12-09 5 views
1

J'ai un répertoire personnalisé, par exemple /www/phpstuff qui est dans mon include_path. À l'intérieur de ce répertoire phpstuff est un dossier i18n. Il contient les fichiers au niveau serveur .mo.Paramètres régionaux à l'échelle de l'application avec Gettext et Zend_Translate?

Zend_Translate vous permet de spécifier un répertoire dans le second paramètre du constructeur, je ne peux pas vraiment faire

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

Il essaie de lire à partir du répertoire dans lequel ce script est appelé, est-il une sorte de astuce que je peux utiliser pour ne pas avoir à spécifier /www/phpstuff/i18n explicitement? Raison d'être ce cadre que je travaille sera utilisé sur de nombreuses plates-formes différentes, et il serait plus facile de spécifier un répertoire dans un include_path qu'un chemin absolu. La seule solution de contournement que je peux trouver est de lire manuellement le chemin d'inclusion, la division par le séparateur, en vérifiant si l'un des répertoires est nommé 'gettext' et ensuite saisir le chemin absolu du premier répertoire trouvé et le définir.

Répondre

1

Vous devrez définir le chemin d'application quelque part. Si vous ne voulez pas définir un chemin absolu, vous devez définir un chemin relatif. Prenez cette structure dir par exemple:

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

Le chemin d'application dans ce cas serait:

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

Et vous pouvez l'utiliser comme ceci:

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

espoir qui aide.

+0

Oui, mais cela reste spécifique à l'application. Que se passe-t-il si je veux utiliser les mêmes fichiers .mo pour plusieurs applications, de sorte que je puisse mettre à jour un fichier mo et qu'il reflète tous ces fichiers? –

+0

Placez le dossier i18n quelque part hors de l'application et définissez un chemin d'accès. La question n'est pas où vous mettez le dossier i18n mais que vous définissez un chemin quelque part qui est spécifique à l'application. – Basher

+0

Je comprends ce que vous dites, mais je n'utilise pas Zend principalement pour cette application - seulement en utilisant le Zend_Translate, et peu importe que j'essaie de les implémenter sur plusieurs serveurs, je ne peux pas simplement mettre le i18n dans le parent répertoire parent de toutes mes applications comme parfois il est structuré de manière incohérente ... Je suppose que cela ne me laisse pas d'autre choix que de définir une constante de chemin absolu et de l'utiliser. –

Questions connexes