PHP SDK
AI-перевод с использованием PHP и Lingo.dev
Введение
Lingo.dev PHP SDK добавляет возможность перевода в реальном времени с использованием ИИ в PHP-приложения и проекты на Laravel. SDK обрабатывает динамический контент, такой как сообщения чата, пользовательские комментарии и данные в реальном времени, которые требуют мгновенного перевода.
В отличие от статической локализации файлов с помощью Lingo.dev CLI, SDK обрабатывает контент по запросу, что делает его идеальным для чат-приложений, почтовых клиентов и инструментов социальных сетей, где контент постоянно меняется.
Установка
composer require lingodotdev/sdk
Базовая настройка
Для работы SDK требуется API-ключ от Lingo.dev.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
Перевод текста
Переводите простые текстовые строки на целевой язык.
<?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;
// Вывод: ¡Hola, mundo!
Перевод объектов
Переводите вложенные массивы с сохранением структуры. SDK рекурсивно обрабатывает все строковые значения.
<?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);
// Вывод: Массив с переводами на французский язык с сохранением структуры
Пакетный перевод на несколько языков
Переводите контент на несколько целевых языков за один вызов. Возвращает массив с одним результатом для каждого целевого языка.
<?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);
// Вывод: ["¡Hola, mundo!", "Bonjour le monde!", "Hallo, Welt!"]
Перевод чата
Переводите сообщения чата, сохраняя имена участников. Каждое сообщение должно содержать поля "name" и "text".
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$conversation = [
['name' => 'Алиса', 'text' => 'Привет, как дела?'],
['name' => 'Боб', 'text' => 'У меня всё хорошо, спасибо!'],
['name' => 'Алиса', 'text' => 'Что ты делаешь сегодня?']
];
$translated = $engine->localizeChat($conversation, [
'sourceLocale' => 'en',
'targetLocale' => 'de',
]);
foreach ($translated as $message) {
echo $message['name'] . ': ' . $message['text'] . "\n";
}
// Результат:
// Алиса: Hallo, wie geht es dir?
// Боб: Mir geht es gut, danke!
// Алиса: Was machst du heute?
Отслеживание прогресса
Отслеживайте прогресс перевода с помощью обратного вызова. Полезно для обновления интерфейса пользователя при выполнении крупных операций перевода.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$largeText = 'Это очень длинный текст, который нужно перевести...';
$result = $engine->localizeText($largeText, [
'sourceLocale' => 'en',
'targetLocale' => 'es',
], function ($progress, $chunk, $processedChunk) {
echo "Прогресс перевода: $progress%\n";
});
// Результат:
// Прогресс перевода: 25%
// Прогресс перевода: 50%
// Прогресс перевода: 75%
// Прогресс перевода: 100%
Параметры перевода
Контроль скорости и качества для приложений с ограничением по времени.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
]);
$result = $engine->localizeText('Привет, мир', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
'fast' => true, // Приоритет скорости над качеством
]);
echo $result;
// Результат: Hola mundo
Конфигурация
Управляйте поведением пакетной обработки. SDK разделяет большие данные на основе количества элементов и ограничений по количеству слов.
<?php
require 'vendor/autoload.php';
use LingoDotDev\Sdk\LingoDotDevEngine;
$engine = new LingoDotDevEngine([
'apiKey' => $_ENV['LINGODOTDEV_API_KEY'],
'batchSize' => 100, // Максимальное количество элементов на запрос API (по умолчанию: 50, максимум: 250)
'idealBatchItemSize' => 1000, // Целевое количество слов на пакет (по умолчанию: 500, максимум: 2500)
]);
$result = $engine->localizeText('Тест конфигурации', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
echo $result;
// Результат: Prueba de configuración
Определение языка
Определите язык текстовой строки. Используйте только в случае, если исходный язык неизвестен, так как определение добавляет время обработки.
<?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;
// Вывод: fr
Использование с автоматическим определением:
<?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, // Автоопределение
'targetLocale' => 'en',
]);
echo $result;
// Вывод: Hello world
Интеграция с Laravel
Использование в приложениях 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]);
}
}
Обработка ошибок
SDK включает автоматические повторные попытки для сетевых проблем. Реализуйте обработку ошибок на уровне приложения для других сбоев.
<?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('Перевод не удался: ' . $e->getMessage());
// Обработайте ошибку соответствующим образом
}