السلطان
  1. الرئيسية
  2. الأمثلة
  3. الأخطاء

المرحلة الثالثة من نظام الأخطاء (docs/en/reference/errors.md)، وهي اختيارية

للمؤلف أن

errors/languages.sn
// المرحلة الثالثة من نظام الأخطاء (docs/en/reference/errors.md)، وهي اختيارية: للمؤلف أن
// يضيف رسالة الخطأ بلغات أخرى. يختار البرنامج اللغة من قيمة لغة يمررها، لا من
// حالة عامة: هنا لغة بيئته (SULTANC_LANG وLC_ALL وLC_MESSAGES وLANG) ولغة
// ترويسة Accept-Language في HTTP، كما يفعل خادم لكل طلب. شغله مع
// SULTANC_LANG=en أو SULTANC_LANG=ar.
استورد المكتبة.أخطاء.failure;
استورد المكتبة.نصوص.language;
استورد المكتبة.نصوص.system_language;
استورد المكتبة.دخ.println;

عرف حمل_الإعدادات(): نتيجة عدد, فشل {
    دع فارغ: متغير فشل = فشل_بهوية(«settings», «فارغ», «ملف الإعدادات فارغ»);
    أضف_نسخة_لغة(&متغير فارغ, «en», «the settings file is empty»);
    دع الفشل: متغير فشل = فشل_بسبب(«تعذر تحميل الإعدادات», فارغ);
    أضف_نسخة_لغة(&متغير الفشل, «en», «could not load the settings»);
    أرجع نتيجة.خطأ(الفشل);
}

عرف الرئيسية(): عدد {
    طابق حمل_الإعدادات() مع
    | نتيجة.نجح(_) -> { أرجع 0; }
    | نتيجة.خطأ(الفشل) -> {
        // لغة البرنامج نفسه.
        دع اللغة: لغة = لغة_من_البيئة();
        اطبع_فشل_بلغة(&الفشل, &اللغة);

        // لغة طلب: الفرنسية مفضلة ولا نسخة لها، فينتقل البحث إلى الإنجليزية.
        دع الترويسة: نص = «fr-CH, fr;q=0.9, en;q=0.8, ar;q=0.5»;
        دع الطلب: لغة = لغة_من_قبول_اللغة(&الترويسة);
        دع تجاهل: نتيجة عدد, عدد = اطبع_سطر(صف_فشل_بلغة(&الفشل, &الطلب));
        أرجع 1;
    };
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/errors/languages.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/errors/languages.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة