IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres composants PHP Discussion :

Zend_Translation "is not readable" [ZF 1.8]


Sujet :

Autres composants PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut Zend_Translation "is not readable"
    bonjour,

    je tourne en rond depuis hier soir, et je m'en arrache les cheveux un par un (m'enfout j'en ai plein)

    je cherche à implémenter le multilingue avec tmx, j'ai donc mis dans mon bootstrap :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    protected function _initTranslation()
        {
        	// Chargement des classes
     
    		// Définition de la langue à afficher
    		$locale = new Zend_Locale(Zend_Locale::BROWSER);
    		// ou : $locale = new Zend_Locale("fr");
     
    		// Chargement du fichier de traduction
    		$translator = new Zend_Translate('tmx', './translations/translation.tmx', $locale);
    		//Zend_Registry::set('translator', $translator);
        }
    en suivant ce tuto http://www.joecarbure.com/dw2/doku.p...zend_framework.

    en trés épuré mon arbo, généré par le zend_tool, donne

    nom_appli/
    application/
    Bootstrap.php
    translations/
    translation.tmx

    le probleme c'est que cela me génére cette erreur :

    Fatal error: Uncaught exception 'Zend_Translate_Exception' with message 'Translation file './translations/translation.tmx' is not readable.' in /var/www/library/Zend/Translate/Adapter/Tmx.php:75 Stack trace: #0 /var/www/library/Zend/Translate/Adapter.php(464): Zend_Translate_Adapter_Tmx->_loadTranslationData('./translations/...', 'fr', Array) #1 /var/www/library/Zend/Translate/Adapter.php(207): Zend_Translate_Adapter->_addTranslationData('./translations/...', 'fr', Array) #2 /var/www/library/Zend/Translate/Adapter.php(112): Zend_Translate_Adapter->addTranslation('./translations/...', Object(Zend_Locale), Array) #3 /var/www/library/Zend/Translate/Adapter/Tmx.php(56): Zend_Translate_Adapter->__construct('./translations/...', Object(Zend_Locale), Array) #4 /var/www/library/Zend/Translate.php(96): Zend_Translate_Adapter_Tmx->__construct('./translations/...', Object(Zend_Locale), Array) #5 /var/www/library/Zend/Translate.php(71): Zend_Translate->setAdapter('tmx', './translations/...', Object(Zend_Locale), Array) #6 /var/www/sc in /var/www/library/Zend/Translate/Adapter/Tmx.php on line 75
    dans Zend/Translate/Adapter/Tmx.php j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
    protected function _loadTranslationData($filename, $locale, array $options = array())
        {
            $this->_data = array();
     -->       if (!is_readable($filename)) {
     -->            require_once 'Zend/Translate/Exception.php';
     -->           throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.');
            }
     
            $encoding = $this->_findEncoding($filename);
            $this->_file = xml_parser_create($encoding);
    ...
    en gros le fichier est introuvable ou non accessible en lecture... et cela ne viens meme pas à priori de zend et encore moins du module Zend_Translation (je ne savais pas bien comment qualifier le post)

    j'ai vérifier sur mon serveur et le fichier a bien les bons droits, que ce soit le groupe ou la lecture... et pourtant le chemin que j'indique me semble correcte (j'ai essayé a peu prés tout...)

    si quelqu'un a une idée par ce que là je coince dur

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,

    tente ceci pour voir ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $translator = new Zend_Translate('tmx', './translations/translation.tmx', $locale->__toString());

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    merci maitre pylos, mais je m'en suis sortie avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '../application/translations/translation.tmx'
    j'étais pourtant sure de l'avoir fait...
    et j'ai doublement fais mon boulet car j'ai oublié de clore le sujet

    par contre je comprends tjs pas pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    './translations/translation.tmx'
    ne convenait pas...

    en tous cas merci pour ne pas m'avoir laisser tout seul

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Il ne faut pas que tu utilises un chemin relatif vers ton fichier de traduction... Ta solution ne fonctionnera pas si tu changes l'organisation de ton application (et notamment le répertoire library).

    Explications : avec './translations/translation.tmx', Zend_Translate_Adapter_Tmx va essayer d'ouvrir le fichier translation.tmx en prenant en compte l'include_path. Il va donc commencer par regarder dans '/var/www/library/Zend/Translate/Adapter/./translations/translation.tmx', puis dans '/var/www/library/./translations/translation.tmx' (le répertoire library étant dans l'include_path). Et ce fichier n'existant pas, il va lever une exception.

    Avec '../application/translations/translation.tmx', la recherche se fait en premier dans '/var/www/library/Zend/Translate/Adapter/../application/translations/translation.tmx' soit '/var/www/library/Zend/Translate/application/translations/translation.tmx' (échec) puis dans '/var/www/library/../application/translations/translation.tmx' soit '/var/www/application/translations/translation.tmx'. Et là, miracle ! le fichier existe bien...

    Mais il suffit que tu déplaces ton répertoire library pour qu'il ne se trouve plus dans le répertoire www, et c'est la cata...

    Conclusion : utilisez des chemins absolus pour charger les fichiers...

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    là j'ai compris!

    merci Eusebe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. quoted string not properly terminated & autres
    Par gRRosminet dans le forum SQL
    Réponses: 14
    Dernier message: 17/01/2013, 14h17
  2. Réponses: 2
    Dernier message: 10/11/2009, 15h14
  3. ORA-01756: quoted string not properly terminated
    Par hottnikks_79 dans le forum SQL
    Réponses: 14
    Dernier message: 22/05/2007, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo