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

من ويكي عربآيز
اذهب إلى: تصفح، ابحث
(طريقة استعمالها: جدول يبين الحالات بشكل أوضح و توضيح للقصور و الاصطلاحات و التحايلات)
ط (ماذا يعني هذا للمترجم؟)
 
(30 مراجعة متوسطة بواسطة 9 مستخدمين غير معروضة)
سطر 1: سطر 1:
{{صندوق|زيتوني||'''''توثق هذه الصفحة لكيفية استخدام صيغ المعدود، لمراجعة النقاش حول الصيغة الأنسب راجع صفحة: [[آراء حول صيغ المعدود]]'''''}}
+
{{صندوق|زيتوني||'''''توثق هذه الصفحة لكيفية استخدام صيغ المعدود، لمراجعة النقاش حول الصيغة الأنسب راجع صفحة [[آراء حول صيغ المعدود]]'''''}}
  +
{{English|Plural Forms}}
   
  +
في اللغة العربية يختلف تمييز العدد حسب قيمة العدد، مثلا "كتاب واحد" و "كتابين" و "15 كتابا"، لذا نحتاج لأكثر من صيغة في ترجمة رسائل البرامج التي تحتوي أعدادا متغيرة مثل: "‪%n Books‬" حيث "%n" متغير قد يأخذ أي قيمة عددية، وترجمته "%n كتب" سينتج عنها جمل خطأ مثل "1 كتب"، "2 كتب" ، "15 كتب" إلخ.
تستخدم أغلب مشاريع البرمجيات الحرة أدوات GNU gettext كبنية لآلية الترجمة.
 
   
  +
للتعامل مع هذا توفر بنية الترجمة في جنو/لينكس (والبرمجيات الحرة عموما) خصائص تتيح تغير صيغة تمييز العدد (المعدود) حسب قيمة العدد نفسه.
من بين الخصائص العيدة التي يوفرها gettext خاصية صيغ '''المعدود'''، تتلخص وظيفتها في السماح بإمكانية تغيير النص المترجم تبعا لقيمة المعدود، بعبارة أخرى تعطي إمكانية ترجمة عبارة مثل "there is X files" (حيث X تساوي أي عدد) إلى "لا توجد ملفات"، "يوجد ملف واحد"، "يوجد ملفين"، "يوجد 15 ملفا"، "يوجد 10050 ملف" الخ.
 
   
  +
= الجموع =
==طريقة استعمالها==
 
   
  +
نستعمل الآن صيغة جموع بست صيغ:
===الصيغة===
 
  +
* الصيغة الأولى: للصفر
  +
* الصيغة الثانية: للمفرد
  +
* الصيغة الثالثة: للمثنى
  +
* الصيغة الرابعة: للأعداد التي تنتهي بعدد محصور بين 3 و 10 (مثلا: 103، 1405، 23409)
  +
* الصيغة الخامسة: للأعداد التي تنتهي بعدد محصور بين 11 و 99 (مثلا: 1099، 278)
  +
* الصيغة السادسة: للأعداد الأكبر من مئة المنتهية ب01 أو 02 أو 00.
   
  +
= جتتكست (gettext) =
* في ''Gettext'':
 
  +
القاعدة التالية تصف ست حالات للمعدود، و تحدد كل حالة منها بنطاق من الأعداد:
 
  +
تستخدم أغلب البرمجيات الحرة مكتبة جتتكست للتعامل مع الترجمة، تدعم جتتكست تعدد صيغ الجمع، عبر تحديد معادلة الجمع في ترويسة ملف الترجمة (PO)، ويمكنك إما إضافتها يدويا أو إعداد محرر الترجمة الذي تستخدمه لإضافتها.
  +
  +
==المعادلة==
  +
  +
هذه هي المعادلة المطلوبة لاستخدام الصيغة السابقة:
   
 
<pre dir=ltr>
 
<pre dir=ltr>
"Plural-Forms: nplurals=6; plural=n==1 ? 0 : n==0 ? 1 : n==2 ? 2"
+
nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;
" : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
 
</pre>
 
</pre>
   
  +
===ماذا يعني هذا للمترجم؟===
ملحوظة: قسمنا القاعدة على سطرين لقصور تقني ليس أكثر، و يفضل دمجهما في سطر واحد.
 
   
  +
* عندما تنتقل لرسالة بها جمع، سيفتح محرر ملفات ''PO'' ستة ألسن أمامك، كل لسان يطابق صيغة من الصيغ المذكورة. فعلى سبيل المثال؛ لترجمة العبارة:
بسبب بقة|علة ما في الإصدارة الحالية من gettext يتوجب تلافي وضع القاعدة الصفرية في البداية، لذا نتحايل بوضعها بعد ''الواحد''.
 
   
  +
<pre dir=ltr>"1 item"
أمثلة على ما تخرجه لنا القاعدة السابقة في gettext (بافتراض أن الجزء الثابت السابق للعدد من العبارة هو مثلا 'تم بنجاح حذف ''':
 
  +
"%1 items"</pre>
   
  +
على المترجم أن يكتب في كل لسان:
{| border="1"
 
  +
* ''في الصيغ الثلاثة الأولى لا حاجة لكتابة المتغير (''%1'')، لأنَّها ستكون صيغة نصية:''
|+
 
  +
لا عناصر
|الحالة||العدد||أمثلة
 
  +
عنصر واحد
|-
 
  +
عنصران
| 0 || 1 || مستخدم واحد، ملف واحد
 
  +
* ''في الصيغة الرابعة، يكون المعدود جمعًا مجرورًا، مثال: '''3 عناصر'''. لا تنسَ كتابة المتغير (''%1'').
|-
 
  +
%1 عناصر
| 1 || 0 || لا مستخدمِين، لا ملفات
 
  +
* ''في الصيغة الخامسة، يكون المعدود مفردًا منصوبًا (تمييز)، مثال: '''1099 عنصرا'''. لا تنسَ كتابة المتغير (''%1'').
|-
 
  +
%1 عنصرا
| 2 || 2 || مستخدمَين، ملفَّيَن
 
  +
* ''في الصيغة السادسة والأخيرة، يكون المعدود مفردًا مجرورًا، مثال: '''202 عنصر'''. لا تنسَ كتابة المتغير (''%1'').
|-
 
  +
%1 عنصر
| 3 || 3[100] - 10[100] || 6 مستخدمين، 707 ملفات
 
|-
 
| 4 || 11[100] - 99[100] || 69 مستخدما، 666 ملفا
 
|-
 
| 5 || غير ذلك || 100 مستخدمٍ، 9000 ملف
 
|}
 
   
  +
===ما الفائدة من هذه الصيغ؟===
الصيغة الفعلية للتمييز تعتمد على الكلمة ذاتها، و نمط جمعها.
 
   
  +
الهدف هو إظهار رسائل عربية أنيقة وسليمة من الأخطاء (مثلا، 2 ملفات، 11 ملفات، 100 ملفات...إلخ. كلها أخطاء فادحة، فالمعدود يتغير حسب العدد في العربية)
حلول اصطلاحية:
 
   
  +
===لم لم يتحول إلى هذه الصيغة من قبل؟===
* قد تختلف صيغة المعدود حسب ما إذا كُنت تقرأ العدد بدءا بالمنزلة الأقل أوالأكبر (مثلا: "ثلاثة و أربعين ملفا" مقابل "أربعين و ثلاث ملفات"، و كذلك: "مئة و واحد ملفا" مقابل "واحد و مئة ملف")، أو بالأسلوب الشائع حاضرا الذي يقدم قراءة المنازل الأكبر من الآحاد و العشرات ثم يعود ليبدأ بالآحاد ثم العشرات، مثل "مئة و ثلاثة و أربعين ملفا"، مقابل "مئة و أربعين و ثلاث ملفات" أو "ثلاث و أربعين و مئة ملف".
 
: و هذه من المشاكل غير المحلولة تقنيا. لذلك اصطلحنا على أنه فيما يتعلق بالأعداد المكتوبة بالأرقام فإن القاعدة توضع استنادا إلى أن قراءتها تكون بدءا بالآحاد لما يقل عن المئة، و بالأسلوب المختلط السابق ذكره لما يزيد عليها.
 
   
  +
لاختلاف وجهات النَّظر، لم يُتَّفق على الصيغة المراد استعمالها. انظر: [[صيغ المعدود]] و[[آراء حول صيغ المعدود]]
* كذلك فإن الصيغة العربية المتوارثة للأعداد من رتبة المئات مع المفرد و المثنى هي: '''مئة و ''معدود''''' و '''مئة و ''معدودان''''' مثل "مئة و مستخدم" و "مئة و مستخدمان"؛ إلا أننا اصطلحنا على قراءة الرقم كما باقي الأعداد.
 
   
  +
===كيف أضبط بابل ك ( Kbabel ) لدعم هذه الصيغ؟===
من أشكال القصور الأخرى في التقنية الحالية:
 
   
  +
* أنشئ مشروعًا جديدًا
* الصيغة الصفرية بهذا الشكل لا تستقيم لغويا، حيث الأصح في العربية أن يتم نفي الفعل إن لم يقع على أي مفعول، أو من أي فاعل، مثل "لم تحذف أية ملفات|لم يحذف اي ملف"، و "لم يُفلت أي مستخدم". هذه مشكلة غير محلولة لأنها تتطلب إعادة هيكلة العبارة بأكملها و هو ما قد لا يكون متاحا دائما إذا ما عمد المصمم إلى تقطيع العبارات عند حدود الأعداد، و حسب تقنية البرمجة و العولمة(i18n) المستخدمة.
 
  +
* ادخل إلى حوار الضبط عن طريق '''مشروع''' >> ثم '''اضبط'''
  +
* ضع '''6''' في '''عدد صيغ المفرد/الجمع:'''
  +
* لا تختر '''تطلب معاملات صيغ الجمع فى الترجمة'''
  +
* أدخل:
  +
<pre dir=ltr>
  +
nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;
  +
</pre>
  +
في ''ترويسة صيغة جمع &GNU:''
   
  +
===كيف أضبط ( poEdit ) لدعم هذه الصيغ؟===
* قد تتطلب الصياغة الصحيحة لبعض العبارات تغيير تصريف الفعل من حيث التأنيث و التذكير "حُذفت 6 ملفات" مقابل "حُذف 666 ملفا" لكن يمكن التحايل على ذلك باستخدام فعل مساعد مثل "تم" و إلحاقه بمصدر الفعل الأصلي، مثل: "تم حذف..." (و هي صيغة أكثر توكيدا و تقريرية فيما يتعلق بالإبلاغ عن نتائج الأعمال و رسائل السجلات. طالع [[صيغ محبذة في رسائل واجهة المستخدم]])
 
  +
* افتح poEdit.
  +
* اذهب الى Catalog >> Settings.
  +
* في التبويب Project info إذهب الى صندوق Plural Forms.
  +
* أدخل التالي في أول مربع في صندوق Plural Forms:
  +
<pre dir=ltr>
  +
nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;
  +
</pre>
  +
* إضغط Ok.
   
  +
===أحرر الملفات في محرر نصوص مجردة، كيف أتعامل مع الصيغ؟===
  +
  +
هكذا:
  +
<pre dir="ltr">
  +
msgid "1 Item"
  +
msgid_plural "%d Items"
  +
msgstr[0] "لا عناصر"
  +
msgstr[1] "عنصر واحد"
  +
msgstr[2] "عنصران"
  +
msgstr[3] "%d عناصر"
  +
msgstr[4] "%d عنصرا"
  +
msgstr[5] "%d عنصر"
  +
</pre>
  +
  +
===المشاريع التي تستخدم هذه الصيغة===
  +
  +
* [[كدي]]
  +
* [[جنوم]]
  +
* بوتل
  +
* لنشباد
  +
  +
  +
= موزيلا =
  +
تستخدم موزيلا بنية ترجمة خاصة بها، الإصدارات الأخيرة تدعم صيغ الجمع.
  +
  +
الصيغة المستخدمة هي:
  +
  +
<pre dir="ltr">
  +
nplurals=6; plural=n==0 ? 5 : n==1 ? 0 : n==2 ? 1 : n%100>=3 && n%100<=10 ? 2 : n%100>=11 ? 3 : 4;
  +
</pre>
  +
  +
= كيوت Qt =
  +
  +
تدعم صيغ الجموع منذ الإصدارة 4.؟؟
  +
  +
....
  +
  +
= ملاحظات =
  +
  +
== تغيير ترتيب المعاملات ==
  +
  +
...
  +
  +
  +
==تعدد المعاملات==
  +
  +
يجب ملاحظة أنه في حال تعدد المعاملات في نص الترجمة، كوجود معامل عددي (%d) ثم معامل نصي (%s)، ففي الحالة 1 و 2 و 3 سيحذف المعامل العددي، مثلا:
  +
<pre dir=ltr>"%d items of %s type</pre>
  +
ستترجم:
  +
<pre>
  +
لا عناصر من النوع %s
  +
عنصر واحد من النوع %s
  +
عنصرين من النوع %s
  +
%d عناصر من النوع %s
  +
%d عنصرا من النوع %s
  +
%d عنصر من النوع %s
  +
</pre>
  +
لكن هذا سيؤدي لانهيار التطبيق لتوقعه وجود معامل عددي قبل المعامل النصي، كحل لهذا نضع مكان المعامل العددي (%d) المعامل %.0s الذي يملأ المكان فقط دون أن تطبع أي قيمة له، فتكون الترجمة:
  +
<pre>
  +
لا عناصر%.0s من النوع %s
  +
عنصر واحد%.0s من النوع %s
  +
عنصرين%.0s من النوع %s
  +
%d عناصر من النوع %s
  +
%d عنصرا من النوع %s
  +
%d عنصر من النوع %s
  +
</pre>
  +
لاحظ عدم وجود مسافة بين %.0s وما قبلها، لأنها لن تظهر للمستخدم. ولاحظ عدم الحاجة لأي تغيير في الحالات الثلاث الأخيرة.
   
 
[[تصنيف:معايير]]
 
[[تصنيف:معايير]]

المراجعة الحالية بتاريخ 20:03، 9 سبتمبر 2012

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

This page is in English under Plural Forms

Arabic.png

في اللغة العربية يختلف تمييز العدد حسب قيمة العدد، مثلا "كتاب واحد" و "كتابين" و "15 كتابا"، لذا نحتاج لأكثر من صيغة في ترجمة رسائل البرامج التي تحتوي أعدادا متغيرة مثل: "‪%n Books‬" حيث "%n" متغير قد يأخذ أي قيمة عددية، وترجمته "%n كتب" سينتج عنها جمل خطأ مثل "1 كتب"، "2 كتب" ، "15 كتب" إلخ.

للتعامل مع هذا توفر بنية الترجمة في جنو/لينكس (والبرمجيات الحرة عموما) خصائص تتيح تغير صيغة تمييز العدد (المعدود) حسب قيمة العدد نفسه.

الجموع

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

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

جتتكست (gettext)

تستخدم أغلب البرمجيات الحرة مكتبة جتتكست للتعامل مع الترجمة، تدعم جتتكست تعدد صيغ الجمع، عبر تحديد معادلة الجمع في ترويسة ملف الترجمة (PO)، ويمكنك إما إضافتها يدويا أو إعداد محرر الترجمة الذي تستخدمه لإضافتها.

المعادلة

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

nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 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 ? 4 : 5;

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

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

  • افتح poEdit.
  • اذهب الى Catalog >> Settings.
  • في التبويب Project info إذهب الى صندوق Plural Forms.
  • أدخل التالي في أول مربع في صندوق Plural Forms:
nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;
  • إضغط Ok.

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

هكذا:

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

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


موزيلا

تستخدم موزيلا بنية ترجمة خاصة بها، الإصدارات الأخيرة تدعم صيغ الجمع.

الصيغة المستخدمة هي:

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

كيوت Qt

تدعم صيغ الجموع منذ الإصدارة 4.؟؟

....

ملاحظات

تغيير ترتيب المعاملات

...


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

يجب ملاحظة أنه في حال تعدد المعاملات في نص الترجمة، كوجود معامل عددي (%d) ثم معامل نصي (%s)، ففي الحالة 1 و 2 و 3 سيحذف المعامل العددي، مثلا:

"%d items of %s type

ستترجم:

لا عناصر من النوع %s
عنصر واحد من النوع %s
عنصرين من النوع %s
%d عناصر من النوع %s
%d عنصرا من النوع %s
%d عنصر من النوع %s

لكن هذا سيؤدي لانهيار التطبيق لتوقعه وجود معامل عددي قبل المعامل النصي، كحل لهذا نضع مكان المعامل العددي (%d) المعامل %.0s الذي يملأ المكان فقط دون أن تطبع أي قيمة له، فتكون الترجمة:

لا عناصر%.0s من النوع %s
عنصر واحد%.0s من النوع %s
عنصرين%.0s من النوع %s
%d عناصر من النوع %s
%d عنصرا من النوع %s
%d عنصر من النوع %s

لاحظ عدم وجود مسافة بين %.0s وما قبلها، لأنها لن تظهر للمستخدم. ولاحظ عدم الحاجة لأي تغيير في الحالات الثلاث الأخيرة.