Laravel
الترجمة بالذكاء الاصطناعي لـ Laravel باستخدام واجهة سطر أوامر Lingo.dev
ما هو Laravel؟
Laravel هو إطار عمل لتطبيقات الويب بلغة PHP يتميز بصيغة بناء واضحة وأنيقة. يوفر ميزات مدمجة للتوجيه والمصادقة والجلسات والتخزين المؤقت لبناء تطبيقات ويب حديثة.
ما هي واجهة سطر أوامر Lingo.dev؟
Lingo.dev هي منصة ترجمة مدعومة بالذكاء الاصطناعي. تقوم واجهة سطر أوامر Lingo.dev بقراءة ملفات المصدر، وإرسال المحتوى القابل للترجمة إلى نماذج اللغة الكبيرة، وكتابة الملفات المترجمة مرة أخرى إلى مشروعك.
حول هذا الدليل
يشرح هذا الدليل كيفية إعداد واجهة سطر أوامر Lingo.dev في تطبيق Laravel. ستتعلم كيفية إنشاء مشروع Laravel مع دعم التوطين، وتكوين خط أنابيب الترجمة، وتنفيذ تبديل اللغات.
الخطوة 1. إعداد مشروع Laravel
-
تثبيت PHP و Composer:
/bin/bash -c "$(curl -fsSL https://php.new/install/mac/8.4)" -
تثبيت Laravel عالمياً:
composer global require laravel/installer -
إنشاء مشروع Laravel جديد:
laravel new example-appعند المطالبة:
- اختر "None" لنوع المشروع
- اختر "SQLite" لقاعدة البيانات
-
الانتقال إلى دليل المشروع:
cd example-app
الخطوة 2. إنشاء محتوى المصدر
-
نشر ملفات اللغة الافتراضية لـ 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 ترجمتها
- اللغات المراد الترجمة بينها
في هذه الحالة، تقوم التهيئة بترجمة ملفات لغة PHP من الإنجليزية إلى الإسبانية.
من المهم ملاحظة أن:
[locale]هو عنصر نائب يتم استبداله وقت التشغيل. وهذا يضمن قراءة المحتوى من موقع واحد (مثلlang/en/auth.php) وكتابته إلى موقع مختلف (مثلlang/es/auth.php).- ستقوم واجهة سطر أوامر Lingo.dev بترجمة جميع ملفات PHP في دليل اللغة التي تطابق هذا النمط.
لمعرفة المزيد، راجع تهيئة i18n.json.
الخطوة 4. ترجمة المحتوى
-
قم بتسجيل الدخول إلى Lingo.dev عبر واجهة سطر الأوامر:
npx lingo.dev@latest login -
قم بتشغيل خط أنابيب الترجمة:
npx lingo.dev@latest runستقوم واجهة سطر الأوامر بإنشاء دليل
lang/es/لتخزين المحتوى المترجم وملفi18n.lockلتتبع ما تمت ترجمته (لمنع إعادة الترجمة غير الضرورية).
الخطوة 5. استخدام الترجمات
-
قم بإنشاء برنامج وسيط لتعيين اللغة من المسار:
php artisan make:middleware SetLocaleFromRoute -
قم بتحديث ملف
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); } } -
قم بتسجيل البرنامج الوسيط في
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(); -
قم بتكوين المسارات مع بادئات اللغة في
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'); }); -
استخدم دالة المساعدة
__لعرض المحتوى المترجم في العروض الخاصة بك:<!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> -
ابدأ خادم التطوير:
npm install npm run build composer run dev -
انتقل إلى عناوين URL التالية:
- http://localhost:8000/en للمحتوى باللغة الإنجليزية
- http://localhost:8000/es للمحتوى باللغة الإسبانية