Laravel

الترجمة بالذكاء الاصطناعي لـ Laravel باستخدام واجهة سطر أوامر Lingo.dev

ما هو Laravel؟

Laravel هو إطار عمل لتطبيقات الويب بلغة PHP يتميز بصيغة بناء واضحة وأنيقة. يوفر ميزات مدمجة للتوجيه والمصادقة والجلسات والتخزين المؤقت لبناء تطبيقات ويب حديثة.

ما هي واجهة سطر أوامر Lingo.dev؟

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

حول هذا الدليل

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

الخطوة 1. إعداد مشروع Laravel

  1. تثبيت PHP و Composer:

    /bin/bash -c "$(curl -fsSL https://php.new/install/mac/8.4)"
    
  2. تثبيت Laravel عالمياً:

    composer global require laravel/installer
    
  3. إنشاء مشروع Laravel جديد:

    laravel new example-app
    

    عند المطالبة:

    • اختر "None" لنوع المشروع
    • اختر "SQLite" لقاعدة البيانات
  4. الانتقال إلى دليل المشروع:

    cd example-app
    

الخطوة 2. إنشاء محتوى المصدر

  1. نشر ملفات اللغة الافتراضية لـ Laravel:

    php artisan lang:publish
    

    هذا ينشئ دليل lang/en مع ملفات الترجمة مثل lang/en/auth.php.

الخطوة 3. تكوين واجهة سطر الأوامر

في جذر المشروع، قم بإنشاء ملف i18n.json:

{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": 1.8,
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {
    "php": {
      "include": ["lang/[locale]/*.php"]
    }
  }
}

يحدد هذا الملف:

  • الملفات التي يجب على واجهة سطر أوامر Lingo.dev ترجمتها
  • اللغات المراد الترجمة بينها

في هذه الحالة، يقوم التكوين بترجمة ملفات لغة PHP من الإنجليزية إلى الإسبانية.

من المهم ملاحظة أن:

  • [locale] هو عنصر نائب يتم استبداله في وقت التشغيل. يضمن ذلك قراءة المحتوى من موقع واحد (مثل lang/en/auth.php) وكتابته إلى موقع مختلف (مثل lang/es/auth.php).
  • ستقوم واجهة سطر أوامر Lingo.dev بترجمة جميع ملفات PHP في دليل اللغة التي تطابق هذا النمط.

لمعرفة المزيد، راجع تكوين i18n.json.

الخطوة 4. ترجمة المحتوى

  1. قم بالتسجيل للحصول على حساب Lingo.dev.

  2. قم بتسجيل الدخول إلى Lingo.dev عبر واجهة سطر الأوامر:

    npx lingo.dev@latest login
    
  3. قم بتشغيل خط أنابيب الترجمة:

    npx lingo.dev@latest run
    

    ستقوم واجهة سطر الأوامر بإنشاء دليل lang/es/ لتخزين المحتوى المترجم وملف i18n.lock لتتبع ما تمت ترجمته (لمنع إعادة الترجمة غير الضرورية).

الخطوة 5. استخدام الترجمات

  1. قم بإنشاء برنامج وسيط لتعيين اللغة من المسار:

    php artisan make:middleware SetLocaleFromRoute
    
  2. قم بتحديث ملف app/Http/Middleware/SetLocaleFromRoute.php الذي تم إنشاؤه:

    <?php
    namespace App\Http\Middleware;
    
    use Closure;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\App;
    use Symfony\Component\HttpFoundation\Response;
    
    class SetLocaleFromRoute
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
         */
        public function handle(Request $request, Closure $next): Response
        {
            // 'locale' comes from the {locale} route parameter
            if ($locale = $request->route('locale')) {
                App::setLocale($locale); // sets the locale for this request
            }
    
            return $next($request);
        }
    }
    
  3. قم بتسجيل البرنامج الوسيط في bootstrap/app.php:

    <?php
    
    use Illuminate\Foundation\Application;
    use Illuminate\Foundation\Configuration\Exceptions;
    use Illuminate\Foundation\Configuration\Middleware;
    use App\Http\Middleware\SetLocaleFromRoute;
    
    return Application::configure(basePath: dirname(__DIR__))
        ->withRouting(
            web: __DIR__.'/../routes/web.php',
            commands: __DIR__.'/../routes/console.php',
            health: '/up',
        )
        ->withMiddleware(function (Middleware $middleware) {
            $middleware->alias([
                'setLocale' => SetLocaleFromRoute::class,
            ]);
        })
        ->withExceptions(function (Exceptions $exceptions): void {
            //
        })->create();
    
  4. قم بتكوين المسارات مع بادئات اللغة في routes/web.php:

    <?php
    
    use Illuminate\Support\Facades\Route;
    
    Route::redirect('/', '/en'); // default to English
    
    Route::prefix('{locale}')
        ->whereIn('locale', ['en', 'es'])
        ->middleware('setLocale')
        ->group(function () {
            Route::get('/', function () {
                return view('welcome');
            })->name('home');
        });
    
  5. استخدم دالة المساعدة __ لعرض المحتوى المترجم في العروض الخاصة بك:

    <!DOCTYPE html>
    <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>{{ config('app.name', 'Laravel') }}</title>
        </head>
        <body>
            <nav>
              <a href="{{ route('home', ['locale' => 'en']) }}" class="underline mr-4">English</a>
              <a href="{{ route('home', ['locale' => 'es']) }}" class="underline">Español</a>
            </nav>
    
            <p class="mb-6">{{ __('auth.throttle') }}</p>
        </body>
    </html>
    
  6. ابدأ خادم التطوير:

    npm install
    npm run build
    composer run dev
    
  7. انتقل إلى عناوين URL التالية: