|
| 1 | +// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license. |
| 2 | + |
| 3 | +/** |
| 4 | + * Auto-generated by 'os i18n extract' for locale 'ar'. |
| 5 | + * Edit translations in place; re-run extract (with --merge) to fill new gaps. |
| 6 | + * Do not hand-edit the structure — only the leaf string values. |
| 7 | + * Merge only fills gaps: correcting a source label/description does not |
| 8 | + * push the correction into a leaf here that already holds a translation — |
| 9 | + * a present-but-stale string is not a gap, so it is left as-is. Re-translate |
| 10 | + * it by hand when its source changes; nothing here or in `os i18n check` |
| 11 | + * tells a leaf a translator updated on purpose from one nobody has looked |
| 12 | + * at since the source moved. |
| 13 | + */ |
| 14 | + |
| 15 | +import type { TranslationData } from '@objectstack/spec/system'; |
| 16 | + |
| 17 | +export const arObjects: NonNullable<TranslationData['objects']> = { |
| 18 | + sys_user_permission_set: { |
| 19 | + label: "مجموعة أذونات المستخدم", |
| 20 | + pluralLabel: "مجموعات أذونات المستخدمين", |
| 21 | + description: "إسناد مباشر لمجموعة أذونات إلى مستخدم (ويمكن حصره في مؤسسة).", |
| 22 | + fields: { |
| 23 | + id: { |
| 24 | + label: "معرّف الإسناد", |
| 25 | + help: "معرّف UUID للإسناد." |
| 26 | + }, |
| 27 | + display_title: { |
| 28 | + label: "العنوان", |
| 29 | + help: "عنوان السجل: المستخدم ومجموعة الأذونات المسندة إليه (يُحسب عند القراءة)" |
| 30 | + }, |
| 31 | + user_id: { |
| 32 | + label: "المستخدم", |
| 33 | + help: "المستخدم الذي يتلقى مجموعة الأذونات هذه." |
| 34 | + }, |
| 35 | + permission_set: { |
| 36 | + label: "مجموعة الأذونات", |
| 37 | + help: "مجموعة الأذونات التي يمنحها هذا الإسناد للمستخدم. اختر إحدى مجموعات الأذونات المعرّفة في الإعداد؛ ويُرفض الاسم الذي لا يطابق أي مجموعة." |
| 38 | + }, |
| 39 | + organization_id: { |
| 40 | + label: "المؤسسة", |
| 41 | + help: "المؤسسة التي ينتمي إليها هذا المنح." |
| 42 | + }, |
| 43 | + granted_by: { |
| 44 | + label: "مَن منحه", |
| 45 | + help: "المستخدم الذي منح مجموعة الأذونات هذه." |
| 46 | + }, |
| 47 | + valid_from: { |
| 48 | + label: "صالح من", |
| 49 | + help: "يسري الإسناد في هذا الوقت. اتركه فارغًا ليسري فورًا. يبدأ في موعده دون انتظار أي مهمة مجدولة." |
| 50 | + }, |
| 51 | + valid_until: { |
| 52 | + label: "صالح حتى", |
| 53 | + help: "ينتهي الإسناد في هذا الوقت (UTC). اتركه فارغًا لعدم تحديد تاريخ انتهاء. مطلوب في الوصول الطارئ وفي الإسناد إلى وكيل ذكاء اصطناعي. ينتهي في موعده دون انتظار أي مهمة مجدولة." |
| 54 | + }, |
| 55 | + reason: { |
| 56 | + label: "السبب", |
| 57 | + help: "سبب وجود هذا الإسناد. مطلوب في الإسنادات المفوَّضة وإسنادات الوصول الطارئ. بالنسبة إلى وكيل ذكاء اصطناعي، اذكر المهمة التي مُنح الوصول من أجلها." |
| 58 | + }, |
| 59 | + last_certified_at: { |
| 60 | + label: "آخر اعتماد في", |
| 61 | + help: "غير مستخدم بعد: محجوز لميزة مستقبلية لمراجعة الوصول. لا شيء يملأ هذا التاريخ أو يتحقق منه، لذا فالقيمة الفارغة لا تعني أن الإسناد لم يُراجَع." |
| 62 | + }, |
| 63 | + certified_by: { |
| 64 | + label: "مَن اعتمده", |
| 65 | + help: "غير مستخدم بعد: محجوز لميزة مستقبلية لمراجعة الوصول. المراجِع المُدخَل هنا لا يُتحقق منه ولا يغيّر شيئًا مما يمنحه الإسناد." |
| 66 | + }, |
| 67 | + created_at: { |
| 68 | + label: "تاريخ الإنشاء" |
| 69 | + }, |
| 70 | + updated_at: { |
| 71 | + label: "تاريخ التحديث" |
| 72 | + } |
| 73 | + }, |
| 74 | + _validations: { |
| 75 | + validity_window_order: { |
| 76 | + message: "يجب أن يكون «صالح حتى» بعد «صالح من». يسري المنح من «صالح من» حتى «صالح حتى» دون أن يشمله، لذا فالنافذة التي تنتهي عند بدايتها أو قبلها لا تمنح شيئًا. اترك أيًّا منهما فارغًا لنافذة مفتوحة." |
| 77 | + } |
| 78 | + } |
| 79 | + }, |
| 80 | + sys_user_position: { |
| 81 | + label: "منصب المستخدم", |
| 82 | + pluralLabel: "مناصب المستخدمين", |
| 83 | + description: "المناصب التي يشغلها كل مستخدم، صف واحد لكل إسناد.", |
| 84 | + fields: { |
| 85 | + id: { |
| 86 | + label: "معرّف الإسناد", |
| 87 | + help: "معرّف UUID لإسناد المستخدم إلى المنصب." |
| 88 | + }, |
| 89 | + display_title: { |
| 90 | + label: "العنوان", |
| 91 | + help: "عنوان السجل: المستخدم والمنصب الذي يشغله (يُحسب عند القراءة)" |
| 92 | + }, |
| 93 | + user_id: { |
| 94 | + label: "المستخدم", |
| 95 | + help: "المستخدم الذي يشغل هذا المنصب." |
| 96 | + }, |
| 97 | + position: { |
| 98 | + label: "المنصب", |
| 99 | + help: "الاسم الآلي للمنصب، ويُحلّ في كتالوج الأمان." |
| 100 | + }, |
| 101 | + business_unit_id: { |
| 102 | + label: "وحدة الأعمال", |
| 103 | + help: "مرساة وحدة الأعمال على مستوى الإسناد: حيث ينطبق إسناد هذا المنصب. مرساة العمق لـ readScope/writeScope، وحدّ الإدارة المفوَّضة، وحقيقة تدقيق. القيمة الفارغة = غير مرسَى (قديم / على مستوى المستأجر)؛ ويجب على المسؤولين المفوَّضين إرساء الإسنادات داخل شجرتهم الفرعية." |
| 104 | + }, |
| 105 | + organization_id: { |
| 106 | + label: "المؤسسة", |
| 107 | + help: "المؤسسة التي ينتمي إليها هذا الإسناد." |
| 108 | + }, |
| 109 | + granted_by: { |
| 110 | + label: "مَن منحه", |
| 111 | + help: "المستخدم الذي منح إسناد هذا المنصب (يختمه حارس الإدارة المفوَّضة عند الكتابة المفوَّضة)." |
| 112 | + }, |
| 113 | + valid_from: { |
| 114 | + label: "صالح من", |
| 115 | + help: "يسري الإسناد في هذا الوقت. اتركه فارغًا ليسري فورًا. يبدأ في موعده دون انتظار أي مهمة مجدولة." |
| 116 | + }, |
| 117 | + valid_until: { |
| 118 | + label: "صالح حتى", |
| 119 | + help: "ينتهي الإسناد في هذا الوقت (UTC). اتركه فارغًا لعدم تحديد تاريخ انتهاء. مطلوب في الإسناد المفوَّض. ينتهي في موعده دون انتظار أي مهمة مجدولة." |
| 120 | + }, |
| 121 | + reason: { |
| 122 | + label: "السبب", |
| 123 | + help: "سبب وجود هذا المنح. نص حر؛ مطلوب في صفوف التفويض والوصول الطارئ (كسر الزجاج)." |
| 124 | + }, |
| 125 | + delegated_from: { |
| 126 | + label: "مفوَّض من", |
| 127 | + help: "المفوِّض الذي يحمل هذا الصف صلاحيته (职务代理). الصف الذي ضُبط فيه delegated_from لا يمكن تفويضه بدوره ولا تجديده ذاتيًا — تُقطع السلاسل في الاتجاهين." |
| 128 | + }, |
| 129 | + last_certified_at: { |
| 130 | + label: "آخر اعتماد في", |
| 131 | + help: "غير مستخدم بعد: محجوز لميزة مستقبلية لمراجعة الوصول. لا شيء يملأ هذا التاريخ أو يتحقق منه، لذا فالقيمة الفارغة لا تعني أن الإسناد لم يُراجَع." |
| 132 | + }, |
| 133 | + certified_by: { |
| 134 | + label: "مَن اعتمده", |
| 135 | + help: "غير مستخدم بعد: محجوز لميزة مستقبلية لمراجعة الوصول. المراجِع المُدخَل هنا لا يُتحقق منه ولا يغيّر شيئًا مما يمنحه الإسناد." |
| 136 | + }, |
| 137 | + created_at: { |
| 138 | + label: "تاريخ الإنشاء" |
| 139 | + }, |
| 140 | + updated_at: { |
| 141 | + label: "تاريخ التحديث" |
| 142 | + } |
| 143 | + }, |
| 144 | + _validations: { |
| 145 | + reserved_identity_position: { |
| 146 | + message: "لا يمكن أن يكون «position» اسم هوية مدمجة محجوزًا للإطار (platform_admin، org_owner، org_admin، org_member، org_external). هذه الأسماء هويات مدمجة: تُسقطها المنصة في current_user.positions من مصادرها الموثوقة، والصف الذي يحمل أحدها ليس إسنادًا لتلك الهوية. اختر اسمًا آخر." |
| 147 | + } |
| 148 | + } |
| 149 | + } |
| 150 | +}; |
0 commit comments