اذهب إلى المحتوى
  • 0

مشكلة بخصوص استعمال حزمة spatie/laravel-translatable

Hafsa Aly

السؤال

Recommended Posts

  • 0

حزمة laravel-translatble من spatie تقوم أصلا بإعادة الترجمة الموافقة للغة المفعلة الحالية عن طريق قراءة المفتاح بشكل مباشر:

$product->name;

ولا حاجة لاستعمال مفتاح اللغة الحالية في ذلك.

يمكنك على كل حال استعمال التابع getTranslation لقراءة الترجمة الموافقة للغة معينة:

$product->getTranslation('name', 'en');

أما عن السياق الذي تستخدمينه في جلب الترجمات أو وضعها فهو سياق لا يختص بالحزمة التي تستعملينها، فالتوابع الموصوفة موجودة في حزمة  laravel-translatable من Astrotomic في حين أن السياق المطلوب هو ذلك الخاص ب laravel-translatble من spatie. والتوابع الموصوفة في الأولى تختلف عن دلالة استخدامها في الثانية وهو ما ينتج المشكلة التي تحدث معك بطبيعة الحال.

تعرفي على الفروقات ما بينهما عن طريق توثيقاتهما الرسمية:

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 21 ساعة قال Adnane Kadri:

حزمة laravel-translatble من spatie تقوم أصلا بإعادة الترجمة الموافقة للغة المفعلة الحالية عن طريق قراءة المفتاح بشكل مباشر:

$product->name;

ولا حاجة لاستعمال مفتاح اللغة الحالية في ذلك.

يمكنك على كل حال استعمال التابع getTranslation لقراءة الترجمة الموافقة للغة معينة:

$product->getTranslation('name', 'en');

أما عن السياق الذي تستخدمينه في جلب الترجمات أو وضعها فهو سياق لا يختص بالحزمة التي تستعملينها، فالتوابع الموصوفة موجودة في حزمة  laravel-translatable من Astrotomic في حين أن السياق المطلوب هو ذلك الخاص ب laravel-translatble من spatie. والتوابع الموصوفة في الأولى تختلف عن دلالة استخدامها في الثانية وهو ما ينتج المشكلة التي تحدث معك بطبيعة الحال.

تعرفي على الفروقات ما بينهما عن طريق توثيقاتهما الرسمية:

 

Screenshot (119).png

Screenshot (120).png

Screenshot (121).png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 ساعة قال Hafsa Aly:

 

Screenshot (119).png

 

 

بمكان ما في ملف العرض المعني تقومين باستدعاء التابع getTranslations وتعطينه سلسلة نصية كمعامل ثان عوض مصفوفة، أظنك تقصدين استعمال التابع getTranslation وليس getTranslations. 

ابحثي عن موضع الخطأ وأصلحيه.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 2 ساعة قال Hafsa Aly:

Screenshot (121).png

الخطأ يحدث بسبب استخدام نوع البيانات الخاطئ للمعامل الثاني في دالة "getTranslations" في الصف "Product" من النموذجات (Models) في Laravel.

يتوقع أن يكون المعامل الثاني من نوع "Zarray"، ولكن تم تمرير نص (string) بدلاً من ذلك، الأمر الذي يؤدي إلى حدوث هذا الخطأ.

يجب تحديد قيمة المعامل الثاني باستخدام النوع الصحيح "Zarray"، وذلك بتمرير مصفوفة اللغات المسموح بها في النظام كمصفوفة من الأعراف الأساسية:

$allowedLocales = ['en', 'fr', 'ar']; // مثال لمصفوفة اللغات المسموح بها $translations = $product->getTranslations($attribute, $allowedLocales);

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...