Recurro a vosotros, ya que me he quedado estancado.
Os explico, tengo ésta función, que lo que hace es conectarse al API Google Translate V2 y traducir textos. Hay un problema, si el texto a traducir es muy largo, hay que dividirlo, ya que por URL se puede pasar un máximo de 450 caracteres. Por tanto, lo que hago es dividir el texto en juegos de 450 caracteres y al final, lo vuelvo a juntar para su salida:
Código PHP:
function Translate($Texto, $Idioma1, $Idioma2, $html = boolean){
$Text = $Texto;
$Key = "Mi-API-Key";
$apiUrl = "https://www.googleapis.com/language/translate/v2";
$From = $Idioma1;
$To = $Idioma2;
if($html == true){
$Format = 'html';
}else{
$Format = 'text';
}
if(strlen($Text)>450){ //Detecto si el texto es superior a 450 caracteres
$TXT_Parts = str_split($Text, 450); //Lo divido en partes iguales de 450
$get1 = array();
$get2 = array();
$url = array();
$TXT_Part = array();
for($i=0; $i<count($TXT_Parts); $i++){
$url[$i] = $apiUrl."?format=".$Format."&key=".$Key."&q=".urlencode($TXT_Parts[$i])."&source=".$From."&target=".$To;
$get1[$i] = file_get_contents($url[$i]);
$get2[$i] = json_decode($get1[$i]);
foreach ($get2[$i]->data->translations as $text) {
$TXT_Part[$i] = $text->translatedText;
}
}
return implode('',$TXT_Part); //Junto todas las partes resultantes
}else{
$url = $apiUrl."?format=".$Format."&key=".$Key."&q=".urlencode($Text)."&source=".$From."&target=".$To;
$get1 = file_get_contents($url);
$get2 = json_decode($get1);
foreach ($get2->data->translations as $text) {
return $text->translatedText;
}
}
}
- Evitar partir palabras cuando parto el texto (1-> Hola como est | 2-> án ustedes).
- Evitar partir palabras entre etiquetas HTML (<a></a>, <b></b>, etc)
Alguien tiene alguna idea?
Gracias a todos!!!