PHP SDK

Lingo.dev PHP SDK 为 PHP 应用程序和 Laravel 项目添加了实时 AI 驱动的翻译功能。该 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 请求发送的项目数量。较高的值可以减少 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";
    // 更新 UI 或记录进度
});

进度回调为大型翻译操作提供实时反馈,这对于用户界面更新非常有用。

错误处理

实现适当的错误处理:

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 客户端
  • Respect Validation