SDK de PHP
Traducción con IA usando PHP y Lingo.dev
Introducción
El SDK de PHP de Lingo.dev añade traducción en tiempo real impulsada por IA a aplicaciones PHP y proyectos Laravel. El SDK maneja contenido dinámico como mensajes de chat, comentarios de usuarios y datos en vivo que necesitan traducción instantánea.
A diferencia de la localización de archivos estáticos con Lingo.dev CLI, el SDK procesa contenido bajo demanda, lo que lo hace ideal para aplicaciones de chat, clientes de correo electrónico y herramientas de redes sociales donde el contenido cambia constantemente.
Instalación
composer require lingodotdev/sdk
Configuración básica
El SDK requiere una clave API de Lingo.dev.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
Traducción de texto
Traduce cadenas de texto simples a un idioma de destino.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$result = $engine->localizeText('Hello, world!', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
echo $result;
// Salida: ¡Hola, mundo!
Traducción de objetos
Traduce arrays anidados mientras preserva la estructura. El SDK procesa recursivamente todos los valores de cadena.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$content = [
'greeting' => 'Hello',
'farewell' => 'Goodbye',
'messages' => [
'welcome' => 'Welcome to our service',
'thanks' => 'Thank you for your business'
]
];
$translated = $engine->localizeObject($content, [
'sourceLocale' => 'en',
'targetLocale' => 'fr',
]);
print_r($translated);
// Salida: Array con traducciones en francés manteniendo la estructura
Traducción por lotes a múltiples idiomas
Traduce contenido a múltiples idiomas de destino en una sola llamada. Devuelve un array con un resultado por cada localización de destino.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$results = $engine->batchLocalizeText('Hello, world!', [
'sourceLocale' => 'en',
'targetLocales' => ['es', 'fr', 'de'],
]);
print_r($results);
// Salida: ["¡Hola, mundo!", "Bonjour le monde!", "Hallo, Welt!"]
Traducción de chat
Traduce mensajes de chat preservando los nombres de los interlocutores. Cada mensaje debe tener tanto campos "name" como "text".
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$conversation = [
['name' => 'Alice', 'text' => 'Hello, how are you?'],
['name' => 'Bob', 'text' => 'I am fine, thank you!'],
['name' => 'Alice', 'text' => 'What are you doing today?']
];
$translated = $engine->localizeChat($conversation, [
'sourceLocale' => 'en',
'targetLocale' => 'de',
]);
foreach ($translated as $message) {
echo $message['name'] . ': ' . $message['text'] . "\n";
}
// Output:
// Alice: Hallo, wie geht es dir?
// Bob: Mir geht es gut, danke!
// Alice: Was machst du heute?
Seguimiento de progreso
Monitoriza el progreso de traducción con un callback. Útil para actualizar la interfaz de usuario durante operaciones de traducción grandes.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$largeText = 'This is a very long text that needs translation...';
$result = $engine->localizeText($largeText, [
'sourceLocale' => 'en',
'targetLocale' => 'es',
], function ($progress, $chunk, $processedChunk) {
echo "Translation progress: $progress%\n";
});
// Output:
// Translation progress: 25%
// Translation progress: 50%
// Translation progress: 75%
// Translation progress: 100%
Parámetros de traducción
Control de velocidad vs calidad para aplicaciones sensibles al tiempo.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$result = $engine->localizeText('Hello world', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
'fast' => true, // Priorizar velocidad sobre calidad
]);
echo $result;
// Output: Hola mundo
Configuración
Controla el comportamiento de procesamiento por lotes. El SDK divide las cargas grandes basándose en restricciones de cantidad de elementos y recuento de palabras.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
'batchSize' => 100, // Máximo de elementos por solicitud API (predeterminado: 50, máximo: 250)
'idealBatchItemSize' => 1000, // Recuento objetivo de palabras por lote (predeterminado: 500, máximo: 2500)
]);
$result = $engine->localizeText('Configuration test', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
echo $result;
// Output: Prueba de configuración
Detección de idioma
Detecta el idioma de una cadena de texto. Úsalo solo cuando el idioma de origen es desconocido, ya que la detección añade tiempo de procesamiento.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$locale = $engine->recognizeLocale('Bonjour le monde');
echo $locale;
// Output: fr
Uso con detección automática:
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$result = $engine->localizeText('Bonjour le monde', [
'sourceLocale' => null, // Auto-detect
'targetLocale' => 'en',
]);
echo $result;
// Output: Hello world
Integración con Laravel
Uso en aplicaciones Laravel.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use LingoDotDev\Sdk\LingoDotDevEngine;
class TranslationController extends Controller
{
private $engine;
public function __construct()
{
$this->engine = new LingoDotDevEngine([
'apiKey' => config('services.lingodotdev.api_key'),
]);
}
public function translateMessage(Request $request)
{
$translated = $this->engine->localizeText($request->message, [
'sourceLocale' => $request->source_locale,
'targetLocale' => $request->target_locale,
]);
return response()->json(['translated' => $translated]);
}
}
Manejo de errores
El SDK incluye reintentos automáticos para problemas de red. Implementa el manejo de errores a nivel de aplicación para otros fallos.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
try {
$result = $engine->localizeText('Hello', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
echo $result;
} catch (Exception $e) {
error_log('Translation failed: ' . $e->getMessage());
// Handle error appropriately
}