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 Client
  • Respect Validation