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
}