"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > التعدادات واللغة في Laravel

التعدادات واللغة في Laravel

تم النشر بتاريخ 2024-11-07
تصفح:649

تقرير
في أحد المشاريع التي عملت عليها، كان هناك حقل محدد يحتوي على قيم محددة لن تتغير. لذا، لسرد العناصر في هذا التحديد، قررت إنشاء فئة تعداد ثم وصف هذه القيم. ومع ذلك، يحتاج المشروع إلى دعم اللغتين الإنجليزية والإسبانية، ويجب أن يتكيف نص الخيارات المحددة مع ذلك دون فقدان الإشارة إلى عنصر التعداد المعني. بمعنى آخر، إذا قمت بتحديد العنصر "حصان"، كنت بحاجة إلى أن يعرف النظام أن هذا العنصر لا يزال "حصانًا" على الرغم من ظهوره كـ "حصان" أو "كابالو". وللحفاظ على سلامة البيانات، قمت بإنشاء البنية التالية التي تدمج التعداد واللغة في المشروع.

ما هو التعداد
مقدمة مختصرة. بدءًا من PHP الإصدار 8.1، تم تقديم فئة خاصة لتعداد القيم. من الناحية العملية، هذا يعني أنه يمكننا إنشاء فئة تكون قيم خصائصها ثابتة. مثال على ذلك هو الحالة، لأنه إذا تركتها مجانية، فمن المحتمل أن يكون لديك في جميع أنحاء الكود حالة "نشطة"، وأخرى "نشطة"، وأخرى "نشطة" وما إلى ذلك. ولكن إذا قمت بربط الحالة بالتعداد واستخدمت التعداد بدلاً من كتابة السلسلة، فسوف أكون متأكدًا من أن القيمة في أي مكان في الكود ستكون دائمًا هي القيمة الموجودة في التعداد.

enum Status
{
    case ATIVO = "ativo";
    case INATIVO = "inativo";
    case PENDENTE = "pendente";
}

التعدادات واللغة
نظرًا لأن التعداد عبارة عن فصل دراسي، فيمكنني إنشاء طرق لفصلي بشكل طبيعي. لذلك، قمت بإنشاء طريقة العرض () التي ستكون مسؤولة عن التعامل مع تصور قيمة التعداد الخاصة بي، وتكييفها مع اللغة التي يستخدمها المستخدم، دون تغيير القيمة الأصلية في عنصر التعداد الخاص بي. بمعنى آخر، بالنسبة للمستخدم، تظهر الحالة "معلق"، أو "معلق"، أو "معلق"؛ ولكن في قاعدة البيانات يتم حفظه فقط كـ "معلق" - وهي القيمة الأصلية ومن خلالها يمكنني الحصول على العنصر الخاص بي من التعداد، ومن هذا العنصر استخدم طريقة العرض لإظهاره مترجمًا للمستخدم.
ولكن قبل عرض المثال، مقدمة إلى Laravel lang. lang هو مجلد في جذر المشروع لتخزين الترجمات التي سيدعمها مشروعك. تحتوي كل لغة على مجلد، وفي هذا المجلد ملفات لسياقات الترجمة. تحتوي هذه الملفات على مصفوفة، حيث يكون المفتاح هو تمثيل الكلمة والقيمة هي الترجمة إلى اللغة المعنية.

Enums e lang no Laravel

تهيئة طريقة العرض
في مجلد lang، سأقوم بإنشاء ملف Status.php لكل مجلد لغة بالمصفوفة التالية:

value => "Ativo",
    Status::INATIVO->value => "Inativo",
    Status::PENDENTE->value => "Pendente",
];

أقوم بتصحيح قيم المصفوفة للترجمات المعنية للغة المعنية.
وسوف تقوم طريقة العرض الخاصة بي بجلب ترجمة عنصر التعداد في ملفات Status.php هذه وإرجاع هذه القيمة.

public function display(): string
{
    return trans('status.'.$this->value);
}

مثال للاستخدام:

// EN
echo Status::ATIVO->display(); // Active

// PT_BR
echo Status::INATIVO->display(); // Inativo

// ES
echo Status::PENDENTE->display(); // Pediente

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

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/eunael/enums-e-lang-no-laravel-43am؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3