SDK PHP
Le SDK PHP Lingo.dev ajoute des traductions en temps réel propulsées par l'IA 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 nécessitant 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
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => 'your-api-key-here',
]);
Traduction de texte
Traduire un texte simple :
$result = $engine->localizeText('Hello, world!', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
// Retourne : "¡Hola, mundo!"
Traduire vers plusieurs langues :
$results = $engine->batchLocalizeText('Hello, world!', [
'sourceLocale' => 'en',
'targetLocales' => ['es', 'fr', 'de'],
]);
// Retourne : ["¡Hola, mundo!", "Bonjour le monde!", "Hallo, Welt!"]
Traduction d'objets
Traduire des données structurées :
$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',
]);
// Retourne un tableau traduit avec la même structure
Cette méthode gère les tableaux imbriqués et préserve la structure originale tout en traduisant les valeurs textuelles.
Traduction de chat
Traduire des tableaux de conversation :
$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',
]);
// Retourne une conversation traduite avec la même structure
La méthode de chat préserve les métadonnées comme les noms d'utilisateurs tout en traduisant uniquement le contenu textuel.
Détection de langue
Détecter automatiquement la langue source :
$locale = $engine->recognizeLocale('Bonjour le monde');
// Retourne : 'fr'
Utilisation avec détection automatique :
$result = $engine->localizeText('Bonjour le monde', [
'sourceLocale' => null, // Détection automatique
'targetLocale' => 'en',
]);
// Retourne : "Hello world"
La détection de langue ajoute du temps de traitement, donc utilisez-la uniquement lorsque la langue source est inconnue.
Options de configuration
Configurer le comportement du SDK :
$engine = new LingoDotDevEngine([
'apiKey' => 'your-api-key-here',
'batchSize' => 100, // Nombre maximum d'éléments par requête API (défaut : 50, max : 250)
'idealBatchItemSize' => 1000, // Nombre de mots cible par lot (défaut : 500, max : 2500)
]);
Taille de lot contrôle combien d'éléments sont envoyés dans chaque requête API. Des valeurs plus élevées réduisent les appels API mais augmentent la taille des requêtes.
Taille idéale d'élément de lot contrôle le nombre de mots cible pour une efficacité de traitement optimale.
Paramètres de traduction
Contrôle vitesse vs qualité :
$result = $engine->localizeText('Hello world', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
'fast' => true, // Prioriser la vitesse plutôt que la qualité
]);
Le paramètre fast
permet des traductions plus rapides avec une qualité potentiellement réduite pour les applications sensibles au temps.
Suivi de progression
Surveiller les tâches de traduction volumineuses :
$engine->localizeText('Hello, world!', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
], function ($progress, $chunk, $processedChunk) {
echo "Progression de la traduction : $progress%\n";
// Mettre à jour l'interface utilisateur ou enregistrer la progression
});
Les callbacks de progression fournissent un retour en temps réel pour les opérations de traduction volumineuses, utile pour les mises à jour d'interface utilisateur.
Gestion des erreurs
Implémenter une gestion d'erreurs appropriée :
try {
$result = $engine->localizeText('Hello', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
} catch (Exception $e) {
error_log('Échec de traduction : ' . $e->getMessage());
// Gérer l'erreur de manière appropriée
}
Le SDK inclut des tentatives automatiques pour les problèmes réseau, mais la gestion des erreurs au niveau de l'application reste importante.
Intégration Laravel
Utilisation dans les applications Laravel :
// Dans un contrôleur 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]);
}
}
Prérequis
- PHP 8.1 ou supérieur
- Composer
- GuzzleHttp Client
- Respect Validation