SDK de PHP
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 gestiona 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
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => 'your-api-key-here',
]);
Traducción de texto
Traducir texto simple:
$result = $engine->localizeText('Hello, world!', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
// Devuelve: "¡Hola, mundo!"
Traducir a múltiples idiomas:
$results = $engine->batchLocalizeText('Hello, world!', [
'sourceLocale' => 'en',
'targetLocales' => ['es', 'fr', 'de'],
]);
// Devuelve: ["¡Hola, mundo!", "Bonjour le monde!", "Hallo, Welt!"]
Traducción de objetos
Traducir datos estructurados:
$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',
]);
// Devuelve un array traducido con la misma estructura
Este método maneja arrays anidados y preserva la estructura original mientras traduce los valores de texto.
Traducción de chat
Traducir arrays de conversación:
$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',
]);
// Devuelve la conversación traducida con la misma estructura
El método de chat preserva metadatos como nombres de usuario mientras traduce solo el contenido textual.
Detección de idioma
Detectar automáticamente el idioma de origen:
$locale = $engine->recognizeLocale('Bonjour le monde');
// Devuelve: 'fr'
Usar con detección automática:
$result = $engine->localizeText('Bonjour le monde', [
'sourceLocale' => null, // Detección automática
'targetLocale' => 'en',
]);
// Devuelve: "Hello world"
La detección de idioma añade tiempo de procesamiento, por lo que debe usarse solo cuando se desconoce el idioma de origen.
Opciones de configuración
Configurar el comportamiento del SDK:
$engine = new LingoDotDevEngine([
'apiKey' => 'your-api-key-here',
'batchSize' => 100, // Máximo de elementos por solicitud API (predeterminado: 50, máximo: 250)
'idealBatchItemSize' => 1000, // Cantidad objetivo de palabras por lote (predeterminado: 500, máximo: 2500)
]);
Tamaño del lote controla cuántos elementos se envían en cada solicitud API. Valores más altos reducen las llamadas API pero aumentan el tamaño de la solicitud.
Tamaño ideal del elemento del lote controla el recuento objetivo de palabras para una eficiencia de procesamiento óptima.
Parámetros de traducción
Control de velocidad vs calidad:
$result = $engine->localizeText('Hello world', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
'fast' => true, // Priorizar velocidad sobre calidad
]);
El parámetro fast
permite traducciones más rápidas con una posible reducción de calidad para aplicaciones sensibles al tiempo.
Seguimiento de progreso
Monitorizar trabajos de traducción grandes:
$engine->localizeText('Hello, world!', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
], function ($progress, $chunk, $processedChunk) {
echo "Progreso de traducción: $progress%\n";
// Actualizar UI o registrar progreso
});
Los callbacks de progreso proporcionan retroalimentación en tiempo real para operaciones de traducción grandes, útiles para actualizaciones de interfaz de usuario.
Manejo de errores
Implementar un manejo de errores adecuado:
try {
$result = $engine->localizeText('Hello', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
} catch (Exception $e) {
error_log('Traducción fallida: ' . $e->getMessage());
// Manejar el error apropiadamente
}
El SDK incluye reintentos automáticos para problemas de red, pero el manejo de errores a nivel de aplicación sigue siendo importante.
Integración con Laravel
Uso en aplicaciones Laravel:
// En un controlador de Laravel
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]);
}
}
Requisitos
- PHP 8.1 o superior
- Composer
- GuzzleHttp Client
- Respect Validation