PHP SDK

Lingo.dev PHP SDK добавляет возможность перевода с использованием ИИ в реальном времени для PHP-приложений и проектов на Laravel. SDK обрабатывает динамический контент, такой как сообщения чата, пользовательские комментарии и данные в реальном времени, которые требуют мгновенного перевода.

В отличие от статической локализации файлов с помощью Lingo.dev CLI, SDK обрабатывает контент по запросу, что делает его идеальным для чат-приложений, почтовых клиентов и инструментов социальных сетей, где контент постоянно меняется.

Установка

composer require lingodotdev/sdk

Базовая настройка

<?php

require 'vendor/autoload.php';

use LingoDotDev\Sdk\LingoDotDevEngine;

$engine = new LingoDotDevEngine([
    'apiKey' => 'your-api-key-here',
]);

Перевод текста

Перевод простого текста:

$result = $engine->localizeText('Hello, world!', [
    'sourceLocale' => 'en',
    'targetLocale' => 'es',
]);
// Возвращает: "¡Hola, mundo!"

Перевод на несколько языков:

$results = $engine->batchLocalizeText('Hello, world!', [
    'sourceLocale' => 'en',
    'targetLocales' => ['es', 'fr', 'de'],
]);
// Возвращает: ["¡Hola, mundo!", "Bonjour le monde!", "Hallo, Welt!"]

Перевод объектов

Перевод структурированных данных:

$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',
]);
// Возвращает переведённый массив с той же структурой

Этот метод обрабатывает вложенные массивы и сохраняет оригинальную структуру, переводя текстовые значения.

Перевод чатов

Перевод массивов с диалогами:

$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',
]);
// Возвращает переведённый диалог с той же структурой

Метод для чатов сохраняет метаданные, такие как имена пользователей, переводя только текстовое содержимое.

Определение языка

Автоматическое определение исходного языка:

$locale = $engine->recognizeLocale('Bonjour le monde');
// Возвращает: 'fr'

Использование с автоматическим определением:

$result = $engine->localizeText('Bonjour le monde', [
    'sourceLocale' => null, // Автоопределение
    'targetLocale' => 'en',
]);
// Возвращает: "Hello world"

Определение языка увеличивает время обработки, поэтому используйте его только в случае, если исходный язык неизвестен.

Параметры конфигурации

Настройка поведения SDK:

$engine = new LingoDotDevEngine([
    'apiKey' => 'your-api-key-here',
    'batchSize' => 100, // Максимальное количество элементов на запрос API (по умолчанию: 50, максимум: 250)
    'idealBatchItemSize' => 1000, // Целевое количество слов на пакет (по умолчанию: 500, максимум: 2500)
]);

Размер пакета определяет, сколько элементов отправляется в каждом запросе API. Большие значения уменьшают количество запросов, но увеличивают размер запроса.

Целевой размер элемента пакета определяет целевое количество слов для оптимальной эффективности обработки.

Параметры перевода

Контроль скорости и качества:

$result = $engine->localizeText('Hello world', [
    'sourceLocale' => 'en',
    'targetLocale' => 'es',
    'fast' => true, // Приоритет скорости над качеством
]);

Параметр fast позволяет ускорить перевод с возможным снижением качества для приложений, где важна скорость.

Отслеживание прогресса

Мониторинг больших задач перевода:

$engine->localizeText('Hello, world!', [
    'sourceLocale' => 'en',
    'targetLocale' => 'es',
], function ($progress, $chunk, $processedChunk) {
    echo "Прогресс перевода: $progress%\n";
    // Обновление интерфейса или логирование прогресса
});

Обратные вызовы прогресса предоставляют обратную связь в реальном времени для крупных операций перевода, что полезно для обновления пользовательского интерфейса.

Обработка ошибок

Реализация корректной обработки ошибок:

try {
    $result = $engine->localizeText('Hello', [
        'sourceLocale' => 'en',
        'targetLocale' => 'es',
    ]);
} catch (Exception $e) {
    error_log('Ошибка перевода: ' . $e->getMessage());
    // Корректная обработка ошибки
}

SDK включает автоматические повторные попытки для сетевых проблем, но обработка ошибок на уровне приложения остается важной.

Интеграция с Laravel

Использование в приложениях Laravel:

// В контроллере 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]);
    }
}

Требования

  • PHP 8.1 или выше
  • Composer
  • GuzzleHttp Client
  • Respect Validation