🔺 شرح Laravel

التوطين والترقيم

التوطين (Localization)

لدعم عدّة لغات. تُحفظ الترجمات في lang/:

<?php
// lang/ar/messages.php
return [
    'welcome' => 'مرحبًا بك',
    'goodbye' => 'إلى اللقاء',
];

// lang/en/messages.php
return [
    'welcome' => 'Welcome',
    'goodbye' => 'Goodbye',
];

استخدام الترجمات

<?php
echo __('messages.welcome');   // حسب اللغة الحالية

في Blade:

<h1>{{ __('messages.welcome') }}</h1>

تغيير اللغة

<?php
use Illuminate\Support\Facades\App;

App::setLocale('ar');
echo App::getLocale();   // ar

اللغة الافتراضية في config/app.php:

<?php
'locale' => 'ar',
'fallback_locale' => 'en',

ترجمات بمتغيّرات

<?php
// 'greeting' => 'أهلًا :name',
echo __('messages.greeting', ['name' => 'سارة']);
// أهلًا سارة

الترقيم (Pagination)

تقسيم النتائج الكثيرة لصفحات تلقائيًّا:

<?php
$posts = Post::paginate(10);   // 10 لكل صفحة
return view('posts.index', compact('posts'));

عرض النتائج والروابط في Blade:

@foreach($posts as $post)
  <h2>{{ $post->title }}</h2>
@endforeach

{{ $posts->links() }}   {{-- روابط الصفحات تلقائيًّا --}}

تخصيص الترقيم

<?php
$posts = Post::where('published', true)
    ->orderBy('created_at', 'desc')
    ->paginate(15)
    ->withQueryString();   // يحافظ على معاملات البحث في الروابط

💡 links() يولّد HTML متوافقًا مع Tailwind/Bootstrap. خصّص القالب بـ php artisan vendor:publish --tag=laravel-pagination.

أخطاء شائعة

  • استخدام get() ثم تقطيع النتائج يدويًّا بدل paginate().
  • نسيان withQueryString() فتضيع فلاتر البحث عند تغيير الصفحة.

🎯 التالي: بناء واجهات API.