← رجوع

ترجمة التطبيقات في Laravel: الأنواع والطرق المختلفة

R

UNIXMAN

Mar 15, 2026

Article Image

عند بناء تطبيق متعدد اللغات في Laravel، أول ما يتبادر إلى الذهن هو ملفات الترجمة داخل مجلد lang. لكن نظام الترجمة في Laravel أوسع من ذلك بكثير، وقد تطور عبر الإصدارات ليصبح أكثر مرونة.

Laravel لا يتعامل مع الترجمة كميزة سطحية، بل كجزء من بنية التطبيق نفسها. وهذا يظهر في الطرق المختلفة التي يمكن استخدامها لإدارة النصوص داخل التطبيق.


كيف يعمل نظام الترجمة في Laravel

نظام الترجمة يعتمد على فكرة بسيطة:

  • كل نص قابل للترجمة يتم تعريفه بمفتاح (key)
  • المفتاح يرتبط بقيمة مختلفة لكل لغة

مثال بسيط:


welcome => Welcome

وفي اللغة العربية:


welcome => مرحبًا

Laravel سيعرض النص الصحيح بناءً على اللغة النشطة داخل التطبيق.


مجلد الترجمة

الملفات الخاصة بالترجمة توجد عادة داخل:

resources/lang

هيكل المجلد يكون عادة:


lang
 ├── en
 │   └── messages.php
 └── ar
     └── messages.php

الطريقة التقليدية للترجمة (PHP Arrays)

الطريقة الكلاسيكية في Laravel تعتمد على ملفات PHP تعيد مصفوفة.

مثال:


return [
    'welcome' => 'Welcome',
    'login' => 'Login'
];

وفي العربية:


return [
    'welcome' => 'مرحبا',
    'login' => 'تسجيل الدخول'
];

استدعاء النص داخل التطبيق:


__('messages.welcome')

أو:


trans('messages.welcome')

الترجمة باستخدام JSON

Laravel أضاف دعمًا لملفات JSON كطريقة أبسط لإدارة الترجمة.

بدل إنشاء مفاتيح قصيرة، يمكن استخدام النص نفسه كمفتاح.

مثال ملف:


resources/lang/ar.json

المحتوى:


{
"Login": "تسجيل الدخول",
"Welcome": "مرحبا بك"
}

استدعاء الترجمة:


__('Login')

هذه الطريقة مفيدة خصوصًا في المشاريع الصغيرة أو النصوص القليلة.

شرح الترجمة Json بالتفصيل

اختيار اللغة داخل التطبيق

Laravel يحدد اللغة الافتراضية داخل:

config/app.php

'locale' => 'en'

يمكن تغيير اللغة أثناء التنفيذ:


App::setLocale('ar');

وهذا يسمح بتغيير اللغة حسب:

  • اختيار المستخدم
  • إعدادات الحساب
  • المتصفح

الترجمة مع المتغيرات

أحيانًا تحتاج تمرير متغيرات داخل النص.

مثال:


'welcome_user' => 'Welcome :name'

الاستخدام:


__('messages.welcome_user', ['name' => $user->name])

الناتج:


Welcome Ahmed

Pluralization (الجمع)

Laravel يوفر نظامًا للتعامل مع النصوص التي تعتمد على العدد.

مثال:


'apples' => '{0} No apples|{1} One apple|[2,*] :count apples'

الاستخدام:


trans_choice('messages.apples', $count)

الفرق بين الترجمة القديمة والجديدة في Laravel

النظام القديم

  • اعتماد كامل على ملفات PHP
  • المفاتيح قصيرة مثل messages.login
  • هيكلة ثابتة للملفات

النظام الحديث

  • دعم ملفات JSON
  • سهولة استخدام النص نفسه كمفتاح
  • مرونة أكبر في إدارة الترجمة

لكن في المشاريع الكبيرة ما زالت ملفات PHP أكثر تنظيمًا.


ترجمة النصوص داخل Blade

داخل Blade يمكن استخدام:


{{ __('messages.login') }}

أو:


@lang('messages.login')

ترجمة رسائل Validation

Laravel يدعم ترجمة رسائل التحقق تلقائيًا.

الملف:


lang/ar/validation.php

مثال:


'email' => 'البريد الإلكتروني غير صالح'

ترجمة قواعد البيانات (Database Translation)

في بعض الأنظمة يتم تخزين الترجمة داخل قاعدة البيانات بدل الملفات.

يستخدم هذا الأسلوب عندما:

  • يتم تعديل النصوص من لوحة التحكم
  • يوجد عدد كبير من اللغات

لكن هذه الطريقة تحتاج طبقة إضافية لإدارة الكاش.


مشاكل شائعة في الترجمة

  • تكرار المفاتيح داخل الملفات
  • استخدام JSON في مشاريع كبيرة
  • نسيان ترجمة رسائل validation
  • تغيير اللغة بدون تخزين اختيار المستخدم