Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon كيف تدير Spatie الترجمات عندما تتغير لغة التطبيق


كيف تدير Spatie الترجمات عندما تتغير لغة التطبيق


تدير Spatie الترجمات في تطبيقات Laravel من خلال الاندماج مع نظام توطين Laravel وتوفير طرق مرنة لتخزين واسترداد الترجمات بناءً على لغة التطبيق الحالية.

كيف تتعامل Spatie مع الترجمات عندما تتغير لغة التطبيق

1. تخزين الترجمة واسترجاعها

-يقدم Spatie حزمة تسمى Laravel-Ranslation-Loader والتي تتيح تخزين الترجمات في قاعدة بيانات بدلاً من ملفات اللغة فقط. تحل هذه الحزمة محل مزود خدمة الترجمة الافتراضي لـ Laravel بمزود Spatie ، مما يتيح أن يتم جلب الترجمات ديناميكيًا من قاعدة البيانات [1].
- يتم تخزين الترجمات في جدول (عادةً ما "` `language_lines`) حيث يحتوي كل إدخال على مجموعة (مثل" التحقق من الصحة ") ، ومفتاح (مثل" مطلوب ") ، وكائن JSON الذي يحمل ترجمات لمجموعة متعددة (على سبيل المثال ،" en '=>' هذا حقل مطلوب '،' nl '=>' dit is een verplicht veld ') [1].
- عندما تتصل بالوظيفة الخاصة بـ Laravel's `__ () مع مفتاح ترجمة ، فإن محمل spatie يجلب الترجمة للموقع الحالي المحدد في التطبيق. على سبيل المثال ، إذا كانت لغة التطبيق هي "nl'" ، "__ (" التحقق من الصحة.

2. تبديل اللغة

- يمكن تغيير لغة التطبيق في وقت التشغيل باستخدام App ()-> setlocale ('locale_code') `.
- بمجرد تغيير اللغة ، جميع عمليات استرجاع الترجمة اللاحقة عبر `__ () أو وظائف الترجمة الأخرى تلقائيًا إرجاع النص تلقائيًا في اللغة المحددة حديثًا.
- إذا كانت الترجمة مفقودة بالنسبة للمكان الحالي في قاعدة البيانات ، فيمكن أن تُرجع آلية تحديد موقع Laravel الترجمة من اللغة الافتراضية ، ما لم يتم تعطيلها بشكل صريح [1] [8].

3. ترجمات على مستوى النموذج مع تخزين JSON **

- تم تصميم حزمة مكافحة أخرى ، Laravel-Translatable ، لنماذج بليغة لجعل السمات قابلة للترجمة.
- يتم تخزين الترجمات كـ JSON في عمود قاعدة بيانات واحدة لكل سمة قابلة للترجمة ، دون الحاجة إلى جداول إضافية [3].
- عندما يتغير لغة التطبيق ، فإن الوصول إلى سمة قابلة للترجمة على النموذج إرجاع القيمة للمحطة الحالية تلقائيًا. على سبيل المثال ، سيعود `$ newsitem-> name` الترجمة إلى اللغة الحالية المحددة في التطبيق [4].
- يمكنك الحصول على ترجمات أو تعيين ترجمات أو تعيينها بشكل صريح باستخدام أساليب مثل `getTranslation (السمة ، المحلية)` و `setTranslation (السمة ، اللغة ، القيمة)` [4].

4. الترجمات الاحتياطية والمفقودة

- تدعم الحزمة القابلة للترجمة في Spatie أماكن العودة ، لذا إذا كانت الترجمة مفقودة للمكان الحالي ، فيمكنها إعادة الترجمة من لغة أخرى (عادةً ما تكون افتراضية) [8].
- يمكن التحكم في هذا السلوك عن طريق تمرير علامة منطقية إلى "GetTranslation" لتعطيل الاحتياطي والحصول على سلسلة فارغة إذا كانت الترجمة مفقودة [8].

ملخص

عندما تتغير لغة التطبيق ، تخدم حزم ترجمة spatie تلقائيًا الترجمة المناسبة من إما خطوط اللغة المخزنة للقاعدة البيانات أو سمات النماذج المخزنة JSON ، مع الاستفادة من إعداد لغة Laravel. يضمن هذا التكامل السلس أن تقوم وظائف استرجاع الترجمة بإرجاع السلسلة المترجمة الصحيحة استنادًا إلى لغة التطبيق الحالية ، مع توفر آليات العودة إذا كانت الترجمة مفقودة.

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

المراجع: [1] [3] [4] [8]

الاستشهادات:
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introduction
[3] https://github.com/spatie/laravel-translatable
[4] https://spatie.be/docs/laravel-translatable/v6/basic-usage/getting-and-settings-translations
[5] https://filamentphp.com/plugins/filament-spatie-translatable
[6] https://github.com/filamentphp/filament/discussions/6913
[7] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translation-loader
[8] https://stackoverflow.com/questions/65252615/spatie-laravel-translatable-shows-the-default-locale-when-i-to-to-trieve-th