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