المصطلحات القرآنية
الأسماء التي اتفقنا عليها للمصطلحات القرآنية في الكود، وكيف تستخدمها في مشروعك.
لنفترض أنك تعمل على تطبيق قرآني، وتريد كتابة متغيّر لرقم الآية. قد تسمّيه aya_number، بينما يكتب زميلك ayah_number، وتجد في مكتبة أخرى verse_number. كلها تعني رقم الآية، لكنك ستبحث بأكثر من صيغة لتجد مواضع استخدامها، وستحتار في الاسم الذي تختاره كلما أضفت كودًا جديدًا.
هذا ما يحاول معيار المصطلحات حله: لكل مفهوم اسم واحد نتفق عليه في الكود وقواعد البيانات والتوثيق. والأشكال التالية تشرح الفكرة كاملة.
كيف اخترنا الأسماء؟
القاعدة الأساسية: المفهوم القرآني يحتفظ باسمه العربي، ونكتبه بحروف لاتينية. فنكتب surah وayah وليس chapter وverse، حتى لو بدت الكلمة الإنجليزية قريبة، لأننا لا نريد أن يضيع المفهوم القرآني الأصلي في الترجمة. أما المفاهيم العامة التي لا تختص بالقرآن فتبقى بأسمائها الإنجليزية المعتادة، مثل word وpage وletter.
بعدها جمعنا من المشاريع والمكتبات التهجئات المختلفة لكل مفهوم، واخترنا له تهجئة واحدة مشتقة من نطقه العربي. مثلًا sura وsurat وsoorah كلها تعود إلى surah. وكل القواعد التي أوصلتنا إلى هذه الأسماء موجودة في معيار التسمية، من متى نحتفظ بالعربية إلى كيف نكتب كل حرف. اختر مفهومًا لترى تهجئاته.
ماذا يعني كل اسم؟
الاسم وحده لا يكفي، نحتاج أن نتفق أيضًا على ما يصفه. لذلك لكل اسم مدخل في القاموس يشرح المفهوم، وما يخرج عنه، وما يرتبط به من مفاهيم. ابحث في الخريطة عن مصطلح، أو مرّر على نقطة (أو المسها في الجوال) لترى روابطها.
ما هي السجلات؟
بعض المفاهيم تأخذ قيمتها من قائمة محددة. مثلًا، عدد آيات سورة البقرة ٢٨٥ أو ٢٨٦ أو ٢٨٧ بحسب نظام العد. فإذا حفظت رقم الآية من غير نظام العد، لن يعرف من يقرأ بياناتك أي آية تقصد.
لذلك نسمّي في السجلات كل عضو في هذه القوائم: أنظمة العد، والقراءات والرواة والروايات، وأسماء السور، ومواضع السجدة، وغيرها.
رقم الآية وحده لا يكفي، احفظ معه نظام العد.
كل خط في الدائرة رواية: يصل الراوي بالقارئ الذي روى عنه، ومن هنا جاء اسمها، مثلًا حفص عن عاصم.
hafsالراويanعنasimالقارئتُقرن قراءة عَاصِم تقليديًا بنظام العَدّ الكُوفِيّ: ٦٬٢٣٦ آية.
كيف أستخدمها في مشروعي؟
أسهل طريقة أن تضيف أداة Quranic Terminology Lint إلى pre-commit في مشروعك. بعدها يُفحص كل commit، فإذا كتبت aya_number مثلًا، تخبرك الأداة بالاسم الذي اتفقنا عليه والقاعدة التي يستند إليها.
- أضف الأداة إلى ملف
.pre-commit-config.yamlفي مشروعك. - شغّل
pre-commit installمرة واحدة. تحتاج الأداة Python 3.10 أو أحدث. - اكتب الكود كعادتك. إذا اختلف اسم عما اتفقنا عليه، يتوقف الـ commit ويظهر لك الاسم الصحيح.
repos:
- repo: https://github.com/marqoom-specs/quranic-terminology-lint
rev: v0.4.0
hooks:
- id: quranic-terminologypre-commit installsrc/model.ts:12: error getSuraNo → getSurahNumber (rule 068: Reference numbers)
مرقوم