Reader locales
Reader locale#
إعدادات لغة القارئ هي نظام Faber لعرض الشيفرة المصدرية وتشخيصات المترجم وكلمات اللغة المفتاحية بلغة القارئ البشرية — دون تشعيب الدلالات. يمكن لمبرمج تايلندي قراءة وكتابة شيفرة Faber المصدرية بكلمات تايلندية مفتاحية، وتلقي أخطاء المترجم بالتايلندية، والتعاون عبر نفس HIR كمستخدم لاتيني أو صيني. الآلية التي تُموضع الشيفرة من اللاتينية إلى التايلندية هي نفس الآلية التي تُصدر الشيفرة إلى Rust: HIR → سطح — لا يتمتع أي منهما بامتياز.
المشكلة#
قامت النماذج اللغوية الكبيرة بتموضع المحادثة حول البرمجة — يمكن لعالم حاسوب تايلندي أن يطلب المساعدة من LLM بالتايلندية — لكن ليس الأثر الدائم. تظل الشيفرة المُولَّدة وواجهات API وأخطاء المترجم والتوثيق مشكَّلة بالإنكليزية. تصبح إجادة الإنكليزية بوابةً لعلوم الحاسوب، لا لمجرد المحادثة.
إعدادات لغة القارئ هي الاستجابة التصميمية: اللغة التي يستخدمها الإنسان لفهم Faber — الشيفرة المصدرية والتشخيصات، واختيارياً تهجئات المكتبة المعيارية — دون الإنكليزية كشرط مسبق. إنها ليست تدويل تطبيق (تغطية مصفوفة سلاسل كاملة). إنها دعم لهجة القارئ: حزم جزئية اختيارية فوق نواة دلالية لا تتشعب.
الأطروحة المنتَجية: لا ينبغي للإنكليزية أن تكون لغة المراجعة المطلوبة لقصد البرمجيات. قامت LLMs بتموضع المحادثة حول البرمجة؛ لغة القارئ تُموضع الأثر الدائم.
كيف تعمل#
تقوم حزمة لغة القارئ بربط كلمات Faber المفتاحية وتهجئات الأنواع البدائية وقوالب التشخيص إلى لغة مستهدفة. الحزم هي ملفات TOML بثلاثة جداول:
[keywords]— تربط أسماء الكلمات المفتاحية بتهجئاتها المموضعة[types]— تربط أسماء الأنواع البدائية بتهجئاتها المموضعة[diagnostics.*]— تربط رموز التشخيص بقوالب رسائل مموضعة[llm]— مقتطفات موجه النظام ونماذج لتوليد شيفرة LLM
يتحقق المترجم من الحزم مقابل سقالة لاتينية مولَّدة — يجب أن يكون لكل كلمة مفتاحية ونوع تهجئة محددة أو أن ترث صراحةً من اللاتينية. تُنتج الصفوف المفقودة تراجعاً مرئياً بدلاً من فجوات صامتة.
اختر لغة من سطر الأوامر أو في faber.toml:
faber check --reader-locale th-TH program.fab# faber.toml
[reader]
locale = "zh-Hans"ما يتم تموضعه وما لا يتم#
| الطبقة | في HIR؟ | السلوك |
|---|---|---|
| الكلمات المفتاحية، الأنواع، العبارات المزدوجة | نعم | بدون فقدان عبر جميع التصييرات |
الرموز ← → ∴ ≡ ∪ ⇥ | نعم (ثابتة) | متطابقة في كل تصيير |
| البنية النوع-أولاً | نعم | متطابقة في كل تصيير |
| الأرقام | — | ASCII فقط في جميع اللغات |
| التعليقات | لا | خارج نطاق المترجم؛ بوساطة LLM، اختيارية |
| أسماء المعرفات | لا | محفوظة بايتاً ببايت |
| تهجئات المكتبة المعيارية | لا | تراكب لكل لغة |
الضمان المعماري الحاسم: يمكن لأي سطح لغة أن يصبح أي سطح آخر، بما في ذلك اللاتينية، في أي وقت. ملف Faber المموضع ليس فخاً أبداً لأنه ليس الشكل الوحيد الذي يمكن أن تتخذه الشيفرة أبداً. faber format --canonical هو تماماً faber format --reader-locale=la.
الحزم المشحونة#
سبع حزم تُشحن مع Radix حالياً:
| الرمز | اللغة | نظام الكتابة | الحالة |
|---|---|---|---|
la | Latina (لاتينية) | لاتيني | مرجعي |
th-TH | ไทย | تايلندي | إثبات مرجعي |
zh-Hans | 简体中文 | صيني مبسط | إثبات تغطية |
zh-Hant | 繁體中文 | صيني تقليدي | إثبات تغطية |
ar | العربية | عربي | إثبات تغطية |
hi | हिन्दी | ديوناكري | إثبات تغطية |
vi | Tiếng Việt | فيتنامي (لاتيني) | إثبات تغطية |
اختيرت اللغات المرجعية الخمس للإجهاد المعماري الجماعي — معاً تفرض كل مشكلة يونيكود وإصدار يجب أن تنجو منها الركيزة. أربع تستخدم أنظمة كتابة غير لاتينية؛ الفيتنامية هي حالة التحكم اللاتينية:
| اللغة | الوصول | الإجهاد المعماري |
|---|---|---|
th-TH | عالٍ | كتابة بدون مسافات — اختبار إجهاد المحلل المعجمي |
zh-Hans / zh-Hant | عالٍ جداً | كلمات مفتاحية مزدوجة؛ وراثة الحزمة الشقيقة؛ انهيار عرض NFKC |
ar | عالٍ | من اليمين إلى اليسار؛ عزل ثنائي الاتجاه في التشخيصات |
hi | عالٍ جداً | عناقيد ماترا/فيراما؛ أرقام هندية |
vi | عالٍ | علامات تشكيل كثيفة على نظام الكتابة اللاتيني؛ حالات حافة NFKC |
اختيرت المجموعة المرجعية للتغطية المعمارية، لا للسكان. السكان وحدهم لن يُثبتوا شيئاً لم تتعامل معه الركيزة بالفعل.
أمثلة شيفرة مصدرية مموضعة#
لكل من اللغات الست غير المرجعية حزمة Faber كاملة تحت examples/reader-locale/ مع شيفرة مصدرية مموضعة وحالات اختبار تشخيصية وبيان faber.toml. نفس برنامج greet مُصيَّر عبر جميع اللغات المشحونة:
لاتينية la — مرجعي
دالة salve(نص nomen) → نص {
ثابت نص msg ← "Salve, §!"(nomen)
أعد msg
}
بداية {
ثابت نص m ← salve("munde")
اعرض m
}التصيير المرجعي. faber format --canonical هو تماماً faber format --reader-locale=la. الكلمات المفتاحية اللاتينية تربط نفسها بنفسها؛ أسماء الأنواع هي التهجئات المرجعية.
ไทย th-TH — إثبات مرجعي
ฟังก์ชัน salve(ข้อความ nomen) → ข้อความ {
ค่าคงที่ ข้อความ msg ← "Salve, §!"(nomen)
คืนค่า msg
}
เริ่มต้น {
ค่าคงที่ ข้อความ m ← salve("มุนเด")
แจ้ง m
}إثبات إسفين الوصول. التايلندية هي كتابة بدون مسافات — لا حدود بين الكلمات — مما يجعلها اختبار إجهاد المحلل المعجمي والدافع المعماري الأصلي لنظام لغة القارئ. يجب حل كل حد رمزي بواسطة المحلل المعجمي عبر مطابقة الكلمات المفتاحية وحدها.
简体中文 zh-Hans
函数 问候(文本 名字) → 文本 {
常量 文本 问候语 ← "你好,§!"(名字)
返回 问候语
}
入口 {
常量 文本 消息 ← 问候("世界")
显示 消息
}كلمات مفتاحية مزدوجة (如果/否则 لـ si/secus) تتطلب مجموعات كلمات مفتاحية للحزمة؛ ترقيم كامل/نصف العرض؛ انهيار عرض NFKC عند مدخل التحليل المعجمي. أصعب حالة إصدار LLM بسبب حدود محلل CJK الرمزي. حزمة شقيقة للصينية التقليدية (zh-Hant) ترث وتتجاوز جذور zh-Hans.
العربية ar
دالة salve(نص nomen) → نص {
ثابت نص msg ← "مرحبا، §!"(nomen)
أعد msg
}
بداية {
ثابت نص m ← salve("عالم")
اعرض m
}نظام كتابة من اليمين إلى اليسار مضمن داخل كتلة شيفرة بترتيب منطقي من اليسار إلى اليمين. تُغلَّف الكلمات المفتاحية بـ <bdi> (عزل ثنائي الاتجاه) في مخرجات HTML التشخيصية للمترجم لمنع تشوه RFO (يمين-يتبع-يسار). تستخدم الشيفرة المصدرية الخام نظام الكتابة العربي بالترتيب المنطقي؛ تتعامل طبقة العرض مع العرض ثنائي الاتجاه.
हिन्दी hi
फलन salve(पाठ nomen) → पाठ {
स्थिर पाठ msg ← "Salve, §!"(nomen)
लौटा msg
}
आरंभ {
स्थिर पाठ m ← salve("जगत")
दिखा m
}نظام كتابة ديوناكري مع عناقيد ساكنة ماترا/فيراما. يُثبت المسار لعائلة الهندية الأوسع — البنغالية والتاميلية والتيلوغوية ترث نفس بنية التشكيل التحتية — على الرغم من أن تأليف الحزم لكل منها يظل عملاً منفصلاً. رموز الأرقام الهندية (०-९) غير مقبولة في القيم الحرفية الرقمية؛ أرقام ASCII محفوظة عبر جميع اللغات.
Tiếng Việt vi
hàm chào(vănbản tên) → vănbản {
hằng vănbản lời_chào ← "Xin chào, §!"(tên)
trả lời_chào
}
bắtđầu {
hằng vănbản thông_điệp ← chào("thế giới")
in thông_điệp
}حالة التحكم: نظام كتابة لاتيني لكن ليس إنكليزياً. حمل علامات تشكيل كثيف (ế, ệ, ả) يُجهد حالات حافة NFKC في المحلل المعجمي. يمنع معمارية تعمل على أنظمة الكتابة الغريبة لكنها غير مثبتة على اللاتينية-مع-علامات-التشكيل. تستخدم المعرفات كلمات فيتنامية (chào, tên, lời_chào, thông_điệp)، محفوظة بايتاً ببايت بواسطة المترجم.
الرموز (
← → ∴ ≡ ∪ ⇥)، والمواضع البنيوية، وأسماء المعرفات متطابقة عبر جميع التصييرات الستة أعلاه. فقط الكلمات المفتاحية وأسماء الأنواع تتغير. HIR هو بالضبط نفس البرنامج — يعامل المترجم الستة جميعاً كمكافئة. تصيير Faber إلى التايلندية هو نفس عملية المترجم لتصييرها إلى Rust:HIR → سطح، بدون امتياز لأي منهما.
التشخيصات المموضعة#
التشخيصات هي حقائق مهيكلة قبل النثر. تحمل كل تشخيصة رمزاً ثابتاً (LEX###، PARSE###، SEM###، WARN###) ومعاملات مسماة؛ تمتلك الحزمة نص القالب المُصيَّر. هذا يعني أن مُصيِّر التشخيص يمكنه إصدار رسائل بأي لغة دون تغيير بنية التشخيص التحتية.
تتضمن حزم أمثلة لغة القارئ حالات اختبار تشخيصية — عدم تطابق الأنواع، متغيرات غير معرفة، أرقام غير ASCII — تُثبت أن خط الأنابيب الكامل واعٍ باللغة:
examples/reader-locale/vi/src/type-mismatch.fabexamples/reader-locale/vi/src/undefined-variable.fabexamples/reader-locale/vi/src/non-ascii-number.fabexamples/reader-locale/vi/src/keyword-suggestion.fabexamples/reader-locale/vi/src/keyword-edit-distance.fab
العزل ثنائي الاتجاه مدمج: الكلمات المفتاحية العربية داخل كتل شيفرة بترتيب منطقي من اليسار إلى اليمين تُغلَّف بعناصر <bdi> في مخرجات HTML، مما يمنع تشوه RFO (يمين-يتبع-يسار) الذي قد يجعل مقاطع RTL غير قابلة للقراءة لولا ذلك.
الحالة#
| الطبقة | الحالة |
|---|---|
| مخطط الحزمة، الأسماء المستعارة، الوراثة، التحقق، التشخيصات، أثار LLM | مشحونة |
| التحليل المعجمي الواعي بالحزمة، حل الأنواع، اختيار البيان/CLI، التراجع المرئي | مشحونة |
تصيير التشخيص المملوك للحزمة، faber explain، العرض المعزول ثنائي الاتجاه | مشحونة |
| تنسيق Faber المرجعي | مشحون |
إعادة إصدار Faber المموضع (format --reader-locale) | جزئي |
| تراكبات مسرد المكتبة المعيارية، دقة إصدار LLM المقاسة، تغطية لغات كاملة | مؤجلة |
| توليد توثيق متعدد اللغات | مقترح |
هبطت المتطلب التحتي للركيزة — تسوية NFKC عند مدخل التحليل المعجمي. جداول الكلمات المفتاحية، معاملات التشخيص المسماة، المُصيِّر، وتسليم الحزمة مشحونة. تظل طبقات نجم الشمال (إعادة الإصدار المموضع، مسارد المكتبة المعيارية، معايير إصدار LLM، التوثيق متعدد اللغات المُولَّد) جزئية أو مؤجلة صراحةً.
المراجع#
radix/docs/design/reader-locale.md— وثيقة التصميم الكاملة (69 KB)examples/reader-locale/— 6 حزم لغات مع شيفرة مصدرية مموضعةstdlib/reader/*/pack.toml— 7 تعريفات حزم مثبتةradix/crates/radix/src/reader_locale.rs— تنفيذ وقت التشغيلradix/docs/design/faber-canonical-surface.md— الوضع المرجعي وfaber formatradix/docs/factory/lex-nfkc-normalization/— تسليم متطلب NFKC التحتي
Reader-locale packages#
كل بيئة قراءة غير لاتينية لديها حزمة Faber كاملة تحت
examples/reader-locale/ مع مصدر مُعرَّب، وحالات اختبار تشخيصية،
وملف بيان faber.toml.
الحزم المتاحة#
| البيئة | المسار | مثال مصدري |
|---|---|---|
| th-TH | examples/reader-locale/th-TH/ | ฟังก์ชัน salve(ข้อความ nomen) → ข้อความ |
| zh-Hans | examples/reader-locale/zh-Hans/ | 函数 问候(文本 名字) → 文本 |
| zh-Hant | examples/reader-locale/zh-Hant/ | 函式 問候(文字 名字) → 文字 |
| ar | examples/reader-locale/ar/ | دالة تحية(نص اسم) → نص |
| hi | examples/reader-locale/hi/ | फलन नमस्कार(पाठ नाम) → पाठ |
| vi | examples/reader-locale/vi/ | hàm chào(vănbản tên) → vănbản |
حالات الاختبار التشخيصية#
تتضمن كل حزمة حالات اختبار تثبت أن مسار المُصرِّف الكامل يدرك البيئات المختلفة:
type-mismatch.fab— تشخيصات أخطاء الأنواع المُعرَّبةundefined-variable.fab— أخطاء تحليل الأسماء المُعرَّبةnon-ascii-number.fab— معالجة NFKCkeyword-suggestion.fab— تلميحات "هل قصدت؟" المُعرَّبة