Bonjour à tous,

J'essaie de faire un script qui traduit un texte grâce à Google Traduction.

Malheureusement, j'ai un petit problème: l'accentuation semble posé problème... Pourtant, je travaille en UTF-8, Google aussi ... J'ai essayé de travailler ma page en iso-8859-15, le problème est plus ou moins similaire une fois qu'on joue avec utf8_encode/decode. J'ai aussi essayé de jouer avec utf8_encode/decode et mb_convert sur la version ut8 de la page. Je me suis dit que le problème venait peut être de l'utilisation du DomDocument, alors j'ai essayé avec file_get_contents mais je n'ai toujours pas réussi à résoudre le problème.

Pour être plus clair, voici le code:
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
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>TEST 01</title>
    <link rel="stylesheet" type="text/css" title="Design" href="css/design.css" />
  </head>
  <body><p>
<?php
 
$from= "fr";
$to = "en";
$source = "url:http://www.tv5.org/TV5Site/info/afp_article.php?idrub=15&xml=newsmlmmd.2f8b5b227cce71fce5efb88778a3bbd7.201.xml [tok] Pâte d'arachide contaminée aux USA: ouverture d'une enquête criminelle [tok] Le ministère américain de la Justice et l'Agence de réglementation de l'alimentation (FDA) ont ouvert une enquête criminelle dans l'affaire de la vaste intoxication alimentaire à la pâte d'arachide contaminée aux salmonelles, a indiqué vendredi un porte-parole de la FDA.";
 
$new_url = 'http://translate.google.com/translate_t?langpair='.$from.'%7C'.$to.'&text='.urlencode($source).'#';
 
	  $doc = new DOmDocument;
	  if(@$doc->loadHTMLFile($new_url)) {   
        $h1 = $doc->getElementsByTagName("h1");
        $child = $h1->item(0);
        while ($child) {
          if($child->nodeName=='form') {
             $div = $child->getElementsByTagName("div");
            for ($i = 0; $i < $div->length; $i++) {
              if($div->item($i)->getAttribute('id') == 'result_box') { 
                $tnl = $div->item($i)->nodeValue; 
              }
            }
          }
          $child = $child->nextSibling;
        }
        $content = explode(" [tok] ", $tnl);
        print_r($content);
    }
?></p>
</body>
</html>
Une autre version avec des comments de diverses possibilités que j'ai essayé:
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
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">
    <title>TEST 02</title>
    <link rel="stylesheet" type="text/css" title="Design" href="css/design.css" />
  </head>
  <body>
<?php
 
$from= "fr";
$to = "en";
$source = "url:http://www.tv5.org/TV5Site/info/afp_article.php?idrub=15&xml=newsmlmmd.2f8b5b227cce71fce5efb88778a3bbd7.201.xml [tok] Pâte d'arachide contaminée aux USA: ouverture d'une enquête criminelle [tok] Le ministère américain de la Justice et l'Agence de réglementation de l'alimentation (FDA) ont ouvert une enquête criminelle dans l'affaire de la vaste intoxication alimentaire à la pâte d'arachide contaminée aux salmonelles, a indiqué vendredi un porte-parole de la FDA.";
echo $source.'<br />';
$new_url = 'http://translate.google.com/translate_t?langpair='.$from.'%7C'.$to.'&text='.urlencode($source).'#';
    echo $new_url;
 
	  /*$doc = new DOmDocument;
	  if(@$doc->loadHTMLFile($new_url)) {   
        $h1 = $doc->getElementsByTagName("h1");
        $child = $h1->item(0);
        while ($child) {
          if($child->nodeName=='form') {
             $div = $child->getElementsByTagName("div");
            for ($i = 0; $i < $div->length; $i++) {
              if($div->item($i)->getAttribute('id') == 'result_box') { 
                $tnl = $div->item($i)->nodeValue; 
              }
            }
          }
          $child = $child->nextSibling;
        }
        $tnl = mb_convert_encoding($tnl, 'ISO-8859-15', 'UTF-8');
        $content = explode(" [tok] ", $tnl);
        print_r($content);
    }*/
 
    $tmp = file_get_contents($new_url);
    //$tmp = mb_convert_encoding($tmp, 'ISO-8859-1', 'UTF-8');
    /*$begin = strpos($tmp, '<div id=result_box dir="ltr">') + 29;
    $end =  strpos($tmp, '<', $begin) - $begin;
    $tmp = substr($tmp, $begin, $end);*/
    print_r($tmp);
?>
 
</body>
</html>
J'ai beau cherché, je comprends pas... Je m'en remets à vous