آراء حول صيغ المعدود

من ويكي عربآيز
نسخة 23:15، 4 يناير 2007 للمستخدم Youssef (ناقش | مساهمات)
(فرق) → نسخة أقدم | النسخة الحالية (فرق) | نسخة أحدث ← (فرق)
اذهب إلى: تصفح، ابحث

This page is in English under Plural Forms

Arabic.png


صيغة المعدود لgettext المستعملة حاليا في جنوم ومكتب ك وربما في مشاريع أخرى خاطئة تماما [5]. أعلم أن هيئة التنقيح بحثت في هذه المسألة لكنها لم تتخذ أي حل نهائي. لهذا، من الواضح أن الصيغة الحالية حل مؤقت وبالطبع متفق على بطلانها. وهي كالتالي:

nplurals=4; plural=n==1 ? 0 : n==2 ? 1 :n>=3 && n<=10 ? 2 : 3; 

يذكر في https://www.arabeyes.org/QacDecisions:

This GNU Plural Header will be used when we can find a way to script its functionality:

nplurals = 7; plurals = n==0 ? 0 : n==1 ? 1 : n==2 ? 2 :
n%100>=3 && n%100<=10 ? 3 :n%100==1 ? 5 : n%100==2 ? 6 : 4;


تتبع اللغة العربية قواعد معقدة لتحديد صيغة المعدود. إضافة إلى ذلك، توجد قاعدتان مختلفتان، الأولى عند قراءة العدد من اليمين إلى اليسار والثانية عند قراءته من اليسار إلى اليمين. تبقى كلا القاعدتين صحيحتين كما تبين بعض البحوث حيث استعملت بعض النصوص القديمة قراءة الأعداد من اليسار إلى اليمين. غير أن القراءة من اليمين إلى اليسار - كما تقرأ النصوص العربية - تحظى باحترام أكبر رغم أن وسائل الإعلام تقرأها من اليسار. يستحيل إدراج الخيار الأخير في صيغة gettext نظرا لضرورة طرح 1 أو 2 من المتغير. بسبب وجود قاعدتين علينا الاتفاق على قاعدة واحدة.


انظر [1]. يمكن إدراج القراءة من اليمين [2] مع حالات أقل (6) عوض (8) عند القراءة من اليسار. لا أدري إن كان ذلك صحيحا فقط إذا افترضنا أن "101 كتاب" تقرأ "واحدة ومائة كتاب" وليس "مائة كتاب وكتاب"، انظر [2]. الصيغة المستعملة حاليا غامضة وغير موثقة وخاطئة لغويا. تم دمج حالة (0) مع حالة غريبة (الرابعة) كما لا توجد قاعدة لحالة [11-99].

استنتاج: يجب اعتماد حالة القراءة من اليمين.


nplurals=6; plural=n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n >= 3
&& n <= 10 ? 3 : n >= 11 && n <= 99 ? 4 : 5;

لا تتطلب الحالات 0 و1 و2 متغيرا، وهنا يبرز مشكل آخر. إذا وجد في سلسلة واحدة متغيران %s و%d وأن %d حذف فإن البرنامج يتوقف (Segmentation fault) [3]. الحل المقترح هو استعمال توزيع المتغيرات [4]. يجب أن توثق هذه الطريقة وأن تجرب في لغات أخرى غير C. (شكرا لجهاد على الفكرة).

echo 'int main() { printf("%s \n", 2, "text");}' > test.c ;
gcc -w test.c -o output ; ./output


echo 'int main() { printf("%2$s \n", 2, "text");}' > test.c ;
gcc -w test.c -o output ; ./output 


يجب البحث عن طريقة لاختيار الصيغة المناسبة للأعداد غير الصحيحة.

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

ماذا علينا أن نفعل: - التعليق - تحويل السلاسل إلى الصيغة المتفق عليها.


استنتاج

السبب الأساسي في عدم اعتماد القراءة من اليسار إلى اليمين هو عدد وجود قاعدة لحالة 100^n +1,2. أما قواعد الكتب المدرسية وكتب النحو، فهي لا تغطي إلا حالة القراءة من اليمين. نتمنى إيجاد أي معلومة أو مرجع يؤكد أو ينفي هذا الاقتراح.