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.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. ترجمة المحتوى
-
قم بتسجيل الدخول إلى 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 للمحتوى باللغة الإسبانية