Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon كيف يتعامل Spatie Translations عند استخدام كل من ملفات قاعدة البيانات واللغة


كيف يتعامل Spatie Translations عند استخدام كل من ملفات قاعدة البيانات واللغة


يتعامل 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