مكتبة PHP SDK
تضيف مكتبة Lingo.dev PHP SDK ترجمة فورية مدعومة بالذكاء الاصطناعي إلى تطبيقات PHP ومشاريع Laravel. تتعامل المكتبة مع المحتوى الديناميكي مثل رسائل الدردشة وتعليقات المستخدمين والبيانات المباشرة التي تحتاج إلى ترجمة فورية.
على عكس توطين الملفات الثابتة باستخدام Lingo.dev CLI، تقوم المكتبة بمعالجة المحتوى عند الطلب، مما يجعلها مثالية لتطبيقات الدردشة وعملاء البريد الإلكتروني وأدوات وسائل التواصل الاجتماعي حيث يتغير المحتوى باستمرار.
التثبيت
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');
// Returns: 'fr'
الاستخدام مع الاكتشاف التلقائي:
$result = $engine->localizeText('Bonjour le monde', [
'sourceLocale' => null, // Auto-detect
'targetLocale' => 'en',
]);
// Returns: "Hello world"
يضيف اكتشاف اللغة وقتًا للمعالجة، لذا استخدمه فقط عندما تكون لغة المصدر غير معروفة.
خيارات التكوين
تكوين سلوك SDK:
$engine = new LingoDotDevEngine([
'apiKey' => 'your-api-key-here',
'batchSize' => 100, // Max items per API request (default: 50, max: 250)
'idealBatchItemSize' => 1000, // Target word count per batch (default: 500, max: 2500)
]);
حجم الدفعة يتحكم في عدد العناصر المرسلة في كل طلب API. القيم الأعلى تقلل من استدعاءات API ولكنها تزيد من حجم الطلب.
حجم عنصر الدفعة المثالي يتحكم في عدد الكلمات المستهدفة لكفاءة المعالجة المثلى.
معلمات الترجمة
التحكم في السرعة مقابل الجودة:
$result = $engine->localizeText('Hello world', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
'fast' => true, // Prioritize speed over quality
]);
تتيح معلمة fast
ترجمات أسرع مع احتمال انخفاض الجودة للتطبيقات الحساسة للوقت.
تتبع التقدم
مراقبة مهام الترجمة الكبيرة:
$engine->localizeText('Hello, world!', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
], function ($progress, $chunk, $processedChunk) {
echo "Translation progress: $progress%\n";
// Update UI or log progress
});
توفر استدعاءات التقدم تعليقات في الوقت الفعلي لعمليات الترجمة الكبيرة، وهي مفيدة لتحديثات واجهة المستخدم.
معالجة الأخطاء
تنفيذ معالجة الأخطاء بشكل صحيح:
try {
$result = $engine->localizeText('Hello', [
'sourceLocale' => 'en',
'targetLocale' => 'es',
]);
} catch (Exception $e) {
error_log('Translation failed: ' . $e->getMessage());
// Handle error appropriately
}
يتضمن SDK إعادة محاولات تلقائية لمشاكل الشبكة، ولكن تظل معالجة الأخطاء على مستوى التطبيق مهمة.
تكامل لارافيل
الاستخدام في تطبيقات لارافيل:
// في متحكم لارافيل
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