يتعامل Spatie مع الترجمات مع كل من ملفات قاعدة البيانات واللغة في المقام الأول من خلال حزمة تحميل ترجمة لارافيل ، والتي تتكامل بسلاسة مع نظام الترجمة الأصلي لارافيل.
كيف تعمل عند استخدام كل من قاعدة البيانات واللغة
- تتيح لك الحزمة تخزين الترجمات في قاعدة البيانات باستخدام جدول مخصص (`language_lines`). يتم تمثيل كل إدخال ترجمة بمثيل نموذج "Languageline` ، والذي يتضمن:
- "المجموعة": مجموعة الترجمة (على سبيل المثال ، "التحقق" أو "Auth").
- "المفتاح": مفتاح الترجمة داخل المجموعة.
- `text`: صفيف يحمل ترجمات لمجموعة مختلفة (على سبيل المثال ،` ['en' => 'هذا حقل مطلوب' ، 'nl' => 'dit هو een verplicht veld'] `).
- عندما تطلب ترجمة باستخدام وظائف الترجمة المعتادة في Laravel مثل `trans ()` أو `__ ()` ، تتحقق الحزمة أولاً من قاعدة البيانات للترجمة. إذا وجدت إدخالًا مطابقًا ، فإنه يعيد إصدار قاعدة البيانات.
- إذا لم يتم العثور على الترجمة في قاعدة البيانات ، فإنها تعود إلى ملفات اللغة التقليدية المخزنة في دليل "موارد/لانج".
- هذا يعني ترجمات قاعدة البيانات تجاوز ترجمات ملف اللغة إذا كان كلاهما موجودًا لنفس المفتاح والمحطة.
- تدعم الحزمة كل من الترجمات المستندة إلى المجموعة (على سبيل المثال ، "التحقق من الصحة.
ميزات وسلوك إضافي
- تقوم الحزمة بتخزين مجموعات الترجمات لتحسين الأداء ، وتقليل استعلامات قاعدة البيانات على طلبات الترجمة المتكررة. يتم إبطال ذاكرة التخزين المؤقت عند إنشاء الترجمات أو تحديثها أو حذفها.
- إنه قابل للتمديد: يمكنك إضافة مقدمي ترجمة مخصصين (على سبيل المثال ، YAML ، CSV) من خلال تطبيق واجهة "TranslationLoader" الخاصة بالحزمة ، مما يسمح بتحميل الترجمات من مصادر أخرى خارج قاعدة البيانات والملفات اللغوية.
- يمكنك متابعة استخدام مساعدي الترجمة الافتراضية وتوجيهات الشفرة (@lang` ، `trans ()` ، `__ ()`) دون تعديل.
ملخص
تدمج حزمة Loader Translation SPATIE ترجمات تخزين قاعدة البيانات بشكل فعال مع ترجمات الملفات الأصلية ل LARAVEL من خلال تحديد أولويات إدخالات قاعدة البيانات. يتيح ذلك التحرير الديناميكي للترجمات عبر واجهة المستخدم المدعومة من قاعدة البيانات مع الحفاظ على الاحتفاظ بالملفات اللغوية الثابتة. التكامل سلس ، ويتطلب الحد الأدنى من التغييرات في مكالمات الترجمة الحالية ، ويوفر التخزين المؤقت والتمديد لحالات الاستخدام المتقدمة [1] [3] [5] [6] [7].
الاستشهادات:
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-translatable
[5] https://www.laravelblogs.com/courses/multi-language-laravel/spatie-laravel-translation-loader
[6] https://packagist.org/packages/spatie/laravel-translation-loader
[7] https://freek.dev/593-a-laravel-package-to-store-lines-in-the-database
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translatable