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);
// 출력: 구조를 유지하는 프랑스어 번역이 포함된 배열
여러 언어로 일괄 번역
단일 호출로 콘텐츠를 여러 대상 언어로 번역합니다. 대상 로케일별로 하나의 결과가 포함된 배열을 반환합니다.
<?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";
}
// Output:
// 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";
});
// 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;
// 출력: 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
라라벨 통합
라라벨 애플리케이션에서 사용하기.
<?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());
// 적절하게 오류 처리
}