العربية والكتابة من اليمين
أسطرلاب بالعربية: واجهة معكوسة، ومبدّل لغة للزوار، وتصفية بحسب اللغة بأربعة أوضاع، وتواريخ هجرية، واتجاه للملاحظة، وأسماء عربية لوسومك.
يتكلم أسطرلاب العربية. SITE_LANG=ar (أو الإعدادات ← اللغة ← لغة الموقع ← العربية، ويسري فورًا من غير إعادة تشغيل) يفعل شيئين.
يترجم الواجهة. كلّ تسمية وزر ونصّ إرشادي وبند قائمة وتنبيه وحوار تأكيد، في التطبيق وفي الموقع العام سواء (اللوحة الجانبية، والتبويبات، وشريط الحالة، ولوحة الأوامر، ولوحات الروابط الراجعة والمحتويات والمخطط المحلي، والإعدادات، والمدونة كلها: الترويسة وصف المواضيع وملحقات المقالة وصف المشاركة والسابق/التالي والحواشي)، يأتي من قاموس واحد في client/i18n.ts. وتُصاغ الأعداد كما تصوغها العربية (حاشية واحدة، حاشيتان، 3 حواشٍ، 40 حاشية)، لا بإلصاق حرف جمع في آخر الكلمة.
ويعكس التخطيط. يصير المستند <html dir="rtl" lang="ar"> ويتبعه كل شيء: تنتقل لوحة الملاحظات إلى اليمين، ولوحة المحتويات والروابط الراجعة إلى اليسار. وتظل اللوحتان تتبعان اللغة كلما تغيرت، لأن الجهة التي تقف فيها لوحة الملاحظات تفضيلٌ له ثلاث حالات. تلقائي هو الافتراضي: يضع اللوحة على الحافة التي تبدأ منها القراءة، ويعيد النظر في ذلك كلما تغيرت اللغة. أما يسار ويمين فيسمّيان حافة حقيقية من الشاشة، باللغتين، ويغلبان الاتجاه غلبةً دائمة. والحالات الثلاث في لوحة الأوامر وفي عنصر تحكم ثلاثي في الإعدادات ← المظهر ← لوحة الملاحظات، حيث يقول تلقائي أيضًا أيّ حافة اختار، فلا يكون الافتراضي صامتًا أبدًا. (والحالة الثالثة هي طريق العودة إلى التلقائي.) وتنقلب إزاحة الشجرة وأسهمها، وينتقل شريط التمييز للملاحظة النشطة إلى الحافة الأخرى، وينعكس شريط الحالة وشريط تنقل المدونة، وتشير أسهم «الأقدم/الأحدث» إلى الجهة التي تقرأ نحوها فعلًا. ولأن اللوحتين تتبادلان الطرفين، لا يسمّي شيء في الواجهة إحداهما «اليسرى»: فالمبدّلات ولوحة الأوامر وورقة الاختصارات تقول لوحة الملاحظات والمحتويات والروابط الراجعة، باللغتين، والاختصار في التلميح. وتحت السطح يُنجز هذا بخصائص CSS المنطقية (margin-inline-* وinset-inline-* وtext-align: start)، فورقة الأنماط نفسها تخدم الاتجاهين؛ ولا توجد تجاوزات [dir="rtl"] إلا حيث لا تستطيع خاصية منطقية أن تعبّر عن الفكرة، كقلب رمز سهم أو زاوية تدرّج لوني.
وعلى الهاتف ينعكس الهيكل كله: يشير سهم الرجوع والأسهم من اليمين إلى اليسار، ويقف عمود اللوح على اليمين وتنزلق ورقة ملاحظته من اليسار. وكل حوار (الإعدادات، ومنتقي الغلاف، والإشراف، وتسجيل الدخول، والتأكيد) يُرتَّب من اليمين إلى اليسار، وتنعكس المدونة بالطريقة نفسها.
وملاحظاتك تُترك وشأنها. لا يُترجم محتوى الملاحظات أبدًا ولا يُعاد ترتيبه: تختار كل كتلة اتجاهها من نصها هي (dir="auto"). ولهذا تُقرأ الخزانة التي تمزج العربية بالإنجليزية قراءة صحيحة في الإعدادين، ولهذا كانت ملاحظاتك العربية من اليمين إلى اليسار قبل أن تمسّ هذا المفتاح أصلًا. وتنطبق القاعدة نفسها على النصوص المأخوذة من ملاحظاتك التي تظهر داخل الواجهة (صفوف الشجرة، وعناوين التبويبات، وبنود المحتويات، ونتائج البحث، وبطاقات الروابط الراجعة، ومسارات التنقل): يختار كلٌّ منها اتجاهه، فالخزانة التي تجمع بين مكاتيب و1 - Source Material تُقرأ صحيحةً بأي اللغتين.
التواريخ. إذا كان BLOG_LOCALE غير مضبوط، فإن SITE_LANG=ar ينسّق تواريخ التدوينات وأوقات التعليقات بالعربية وبالأرقام العربية المشرقية (١٤ يوليو ٢٠٢٦، قبل ٧ دقائق): كل تاريخ في المنتج، في المدونة ولوحات المدير سواء، من قاعدة واحدة. واضبط BLOG_LOCALE بنفسك لتغيير ذلك؛ فـBLOG_LOCALE=ar-u-nu-latn مثلًا يُبقي أسماء الشهور العربية لكنه يستخدم الأرقام 1/2/3. أما العدّادات في بقية الواجهة (عدد الكلمات، ودقائق القراءة) فتبقى بالأرقام الغربية.
الخطوط. تأخذ العربية خطوطها الخاصة وحجمها الخاص. تسمّي إعدادات الخطوط خطوطَ نسخ (Noto Naskh Arabic وAmiri وScheherazade New) بعد الخطوط اللاتينية، فما زال النص اللاتيني يُكتب بـGeorgia أو بخط النظام، ولا تنزل إلى خطوط النسخ إلا الحروف العربية، التي لا يغطيها خط لاتيني؛ ولا يُجلب شيء من شبكة توزيع خارجية. ولأن خط النسخ يبدو أصغر بوضوح من Georgia بحجم البكسل نفسه، يضاعف lang="ar" أيضًا إعدادَي الحجم (--font-scale و--prose-scale)، فتكبر الواجهة كلها نحو 6% وعمود القراءة نحو 10%. و--font-base الذي تضبطه في custom.css يُضاعَف ولا يُكتب فوقه. ولإعطاء كلمة عربية داخل جملة إنجليزية خطها الخاص، مضبوطًا ضبطًا صحيحًا، حتى على نسخة إنجليزية، انظر الخطوط.
ولوحة مفاتيحك جزء من هذا أيضًا. يضع تخطيط لوحة المفاتيح العربي الحرف ح على المفتاح المكتوب عليه P، وقد عنى ذلك لفترة أن Ctrl P لا يفتح شيئًا: واجهة عربية لا تستجيب اختصاراتها إلا للوحة مفاتيح إنجليزية. وقد أُصلح ذلك. فالاختصار يتبع الحرف الذي يكتبه تخطيطك إذا كان لاتينيًا، ويتبع موضع المفتاح إذا لم يكن، فالحروف اللاتينية المطبوعة على مفاتيحك هي اختصاراتك. وتعرض ورقة Ctrl/Cmd / ما يكتبه كل مفتاح فعلًا بجانب الحرف. انظر الاختصارات ← لوحات المفاتيح غير اللاتينية.
لغة محررك لك
يقرر SITE_LANG اللغة التي تنشر بها. ولا يقرر اللغة التي عليك أن تعمل بها. والإعدادات ← اللغة ← لغتك هو حيث يفترق الأمران: تبعًا للموقع (وهو الافتراضي، ويسمّي أيضًا اللغة التي انتهى إليها)، أو English، أو العربية. يغيّر الشيئين نفسيهما اللذين يغيّرهما مبدّل الزائر، نصوص الواجهة والاتجاه، ويغيّرهما لك وحدك. ويُخزَّن في هذا المتصفح، كسمتك وحافة لوحتك الجانبية؛ فلا يُرسل إلى الخادم أبدًا، ولا يظهر في أي حفظ، ولا يستطيع أن يغيّر بايتًا واحدًا مما يُقدَّم للقارئ. شغّل موقعًا عربيًا من محرر إنجليزي، أو موقعًا إنجليزيًا من محرر عربي؛ فالموقع لا يلاحظ شيئًا في الحالين.
تبديل لغة الواجهة
طريق العودة ظاهر دائمًا. إذا بدّلت إلى العربية خطأً، أو أعطاك أحد حاسوبًا لا تستطيع قراءة واجهته، فلا حاجة إلى أن تبحث عن الإعدادات بلغة لا تقرؤها. يكفي أيٌّ مما يلي:
- مفتاح اللغة في شريط الحالة. في آخر الشريط أسفل النافذة، بجانب مفتاحَي «قراءة» و«وضع vim»، مفتاح صغير بإطار وعليه كرة أرضية. ويحمل اسم اللغة الأخرى بحرفها:
عوالواجهة إنجليزية، وENوالواجهة عربية. انقره فتتبدّل الواجهة: الكلمات، والاتجاه، والجهة التي تقف فيها الألواح. وانقره مرة أخرى فتعود. وعند المرور فوقه يظهر «Switch to Arabic · التبديل إلى العربية» (أو ما يقابله للإنجليزية)، فتُقرأ التلميحة باللغتين. وليس هو حبة التوأمEN ⇄ عالتي في الملاحظة: تلك تقلب الملاحظة إلى وجهها الآخر (التوأم اللغوي)، وهذا يبدّل كل ما حول الملاحظة. ولا يحرّك التبديل مؤشرك ولا يغيّر الملاحظة المفتوحة. - وعلى الهاتف، المفتاح نفسه أعلى تبويب المزيد وأعلى الإعدادات، وفي ورقة ⋯ على شاشة الملاحظة صفٌّ له تحت إجراءات، مكتوب باللغتين.
- ولوحة المفاتيح:
Ctrl/Cmd Alt Shift Lيبدّل الواجهة من أي مكان، ولو كانت نافذة حوارية مفتوحة. وهو اختصار التوأمCtrl/Cmd Alt Lمع Shift. ويعمل على تخطيط لوحة المفاتيح العربي أيضًا، حيث يكتب مفتاح L الحرفم. - ولوحة الأوامر: اضغط
Ctrl/Cmd Pواكتب اسم اللغة التي تريدها، أو التي علقت فيها، بأي الحرفين:عربي،إنجليزي،arabic،english. ويبدأ الصف باللغة التي يبدّل إليها («Switch to English · التبديل إلى الإنجليزية» من العربية، و«التبديل إلى العربية · Switch to Arabic» من الإنجليزية)، فالكلمات في أول الصف كلمات تقرؤها. ثم اضغط Enter.
وكل واحد من هذه يكتب التفضيل نفسه الذي يكتبه الإعدادات ← اللغة ← لغتك، وذلك الصف يُظهر النتيجة. وضغطتان تعودان دائمًا إلى تبعًا للموقع ولا تتركان لغة الموقع نفسها مثبّتة. وما زالت أوامر اللوحة الثلاثة لغة المحرّر: الإنجليزية ولغة المحرّر: العربية ولغة المحرّر: تتبع لغة الموقع موجودة لاختيار إحدى الحالات الثلاث مباشرة.
إذا كنت تقرأ هذا لأنك عالق في العربية ولم تخترها، فهذا هو السبب على الأرجح: قبل أن تُفصل لغة المحرر عن لغة الموقع، كان اختيار الزائر EN/ع يُطبَّق على كل جلسة في ذلك المتصفح، ومنها محرر المالك. وعلى النسخة التي موقعها العام بتخطيط التطبيق لا يُرسم عنصر EN/ع أصلًا، فلم يكن هناك ما يُنقر للتراجع. والترقية تصلح ذلك عند إعادة التحميل التالية من غير أي فعل منك. وعلى بناء أقدم، امسح اختيار الزائر المخزَّن بيدك:
localStorage.removeItem("astrolabe.lang")في وحدة تحكم المتصفح.
مبدّل لغة الزائر
يختار SITE_LANG اللغة التي ينشر بها موقعك، للقرّاء، ولك أيضًا ما لم تقرر غير ذلك كما سبق. والإعدادات ← اللغة ← مبدّل الزائر (مفتاح الإعدادات languageToggle، معطّل افتراضيًا، ولا نظير له في .env) يضيف عنصرًا صغيرًا EN / ع عند حافة شريط التنقل العام، ليختار القارئ اللغة الأخرى بنفسه. ويُخزَّن اختياره في localStorage متصفحه ويبقى في الزيارات اللاحقة؛ ولا يتغير موقع أحد غيره.
يغيّر المبدّل نصوص الواجهة واتجاه النص وأسماء الشهور، لـذلك القارئ. فالواجهة الإنجليزية تطبع «August»، والعربية تطبع «أغسطس». وتبقى الأرقام على إعداد الأرقام في النسخة، فلا تستطيع ضغطة الزائر على EN/ع أن تخلط ١٤ بـ14 في سطر واحد. ولا يستطيع المبدّل أن يصل إلى محررك: فجلسة المدير تقرأ لغة المحرّر الخاصة بها ولا تقرأ لغة زائر أبدًا، ولهذا لم يعد قلب المبدّل العام لفحص ما يراه القارئ يتركك تحرر بلغة لم تخترها. (ومعاينة كزائر هي الطريقة الصادقة للفحص: فالمعاينة تضعك عمدًا في جانب الزائر من ذلك الخط، فترى لغته لا لغتك.) ومحتوى الملاحظات لا يُمسّ؛ يُعرض كما كتبته، كتلةً كتلة، كما يفعل دائمًا. واترك المبدّل معطّلًا (وهو الافتراضي) فلا يكون في الموقع العام أي عنصر لغة.
الأرقام ما زالت لكل نسخة. يختار
BLOG_LOCALEإعداد الأرقام (ولغة قناة RSS). فالنسخة العربية التي يختار زائرها الإنجليزية تقرأ14 August 2026لا14 أغسطس 2026. واقلب المبدّل فتعود الأسماء العربية. وما زالت الأرقام المشرقية تتطلب-u-nu-arabصريحًا في رمز اللغة ذاك.
التصفية حسب اللغة
كثيرًا ما تريد الخزانة ثنائية اللغة موقعًا عامًا بلغة واحدة، أو خيرًا من ذلك، موقعًا ثنائي اللغة يعرض لكل قارئ لغته وحدها. والإعدادات ← اللغة ← تصفية حسب اللغة (LANGUAGE_FILTER) له أربعة أوضاع:
| القيمة | من يقرر | ما يعرضه الموقع العام |
|---|---|---|
off (الافتراضي) | لا أحد | كل ملاحظة منشورة |
follow | القارئ | الملاحظات التي بلغة القارئ فقط |
ar | أنت | الملاحظات التي 40% من حروفها على الأقل عربية فقط |
en | أنت | الملاحظات التي أغلب حروفها غير عربية فقط |
follow هو الوضع الذي يعطي مبدّل الزائر معناه. فمع تشغيل مبدّل الزائر يحصل القارئ الذي يضغط ع على الواجهة العربية والكتابة العربية معًا، وضغط EN يعيد الإنجليزية. ومن غيره (واجهة بلغة وتدوينات بلغة أخرى) كان المبدّل نصف ميزة. والقارئ الذي لا يمسّ المبدّل يحصل على لغة الموقع. (ومع تعطيل مبدّل الزائر لا يجد follow قارئًا يتبعه فيسلك تمامًا كالتثبيت على SITE_LANG؛ وتقول لوحة الإعدادات ذلك بهذه الكلمات، بدل أن تدع الإعداد يعني شيئًا غير اسمه.)
القيم القديمة true/false ما زالت تعمل.
LANGUAGE_FILTER=trueيعني «مثبَّت علىSITE_LANG»، وهذا ما عناه دائمًا، وfalseيعنيoff. وtrueالمخزَّن فيsettings.jsonيُحوَّل عند بدء التشغيل إلى"ar"أو"en"المقابل، ولا يُحوَّل إلى"follow"أبدًا، لأن الترقية يجب ألا تغيّر ما يعرضه موقع حيّ.
ويخبرك بما سيكلفه قبل أن تحفظه. يذكر الصف النتيجة بأعداد حقيقية من خزانتك أنت («مثبَّت على العربية: 3 من ملاحظاتك المنشورة الـ22 تنطبق؛ و19 ستُخفى عن كل زائر»)، ويحذّر بصوت أعلى إذا كان ذلك معظم الموقع، ولا يسكت بعدها: فما دامت التصفية تقلّص فعليًا ما يراه الزوار، يحمل شريط الحالة على الدوام 3/22 عام بجانب عدد المنشور. فاختلاف الرقمين هو الحالة التي تستحق الانتباه، ولم يكن في المنتج قبل ذلك مكان يعرضها. والمعاملة نفسها تشمل كل إعداد آخر يمكن أن يقلّص الموقع العام: الوسوم المستبعدة، والباب الأمامي للمدونة، وPUBLIC=false. أما في وضع follow مع تشغيل مبدّل الزائر فليس ثمة رقم واحد يُطبع، لأن شيئًا لا يُخفى عن الجميع: فالملاحظة التي لا يجدها القارئ بالعربية هي بعينها ما يصل القارئ بالإنجليزية. لذلك يطبع الملخّص الجمهورين معًا («5 من ملاحظاتك المنشورة البالغة 107 تصل قارئًا بالعربية، و102 تصل قارئًا بالإنجليزية»)، ولا يحمل شريط الحالة تحذيرًا عن موقع يصل كل قارئ إلى كامله.
ولن يسلّم أحدًا موقعًا فارغًا. فإذا لم تطابق اللغة النافذة أي ملاحظة منشورة أصلًا، تنحّت التصفية عن ذلك الطلب: يحصل القارئ على المجموعة كلها مع سطر هادئ يشرح لماذا يرى اللغتين، وتحصل أنت على النسخة الصاخبة من التحذير.
ويعمل الكشف عن اللغة في المفهرس، ويُخزَّن لكل ملاحظة، ويتجدد مع تغيّر الملاحظات؛ فلا شيء يُضبط ولا مقدمة تُصان. وتُطبَّق التصفية على كل مكان عام تُسرد فيه الملاحظات: قائمة التدوينات، وشبكة لوحة المعلومات وصف «الأكثر نقاشًا»، وصفحات المواضيع وصف المواضيع نفسه، والمخطط، والبحث، وروابط السابق/التالي، وخلاصة RSS. والموضوع الذي لا تحمله إلا ملاحظات مصفّاة يختفي كليًّا بدل أن يقود إلى صفحة فارغة. وجلسات المدير لا تُصفّى أبدًا: فما دمت مسجَّل الدخول ترى الخزانة كلها دائمًا.
وما الذي يعدّه؟ نثر الملاحظة فقط. تُنزع الشيفرة المسيَّجة والشيفرة داخل السطر ووسوم HTML والتعليقات ووجهات الروابط (روابط ماركداون والروابط المرجعية والعناوين المجردة) قبل عدّ الحروف، فلا تُحسب مقالة عربية إنجليزيةً لأن كل تظليل فيها يحمل رابط readwise.io أو لأنها تضمّن مشغّل YouTube واحدًا. أما نص الرابط فيُعدّ، لأنه ما يقرؤه القارئ. والملاحظة التي لا حروف في نثرها أصلًا (صفحة صور فقط أو أرقام فقط) لا تنتمي إلى أي لغة، وتُعرض في الإعدادين بدل التخمين.
التدوينة نفسها باللغتين. في وضع follow لا يلقى القارئ إلا واحدة من الاثنتين، وذلك هو المقصود — غير أن معناه أن القارئ الذي يهبط على التدوينة الإنجليزية من محرك بحث ثم يضغط ع كان يُترك على عنوان لم تعد لغته الجديدة تُدرجه. أعلن الملفين توأمًا لغويًا أحدهما للآخر، فيأخذه ع/EN إلى الوجه الآخر للتدوينة نفسها بدل الصفحة الرئيسية. وتحمل صفحتا المقالة حينئذٍ <link rel="alternate" hreflang="…"> للوجهين معًا، ويظهر كلٌّ منهما في خريطة الموقع بديلًا للآخر، فيقيّدهما الزاحف مقالةً واحدة بلغتين لا نسختين مكررتين. أما [[رابط الويكي]] الذي يسمّي وجهًا لا يراه هذا القارئ فيُحلّ إلى الوجه الذي يراه، في الموقع العام وحده — أما في محررك فالرابط يهبط حيث وجّهته دائمًا. وفي وضع off يُدرج الوجهان، لأنهما في off ملفان منشوران لا غير، والقول بغير ذلك كذب.
التصفية انتقاء لا تحكّم في الوصول. فالملاحظة المنشورة التي تخفيها التصفية من القوائم ما زالت تُقدَّم على عنوانها:
/api/noteلا يُصفّى أبدًا، والتخطيطان العامّان يحلّان المقالة من عنوانها لا من الشجرة (المصفّاة)، فكل رابط دائم شاركته من قبل يواصل العمل بعد قلب المفتاح. تكفّ الملاحظة فحسب عن الظهور في القوائم والمواضيع والمخطط والبحث والخلاصة. وما يجب ألا تفعله التصفية أبدًا هو تسريب ما تخفيه، لذلك يطبّقها كل مكان يسرد الملاحظات، ومنه تيار الدفع/api/eventsالذي كان سيعلن مسار ملاحظة مخفية لحظة تغيّرها. وإذا كان ينبغي ألا تكون الملاحظة عامة أصلًا، فألغِ نشرها (publish: false)؛ فذلك هو المفتاح الذي يقطع فعلًا.
التواريخ الهجرية
كثيرًا ما يؤرّخ الموقع العربي كتابته بالتقويم الهجري، ولم يكن أسطرلاب حتى الآن يطبع إلا التواريخ الميلادية. والإعدادات ← التواريخ والتقويم ← تقويم التواريخ (مفتاح الإعدادات dateCalendar) يأخذ ثلاث قيم:
| يطبع | |
|---|---|
gregorian (الافتراضي) | 15 August 2026 / ١٥ أغسطس ٢٠٢٦ |
hijri | ٢ صفر ١٤٤٨ هـ |
both | التاريخان جنبًا إلى جنب: `السبت ١٦ ربيع الأول ١٤٤٨ هـ |
ويُرتَّب both بحسب لغة الموقع افتراضيًا: النسخة العربية تقدّم التاريخ الهجري، والإنجليزية تقدّم الميلادي. ويظهر تحت الخيار صفان: أي التقويمين يتقدّم (تلقائي، أو الهجري أولًا، أو الميلادي أولًا) وما يقف بين التاريخين (خط عمودي، أو نقطة، أو التاريخ الثاني بين قوسين). وتطبع اللوحة تاريخ اليوم مباشرةً تحت الخيارات المختارة، فترى الجواب قبل أن تحفظه.
والتقويم الهجري المستخدم هو تقويم أم القرى (islamic-umalqura). فالمتصفحات تقدّم أربعة تقاويم إسلامية: islamic مبنيّ على الرؤية ويختلف جوابه بيوم من منصة إلى أخرى، أما النسختان الحسابيتان فلا تختلفان أبدًا لكنهما لا تطابقان تقويم الحائط عند أحد. وأم القرى مستقر ومألوف معًا، لذلك هو الذي يستخدمه أسطرلاب؛ وهذا عرف في العرض لا تفضيل بخيارات كثيرة. وتأتي أسماء الشهور من Intl بلغة الواجهة (الواجهة الإنجليزية تقول «August» والعربية تقول «أغسطس»)، والأرقام من قاعدة الأرقام نفسها التي يستخدمها كل شيء آخر، فلا يُكتب شيء بالتهجئة اليدوية، ولا تخلط نسخة واحدة نظامَي ترقيم في سطر واحد أبدًا.
ويصل إلى كل تاريخ يقرؤه إنسان: بيانات التدوينات وبطاقات لوحة المعلومات في المدونة، وأوقات التعليقات (تحتفظ «قبل 5 دقائق» النسبية بصياغتها وتكتسب التاريخ الكامل في تلميحها)، وصفوف الإشراف، وشارة النسخ الاحتياطي، ولوحة الإعدادات. وتحتفظ الملاحظات اليومية بأسماء ملفاتها بصيغة ISO: فـdaily/2026-08-16.md ما زال يُرتَّب، وما زال يُحلّ بوصفه [[2026-08-16]]، وما زال يفتح في Obsidian. لكن خارج الوضع الميلادي يسمّي شريط الحالة الملاحظة اليومية المفتوحة بالتقويم الذي اخترته.
RSS لا يُمسّ عمدًا. يحتفظ
/feed.xmlبـ<pubDate>ميلادية بصيغة RFC-822 أيًّا كان هذا الإعداد. فذلك تنسيق تحلّله قارئة الخلاصات، لا تاريخ يقرؤه إنسان.
اتجاه الملاحظة ومحاذاتها
إعدادان تحت الإعدادات ← التخطيط والخط، يُطبَّقان بالطريقة نفسها في المحرر وعرض القراءة ومقالات المدونة:
- اتجاه النص (
textDirection):auto(الافتراضي)، أوltr، أوrtl. وautoهو السلوك الذي كان منذ البداية: تأخذ كل كتلة اتجاهها من أول حرف قوي فيها، وهو ما تريده الخزانة ثنائية اللغة. وتثبيتltrأوrtlيجعل المستند كله يُقرأ بذلك الاتجاه. - محاذاة النص (
textAlign):start(الافتراضي)، أوleft، أوright، أوcenter، أوjustify.
ويمكن لأي ملاحظة أن تتجاوز الاثنين من مقدمتها، والكلمة الأخيرة للملاحظة:
---
dir: rtl
align: justify
---
(وتُقبل direction: وtext-align: تهجئتين للمفتاحين نفسيهما، وكذلك centre/centered وjustified.)
وتستطيع كتلة واحدة أن تخالف ملاحظتها. اختم فقرة أو عنوانًا أو سطر صورة بـ{.center} أو {.right} أو {.left} أو {.justify} فتُعرض تلك الكتلة وحدها على ذلك النحو. وتختفي العلامة في المحرر كسائر الرموز ولا تصل إلى الصفحة المعروضة أبدًا؛ و/center و/right و/left في قائمة الشرطة المائلة تكتبها لك، وأزرار الصورة التي تظهر عند التحويم تكتبها للصورة.
والملاحظة التي تخالف افتراضي الموقع تقول ذلك: شريحة في بطاقة خصائصها، بجانب شرائح الوسوم حيث المقدمة، ومقطع هادئ في شريط الحالة. ويحمل كلاهما التلميح نفسه، الذي يسمّي كل نصف ومن أين جاء: الاتجاه: من اليمين إلى اليسار، من هذه الملاحظة · المحاذاة: ضبط، افتراضي الموقع. فالإعداد الذي يغيّر بصمت سلوك النص الذي تحت مؤشرك فخّ، وهذا يغلقه بالطريقة نفسها التي تغلقه بها شرائح الأوضاع.
وكتل الشيفرة والجداول والمعادلات المعروضة لا تتوسّط ولا تُضبط أبدًا، ولا تأخذ اتجاهًا مثبَّتًا أيضًا. فـconst x = 1; داخل مستند من اليمين إلى اليسار كان سيُعرض ;const x = 1، وخط الجدول |---|---| كان سيكفّ عن الاصطفاف مع ترويسته. لذلك تبقى ملتصقة بالحافة التي تبدأ منها القراءة وتقرر اتجاهها سطرًا سطرًا، في المحرر وفي العرض سواء. أما التنبيهات والاقتباسات والقوائم فنثر يتبع الملاحظة. وملاحظة .tex تأخذ الاتجاه (فالورقة العربية تُكتب من اليمين إلى اليسار) وترفض المحاذاة، لأن مصدرها ترميز من أوله إلى آخره.
البحث بالعربية
النص العربي المشكول (الذي وُضعت عليه حركاته، كاقتباس قرآني أو نص تراثي أو أي نص شكّله ناسخ حريص) يُكتب بطريقة تختلف عمّا يكتبه أي أحد في صندوق البحث. فـ«المقدمة» و«الْمُقَدِّمَة» كلمة واحدة. لذلك يطوي أسطرلاب الفروق، في جانبَي الفهرس معًا: ما يفهرسه وما تسأله يمرّان بالجدول نفسه، فتجد التهجئة العادية الملاحظةَ المشكولة، وتجد التهجئة المشكولة الملاحظةَ العادية.
وما يُطوى:
- الحركات وعلامات القرآن: الفتحة والضمة والكسرة والشدة والسكون والألف الخنجرية وعلامات الوقف
- عائلة الألف: أ إ آ ٱ تُعامل معاملة ا
- ى ← ي، وة ← ه، والفارسيتان ی ← ي وک ← ك
- التطويل (ـــ)، وهو مدّ طباعي لا حرف
- الواصلات صفرية العرض وعلامات الاتجاه والواصلة اللينة
- الأشكال المشكَّلة (صور الحروف التي تحملها طبقة النص في بعض ملفات PDF بدل الحروف نفسها — وطباعة كروم إلى PDF تكتبها): كل شكل هو حرفه، وربطة لام-ألف هي حرفاها، والحركة المشكَّلة لا شيء
- علامات التشكيل اللاتينية، في المرور نفسه وبالجدول نفسه:
resumeتجد résumé، وnaiveتجد naïve، وcafeتجد café
وهو جدول واحد (shared/fold.ts) يستشيره كل مطابق في المنتج: بحث اللوحة الجانبية والأسطر التي يقتبسها تحت النتيجة، وإكمال روابط الويكي [[، وصفوف الملاحظات في لوحة الأوامر، وبحث / الخاص بقارئ PDF، وهو المكان الذي كُتب فيه الجدول أول مرة، وبحث قارئ EPUB الذي يجري الطيّ نفسه على الخادم في الكتاب كله.
والاستبدال لا يطوي، عن قصد. انظر البحث والاستبدال: فالبحث سؤال، والطيّ يوسّعه بلطف، أما الاستبدال فكتابة، والاستبدال الذي يعيد كتابة «الْمُقَدِّمَة» في صمت سينزع حركات لم تكتبها قط ولم ترها قط.
كتابة الحركات
يطوي البحث التشكيل منذ زمن؛ أما كتابته فهي الجزء الذي تجعله كل لوحة مفاتيح عسيرًا. فالحركات تقبع خلف Shift على مفاتيح لا يحفظها أحد (الفتحة Shift Q في التخطيط العربي 101، والكسرة Shift A، والشدة Shift ~)، والألف الخنجرية ليست في أي تخطيط أصلًا، ولوحة المفاتيح اللاتينية لا تحمل شيئًا منها. لذلك في المحرر لوحة صغيرة لها.
Ctrl/Cmd Alt ;، أو حركة… في صفحة الإدراج من قائمة التحديد وفي صفحتها عربي، يفتح قائمة قصيرة عند المؤشر: الفتحة والضمة والكسرة والتنوين بأنواعه الثلاثة والشدة والسكون والألف الخنجرية والتطويل، كلٌّ برسمه على دائرة منقوطة واسمه بلغة الواجهة. و↑ و↓ يتنقلان فيها، وEnter يدرج، وEsc يغلق. ومع مؤشر وحده تحطّ الحركة على الحرف الذي كتبته للتو، وهو حيث كانت لوحة المفاتيح ستضعها. ومع تحديد يأخذ كل حرف عربي فيه الحركة، بعد ما يحمله الحرف من حركات أصلًا، ولا تتكرر أبدًا؛ فتحديد كلمة واختيار السكون يشكّل الكلمة كلها، والشدة التي تُضاف إلى «كَتب» تُبقي الفتحة. والتطويل هو الاستثناء، لأنه ليس علامة تُركَّب على حرف: ففي التحديد يذهب بين الحروف فقط، فيمدّ الكلمة كما يمدّها الخطاط بدل أن يرسم شرطة في فراغ. (والاختصار يستخدم ; لأنه المفتاح الفيزيائي نفسه في التخطيط العربي وفي الأمريكي، حيث يكتب «ك»، وكل اختصار في هذا المنتج يُحلّ بالموضع حين لا يكون حرف التخطيط لاتينيًا؛ انظر الاختصارات.)
وطريقتان للخروج من التشكيل، كلتاهما في صفحة عربي من قائمة التحديد. إزالة التشكيل من التحديد تنزع كل حركة وألف خنجرية وتطويل من الكلمات المحددة ولا شيء غيرها؛ فالهمزة وعائلة الألف وة وى حروف وتبقى. ونسخ بلا حركات يضع النص غير المشكول في الحافظة ويترك الملاحظة كما هي، من أجل اقتباس ذاهب إلى صندوق بحث أو رسالة تكون الحركات فيها ضجيجًا. وللملاحظة كلها، Ctrl/Cmd P ← إزالة التشكيل من الملاحظة يعيد كتابة الملاحظة المفتوحة عبر المحرر في خطوة تراجع واحدة، فضغطة Ctrl/Cmd Z واحدة تعيد كل حركة؛ وإذا لم يكن هناك ما يُزال قال ذلك بدل أن يحفظ الملف من غير تغيير.
والثلاثة تتقاسم جدولًا واحدًا (shared/tashkeel.ts): تنزع الإزالة بالضبط الرموز التي تستطيع اللوحة كتابتها، U+064B–U+0652 وU+0670 وU+0640، ولا أكثر. أما علامات الوقف القرآنية والحروف الصغيرة العالية فليست فيه عمدًا: فالإزالة التي تتجاوز ما تكتبه اللوحة ستأخذ علامات لم يطلب منها ناسخ حريص أن تمسّها.
سماع العربية
تنطق القراءة بصوت عالٍ الكلمة أو الفقرة العربية المحدّدة بصوت Piper الأردني، على معالج جهازك نفسه. يُشكَّل النص غير المشكول أولًا بمُشكِّل صغير، وتبقى الحركات التي كتبتها كما كتبتها — فتشكيل الكلمة هو أيضًا طريقتك في إخبار الصوت كيف ينطقها. بصراحة: الصوت واضح مفهوم، وأكثر تسطّحًا من صوت Google. انظر القراءة بصوت عالٍ.
تنبيهات الآية والحديث
> [!ayah] 2:255 يعرض الآية بالرسم العثماني كامل التشكيل، من اليمين إلى اليسار بالخط العربي، ومرجعها تعليقًا تحتها: ﴿Al-Baqarah 2:255﴾ في النسخة الإنجليزية، و﴿البقرة ٢٥٥﴾ في العربية. ويُكتب المدى 2:255-257. ويمكن ذكر السورة برقمها أو باسمها بأي اللغتين، والتعريف والتشكيل اختياريان (البقرة، Baqara، Al-Baqarah). وأي أسطر تكتبها تحت التنبيه فهي تعليقك أنت، وتُعرض تحت الآية. وفي المحرر يُدرج /ayah الهيكل، وداخل > [!ayah] تُقترح عليك أسماء السور وأنت تكتب. والنص نص مشروع «تنزيل»، منسوبٌ إليه تحت كل تنبيه. وهو ملف حجمه 1.3 ميغابايت لا تنزّله إلا الصفحة التي فيها آية، فالملاحظة الخالية منها لا تنزّل منه شيئًا، والملاحظة المنشورة تعرض آياتها للزوار من الملف نفسه.
و> [!hadith] Bukhari 1 يعرض حديثًا من مدوَّنة تزوّدها أنت: ملاحظات تحت Corpus/hadith/ (أو المجلد المسمّى في الإعدادات ← القراءة ← متقدّم، مجلد الأحاديث) تحمل مقدمتها collection: وnumber:؛ فالفقرة الأولى من المتن هي السند، والباقي هو نص الحديث. وتجيب الكتب المشهورة على تهجئاتها المعتادة بأي اللغتين (Bukhari والبخاري وSahih al-Bukhari مفتاح واحد)، وغير المشهور يجيب على اسمه. والمرجع الذي لا ملاحظة في المدوَّنة وراءه يُعرض تنبيهَ اقتباس عاديًا يحمل المرجع عنوانًا، ولا يظهر مكسورًا أبدًا، والزائر يُجاب من ملاحظات المدوَّنة المنشورة فقط.
تسميات الوسوم المحلية
وسوم الخزانة إنجليزية في الغالب، لأن الوسوم عناوين: فـ#software في ملفاتك، وفي روابطك، وفي EXCLUDE_TAGS، وفي كل رابط شاركته. لكن الموقع العربي ينبغي أن يقول «برمجيات». ويمكن أن يصحّ الأمران معًا، لأن التسمية للعرض فقط: فلا شيء هنا يعيد كتابة ملاحظة أبدًا.
وهناك مكانان للتسمية، والأول أفضل.
1: صفحة الوسم نفسها، فتنتقل التسمية مع الخزانة أينما ذهبت. ضع ملاحظة في tags/<tag>.md (والمجلد هو الإعدادات ← الكتابة ← مجلد الوسوم، tagsFolder، وقيمته الافتراضية tags؛ والوسوم المتداخلة تتداخل، فـ#lang/arabic هو tags/lang/arabic.md) وأعطها خريطة labels::
---
labels:
ar: برمجيات
en: Software
---
Notes about software: the craft, not the industry.
استنسخ الخزانة، وزامنها، وافتحها في Obsidian: تبقى التسمية موجودة لأنها ملاحظة. وlabels: برمجيات المجرد يُقرأ تسميةً عربية، وهذا ما تقوله صفحة الوسم العربية المكتوبة باليد فعلًا.
2: settings.tagLabels، للوسوم التي لا صفحة لها: جدول مضغوط في الإعدادات ← الكتابة ← تسميات الوسوم، فيه صف لكل وسم وعمود لكل لغة. وصفحة الوسم تغلبه، لكل لغة على حدة، فالصفحة التي لا تسمّي إلا تسمية عربية لا تمحو تسمية إنجليزية ضُبطت هنا.
وكل مكان يُعرض فيه وسم يستخدم التسمية: صف مواضيع المدونة وصفحات المواضيع، وشرائح التدوينات، وبطاقات لوحة المعلومات، وسحابة الوسوم في اللوحة الجانبية وأقسام المواضيع، وبطاقة الخصائص في المحرر وعرض القراءة، ومعاينات التحويم. وكل ما عدا ذلك يبقى على الاسم الأصلي:
- الروابط تحتفظ بالاسم الأصلي. فـ
/topic/softwareهو ما يرسمه الموقع وما تشير إليه روابطك. وتُقبل التهجئة المحلية على أنها إعادة توجيه (/topic/برمجياتيحطّ على الصفحة نفسها ويعيد كتابة العنوان بهدوء)، لأن القارئ ينسخ الكلمة التي يراها. - والمقدمة لا تُمسّ؛ و
EXCLUDE_TAGSوالتصفية حسب اللغة يواصلان مطابقة القيمة الحقيقية، وتلميح الشريحة المسمّاة يسمّي الوسم الأصلي. - والبحث يجيب على التهجئتين. فكتابة «برمجيات» تجد الملاحظات الموسومة بـ
#software، وكتابةsoftwareما زالت تجدها. ويُوسَّع الاستعلام لا الفهرس، فتحرير تسمية يسري فورًا من غير إعادة فهرسة.