غرف البيانات بالعربية · قياس

التاريخ الهجري والنصوص من اليمين إلى اليسار في غرف البيانات

جدول ميزانية سعودي واحد، في ثلاثة محركات عرض. LibreOffice يطبع معدِّل التقويم نصًا حرفيًا، ومكتبة ssf الشائعة تضع علامة دولار أمريكي على رقم سعودي، والخطآن كلاهما لا يراهما القارئ.

· المقالة الأصلية بالإنجليزية (4 أغسطس 2026)

هذه النسخة العربية من مقالة قياس نُشرت بالإنجليزية في 4 أغسطس 2026. الأرقام واللقطات والتحفظات هي نفسها دون تعديل.

الطريقة

ملف اختبار يحمل الرقم التسلسلي نفسه للتاريخ، 45662، في ثلاث خلايا بثلاثة رموز صيغة مختلفة، إضافة إلى خليتين رقميتين تحملان الرمز اللغوي السعودي. يوافق هذا الرقم 5 يناير 2025 في نظام تواريخ 1900، والإجابة الصحيحة بتقويم أم القرى هي 05/07/1446.

قرأت الملف نفسه ثلاثة محركات:

  1. ssf 0.11.2، محرك الصيغ الذي تعتمد عليه أغلب أدوات الجداول في JavaScript، مستدعًى مباشرة بالرمز والقيمة.
  2. LibreOffice 26.2.1.2، محوَّلًا دون واجهة إلى HTML وإلى PDF. تصدير HTML لديه يسجّل صيغة الأرقام التي استقر عليها لكل خلية، فتظهر أخطاؤه مباشرة لا استنتاجًا.
  3. عارض 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 المصدَّر.

النتائج

القيمة نفسها، ورمز الصيغة نفسه، وثلاثة محركات. الرقم التسلسلي 45662 يوافق 5 يناير 2025، والتاريخ الصحيح بتقويم أم القرى 05/07/1446.
رمز الصيغةssf 0.11.2LibreOffice 26.2Sifrsys
⁦B2dd/mm/yyyy⁩هجري عبر معدِّل التقويم B205/01/1444B205/01/202505/07/1446
⁦[$-060401]dd/mm/yyyy⁩هجري عبر الرمز اللغوي ar-SA05/01/202506/07/144605/07/1446
⁦[$-2060401]dd/mm/yyyy⁩هجري بالأرقام العربية الهندية05/01/2025لم تُطبَّق الصيغة٠٥/٠٧/١٤٤٦
⁦[$-2060401]#,##0.00⁩رمز لغوي سعودي، أرقام اللغة، بلا رمز عملة$45,231,000.0045231000٤٥٬٢٣١٬٠٠٠٫٠٠
⁦[$-2060401]#,##0⁩الرمز نفسه، عدد صحيح$14,131,00014131000١٤٬١٣١٬٠٠٠
⁦[$⁧ر.س⁩-401]#,##0.00⁩للضبط: رمز عملة حقيقير.س45,231,000.00صحيحر.س45,231,000.00
⁦0.0%⁩للضبط: رمز يعرضه كل محرك صحيحًا62.3%صحيح62.3%
القيمة نفسها، ورمز الصيغة نفسه، وثلاثة محركات. الرقم التسلسلي 45662 يوافق 5 يناير 2025، والتاريخ الصحيح بتقويم أم القرى 05/07/1446.

أربعة أخطاء تستحق أن تُسمّى كلٌّ باسمه، لأن لكل منها سببًا مختلفًا.

علامة الدولار. الرمز [$-2060401] لا يحمل رمز عملة إطلاقًا. العلامة $ هنا فاصل يفتح الرمز اللغوي، ومكتبة ssf تقرأ الرمز المجرد على أنه عملة، فيعود الرقم السعودي وأمامه علامة دولار أمريكي. شحنّا هذا الخلل بأنفسنا قبل أن نكتشفه. الإصلاح يعيد كتابة الصيغة قبل أن يراها المحرك: الرمز اللغوي الخالي من العملة يُحذف، والرمز الحقيقي مثل [$⁧ر.س⁩-401] يُحفظ نصًا حرفيًا.

B2 الحرفية. لا يتعامل LibreOffice مع المعدِّل B2، فيطبع الحرفين نصًا أمام تاريخ ميلادي، فتظهر B205/01/2025 في خلية عنوان عمودها «التاريخ الهجري».

خطأ اليوم الواحد. حين يتعرف LibreOffice على طلب التاريخ الهجري، يعيد كتابة الرمز بلهجته الخاصة [$-401][~hijri] ويعرض 06/07/1446. تقويمه الهجري هو الخوارزمية الجدولية لا أم القرى، فيتأخر يومًا. جرّبنا إعدادات اللغة في البيئة، ولغة الملف الشخصي، وصيغًا بديلة للرمز، ولم يغيّر أيٌّ منها النتيجة.

الإسقاط الصامت. في الخليتين الرقميتين بالأرقام العربية الهندية، يسجّل LibreOffice الصيغة على أنها 1033;، أي لغة en-US بلا رمز صيغة، ويطبع الرقم الخام. هذا أخطر الأربعة، لأن لا شيء على الشاشة يوحي بأن صيغةً طُلبت أصلًا.

05/07/1446
أم القرى، التقويم المعتمد
ICU islamic-umalqura
06/07/1446
الهجري الجدولي، متأخرًا يومًا
ICU islamic-tbla
579 عامًا
الخطأ حين يُتجاهل بايت التقويم
تاريخ ميلادي معروض كأنه هجري
تصدير PDF من LibreOffice لجدول ميزانية عربي. عمود التاريخ الهجري يعرض B205/01/2025 في صفين و06/07/1446 في صفين آخرين، وخليتان في الأسفل تعرضان الرقمين غير المنسقين 45231000 و14131000.
LibreOffice 26.2.1.2، تصدير PDF بدقة 150 نقطة في البوصة. صفان يعرضان المعدِّل B2 نصًا حرفيًا، وصفان يعرضان الهجري الجدولي متأخرًا يومًا، والخليتان بالأرقام العربية الهندية فقدتا صيغتهما كليًا.
عارض الجداول في Sifrsys يعرض جدول الميزانية العربي نفسه، بترتيب أعمدة من اليمين إلى اليسار، وتواريخ هجرية 05/07/1446، وأرقام عربية هندية.
الملف نفسه في عارض Sifrsys، ملتقطًا أثناء تشغيل اختبار الدقة. الأعمدة من اليمين إلى اليسار، وكل خلية هجرية تقرأ 05/07/1446، والخليتان بالأرقام العربية الهندية تُعرضان ٤٥٬٢٣١٬٠٠٠٫٠٠ و١٤٬١٣١٬٠٠٠.

اليمين إلى اليسار ليس اختيارًا للخط

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

كل ما سبق خرج من التشغيل نفسه الموصوف في اختبار دقة الجداول (بالإنجليزية)، حيث تُقيَّم خلايا الصيغ السعودية مقابل المواصفة تحديدًا لأن المرجع البديهي يخطئ فيها.

صفحات ذات صلة: غرفة بيانات بالعربية · غرفة البيانات لجولة التمويل · ما الذي يعنيه الاستشهاد بالمصدر · كيف نختبر غرفتنا

أسئلة متكررة

أسئلة عن عرض العربية والتاريخ الهجري.

تقويم أم القرى هو التقويم المعتمد رسميًا في المملكة العربية السعودية، ويقوم على جداول فلكية منشورة. أما التقويم الجدولي فقاعدة حسابية تضيف أيام الكبس في دورة ثابتة من 30 عامًا. يتفقان في أغلب الأيام ويختلفان بيوم بما يكفي ليكون ذلك مهمًا: يوافق 5 يناير 2025 الخامس من رجب 1446 في تقويم أم القرى، والسادس من رجب 1446 في التقويم الجدولي. وفي مستند له موعد نظامي، اليوم الواحد هو المسألة كلها.
لأن التقويم يُطلب عبر رمز صيغة لا تفهمه أغلب مكتبات العرض إلا جزئيًا. يكتب إكسل إما البادئة B2 وإما رمزًا لغويًا يحمل بايته الأوسط معرّف التقويم. المكتبة التي تقرأ الرمز على أنه رمز عملة، أو تتجاهل بايت التقويم، تعرض تاريخًا ميلاديًا يبدو معقولًا تمامًا، وهو خاطئ بنحو 579 عامًا.
هو قيمة ست عشرية من أربعة بايتات بالترتيب 0xNNCCLLLL. الكلمة الدنيا 0401 تعني اللغة العربية في السعودية (ar-SA)، وبايت التقويم 06 يختار التقويم الهجري، والرقم 2 في المقدمة يطلب أرقام اللغة نفسها، أي الأرقام العربية الهندية. فالرمز يطلب تاريخًا هجريًا سعوديًا أو رقمًا بالأرقام العربية الهندية، ولا يحمل أي رمز عملة إطلاقًا.
الاتجاه من اليمين إلى اليسار خاصية على مستوى الورقة داخل الملف، لا تخمين من اللغة. تعكس ترتيب الأعمدة، وتنقل نقطة أصل الأجزاء المجمّدة إلى الحافة اليمنى، وتقلب تدرّج أشرطة البيانات، وتجعل إزاحة التمرير الأفقي سالبة. العارض الذي يحوّل المصنف إلى صورة يرث ما قرره محوّله، والعارض الذي يرسم الشبكة بنفسه عليه أن ينفّذ كل واحدة من هذه.

جرّبها على ملفك

ارفع الملف الذي يُفتح خطأً في كل مكان.

جدول استحقاق هجري ومجاميع بالأرقام العربية الهندية: عشر دقائق على المستوى المجاني تحسم المسألة. عرض العربية والهجري واليمين إلى اليسار جزء من العارض في كل الخطط، بلا رسوم على الصفحة.

تجربة 14 يومًا · بلا بطاقة ائتمان · بلا رسوم على الصفحة