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.