PHP SDK
الترجمة بالذكاء الاصطناعي باستخدام 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
}