Laravel

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

ما هو Laravel؟

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

ما هو Lingo.dev CLI؟

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

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

يشرح هذا الدليل كيفية إعداد Lingo.dev CLI في تطبيق 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.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {
    "php": {
      "include": ["lang/[locale]/*.php"]
    }
  }
}

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

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

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

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

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

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

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

  1. سجل للحصول على حساب Lingo.dev.

  2. سجل الدخول إلى Lingo.dev عبر CLI:

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

    npx lingo.dev@latest run
    

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

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

  1. أنشئ middleware لتعيين اللغة من المسار:

    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. سجل middleware في 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 التالية: