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

من ويكي عربآيز
اذهب إلى: تصفح، ابحث
(طريقة استعمالها: جدول يبين الحالات بشكل أوضح و توضيح للقصور و الاصطلاحات و التحايلات)
سطر 10: سطر 10:
   
 
* في ''Gettext'':
 
* في ''Gettext'':
  +
القاعدة التالية تصف ست حالات للمعدود، و تحدد كل حالة منها بنطاق من الأعداد:
  +
 
<pre dir=ltr>
 
<pre dir=ltr>
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+
"Plural-Forms: nplurals=6; plural=n==1 ? 0 : n==0 ? 1 : n==2 ? 2"
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+
" : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
</pre>
 
</pre>
   
  +
ملحوظة: قسمنا القاعدة على سطرين لقصور تقني ليس أكثر، و يفضل دمجهما في سطر واحد.
===أمثلة===
 
  +
  +
بسبب بقة|علة ما في الإصدارة الحالية من gettext يتوجب تلافي وضع القاعدة الصفرية في البداية، لذا نتحايل بوضعها بعد ''الواحد''.
  +
  +
أمثلة على ما تخرجه لنا القاعدة السابقة في gettext (بافتراض أن الجزء الثابت السابق للعدد من العبارة هو مثلا 'تم بنجاح حذف ''':
  +
  +
{| border="1"
  +
|+
  +
|الحالة||العدد||أمثلة
  +
|-
  +
| 0 || 1 || مستخدم واحد، ملف واحد
  +
|-
  +
| 1 || 0 || لا مستخدمِين، لا ملفات
  +
|-
  +
| 2 || 2 || مستخدمَين، ملفَّيَن
  +
|-
  +
| 3 || 3[100] - 10[100] || 6 مستخدمين، 707 ملفات
  +
|-
  +
| 4 || 11[100] - 99[100] || 69 مستخدما، 666 ملفا
  +
|-
  +
| 5 || غير ذلك || 100 مستخدمٍ، 9000 ملف
  +
|}
  +
  +
الصيغة الفعلية للتمييز تعتمد على الكلمة ذاتها، و نمط جمعها.
  +
  +
حلول اصطلاحية:
  +
  +
* قد تختلف صيغة المعدود حسب ما إذا كُنت تقرأ العدد بدءا بالمنزلة الأقل أوالأكبر (مثلا: "ثلاثة و أربعين ملفا" مقابل "أربعين و ثلاث ملفات"، و كذلك: "مئة و واحد ملفا" مقابل "واحد و مئة ملف")، أو بالأسلوب الشائع حاضرا الذي يقدم قراءة المنازل الأكبر من الآحاد و العشرات ثم يعود ليبدأ بالآحاد ثم العشرات، مثل "مئة و ثلاثة و أربعين ملفا"، مقابل "مئة و أربعين و ثلاث ملفات" أو "ثلاث و أربعين و مئة ملف".
  +
: و هذه من المشاكل غير المحلولة تقنيا. لذلك اصطلحنا على أنه فيما يتعلق بالأعداد المكتوبة بالأرقام فإن القاعدة توضع استنادا إلى أن قراءتها تكون بدءا بالآحاد لما يقل عن المئة، و بالأسلوب المختلط السابق ذكره لما يزيد عليها.
  +
  +
* كذلك فإن الصيغة العربية المتوارثة للأعداد من رتبة المئات مع المفرد و المثنى هي: '''مئة و ''معدود''''' و '''مئة و ''معدودان''''' مثل "مئة و مستخدم" و "مئة و مستخدمان"؛ إلا أننا اصطلحنا على قراءة الرقم كما باقي الأعداد.
  +
  +
من أشكال القصور الأخرى في التقنية الحالية:
  +
  +
* الصيغة الصفرية بهذا الشكل لا تستقيم لغويا، حيث الأصح في العربية أن يتم نفي الفعل إن لم يقع على أي مفعول، أو من أي فاعل، مثل "لم تحذف أية ملفات|لم يحذف اي ملف"، و "لم يُفلت أي مستخدم". هذه مشكلة غير محلولة لأنها تتطلب إعادة هيكلة العبارة بأكملها و هو ما قد لا يكون متاحا دائما إذا ما عمد المصمم إلى تقطيع العبارات عند حدود الأعداد، و حسب تقنية البرمجة و العولمة(i18n) المستخدمة.
  +
  +
* قد تتطلب الصياغة الصحيحة لبعض العبارات تغيير تصريف الفعل من حيث التأنيث و التذكير "حُذفت 6 ملفات" مقابل "حُذف 666 ملفا" لكن يمكن التحايل على ذلك باستخدام فعل مساعد مثل "تم" و إلحاقه بمصدر الفعل الأصلي، مثل: "تم حذف..." (و هي صيغة أكثر توكيدا و تقريرية فيما يتعلق بالإبلاغ عن نتائج الأعمال و رسائل السجلات. طالع [[صيغ محبذة في رسائل واجهة المستخدم]])
   
[[صورة:pf2-examples.png]]
 
   
 
[[تصنيف:معايير]]
 
[[تصنيف:معايير]]

نسخة 21:04، 3 أكتوبر 2007

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

تستخدم أغلب مشاريع البرمجيات الحرة أدوات GNU gettext كبنية لآلية الترجمة.

من بين الخصائص العيدة التي يوفرها gettext خاصية صيغ المعدود، تتلخص وظيفتها في السماح بإمكانية تغيير النص المترجم تبعا لقيمة المعدود، بعبارة أخرى تعطي إمكانية ترجمة عبارة مثل "there is X files" (حيث X تساوي أي عدد) إلى "لا توجد ملفات"، "يوجد ملف واحد"، "يوجد ملفين"، "يوجد 15 ملفا"، "يوجد 10050 ملف" الخ.

طريقة استعمالها

الصيغة

  • في Gettext:

القاعدة التالية تصف ست حالات للمعدود، و تحدد كل حالة منها بنطاق من الأعداد:

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

ملحوظة: قسمنا القاعدة على سطرين لقصور تقني ليس أكثر، و يفضل دمجهما في سطر واحد.

بسبب بقة|علة ما في الإصدارة الحالية من gettext يتوجب تلافي وضع القاعدة الصفرية في البداية، لذا نتحايل بوضعها بعد الواحد.

أمثلة على ما تخرجه لنا القاعدة السابقة في gettext (بافتراض أن الجزء الثابت السابق للعدد من العبارة هو مثلا 'تم بنجاح حذف :

الحالة العدد أمثلة
0 1 مستخدم واحد، ملف واحد
1 0 لا مستخدمِين، لا ملفات
2 2 مستخدمَين، ملفَّيَن
3 3[100] - 10[100] 6 مستخدمين، 707 ملفات
4 11[100] - 99[100] 69 مستخدما، 666 ملفا
5 غير ذلك 100 مستخدمٍ، 9000 ملف

الصيغة الفعلية للتمييز تعتمد على الكلمة ذاتها، و نمط جمعها.

حلول اصطلاحية:

  • قد تختلف صيغة المعدود حسب ما إذا كُنت تقرأ العدد بدءا بالمنزلة الأقل أوالأكبر (مثلا: "ثلاثة و أربعين ملفا" مقابل "أربعين و ثلاث ملفات"، و كذلك: "مئة و واحد ملفا" مقابل "واحد و مئة ملف")، أو بالأسلوب الشائع حاضرا الذي يقدم قراءة المنازل الأكبر من الآحاد و العشرات ثم يعود ليبدأ بالآحاد ثم العشرات، مثل "مئة و ثلاثة و أربعين ملفا"، مقابل "مئة و أربعين و ثلاث ملفات" أو "ثلاث و أربعين و مئة ملف".
و هذه من المشاكل غير المحلولة تقنيا. لذلك اصطلحنا على أنه فيما يتعلق بالأعداد المكتوبة بالأرقام فإن القاعدة توضع استنادا إلى أن قراءتها تكون بدءا بالآحاد لما يقل عن المئة، و بالأسلوب المختلط السابق ذكره لما يزيد عليها.
  • كذلك فإن الصيغة العربية المتوارثة للأعداد من رتبة المئات مع المفرد و المثنى هي: مئة و معدود و مئة و معدودان مثل "مئة و مستخدم" و "مئة و مستخدمان"؛ إلا أننا اصطلحنا على قراءة الرقم كما باقي الأعداد.

من أشكال القصور الأخرى في التقنية الحالية:

  • الصيغة الصفرية بهذا الشكل لا تستقيم لغويا، حيث الأصح في العربية أن يتم نفي الفعل إن لم يقع على أي مفعول، أو من أي فاعل، مثل "لم تحذف أية ملفات|لم يحذف اي ملف"، و "لم يُفلت أي مستخدم". هذه مشكلة غير محلولة لأنها تتطلب إعادة هيكلة العبارة بأكملها و هو ما قد لا يكون متاحا دائما إذا ما عمد المصمم إلى تقطيع العبارات عند حدود الأعداد، و حسب تقنية البرمجة و العولمة(i18n) المستخدمة.
  • قد تتطلب الصياغة الصحيحة لبعض العبارات تغيير تصريف الفعل من حيث التأنيث و التذكير "حُذفت 6 ملفات" مقابل "حُذف 666 ملفا" لكن يمكن التحايل على ذلك باستخدام فعل مساعد مثل "تم" و إلحاقه بمصدر الفعل الأصلي، مثل: "تم حذف..." (و هي صيغة أكثر توكيدا و تقريرية فيما يتعلق بالإبلاغ عن نتائج الأعمال و رسائل السجلات. طالع صيغ محبذة في رسائل واجهة المستخدم)