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

Langage PHP Discussion :

Script de traduction


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 55
    Points : 30
    Points
    30
    Par défaut Script de traduction
    Bonjour,

    Cela fait deux jours que je me bats avec un bout de code qui semble n'en faire qu'à sa tête. Mon problème est qu'il ne traduit pas une partie de mon site alors qu'il fonctionne bien pour l'autre.

    Je vous donne le code que j'utilise pour l'instant (Ps: j'ai essayé de faire de mon mieux pour commenter chaque ligne) :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    <?php
    include('config/config.php');
    require('incl/OutilTraductiongoogle.class.php');
    include('incl/func.php');
     
    // Création du nom de fichier à utiliser pour le cache (le nom du fichier est composé de la ou les crépertoires où se trouve le fichier exp: dir/test.php?id=1) 
    $nom_fichier = $_SERVER['REQUEST_URI'];
    $nom_fichier = str_replace($site, '', $nom_fichier);
    $chaine = '|(.*?)/'.$_GET['langue'].'/|i';
    $nom_fichier = preg_replace($chaine,'',$nom_fichier);
     
    // Hasher le nom du fichier à inclure dans le cache
    $md5 = md5($nom_fichier);
     
    // déterminer le chemin pour parvenir au cache
    $cache = 'langues/'.$_GET['langue'].'/'.$md5;
     
    // La date d'expiration du cache (pour modifier cette date reportez vous à config/config.php)
    $expire = time() - ($jours_cache * 3600 * 24) ; 
     
    // Déterminer l'url qu'on va traduire
    $url = $_SERVER['REQUEST_URI'];
     
    //On supprime $_GET['langue'] par exemple ("/en" de l'adresse "/en/dir/test.php")  pour déterminer l'url à traduire
    $url = str_replace('/'.$_GET['langue'], '', $url); 
     
    if(url_exists($site.$url))
    {
    //Si l'url existe, que le fichier cache existe et que la date d'expiration n'a pas encore été atteinte nous lisont directement le fichier en cache
    if(file_exists($cache) && filemtime($cache) > $expire)
    {
            readfile($cache);
    }
    //sinon nous créont le fihier cache
    else
    {
    	ob_start(); // ouverture du tampon
     
    	// Initialiser le traducteur avec la configuration "Français -> $_GET['langue']"
    	$traducteur = new OutilTraductiongoogle('fr',$_GET['langue']);
     
    	$result = $traducteur->traduire_URL($site.$url);
     
    //Gestion des erreurs 403 et 302
    if ( $result===false ) echo $traducteur->return_error();
    elseif (strpos($result,'<title> 403 Forbidden'))
    {
    		echo "Google indique une erreur. (Title: 403).<br /><br />Nous rencontrons un problème temporaire avec la l'outil de traduction. Veuillez s'il vous plaît ré-essayer de nouveau plus tard. Nous vous prions de nous excuser pour le désagrément encouru.<br /><br />
    Sorry / Scuzi / Perdon / Nay canne doo tha laddy / Excuseer / Das is Nicht Gud / Sori
    ";
    }
     
    elseif (strpos($result,'<title> 302 Moved'))
    {
    		echo "Google indique une erreur. (Title: 302).<br /><br />Nous rencontrons un problème temporaire avec la l'outil de traduction. Veuillez s'il vous plaît ré-essayer de nouveau plus tard. Nous vous prions de nous excuser pour le désagrément encouru.
    <br /><br />
    Sorry / Scuzi / Perdon / Nay canne doo tha laddy / Excuseer / Das is Nicht Gud / Sori
    ";
    }	
    else {
    echo Parse($result, $site, $_GET['langue']);
     
    		$page = ob_get_contents(); // copie du contenu du tampon dans une chaîne
    		ob_end_clean(); // effacement du contenu du tampon et arrêt de son fonctionnement        
    		file_put_contents($cache, $page) ; // on écrit la chaîne précédemment récupérée ($page) dans un fichier ($cache) 
    		echo $page ; // on affiche notre page 
    }
    }
    }
    else {
    header(
     "Status: 404 Not Found ", false, 404);
    header(
     "Location:" .$site.$url);
    exit();
    } 
     
    ?>
    Voila ce qui se trouve dans mon .htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^(es|en|fr|bg|ca|zh|zt|hr|cs|da|nl|tl|fi|de|el|hi|id|it|ja|ko|lv|lt|no|pl|pt|ro|ru|sr|sk|sl|sv|uk|vi|ar|iw)/(.*)$        traduire.php?langue=$1&page=$2 [L]

    Maintenant si vous allez ici http://www.actu-master.com/en/article415.html ça me redirige vers la page d'accueil (à savoir que article415.html est une réécriture d'une url sous cette forme index.php?page=article&article_id=415, mais même si j'entre directement cette dernière url cela ne fonctionne toujours pas) mais si par exemple vous allez ici http://www.actu-master.com/en/index.php?page=outils ça fonctionne.

    J'ai essayé avec le code (ci-dessous) pour voir si ca ne fonctionnait pas non plus, mais bizzarement ça marche, ce qui me laisse penser que mon code fonctionne bien, c'est surement un petit détail qui m'échappe :

    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
    28
    29
    30
     
    <?php
    include('config/config.php');
    require('incl/OutilTraductiongoogle.class.php');
    include('incl/func.php');
     
     
    if(url_exists("http://www.actu-master.com/category415.html"))
    {
     
    	ob_start(); // ouverture du tampon
     
    	// Initialiser le traducteur avec la configuration "Français -> $_GET['langue']"
    	$traducteur = new OutilTraductiongoogle('fr','en');
     
    	$result = $traducteur->traduire_URL("http://www.actu-master.com/category415.html");
     
    //Gestion des erreurs 403 et 302
    if ( $result===false ) echo $traducteur->return_error();
     
    else {
    echo Parse($result, 'http://www.actu-master.com', 'en');
     
    		$page = ob_get_contents(); // copie du contenu du tampon dans une chaîne
    		ob_end_clean(); // effacement du contenu du tampon et arrêt de son fonctionnement        
    		//file_put_contents($cache, $page) ; // on écrit la chaîne précédemment récupérée ($page) dans un fichier ($cache) 
    		echo $page ; // on affiche notre page 
    }
    }
    ?>
    Voila si vous avez des questions n'hésitez pas à m'en faire part.

    Quand j'aurai finis de travailler sur ce script j'aurai besoin de béta testeurs, si vous êtes intéressés faites moi signe.

    Merci d'avance.

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    salut ton probleme viens de cette ligne

    $nom_fichier = str_replace($site, '', $nom_fichier);

    $site n'a pas été defini

    et de plus ton script m'interesse si il egalement possible de traduire des chaines de caractères

Discussions similaires

  1. Script de traduction
    Par Frazeks dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 23/11/2010, 20h46
  2. script de traduction
    Par webide dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/08/2009, 22h43
  3. script de traduction
    Par webide dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/08/2009, 18h15
  4. aide traduction script
    Par calitom dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/07/2006, 11h54
  5. script de traduction
    Par kanzarih dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 30/01/2006, 09h23

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