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

من ويكي عربآيز
اذهب إلى: تصفح، ابحث
ط
سطر 84: سطر 84:
 
* لنشباد
 
* لنشباد
   
  +
<!--
 
 
==تعدد المعاملات==
 
==تعدد المعاملات==
   
سطر 91: سطر 91:
 
فترجمتها في حالة المفرد هكذا:
 
فترجمتها في حالة المفرد هكذا:
 
"عنصر واحد من النوع &#x202A;%s&#x202C;"
 
"عنصر واحد من النوع &#x202A;%s&#x202C;"
خطأ برمجيا، لتفادي هذا فإننا نستخدم المعاملات المرقمة بإضافة رقم ترتيب المعامل -من حيث الظهور في الجملة الأصلية- متبوعا ب $ هكذا:
+
خطأ برمجيا، ولتفادي هذا فبدلا من المعامل العددي "&#x202A;%d&#x202C;" نضع المعامل &#x202A;%.0s&#x202C; الذي لن يظهر في الترجمة لكنه سيمنع الخطأ البرمجي:
"عنصر واحد من النوع &#x202A;%2$s&#x202C;"
+
"عنصر واحد&#x202A;%.0s&#x202C; من النوع &#x202A;%s&#x202C;"
  +
-->
 
 
[[تصنيف:معايير]]
 
[[تصنيف:معايير]]
 
[[تصنيف:ترجمة]]
 
[[تصنيف:ترجمة]]

نسخة 14:14، 19 أكتوبر 2008

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

This page is in English under Plural Forms

Arabic.png

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

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

الجموع

نستعمل الآن صيغة جموع بست صيغ:

  • الصيغة الأولى: للعدد 0
  • الصيغة الثانية: للعدد 1
  • الصيغة الثالثة: للمثنى (2)
  • الصيغة الرابعة: للأعداد التي تنتهي بعدد محصور بين 3 و10 (مثلا: 103، 1405، 23409)
  • الصيغة الخامسة: للأعداد التي تنتهي بعدد محصور بين 11 و99 (مثلا: 1099، 278)
  • الصيغة السادسة: للأعداد الأكبر من مائة المنتهية ب01 أو 02 أو 00.

المعادلة

هذه هي المعادلة المطلوبة لاستخدام الصيغة السابقة:

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 ? 4 : 5;

ماذا يعني هذا للمترجم؟

  • عندما تنتقل لرسالة بها جمع، سيفتح محرر ملفات PO ستة ألسن أمامك، كل لسان يطابق صيغة من الصيغ المذكورة. فعلى سبيل المثال؛ لترجمة العبارة:
"1 item"
 "%1 items"

على المترجم أن يكتب في كل لسان:

  • في الصيغ الثلاثة الأولى لا حاجة لكتابة المتغير (%1)، لأنَّها ستكون صيغة نصية:
لا عناصر
عنصر واحد
عنصران
  • في الصيغة الرابعة، يكون المعدود جمعًا مجرورًا، مثال: 3 عناصر. لا تنسَ كتابة المتغير (%1).
%1 عناصر
  • في الصيغة الخامسة، يكون المعدود مفردًا منصوبًا (تمييز)، مثال: 1099 عنصرا. لا تنسَ كتابة المتغير (%1).
%1 عنصرا
  • في الصيغة السادسة والأخيرة، يكون المعدود مفردًا مجرورًا، مثال: 202 عنصر. لا تنسَ كتابة المتغير (%1).
%1 عنصر

ما الفائدة من هذه الصيغ؟

الهدف هو إظهار رسائل عربية أنيقة وسليمة من الأخطاء (مثلا، 2 ملفات، 11 ملفات، 100 ملفات...إلخ. كلها أخطاء فادحة، فالمعدود يتغير حسب العدد في العربية)

لم لم يتحول إلى هذه الصيغة من قبل؟

لاختلاف وجهات النَّظر، لم يُتَّفق على الصيغة المراد استعمالها. انظر: صيغ المعدود وآراء حول صيغ المعدود

كيف أضبط بابل ك ( Kbabel ) لدعم هذه الصيغ؟

  • أنشئ مشروعًا جديدًا
  • ادخل إلى حوار الضبط عن طريق مشروع >> ثم اضبط
  • ضع 6 في عدد صيغ المفرد/الجمع:
  • لا تختر تطلب معاملات صيغ الجمع فى الترجمة
  • أدخل:
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 ? 4 : 5;

في ترويسة صيغة جمع &GNU:

أحرر الملفات في محرر نصوص مجردة، كيف أتعامل مع الصيغ؟

هكذا:

 
 msgid "1 Item"
 msgid_plural "%d Items"
 msgstr[0] "لا عناصر"
 msgstr[1] "عنصر واحد"
 msgstr[2] "عنصران"
 msgstr[3] "%d عناصر"
 msgstr[4] "%d عنصرا"
 msgstr[5] "%d عنصر"

المشاريع التي تستخدم هذه الصيغة


تعدد المعاملات

يجب ملاحظة أنه في حال تعدد المعاملات في نص الترجمة، فإن إزالة أحدها سيؤدي إلى انهيار البرمجية أثناء التشغيل، كما في جملة مثل:

"%d items of %s type

فترجمتها في حالة المفرد هكذا:

"عنصر واحد من النوع ‪%s‬"

خطأ برمجيا، ولتفادي هذا فبدلا من المعامل العددي "‪%d‬" نضع المعامل ‪%.0s‬ الذي لن يظهر في الترجمة لكنه سيمنع الخطأ البرمجي:

"عنصر واحد‪%.0s‬ من النوع ‪%s‬"