مجموعة أدوات تطوير PHP

الترجمة بالذكاء الاصطناعي مع PHP و Lingo.dev

مقدمة

تضيف مكتبة Lingo.dev PHP ترجمة فورية مدعومة بالذكاء الاصطناعي إلى تطبيقات PHP ومشاريع Laravel. تتعامل المكتبة مع المحتوى الديناميكي مثل رسائل الدردشة وتعليقات المستخدمين والبيانات المباشرة التي تحتاج إلى ترجمة فورية.

على عكس ترجمة الملفات الثابتة باستخدام واجهة سطر أوامر Lingo.dev، تعالج المكتبة المحتوى عند الطلب، مما يجعلها مثالية لتطبيقات الدردشة وعملاء البريد الإلكتروني وأدوات وسائل التواصل الاجتماعي حيث يتغير المحتوى باستمرار.

التثبيت

composer require lingodotdev/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;
// النتيجة: ¡Hola, mundo!

ترجمة الكائنات

ترجمة المصفوفات المتداخلة مع الحفاظ على البنية. تعالج المكتبة جميع القيم النصية بشكل متكرر.

<?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?

تتبع التقدم

مراقبة تقدم الترجمة باستخدام دالة رد الاتصال. مفيدة لتحديث واجهة المستخدم أثناء عمليات الترجمة الكبيرة.

<?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

تكامل لارافيل

استخدام في تطبيقات لارافيل.

<?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
}

تتضمن مجموعة أدوات التطوير (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
}