«آراء حول صيغ المعدود»: الفرق بين المراجعتين

من ويكي عربآيز
اذهب إلى: تصفح، ابحث
 
ط (استبدال الصورة؛ لتصحيح معدود صيغة العدم.. شكراً جهاد :))
 
(16 مراجعة متوسطة بواسطة 4 مستخدمين غير معروضة)
سطر 1: سطر 1:
 
{{English|Plural Forms}}
 
{{English|Plural Forms}}
   
  +
=== الصيغة الحالية ===
 
 
صيغة المعدود لgettext المستعملة حاليا في جنوم ومكتب ك وربما في مشاريع أخرى خاطئة تماما [5]. أعلم أن هيئة التنقيح بحثت في هذه المسألة لكنها لم تتخذ أي حل نهائي. لهذا، من الواضح أن الصيغة الحالية حل مؤقت وبالطبع متفق على بطلانها. وهي كالتالي:
 
صيغة المعدود لgettext المستعملة حاليا في جنوم ومكتب ك وربما في مشاريع أخرى خاطئة تماما [5]. أعلم أن هيئة التنقيح بحثت في هذه المسألة لكنها لم تتخذ أي حل نهائي. لهذا، من الواضح أن الصيغة الحالية حل مؤقت وبالطبع متفق على بطلانها. وهي كالتالي:
  +
<div dir=ltr>
 
 
nplurals=4; plural=n==1 ? 0 : n==2 ? 1 :n>=3 && n<=10 ? 2 : 3;
 
nplurals=4; plural=n==1 ? 0 : n==2 ? 1 :n>=3 && n<=10 ? 2 : 3;
  +
</div>
 
 
يذكر في https://www.arabeyes.org/QacDecisions:
 
يذكر في https://www.arabeyes.org/QacDecisions:
   
  +
<div dir=ltr>
 
This GNU Plural Header will be used when we can find a way to script its functionality:
 
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 :
 
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;
 
n%100>=3 && n%100<=10 ? 3 :n%100==1 ? 5 : n%100==2 ? 6 : 4;
  +
</div>
   
  +
=== تعدد طرق قراءة الأعداد ===
 
 
تتبع اللغة العربية قواعد معقدة لتحديد صيغة المعدود. إضافة إلى ذلك، توجد قاعدتان مختلفتان، الأولى عند قراءة العدد من اليمين إلى اليسار والثانية عند قراءته من اليسار إلى اليمين. تبقى كلا القاعدتين صحيحتين كما تبين بعض البحوث حيث استعملت بعض النصوص القديمة قراءة الأعداد من اليسار إلى اليمين. غير أن القراءة من اليمين إلى اليسار - كما تقرأ النصوص العربية - تحظى باحترام أكبر رغم أن وسائل الإعلام تقرأها من اليسار. يستحيل إدراج الخيار الأخير في صيغة gettext نظرا لضرورة طرح 1 أو 2 من المتغير.
 
تتبع اللغة العربية قواعد معقدة لتحديد صيغة المعدود. إضافة إلى ذلك، توجد قاعدتان مختلفتان، الأولى عند قراءة العدد من اليمين إلى اليسار والثانية عند قراءته من اليسار إلى اليمين. تبقى كلا القاعدتين صحيحتين كما تبين بعض البحوث حيث استعملت بعض النصوص القديمة قراءة الأعداد من اليسار إلى اليمين. غير أن القراءة من اليمين إلى اليسار - كما تقرأ النصوص العربية - تحظى باحترام أكبر رغم أن وسائل الإعلام تقرأها من اليسار. يستحيل إدراج الخيار الأخير في صيغة gettext نظرا لضرورة طرح 1 أو 2 من المتغير.
 
بسبب وجود قاعدتين علينا الاتفاق على قاعدة واحدة.
 
بسبب وجود قاعدتين علينا الاتفاق على قاعدة واحدة.
   
  +
[[صورة:pf1ld4.png]]
   
انظر [1]. يمكن إدراج القراءة من اليمين [2] مع حالات أقل (6) عوض (8) عند القراءة من اليسار. لا أدري إن كان ذلك صحيحا فقط إذا افترضنا أن "101 كتاب" تقرأ "واحدة ومائة كتاب" وليس "مائة كتاب وكتاب"، انظر [2].
+
انظر الصورة. يمكن إدراج القراءة من اليمين [2] مع حالات أقل (6) عوض (8) عند القراءة من اليسار. لا أدري إن كان ذلك صحيحا فقط إذا افترضنا أن "101 كتاب" تقرأ "واحدة ومائة كتاب" وليس "مائة كتاب وكتاب"، انظر [2].
 
الصيغة المستعملة حاليا غامضة وغير موثقة وخاطئة لغويا. تم دمج حالة (0) مع حالة غريبة (الرابعة) كما لا توجد قاعدة لحالة [11-99].
 
الصيغة المستعملة حاليا غامضة وغير موثقة وخاطئة لغويا. تم دمج حالة (0) مع حالة غريبة (الرابعة) كما لا توجد قاعدة لحالة [11-99].
 
استنتاج: يجب اعتماد حالة القراءة من اليمين.
 
   
   
  +
<div dir=ltr>
 
nplurals=6; plural=n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n >= 3
 
nplurals=6; plural=n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n >= 3
 
&& n <= 10 ? 3 : n >= 11 && n <= 99 ? 4 : 5;
 
&& n <= 10 ? 3 : n >= 11 && n <= 99 ? 4 : 5;
  +
</div>
   
  +
=== مشكل حذف المتغيرات في بعض الحالات ===
 
لا تتطلب الحالات 0 و1 و2 متغيرا، وهنا يبرز مشكل آخر. إذا وجد في سلسلة واحدة متغيران %s و%d وأن %d حذف فإن البرنامج يتوقف (Segmentation fault) [3]. الحل المقترح هو استعمال توزيع المتغيرات [4]. يجب أن توثق هذه الطريقة وأن تجرب في لغات أخرى غير C. (شكرا لجهاد على الفكرة).
 
لا تتطلب الحالات 0 و1 و2 متغيرا، وهنا يبرز مشكل آخر. إذا وجد في سلسلة واحدة متغيران %s و%d وأن %d حذف فإن البرنامج يتوقف (Segmentation fault) [3]. الحل المقترح هو استعمال توزيع المتغيرات [4]. يجب أن توثق هذه الطريقة وأن تجرب في لغات أخرى غير C. (شكرا لجهاد على الفكرة).
  +
<div dir=ltr>
 
 
echo 'int main() { printf("%s \n", 2, "text");}' > test.c ;
 
echo 'int main() { printf("%s \n", 2, "text");}' > test.c ;
 
gcc -w test.c -o output ; ./output
 
gcc -w test.c -o output ; ./output
سطر 34: سطر 38:
 
echo 'int main() { printf("%2$s \n", 2, "text");}' > test.c ;
 
echo 'int main() { printf("%2$s \n", 2, "text");}' > test.c ;
 
gcc -w test.c -o output ; ./output
 
gcc -w test.c -o output ; ./output
  +
</div>
   
  +
=== مشكل عدم دعم بعض البرامج لصيغ الجمع ===
 
 
يجب البحث عن طريقة لاختيار الصيغة المناسبة للأعداد غير الصحيحة.
 
 
 
ربما نحتاج يوما ما لترجمة برنامج لا تدعم صيغ المعدود لبساطتها وتستعمل مثلا "user(s)" في الإنجليزية. ما أقترح هو الاتصال بالمطور وطلب دعم صيغ المعدود، ثم إن فشل هذا الاتصال يمكن استعمال "من" كما في "وصل ثلاثة من الرجال". (شكرا لمنذر على الفكرة).
 
ربما نحتاج يوما ما لترجمة برنامج لا تدعم صيغ المعدود لبساطتها وتستعمل مثلا "user(s)" في الإنجليزية. ما أقترح هو الاتصال بالمطور وطلب دعم صيغ المعدود، ثم إن فشل هذا الاتصال يمكن استعمال "من" كما في "وصل ثلاثة من الرجال". (شكرا لمنذر على الفكرة).
   
سطر 45: سطر 47:
 
- تحويل السلاسل إلى الصيغة المتفق عليها.
 
- تحويل السلاسل إلى الصيغة المتفق عليها.
   
  +
=== اقتراح للقراءة من اليسار إلي اليمين ===
  +
اقترح مشاركون في مجموعة [http://www.eglug.org جنو لينكس مصر] صيغة تتبنى القراءة من اليسار وهي كالتالي:
  +
* 0 لا كتابا
  +
* 1 كتاب واحد
  +
* 2 كتابات
  +
* 3-10 + (100^n) : n >= 0 كتب
  +
* 11-99 + (100^n) : n >= 0 or 1,2 + (100^n) : n >= 1 كتابا
  +
* 100^n : n >= 1 كتاب
  +
  +
وصيغتها كالتالي:
  +
<div dir=ltr>
  +
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : (n % 100 >=3 &&
  +
n % 100 <=10) ? 3 : (n % 100 >=11 && n % 100 <=99) || (n % 100==1) || (n %
  +
100==2) ? 4 : 5;\n"
  +
</div>
  +
يبقى العيب الوحيد في هذا الاقتراح هو حالة 1,2 + (100^n) التي لا توجد لها قاعدة لغوية كما عند القراءة من اليمين. فعند القراءة من اليمين يكون آخر عدد هو مائة أو ألف أو مليون أو مليار، ولذلك يكون المعدود دائما مفردا مجرورا، أما عند القراءة من اليسار فآخر عدد يحتمل أوجها كثيرة، ولا توجد طريقة لقراءة هذه الأرقام إلا بطرق طويلة غير ملائمة للبرمجة ك: 100 كتاب وكتاب. ربما كان سيكون من الملائم قراءة "اثنان ومائة" لكن هذا لا يناسب أعدادا كبيرة مثل 54102: "اثنان وأربعة وخمسون ألفا ومائة".
  +
  +
== اقتراح آخر ==
  +
يعتمد هذا الاقتراح القراءة من اليمين، لكن مع استعمال المفرد المجرور مع حالة 100×ع + 1 أو 2. يلخص الجدول التالي مواصفات الاقتراح:
  +
[[صورة:pf2.png]]
  +
  +
أمثلة:
  +
[[صورة:pf2-examples.png]]
   
   
== استنتاج ==
+
=== استنتاج ===
 
السبب الأساسي في عدم اعتماد القراءة من اليسار إلى اليمين هو عدد وجود قاعدة لحالة <span dir=ltr>100^n +1,2</span>. أما قواعد الكتب المدرسية وكتب النحو، فهي لا تغطي إلا حالة القراءة من اليمين. نتمنى إيجاد أي معلومة أو مرجع يؤكد أو ينفي هذا الاقتراح.
 
السبب الأساسي في عدم اعتماد القراءة من اليسار إلى اليمين هو عدد وجود قاعدة لحالة <span dir=ltr>100^n +1,2</span>. أما قواعد الكتب المدرسية وكتب النحو، فهي لا تغطي إلا حالة القراءة من اليمين. نتمنى إيجاد أي معلومة أو مرجع يؤكد أو ينفي هذا الاقتراح.

المراجعة الحالية بتاريخ 12:28، 29 يوليو 2008

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 من المتغير. بسبب وجود قاعدتين علينا الاتفاق على قاعدة واحدة.

Pf1ld4.png

انظر الصورة. يمكن إدراج القراءة من اليمين [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)" في الإنجليزية. ما أقترح هو الاتصال بالمطور وطلب دعم صيغ المعدود، ثم إن فشل هذا الاتصال يمكن استعمال "من" كما في "وصل ثلاثة من الرجال". (شكرا لمنذر على الفكرة).

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

اقتراح للقراءة من اليسار إلي اليمين

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

  • 0 لا كتابا
  • 1 كتاب واحد
  • 2 كتابات
  • 3-10 + (100^n) : n >= 0 كتب
  • 11-99 + (100^n) : n >= 0 or 1,2 + (100^n) : n >= 1 كتابا
  • 100^n : n >= 1 كتاب

وصيغتها كالتالي:

"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : (n % 100 >=3 &&
n % 100 <=10) ? 3 : (n % 100 >=11 && n % 100 <=99) || (n % 100==1) || (n %
100==2) ? 4 : 5;\n"

يبقى العيب الوحيد في هذا الاقتراح هو حالة 1,2 + (100^n) التي لا توجد لها قاعدة لغوية كما عند القراءة من اليمين. فعند القراءة من اليمين يكون آخر عدد هو مائة أو ألف أو مليون أو مليار، ولذلك يكون المعدود دائما مفردا مجرورا، أما عند القراءة من اليسار فآخر عدد يحتمل أوجها كثيرة، ولا توجد طريقة لقراءة هذه الأرقام إلا بطرق طويلة غير ملائمة للبرمجة ك: 100 كتاب وكتاب. ربما كان سيكون من الملائم قراءة "اثنان ومائة" لكن هذا لا يناسب أعدادا كبيرة مثل 54102: "اثنان وأربعة وخمسون ألفا ومائة".

اقتراح آخر

يعتمد هذا الاقتراح القراءة من اليمين، لكن مع استعمال المفرد المجرور مع حالة 100×ع + 1 أو 2. يلخص الجدول التالي مواصفات الاقتراح: Pf2.png

أمثلة: Pf2-examples.png


استنتاج

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