هذه النسخة العربية من مقالة قياس نُشرت بالإنجليزية في 4 أغسطس 2026. الأرقام واللقطات والتحفظات هي نفسها دون تعديل.
الطريقة
ملف اختبار يحمل الرقم التسلسلي نفسه للتاريخ، 45662، في ثلاث خلايا بثلاثة رموز صيغة مختلفة، إضافة إلى خليتين رقميتين تحملان الرمز اللغوي السعودي. يوافق هذا الرقم 5 يناير 2025 في نظام تواريخ 1900، والإجابة الصحيحة بتقويم أم القرى هي 05/07/1446.
قرأت الملف نفسه ثلاثة محركات:
ssf0.11.2، محرك الصيغ الذي تعتمد عليه أغلب أدوات الجداول في JavaScript، مستدعًى مباشرة بالرمز والقيمة.- LibreOffice 26.2.1.2، محوَّلًا دون واجهة إلى HTML وإلى PDF. تصدير HTML لديه يسجّل صيغة الأرقام التي استقر عليها لكل خلية، فتظهر أخطاؤه مباشرة لا استنتاجًا.
- عارض Sifrsys، معروضًا في متصفح Chromium دون واجهة، مع قراءة النصوص المعروضة من شجرة الصفحة الحية.
المرجع للتاريخ ليس أيًّا من الثلاثة. المرجع هو Intl.DateTimeFormat بتقويم islamic-umalqura، وهو تنفيذ ICU للتقويم المعتمد في المملكة. لهذا الاختيار أهميته، لأن ICU يوفّر أيضًا islamic-tbla، وهو التقويم الجدولي الحسابي، والاثنان يختلفان.
إعادة إنتاج النتيجة
سطران يكفيان لرؤية التقويمين يفترقان، في أي نسخة حديثة من Node أو في طرفية المتصفح:
const d = new Date(Date.UTC(2025, 0, 5))
const f = (cal) => new Intl.DateTimeFormat(`en-u-ca-${cal}-nu-latn`,
{ day: 'numeric', month: 'numeric', year: 'numeric', timeZone: 'UTC' }).format(d)
f('islamic-umalqura') // 7/5/1446 -> 05/07/1446
f('islamic-tbla') // 7/6/1446 -> 06/07/1446وللمقارنة الكاملة بين المحركات الثلاثة، يعرض الأمر node tests/fidelity/run.mjs الجانبين ويقيّم الخلايا السعودية مقابل المواصفة لا مقابل LibreOffice. ومخرجات LibreOffice محفوظة في tests/fidelity/.cache/، فيمكن قراءة رموز الصيغ التي استقر عليها مباشرة من ملف HTML المصدَّر.
النتائج
| رمز الصيغة | ssf 0.11.2 | LibreOffice 26.2 | Sifrsys |
|---|---|---|---|
| B2dd/mm/yyyyهجري عبر معدِّل التقويم B2 | 05/01/1444 | B205/01/2025 | 05/07/1446 |
| [$-060401]dd/mm/yyyyهجري عبر الرمز اللغوي ar-SA | 05/01/2025 | 06/07/1446 | 05/07/1446 |
| [$-2060401]dd/mm/yyyyهجري بالأرقام العربية الهندية | 05/01/2025 | لم تُطبَّق الصيغة | ٠٥/٠٧/١٤٤٦ |
| [$-2060401]#,##0.00رمز لغوي سعودي، أرقام اللغة، بلا رمز عملة | $45,231,000.00 | 45231000 | ٤٥٬٢٣١٬٠٠٠٫٠٠ |
| [$-2060401]#,##0الرمز نفسه، عدد صحيح | $14,131,000 | 14131000 | ١٤٬١٣١٬٠٠٠ |
| [$ر.س-401]#,##0.00للضبط: رمز عملة حقيقي | ر.س45,231,000.00 | صحيح | ر.س45,231,000.00 |
| 0.0%للضبط: رمز يعرضه كل محرك صحيحًا | 62.3% | صحيح | 62.3% |
أربعة أخطاء تستحق أن تُسمّى كلٌّ باسمه، لأن لكل منها سببًا مختلفًا.
علامة الدولار. الرمز [$-2060401] لا يحمل رمز عملة إطلاقًا. العلامة $ هنا فاصل يفتح الرمز اللغوي، ومكتبة ssf تقرأ الرمز المجرد على أنه عملة، فيعود الرقم السعودي وأمامه علامة دولار أمريكي. شحنّا هذا الخلل بأنفسنا قبل أن نكتشفه. الإصلاح يعيد كتابة الصيغة قبل أن يراها المحرك: الرمز اللغوي الخالي من العملة يُحذف، والرمز الحقيقي مثل [$ر.س-401] يُحفظ نصًا حرفيًا.
B2 الحرفية. لا يتعامل LibreOffice مع المعدِّل B2، فيطبع الحرفين نصًا أمام تاريخ ميلادي، فتظهر B205/01/2025 في خلية عنوان عمودها «التاريخ الهجري».
خطأ اليوم الواحد. حين يتعرف LibreOffice على طلب التاريخ الهجري، يعيد كتابة الرمز بلهجته الخاصة [$-401][~hijri] ويعرض 06/07/1446. تقويمه الهجري هو الخوارزمية الجدولية لا أم القرى، فيتأخر يومًا. جرّبنا إعدادات اللغة في البيئة، ولغة الملف الشخصي، وصيغًا بديلة للرمز، ولم يغيّر أيٌّ منها النتيجة.
الإسقاط الصامت. في الخليتين الرقميتين بالأرقام العربية الهندية، يسجّل LibreOffice الصيغة على أنها 1033;، أي لغة en-US بلا رمز صيغة، ويطبع الرقم الخام. هذا أخطر الأربعة، لأن لا شيء على الشاشة يوحي بأن صيغةً طُلبت أصلًا.


اليمين إلى اليسار ليس اختيارًا للخط
الاتجاه خاصية على مستوى الورقة في الملف، sheetView rightToLeft، وتغيّر أربعة أمور منفصلة. ينعكس ترتيب الأعمدة فيقع العمود A على الحافة اليمنى. وتُثبَّت الأجزاء المجمّدة يمينًا لا يسارًا. وتصبح إزاحة التمرير الأفقي في المتصفح سالبة، فيحتاج كل حساب للتمرير إلى قلب إشارته. وتمتلئ أشرطة البيانات في الاتجاه المعاكس. توضع خاصية الاتجاه على الجدول وعمدًا لا على حاوية التمرير، لأن تطبيع حسابات التمرير في الشيفرة وقلب الحاوية معًا يُلغي أحدهما الآخر. ويُعاد مفتش المعادلات قسرًا إلى الاتجاه من اليسار إلى اليمين، فمرجع الخلية ليس عبارة عربية.
كل ما سبق خرج من التشغيل نفسه الموصوف في اختبار دقة الجداول (بالإنجليزية)، حيث تُقيَّم خلايا الصيغ السعودية مقابل المواصفة تحديدًا لأن المرجع البديهي يخطئ فيها.
صفحات ذات صلة: غرفة بيانات بالعربية · غرفة البيانات لجولة التمويل · ما الذي يعنيه الاستشهاد بالمصدر · كيف نختبر غرفتنا