انتقل إلى المحتوى

اصطلاح — مفاتيح i18n للواجهة الخلفية

ما هو

مخطط تسمية مفاتيح سلاسل-موارد الواجهة الخلفية في ErrorMessages.resx / ErrorMessages.ar.resx. تتبع رسائل الخطأ والتحقّق شكل مفاتيح هرميًا لكل كيان بحيث تتألّف رسائل حجب-الحذف وصف-النظام على نحو متوقَّع وتبقى بالتوازي إنجليزي/عربي. مقفول في MIQ-132 (قرار رقم 42) ومُمرَّر عبر MIQ-133.

متى يُستخدم

كلما أضفت رسالة واجهة خلفية مُوطَّنة لكيان CRUD بيانات مرجعية — جسم حجب-بمرجع، أو حارس صف-نظام، أو رسالة تحقّق.

مخطط المفاتيح

لكيان <Entity>:

Key Used for
<Entity>.IsSystem.Body رسالة حماية صف-النظام (SystemRowProtectedException<T>).
<Entity>.Referenced.Header السطر الأول من رسالة محجوب-بمفتاح-أجنبي للحذف.
<Entity>.Referenced.Intro مقدّمة "This … is referenced by:".
<Entity>.Referenced.Surface.<Table> سطر واحد لكل جدول مُشير (مثلًا .Surface.Employees)، يُصدَر فقط حين يكون عدّاده غير صفري.
<Entity>.Referenced.Footer سطر معالجة ختامي ("Reassign these…, then retry.").
<Entity>.Validation.<Rule> رسالة FluentValidation (مثلًا Terminal.Validation.TimeZoneIdInvalid).

مفاتيح حقيقية من ErrorMessages.resx:

Grade.Referenced.Header            = "Cannot delete {0}."
Grade.Referenced.Intro             = "This grade is referenced by:"
Grade.Referenced.Surface.Employees = "• {0} employees"
Grade.Referenced.Footer            = "Reassign these employees to other grades, then retry."
Grade.IsSystem.Body                = "This grade is a system row and cannot be modified or deleted."
Terminal.Validation.TimeZoneIdInvalid = "TimeZoneId must be a valid IANA timezone identifier (e.g. Asia/Riyadh)."

تؤلّف الخدمة جسم "referenced by" الكامل من الأعلى إلى الأسفل (Header → Intro → سطر Surface واحد لكل مفتاح أجنبي غير صفري → Footer) عبر IStringLocalizer<ErrorMessages>. انظر الاستثناءات لكيفية وصول الجسم المُؤلَّف إلى استجابة 409.

مزالق / قيود

  • كلا اللغتين بالتوازي. كل مفتاح يُضاف إلى ErrorMessages.resx يجب أن يوجد أيضًا في ErrorMessages.ar.resx. يؤكّد اختبار عرض أمامي تكافؤ en.json/ar.json على جانب الواجهة الأمامية؛ أبقِ زوج resx للواجهة الخلفية متوازيًا بالقدر نفسه.
  • ألّف في الخدمة. تُستعلَم المفاتيح وتُجمَّع في الخدمة (حيث يُحقَن IStringLocalizer)، لا في المتحكّم ولا في الاستثناء.
  • مفتاح Surface.<Table> واحد لكل مفتاح أجنبي مُشير — لدى Terminal 8 أسطح، ولدى Grade سطح واحد. سمّها حسب الجدول المُشير.
  • هذا i18n منتج للواجهة الخلفية — متميّز عن انقسام resx-مقابل-i18next المُغطّى في التدويل، ومتميّز مجدّدًا عن مسار الترجمة العربية الخاص بالويكي.

حالة البناء

Available — المخطط حيّ عبر مدخلات resx للكيانات السبعة للبيانات المرجعية (MIQ-132 قرار رقم 42؛ MIQ-133 قرار رقم 42).

ذات صلة