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
}