client = new Client([ 'base_uri' => LIBRETRANSLATE_URL, 'timeout' => 10.0, 'verify' => false ]); } public function translate($text, $targetLang, $sourceLang = 'auto') { try { $response = $this->client->post('/translate', [ 'json' => [ 'q' => $text, 'source' => $sourceLang, 'target' => $targetLang, 'format' => 'text' ] ]); $body = json_decode($response->getBody()->getContents(), true); if (isset($body['translatedText'])) { return $body['translatedText']; } return null; } catch (RequestException $e) { error_log("Error en traducción: " . $e->getMessage()); return null; } } public function translateBatch($texts, $targetLang, $sourceLang = 'auto') { try { $response = $this->client->post('/translate', [ 'json' => [ 'q' => $texts, 'source' => $sourceLang, 'target' => $targetLang, 'format' => 'text' ] ]); $body = json_decode($response->getBody()->getContents(), true); // LibreTranslate devuelve un array de objetos con la clave 'translatedText' if (isset($body['translatedText']) && is_array($body['translatedText'])) { return $body['translatedText']; } } catch (RequestException $e) { error_log("Error en traducción por lotes: " . $e->getMessage()); return null; } return null; } }