PHP SDK
PHPとLingo.devによるAI翻訳
はじめに
Lingo.dev PHP SDKはPHPアプリケーションとLaravelプロジェクトにリアルタイムAI駆動の翻訳機能を追加します。このSDKはチャットメッセージ、ユーザーコメント、即時翻訳が必要なライブデータなどの動的コンテンツを処理します。
Lingo.dev CLIによる静的ファイルのローカライゼーションとは異なり、SDKはオンデマンドでコンテンツを処理するため、コンテンツが常に変化するチャットアプリケーション、メールクライアント、ソーシャルメディアツールに最適です。
インストール
composer require lingodotdev/sdk
基本設定
SDKはLingo.devのAPIキーが必要です。
<?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);
// 出力: 構造を維持したフランス語翻訳の配列
複数言語へのバッチ翻訳
1回の呼び出しで複数の目標言語にコンテンツを翻訳します。目標ロケールごとに1つの結果を含む配列を返します。
<?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' => '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";
}
// 出力:
// Alice: Hallo, wie geht es dir?
// Bob: Mir geht es gut, danke!
// Alice: Was machst du heute?
進捗状況の追跡
コールバックを使用して翻訳の進捗状況を監視します。大規模な翻訳操作中にUIを更新するのに役立ちます。
<?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";
});
// 出力:
// 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, // 品質より速度を優先
]);
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('Configuration test', [
'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());
// 適切にエラーを処理する
}