في الأساس، لا يُفتح laravel-translation-manager تلقائيًا على عنوان URL افتراضي (مثل "/translations")، لأن هذه الحزمة تتيح لك تخصيص الإعدادات المتعلقة بالمسار (route) والـ middleware الخاصة به حسب رغبتك. فيما يلي سأشير إلى بعض النقاط الأساسية من راديب:

  1. إمكانية تخصيص المسارات
    تستخدم الحزمة ملف إعداد (config/translation-manager.php) الذي يمكنك من خلاله تعيين بادئة (prefix) المسار وكذلك الـ middleware المستخدمة للوصول إلى واجهة المستخدم للترجمة. على سبيل المثال، إذا أردت استخدام المسار «/translations»، يجب تعيينه في ملف الإعداد بهذه الطريقة:

    'route' => [
        'prefix'     => 'translations',
        'middleware' => ['web', 'auth'], // في Laravel 5.2 وما فوق، يجب إضافة middleware 'web'
    ],
    

    إذا لم تقم بتغيير هذه الإعدادات أو استخدمت "auth" فقط بدون "web"، خصوصًا في الإصدارات الحديثة من Laravel التي تحتاج إلى الجلسات وغيرها من ميزات الـ web middleware، فلن تُعرض واجهة المستخدم بشكل صحيح.

  2. الحاجة إلى نشر إعدادات الحزمة والواجهات
    لاستخدام الحزمة، يجب تشغيل الأمر التالي لنشر ملفات الإعداد والواجهات الافتراضية:

    php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=config
    php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=views
    

    إذا لم تقم بتنفيذ هذه الخطوات، فلن تُحمّل الحزمة بشكل صحيح بسبب عدم وجود إعدادات مخصصة أو واجهات منشورة.

  3. الاعتبارات الأمنية والتحكم في الوصول
    أحد الأسباب الرئيسية لعدم فتح واجهة الترجمة افتراضيًا هو حرصها على منع الوصول غير المصرح به. لهذا السبب، تتيح لك الحزمة استخدام middleware مثل auth (وفي حال الحاجة، web) بحيث يتمكن المستخدمون المصرح لهم (مثل المديرين) فقط من الوصول إلى هذا القسم. وهذا الأمر ذو أهمية خاصة في بيئات الإنتاج.

  4. إصدارات Laravel وتغييرات الـ middleware
    في Laravel 5.2 وما فوق، يُعتبر middleware "web" ضروريًا للوصول إلى الجلسات وغيرها من الميزات الأساسية. إذا استخدمت في ملف الإعداد فقط "auth"، فلن تُحمّل بيانات الجلسة بشكل صحيح، مما يؤدي إلى عدم عرض واجهة المستخدم للحزمة بالشكل الصحيح. لذا، فإن إضافة "web" إلى مصفوفة الـ middleware أمر ضروري.

مثال عملي

افترض أن الإعدادات الأولية للحزمة كما يلي:

شراء الخادم الافتراضي والخادم السحابي بأفضل الأسعار من راديب، انقر هنا

// config/translation-manager.php
'route' => [
    'prefix'     => 'translations',
    'middleware' => 'auth', // المشكلة هنا!
],

لعمل الحزمة بشكل صحيح في Laravel 5.2 وما فوق، يجب تعديلها إلى الشكل التالي:

// config/translation-manager.php
'route' => [
    'prefix'     => 'translations',
    'middleware' => ['web', 'auth'],
],

ثم تأكد من نشر ملفات الإعداد والواجهات:

php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=config
php artisan vendor:publish --provider="Barryvdh\TranslationManager\ManagerServiceProvider" --tag=views

وأخيرًا، بتشغيل الأمر:

تسجيل النطاق الفوري بثلاث نقرات فقط، سجل نطاقك الآن

php artisan config:clear

ستُطبق الإعدادات الجديدة ويجب أن تكون واجهة المستخدم للحزمة متاحة على العنوان

http://yourdomain.com/translations

متاحة.

نصائح إضافية

  • موقع الوصول: لاحظ أن الحزمة توفر واجهة المستخدم افتراضيًا على عنوان URL المحدد (مثل /translations)؛ أي إذا كنت تتوقع أن تُفتح على الصفحة الرئيسية (/)، فهذا غير موجود.
  • الإعدادات الأمنية: نظرًا لأن الترجمات تُخزن في قاعدة البيانات وتحظى بأولوية أعلى من ملفات اللغة، فإن التغييرات تُطبق عبر هذه الواجهة؛ لذلك، تعتبر الإعدادات الأمنية في بيئة الإنتاج ذات أهمية بالغة.

باختصار، نظرًا لأن laravel-translation-manager يسعى إلى منحك مرونة كاملة في تخصيص المسار والأمان، فإنه لا يُفتح افتراضيًا على عنوان URL محدد، ويجب عليك إجراء الإعدادات المطلوبة (مثل إضافة الـ middleware المناسب ونشر ملفات الإعداد) حتى تُعرض واجهة المستخدم الخاصة به بشكل صحيح في مشروعك. إذا كانت لديك أسئلة إضافية حول هذا الموضوع، تواصل مع خبرائنا عبر قسم تذكرة الدعم.

هل كانت المقالة مفيدة ؟ 131 أعضاء وجدوا هذه المقالة مفيدة (131 التصويتات)