Laravel
الترجمة بالذكاء الاصطناعي لـ Laravel باستخدام Lingo.dev CLI
ما هو Laravel؟
Laravel هو إطار عمل لتطبيقات الويب بلغة PHP يتميز ببنية تعبيرية وأنيقة. يوفر ميزات مدمجة للتوجيه والمصادقة والجلسات والتخزين المؤقت لبناء تطبيقات ويب حديثة.
ما هو Lingo.dev CLI؟
Lingo.dev هي منصة ترجمة مدعومة بالذكاء الاصطناعي. تقرأ واجهة سطر الأوامر Lingo.dev CLI الملفات المصدرية، وترسل المحتوى القابل للترجمة إلى نماذج اللغة الكبيرة، وتكتب الملفات المترجمة مرة أخرى إلى مشروعك.
حول هذا الدليل
يشرح هذا الدليل كيفية إعداد Lingo.dev CLI في تطبيق 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 CLI ترجمتها
- اللغات المراد الترجمة بينها
في هذه الحالة، يترجم التكوين ملفات لغة PHP من الإنجليزية إلى الإسبانية.
من المهم ملاحظة أن:
[locale]هو عنصر نائب يتم استبداله في وقت التشغيل. يضمن قراءة المحتوى من موقع واحد (مثلlang/en/auth.php) وكتابته إلى موقع مختلف (مثلlang/es/auth.php).- سيترجم Lingo.dev CLI جميع ملفات PHP في دليل اللغة التي تطابق هذا النمط.
لمعرفة المزيد، راجع تكوين i18n.json.
الخطوة 4. ترجمة المحتوى
-
سجل الدخول إلى Lingo.dev عبر CLI:
npx lingo.dev@latest login -
قم بتشغيل خط أنابيب الترجمة:
npx lingo.dev@latest runسينشئ CLI دليل
lang/es/لتخزين المحتوى المترجم وملفi18n.lockلتتبع ما تمت ترجمته (لمنع إعادة الترجمة غير الضرورية).
الخطوة 5. استخدام الترجمات
-
أنشئ middleware لتعيين اللغة من المسار:
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); } } -
سجل 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(); -
قم بتكوين المسارات مع بادئات اللغة في
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 للمحتوى الإسباني