حل مشكلة Pluralization في easy_localization

x32x01
  • بواسطة x32x01 ||

حل مشكلة الـ Pluralization في مكتبة easy_localization 🧩

أكيد يا صاحبي لو اشتغلت قبل كده على مشاريع Flutter، أكيد سمعت عن مكتبة easy_localization، اللي بتسهل ترجمة التطبيق ودعم لغات مختلفة. بس ساعات وانت شغال فيها، ممكن تقابلك مشكلة غريبة جدًا تخص حاجة اسمها Pluralization 😩
الموضوع شكله بسيط من بره، بس لما تدخل فيه هتكتشف إن فيه شغل لغوي كبير بيحصل ورا الكواليس 😅

يعني إيه Pluralization أصلاً؟ 🤔

ببساطة كده، الـ Pluralization هو اللي بيخلي النص يتغيّر حسب العدد.
يعني مثلاً لما تقول:
  • غرفة
  • غرفتين
  • 5 غرف
  • 11 غرفة

كل عدد له صيغة مختلفة في اللغة العربية، صح؟
وهنا بييجي دور مكتبة easy_localization اللي المفروض تتعامل مع الحالات دي تلقائيًا 💡

بس اللي حصل معايا كان مختلف شوية…
كنت بحاول أعرض نص بيقول "5 غرف"، لكن اللي ظهر في التطبيق كان "5 غرفة"! 😤
يعني بدل ما يختار الصيغة الصح (few)، راح جاب الصيغة العامة (other)!

بدأت أبحث في السبب 🔍

في الأول قلت يمكن أنا كاتب حاجة غلط، لكن لما راجعت الكود كله لقيت إن كل حاجة تمام.
قررت أفتح issue على GitHub وابتديت أحلل الكود خطوة بخطوة… لحد ما اكتشفت السبب الحقيقي! 😎

لقيت متغير اسمه ignorePluralRules، وده لما بيكون قيمته true، المكتبة بتتجاهل تمامًا قواعد الجمع لكل لغة، وبتستخدم قواعد افتراضية بسيطة جدًا.
يعني بالعربي كده، كل التعب اللي مكتبة easy_localization عاملاه علشان تتبع القواعد النحوية لكل لغة، بيتشال بسبب السطر ده! 🤯

واللي زاد الطين بلة إن القيمة الافتراضية للمتغير ده هي true!
يعني لو انت مش واخد بالك، التطبيق بتاعك هيتصرف بطريقة غلط من غير ما تفهم السبب 😅

فين المشكلة الكبيرة؟ 😕

المشكلة مش بس في الكود… لأ، الكارثة إن الموضوع ده مش مكتوب في الDocumentation نهائيًا!
يعني لو مطور جديد دخل يستخدم المكتبة، مش هيعرف إن فيه خيار اسمه ignorePluralRules أصلاً!

فالمكتبة حرفيًا بتعطل واحدة من أقوى المميزات اللي فيها بشكل افتراضي 😬
وهنا قلت خلاص، لازم أتصرف بنفسي 💪

إيه اللي عملته علشان أصلح الموضوع 🛠️

طلعت "إيلون ماسك" اللي جوايا 😎 وقررت أنقذ المجتمع من المشكلة دي.
رحت عدلت الdocumentation ووضحت فيه استخدام المتغير ignorePluralRules، وشرحت إمتى ولماذا تستخدمه.

كمان عملت unit tests مخصوصة للغة العربية علشان أتأكد إن كل الحالات شغالة صح.
اختبرت الحالات التالية:
  • zero
  • one
  • two
  • few
  • many
  • other

وطبقت التجارب دي كمان على لغتين تانيين علشان أتأكد إن الكود مستقر في كل الحالات.
وبعد كده رفعت Pull Request (PR) للمكتبة الرسمية وبتمنى إنهم يقبلوها 🙏

إزاي تحل المشكلة في مشروعك بسهولة 🚀

لو واجهتك نفس المشكلة ومش عايز تستنى التحديث الجاي، كل اللي محتاج تعمله إنك تضيف السطر ده في إعدادات المكتبة أثناء التهيئة في ملف main.dart:
Code:
EasyLocalization(
supportedLocales: [Locale('ar'), Locale('en')],
path: 'assets/translations',
fallbackLocale: Locale('en'),
ignorePluralRules: false, // 🧠 لازم السطر ده
child: MyApp(),
);
وبكده هتضمن إن كل النصوص اللي فيها جمع (plural) هتتعرض بالشكل الصح حسب القواعد النحوية للغة اللي اخترتها 👏

نصايح سريعة علشان تتجنب المشاكل دي 💡

  • دايمًا راجع الـ Documentation لأي مكتبة قبل ما تستخدمها.
  • لما تلاحظ سلوك غريب، جرّب تعمل Debug خطوة بخطوة.
  • لو اكتشفت Bug فعلاً، متخافش تفتح Issue أو حتى ترفع PR. ده بيساعد كل المجتمع ❤️
  • جرب دايمًا لغات مختلفة زي العربي والإنجليزي علشان تكتشف مشاكل الترجمة بدري.

الخلاصة 🧠

لو الـ Pluralization مش شغالة عندك في easy_localization، فالسبب غالبًا إن المتغير ignorePluralRules معمول بـ true.
غيّره لـ false وخلاص كل حاجة هتمشي زي السكينة في الحلاوة 😍

الموضوع بسيط، بس مهم جدًا خصوصًا لو تطبيقك بيدعم أكتر من لغة.
وبالطريقة دي هتضمن إن المستخدم يشوف النصوص بطريقة طبيعية ومنسقة صح، وده بيحسّن تجربة المستخدم وكمان SEO app localization على المدى الطويل 🌍✨
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
389
x32x01
x32x01
x32x01
الردود
0
المشاهدات
395
x32x01
x32x01
x32x01
الردود
0
المشاهدات
161
x32x01
x32x01
x32x01
الردود
0
المشاهدات
315
x32x01
x32x01
x32x01
الردود
0
المشاهدات
341
x32x01
x32x01
x32x01
الردود
0
المشاهدات
405
x32x01
x32x01
x32x01
الردود
0
المشاهدات
845
x32x01
x32x01
x32x01
الردود
0
المشاهدات
418
x32x01
x32x01
x32x01
الردود
0
المشاهدات
593
x32x01
x32x01
x32x01
الردود
0
المشاهدات
598
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,830
المشاركات
2,027
أعضاء أكتب كود
464
أخر عضو
رشن7
عودة
أعلى