SDK PHP
Traduction IA avec PHP et Lingo.dev
Introduction
Le SDK PHP Lingo.dev ajoute la traduction IA en temps réel aux applications PHP et aux projets Laravel. Le SDK gère le contenu dynamique comme les messages de chat, les commentaires d'utilisateurs et les données en direct qui nécessitent une traduction instantanée.
Contrairement à la localisation de fichiers statiques avec Lingo.dev CLI, le SDK traite le contenu à la demande, ce qui le rend idéal pour les applications de chat, les clients de messagerie et les outils de médias sociaux où le contenu change constamment.
Installation
composer require lingodotdev/sdk
Configuration de base
Le SDK nécessite une clé API de Lingo.dev.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
Traduction de texte
Traduisez des chaînes de texte simples vers une langue cible.
<?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;
// Output: ¡Hola, mundo!
Traduction d'objet
Traduisez des tableaux imbriqués tout en préservant la structure. Le SDK traite récursivement toutes les valeurs de chaîne.
<?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);
// Output: Array with French translations maintaining structure
Traduction par lot vers plusieurs langues
Traduisez du contenu vers plusieurs langues cibles en un seul appel. Renvoie un tableau avec un résultat par locale cible.
<?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);
// Output: ["¡Hola, mundo!", "Bonjour le monde!", "Hallo, Welt!"]
Traduction de chat
Traduisez les messages de chat tout en préservant les noms des interlocuteurs. Chaque message doit avoir à la fois les champs "name" et "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?
Suivi de la progression
Surveillez la progression de la traduction avec un callback. Utile pour mettre à jour l'interface utilisateur pendant les opérations de traduction volumineuses.
<?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%
Paramètres de traduction
Vitesse vs contrôle qualité pour les applications sensibles au temps.
<?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, // Prioritize speed over quality
]);
echo $result;
// Output: Hola mundo
Configuration
Contrôlez le comportement du traitement par lots. Le SDK divise les charges utiles volumineuses en fonction des contraintes de nombre d'éléments et de nombre de mots.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
'batchSize' => 100, // Max items per API request (default: 50, max: 250)
'idealBatchItemSize' => 1000, // Target word count per batch (default: 500, max: 2500)
]);
$result = $engine->localizeText('Configuration test', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
echo $result;
// Output: Prueba de configuración
Détection de langue
Détectez la langue d'une chaîne de texte. À utiliser uniquement lorsque la langue source est inconnue, car la détection ajoute du temps de traitement.
<?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
Utilisation avec détection automatique :
<?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
Intégration Laravel
Utilisation dans les applications 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]);
}
}
Gestion des erreurs
Le SDK inclut des tentatives automatiques pour les problèmes réseau. Implémentez une gestion des erreurs au niveau de l'application pour les autres échecs.
<?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
}