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;
// Output: ¡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);
// Output: Array with French translations maintaining structure

Пакетный перевод на несколько языков

Переводите контент на несколько целевых языков за один вызов. Возвращает массив с результатом для каждого языка.

<?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!"]

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

Переводите сообщения чата с сохранением имён собеседников. В каждом сообщении должны быть поля "name" и "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?

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

Следите за прогрессом перевода с помощью callback-функции. Полезно для обновления интерфейса при больших объёмах перевода.

<?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%

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

Контроль баланса между скоростью и качеством для приложений с жёсткими сроками.

<?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

Конфигурация

Управляйте поведением пакетирования. SDK разбивает большие пакеты по ограничениям на количество элементов и слов.

<?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

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

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

<?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

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

<?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

Интеграция с 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('Translation failed: ' . $e->getMessage());
    // Handle error appropriately
}