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

Bibliothèques et frameworks PHP Discussion :

Gettext sur serveur ovh


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Gettext sur serveur ovh
    Bonjour, j'ai des difficultés à faire fonctionner la librairie gettext chez ovh.

    Pour commencer, tout fonctionne bien en local avec EasyPHP.

    En ligne, je n'ai aucun message d'erreur, mais aucune traduction non plus et je n'arrive pas à trouver pourquoi. Es-ce les fichier .po qui pose problème ? Car je les ai créés sous windows avant de les importer via ftp sur le serveur ? Et si oui, y a-t-il une solution ?

    Es-ce la librairie qui serai déjà sur le serveur et le fait que je l'importe dans mon code poserai problème ?

    Voici le code configurant gettext :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php
    error_reporting(E_ALL | E_STRICT);
     
    // define constants
    define('PROJECT_DIR', realpath('./'));
    define('LOCALE_DIR', PROJECT_DIR .'./traductions');
    define('DEFAULT_LOCALE', 'fr_FR');
     
    require_once('lib/gettext/gettext.inc');
     
    $supported_locales = array('en_UK', 'fr_FR');
    $encoding = 'UTF-8';
     
    $locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
     
    // gettext setup
    T_setlocale(LC_MESSAGES, $locale);
    // Set the text domain as 'messages'
    $domain = 'trad';
    bindtextdomain($domain, LOCALE_DIR);
    // bind_textdomain_codeset is supported only in PHP 4.2.0+
    if (function_exists('bind_textdomain_codeset')) 
      bind_textdomain_codeset($domain, $encoding);
    textdomain($domain);
     
    header("Content-type: text/html; charset=$encoding");
    ?>
    Et enfin, je ne sais comment m'y prendre pour débugger ça et cibler l'erreur. J'ai fait quelques echo en suivant un autre forum :
    echo textdomain("LC_ALL=$locale"); // ne retourne rien
    echo putenv("LC_ALL=$locale"); // retourne 1
    echo bindtextdomain("trad", "./traductions"); // ne retourne rien


    Merci d'avance pour votre aide.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Je me permets un petit up en ajoutant que s'il vous faut des information complémentaire, il n'y a qu'a demander. Là j'en ai pas mis plus que ça car je ne sais pas dans quel direction aller pour trouver le problème.

    J'ai tout de même trouver un bout de code qui permettrai de tester un peu le bon fonctionnement de gettext. Voici le cade :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $testlangs = array('fr_FR','en_GB');
     
       function testlocale($lang)
       {
          putenv("LANGUAGE=$lang");
          $dir=setlocale(LC_ALL, $lang);
          if ($dir == $lang)
             return "<li>$lang : OK</li>\n";
          else
             return "";
       }
     
       if (extension_loaded('gettext'))
       {
          echo 'gettext is installed. Testing some locales ...<br/><ul>';
          foreach ($testlangs as $lang)
          {
             echo testlocale($lang);
             echo testlocale($lang.'.utf8');
             echo testlocale($lang.'.iso885915');
             echo testlocale($lang.'.iso88591');
          }
          echo '</ul>';
       }
       else
          echo 'gettext is not installed :(';
    Le soucis c'est que :
    - En local, où mes traduction sont bien prise en compte le message de retour est :
    gettext is not installed

    - En ligne, où les traductions ne fonctionne pas, les messages de retour sont :
    fr_FR : OK
    fr_FR.utf8 : OK
    fr_FR.iso88591 : OK
    en_GB : OK
    en_GB.utf8 : OK
    en_GB.iso885915 : OK
    en_GB.iso88591 : OK
    => Bien évidement, vous vous doutez bien que j'ai de suite tester le codage en_GB quand j'ai vu que mon en_UK n'était pas sur la liste ^^ Mais rien, à ma grande déception.

    Bref, c'est peut-être un conflit entre ma bibliothèque importé et celle installer sur mon serveur chez ovh.

    Je continue mes investigations... encore...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    J'ai fini par résoudre mon problème tout seul, comme un grand ;o)

    Comme quoi des fois, le simple fait d'exposer son problème à d'autre aide à mieux l’appréhender.

    Donc, j'ai trouver un script pour le cas où gettext est déjà sur votre serveur ( pas besoin d'importer la librairie donc ). Le script de test du support des langue aide un peu fourni dans le précédent message m'a aussi bien aidé. Et enfin, je me suis rendu compte que je n'avais pas fait de dossier de traduction pour le fr_FR, le site étant 'écrit' en français j'avais zappé d'indiquer la tradction fr ^^

    Voila ! Enfin libéré après plusieurs heures de recherche, ça fait du bien XD

    Donc le bout de code pour une utilisation sans importer la librairie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $lang=(isset($_GET['lang']))? $_GET['lang'] : 'fr_FR';
    	$textdomain = 'trad';
    	putenv("LANGUAGE=$lang" );
    	setlocale(LC_ALL, $lang);
    	bindtextdomain($textdomain, 'traductions');
    	textdomain($textdomain);
    A adapter en fonction de vos nom de fichier et méthode de transmission de la variable lang.

    Dans mon cas :
    - Trad == mes fichier de traduction *.po ( fait avec poedit )
    - traductions == mon dossier contenant l'arborescence des fichier de traduction ( soit traductions/en_GB/LC_MESSAGES )

    Je ne me suis pas penché sur ce qui déconné dans mon ancien script, plu le temps pour ça malheureusement, ça sera pour une prochaine fois ^^

    Et j'ai l'immense joie d'appliquer un 'Résolue' sur mon sujet, merci quand même ;o)

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

Discussions similaires

  1. [ZF 1.11] Installation sur serveur OVH
    Par totow dans le forum Zend Framework
    Réponses: 5
    Dernier message: 23/02/2012, 17h42
  2. Installation OpenERP sur serveur OVH
    Par tarek008 dans le forum Odoo (ex-OpenERP)
    Réponses: 1
    Dernier message: 08/06/2011, 13h00
  3. Installation site Joomla local sur serveur OVH avec Filezilla
    Par ExcelTD dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 31/10/2010, 19h09
  4. Sessions et cookies sur serveurs OVH
    Par heycraft dans le forum Langage
    Réponses: 3
    Dernier message: 22/03/2010, 19h00
  5. Exécuter une requête MySQL en php sur serveur OVH
    Par phebus1204 dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/04/2009, 16h41

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