@object-ui/i18n 17.6.0 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +5408 -0
  2. package/README.md +255 -13
  3. package/dist/LocalizationContext.d.ts +32 -9
  4. package/dist/LocalizationContext.js +32 -10
  5. package/dist/builtinAggregateLabels.d.ts +40 -0
  6. package/dist/builtinAggregateLabels.js +23 -0
  7. package/dist/currency.d.ts +27 -3
  8. package/dist/currency.js +28 -4
  9. package/dist/fallbackInterpolation.d.ts +79 -0
  10. package/dist/fallbackInterpolation.js +124 -0
  11. package/dist/i18n.d.ts +27 -1
  12. package/dist/i18n.js +99 -16
  13. package/dist/index.d.ts +8 -13
  14. package/dist/index.js +45 -17
  15. package/dist/locales/ar.d.ts +1504 -188
  16. package/dist/locales/ar.js +1711 -281
  17. package/dist/locales/de.d.ts +1080 -188
  18. package/dist/locales/de.js +1248 -261
  19. package/dist/locales/en.d.ts +1141 -249
  20. package/dist/locales/en.js +1714 -295
  21. package/dist/locales/es.d.ts +1186 -188
  22. package/dist/locales/es.js +1350 -255
  23. package/dist/locales/fr.d.ts +1186 -188
  24. package/dist/locales/fr.js +1351 -258
  25. package/dist/locales/index.d.ts +11940 -2033
  26. package/dist/locales/index.js +48 -9
  27. package/dist/locales/ja.d.ts +1080 -188
  28. package/dist/locales/ja.js +1240 -254
  29. package/dist/locales/ko.d.ts +1080 -188
  30. package/dist/locales/ko.js +1244 -258
  31. package/dist/locales/pt.d.ts +1186 -188
  32. package/dist/locales/pt.js +1350 -255
  33. package/dist/locales/registry.d.ts +102 -0
  34. package/dist/locales/registry.js +220 -0
  35. package/dist/locales/rtl.d.ts +24 -0
  36. package/dist/locales/rtl.js +26 -0
  37. package/dist/locales/ru.d.ts +1292 -188
  38. package/dist/locales/ru.js +1479 -272
  39. package/dist/locales/zh.d.ts +1144 -252
  40. package/dist/locales/zh.js +1245 -259
  41. package/dist/pickLocalized.d.ts +30 -0
  42. package/dist/pickLocalized.js +39 -0
  43. package/dist/provider.d.ts +101 -12
  44. package/dist/provider.js +335 -50
  45. package/dist/translateFn.d.ts +29 -0
  46. package/dist/translateFn.js +8 -0
  47. package/dist/useDisplayLocale.d.ts +11 -0
  48. package/dist/useDisplayLocale.js +11 -0
  49. package/dist/useObjectLabel.d.ts +143 -100
  50. package/dist/useObjectLabel.js +129 -82
  51. package/dist/useSafeTranslation.js +40 -42
  52. package/dist/utils/first-day-of-week.d.ts +71 -0
  53. package/dist/utils/first-day-of-week.js +61 -0
  54. package/dist/utils/formatting.d.ts +23 -1
  55. package/dist/utils/formatting.js +34 -5
  56. package/dist/utils/index.d.ts +1 -0
  57. package/dist/utils/index.js +1 -0
  58. package/dist/utils/spec-formatters.d.ts +13 -23
  59. package/dist/utils/spec-formatters.js +41 -2
  60. package/dist/utils/spec-translations.d.ts +16 -3
  61. package/dist/utils/spec-translations.js +52 -13
  62. package/package.json +12 -6
@@ -13,16 +13,19 @@ const ar = {
13
13
  notRestored: 'قبل الخادم الطلب لكنه لم يستعد جلسة المسؤول — ما زلت تنتحل هوية {{user}}. سجّل الخروج ثم الدخول مرة أخرى لإنهائها.',
14
14
  },
15
15
  },
16
- // objectui#2600 B5 — capability picker scope group headers (labels come from the sys_capability registry).
16
+ // objectui#2600 B5 — capability picker scope group headers (labels come from the capability registry).
17
17
  capability: {
18
18
  label: {
19
19
  manage_users: "إدارة المستخدمين",
20
20
  manage_org_users: "إدارة مستخدمي المؤسسة",
21
21
  manage_metadata: "إدارة البيانات الوصفية",
22
+ manage_mailboxes: "إدارة صناديق البريد",
22
23
  manage_platform_settings: "إدارة إعدادات المنصة",
23
24
  setup_access: "الوصول إلى الإعداد",
24
25
  setup_write: "كتابة الإعدادات",
25
26
  studio_access: "الوصول إلى Studio",
27
+ manage_sharing: "إدارة المشاركة",
28
+ view_all_audit_log: "عرض سجل التدقيق بالكامل",
26
29
  },
27
30
  group: {
28
31
  platform: 'منصة',
@@ -30,30 +33,6 @@ const ar = {
30
33
  other: 'أخرى',
31
34
  },
32
35
  },
33
- // objectui#3546 slice six — ملخص للقراءة فقط لأوجه التخويل الستة في
34
- // PermissionFacetLink، مع رابط التصميم في Studio.
35
- //
36
- // صيغة العدد تتبع نمط الحزمة نفسه: «{{count}} مفرد(جمع)» كما في
37
- // appDesigner.objectManager.fieldCount و table.modified. المفتاح الأساسي هو
38
- // ما تلجأ إليه فئات two/few/many/zero غير المعرّفة، فيظل النص عربيًا.
39
- // لا نعكس سهم روابط الإجراء: يبقى كما في en، مثل marketplace.browseLink.
40
- perm: {
41
- facet: {
42
- none: "لا شيء",
43
- more: "+{{count}} المزيد",
44
- objects: "{{count}} كائن(كائنات)",
45
- objects_one: "{{count}} كائن",
46
- fields: "{{count}} قاعدة(قواعد) حقول",
47
- fields_one: "{{count}} قاعدة حقول",
48
- rls: "{{count}} سياسة(سياسات) RLS",
49
- rls_one: "{{count}} سياسة RLS",
50
- tabs: "{{count}} قاعدة(قواعد) تبويب",
51
- tabs_one: "{{count}} قاعدة تبويب",
52
- adminScope: "تم تكوين الإدارة المفوَّضة",
53
- designInStudio: "التصميم في Studio →",
54
- designInStudioHint: "التصميم في Studio",
55
- },
56
- },
57
36
  lookup: {
58
37
  recentlyUsed: 'المستخدمة مؤخرًا',
59
38
  allResults: 'كل النتائج',
@@ -66,8 +45,16 @@ const ar = {
66
45
  remove: 'إزالة {{label}}',
67
46
  selectFirst: 'اختر {{fields}} أولاً',
68
47
  selectRecord: 'اختيار سجل',
69
- recordCount: '{{count}} سجل',
70
- recordCountOne: 'سجل واحد',
48
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
49
+ // own noun form. The base key, a count-invariant form, answers a call made
50
+ // without a count.
51
+ recordCount: 'عدد السجلات: {{count}}',
52
+ recordCount_zero: '{{count}} سجل',
53
+ recordCount_one: '{{count}} سجل',
54
+ recordCount_two: 'سجلان ({{count}})',
55
+ recordCount_few: '{{count}} سجلات',
56
+ recordCount_many: '{{count}} سجلًا',
57
+ recordCount_other: '{{count}} سجل',
71
58
  pageOf: 'صفحة {{current}} من {{total}}',
72
59
  filters: 'عوامل التصفية',
73
60
  clear: 'مسح',
@@ -84,7 +71,7 @@ const ar = {
84
71
  common: {
85
72
  addToFavorites: "إضافة إلى المفضلة",
86
73
  removeFromFavorites: "إزالة من المفضلة",
87
- loading: "جاري التحميل…",
74
+ loading: "جارٍ التحميل…",
88
75
  save: "حفظ",
89
76
  discard: "تجاهل",
90
77
  cancel: "إلغاء",
@@ -119,15 +106,34 @@ const ar = {
119
106
  closeChat: "إغلاق المحادثة",
120
107
  closePanel: "إغلاق اللوحة",
121
108
  resizeDrawer: "تغيير عرض اللوحة",
122
- itemCount: "{{count}} عناصر",
123
- itemCountOne: "{{count}} عنصر",
109
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
110
+ // own noun form. The base key, a count-invariant form, answers a call made
111
+ // without a count.
112
+ itemCount: "عدد العناصر: {{count}}",
113
+ itemCount_zero: "{{count}} عنصر",
114
+ itemCount_one: "{{count}} عنصر",
115
+ itemCount_two: "عنصران ({{count}})",
116
+ itemCount_few: "{{count}} عناصر",
117
+ itemCount_many: "{{count}} عنصرًا",
118
+ itemCount_other: "{{count}} عنصر",
124
119
  toggleSidebar: "تبديل الشريط الجانبي",
120
+ breadcrumb: "مسار التنقل",
125
121
  package: "الحزمة",
126
122
  done: "تم",
127
123
  editInStudio: "التعديل في Studio",
128
124
  record: "سجل",
129
125
  retry: "إعادة المحاولة",
130
126
  printDialogHint: "يفتح مربع حوار الطباعة في المتصفح (ليس تصديرًا إلى PDF)",
127
+ // The non-grid row ceiling's footnote (objectui#7210). Two keys because
128
+ // there are two conditions: a reported `total` states the fact with BOTH
129
+ // numbers, a missing one cannot name how many. Kept terse deliberately —
130
+ // this copy is eagerly loaded, and since objectui#7399 these bytes are
131
+ // budgeted by the `i18n-locales` chunk, not `framework`. ⛔ That ceiling's
132
+ // headroom is deliberately NOT restated here — it moves on every
133
+ // re-baseline, and the figure that was here went stale.
134
+ // `pnpm check:eager-closure` prints it.
135
+ rowCeilingNote: "يتم عرض أول {{shown}} من أصل {{total}} سجل. ضيّق عامل التصفية.",
136
+ rowCeilingNoteUnknownTotal: "يتم عرض أول {{shown}} سجل. ضيّق عامل التصفية.",
131
137
  },
132
138
  actions: {
133
139
  decisionOutput: {
@@ -139,6 +145,15 @@ const ar = {
139
145
  acknowledge: 'لقد حفظتها',
140
146
  copyAll: 'نسخ الكل',
141
147
  },
148
+ notAvailableHere: '"{{action}}" غير متاح في الصفحة الحالية.',
149
+ notAvailableForRecord: 'غير متاح لهذا السجل',
150
+ completedSuccessfully: 'اكتمل الإجراء بنجاح',
151
+ failed: 'فشل الإجراء',
152
+ parallelFailed: 'فشل إجراء متوازٍ واحد أو أكثر',
153
+ undo: 'تراجع',
154
+ undone: 'تم التراجع عن التغيير',
155
+ undoneOperation: 'تراجع: {{description}}',
156
+ redoneOperation: 'إعادة: {{description}}',
142
157
  },
143
158
  validation: {
144
159
  required: "{{field}} مطلوب",
@@ -156,19 +171,47 @@ const ar = {
156
171
  },
157
172
  form: {
158
173
  noPermissionToSave: "ليس لديك إذن لحفظ هذا السجل.",
174
+ noPermissionToCreate: "ليس لديك إذن لإنشاء سجلات {{object}}. الحقول للقراءة فقط.",
175
+ noPermissionToEdit: "ليس لديك إذن لتعديل سجلات {{object}}. الحقول للقراءة فقط.",
159
176
  submitFailed: "تعذّر الحفظ. يرجى المحاولة مرة أخرى.",
177
+ uploadInFlight: "انتظر حتى ينتهي الرفع قبل الحفظ.",
178
+ clearedOnHide: "تم مسح ما لم يعد ينطبق على القيم الحالية: {{fields}}",
179
+ visibleWhenFaulted: "تعذّر الإرسال: تعذّر تقييم قاعدة visibleWhen لـ {{fields}}. يجب إصلاح القاعدة قبل أن يصبح إرسال هذا النموذج ممكنًا.",
160
180
  discardTitle: "تجاهل التغييرات؟",
161
181
  discardMessage: "لديك تغييرات غير محفوظة. إذا أغلقت هذا النموذج الآن، ستفقد تعديلاتك.",
162
182
  // objectui#4024 — the create/edit dialog's `sr-only` accessible
163
183
  // description, used when the form declares no `description` of its own.
164
184
  dialogDescriptionFallback: "املأ حقول النموذج ثم أرسل أو ألغِ.",
185
+ deniedDescription: "ليس لديك إذن لتعديل هذا الحقل.",
186
+ serverDefaultHint: "يُعيَّن تلقائيًا عند الحفظ.",
187
+ maxFileSize: "الحجم الأقصى: {{size}}",
188
+ masterDetail: {
189
+ loadingColumns: "جارٍ تحميل الأعمدة…",
190
+ subtotal: "المجموع الفرعي",
191
+ tax: "الضريبة ({{rate}}%)",
192
+ total: "الإجمالي",
193
+ lineItem: "بند",
194
+ rowTitle: "{{title}} — الصف {{row}}",
195
+ applyRow: "تطبيق",
196
+ editorDescription: "أدخل السجل وبنوده ثم احفظ.",
197
+ noChildObject: "لم يُكوَّن كائن فرعي لهذه المجموعة: عيّن {{property}} إلى الكائن الذي تسرد صفوفه.",
198
+ schemaUnavailable: "تعذّر تحميل مخطط {{object}}، لذا لا توجد أعمدة لعرضها في هذه المجموعة. تحقّق من أن الكائن موجود وقابل للقراءة، ثم أعد التحميل.",
199
+ noRelationshipField: "تعذّر تحديد كيفية ارتباط {{object}} بـ {{parent}}: لا يوجد فيه حقل lookup أو master_detail يشير إلى الكائن الأصل. عيّن {{property}} في هذه المجموعة إلى الحقل الذي يحمل السجل الأصل.",
200
+ },
201
+ lineItems: {
202
+ title: "البنود",
203
+ saveRecordFirst: "احفظ السجل أولًا لإضافة البنود.",
204
+ notLoaded: "لم يتم تحميل بنود هذا السجل.",
205
+ loadFailed: "تعذّر تحميل البنود",
206
+ saveFailed: "تعذّر حفظ البنود",
207
+ noChildObject: "لم يُكوَّن كائن فرعي لهذه اللوحة: عيّن {{property}} إلى الكائن الذي تسرد صفوفه.",
208
+ },
165
209
  keepEditing: "متابعة التحرير",
166
210
  discard: "تجاهل",
167
211
  conflictTitle: "تعارض في الحفظ",
168
212
  conflictMessage: "قام شخص آخر بتغيير هذا السجل أثناء تحريرك. الكتابة فوقه ستستبدل تغييراته بتغييراتك.",
169
213
  conflictLatestVersion: "وقت حفظه: {{time}}",
170
214
  conflictOverwrite: "الكتابة فوقه",
171
- addItem: "إضافة عنصر",
172
215
  removeItem: "إزالة عنصر",
173
216
  fieldRequired: "هذا الحقل مطلوب",
174
217
  invalidFormat: "صيغة غير صالحة",
@@ -186,6 +229,12 @@ const ar = {
186
229
  createSuccess: "تم إنشاء {{object}}",
187
230
  updateSuccess: "تم تحديث {{object}}",
188
231
  deleteSuccess: "تم حذف {{object}}",
232
+ created: "تم الإنشاء",
233
+ saved: "تم الحفظ",
234
+ savedNamed: "تم حفظ {{title}}",
235
+ submitted: "تم الإرسال",
236
+ errorLoading: "خطأ في تحميل النموذج",
237
+ navigateRefused: "تم رفض وجهة `navigateOnSuccess` المعلنة لهذا النموذج، لذلك لم يتم الانتقال.",
189
238
  fullscreen: {
190
239
  title: "تحرير النص",
191
240
  description: "حرّر قيمة النص الكاملة، ثم احفظ التغييرات أو ألغِها.",
@@ -204,12 +253,22 @@ const ar = {
204
253
  remove: "إزالة الصورة {{index}}",
205
254
  enlarge: "تكبير {{name}}",
206
255
  preview: "معاينة الصورة",
256
+ cropPreview: "معاينة قص الصورة",
207
257
  previous: "الصورة السابقة",
208
258
  next: "الصورة التالية",
209
259
  counter: "{{current}} / {{total}}",
210
260
  },
261
+ percent: {
262
+ slider: "النسبة المئوية",
263
+ },
211
264
  relativeDate: {
212
265
  overdue: "متأخر {{count}} يوم",
266
+ overdue_zero: "متأخر {{count}} يوم",
267
+ overdue_one: "متأخر {{count}} يوم",
268
+ overdue_two: "متأخر يومين ({{count}})",
269
+ overdue_few: "متأخر {{count}} أيام",
270
+ overdue_many: "متأخر {{count}} يومًا",
271
+ overdue_other: "متأخر {{count}} يوم",
213
272
  },
214
273
  file: {
215
274
  dragDropHere: 'اسحب الملفات وأفلتها هنا',
@@ -226,6 +285,9 @@ const ar = {
226
285
  remove: 'إزالة {{name}}',
227
286
  exceedsMaxSize: '"{{name}}" يتجاوز الحجم الأقصى ({{max}} ميغابايت)',
228
287
  uploadFailed: 'فشل رفع "{{name}}": {{error}}',
288
+ uploadIncomplete: 'لم يكتمل رفع "{{name}}": لم يتم إرجاع معرّف الملف، ولم يُحفظ شيء',
289
+ restricted: 'ملف مقيد',
290
+ restrictedHint: 'ليس لديك صلاحية الوصول إلى تفاصيل هذا الملف',
229
291
  },
230
292
  richText: {
231
293
  format: "التنسيق: {{format}}",
@@ -242,6 +304,10 @@ const ar = {
242
304
  search: "بحث في الكائنات…",
243
305
  empty: "لم يتم العثور على كائنات",
244
306
  },
307
+ registryRef: {
308
+ loadFailed: "تعذّر تحميل القائمة. لا يزال بإمكانك كتابة الاسم.",
309
+ notFound: "{{name}} (غير موجود)",
310
+ },
245
311
  recipient: {
246
312
  selectTypeFirst: "اختر نوع المستلم أولاً.",
247
313
  loading: "جارٍ التحميل…",
@@ -253,6 +319,9 @@ const ar = {
253
319
  selectBusinessUnit: "اختر وحدة عمل",
254
320
  selectPosition: "اختر منصباً",
255
321
  selectUnitAndSubordinates: "اختر وحدة عمل",
322
+ selectField: "اختر حقل مستخدم",
323
+ noUserFields: "لا توجد حقول مستخدم في هذا الكائن",
324
+ fieldNotUserTyped: "{{name}} — ليس حقل مستخدم",
256
325
  },
257
326
  filterCondition: {
258
327
  selectObjectFirst: "اختر كائناً أولاً.",
@@ -263,6 +332,33 @@ const ar = {
263
332
  editAsJson: "التحرير بصيغة JSON",
264
333
  useVisualBuilder: "استخدام المُنشئ المرئي",
265
334
  },
335
+ object: {
336
+ invalidJson: "JSON غير صالح",
337
+ },
338
+ location: {
339
+ refusedFormat: "لم يتم الحفظ: أدخل زوجًا من خط العرض وخط الطول (مثال: 30.2741, 120.1551).",
340
+ refusedRange: "لم يتم الحفظ: {{detail}}",
341
+ latitude: "خط العرض",
342
+ longitude: "خط الطول",
343
+ refusedResidueOne: "لم يتم الحفظ: {{name}} «{{text}}» ليس رقمًا. أدخل أرقامًا عشرية عادية (مثال: 30.2741, 120.1551).",
344
+ refusedResidue: "لم يتم الحفظ: {{name}} «{{text}}» و{{otherName}} «{{otherText}}» ليسا رقمين. أدخل أرقامًا عشرية عادية (مثال: 30.2741, 120.1551).",
345
+ },
346
+ date: {
347
+ impossibleDay: "القيمة المحفوظة «{{value}}» ليست تاريخًا حقيقيًا. اختر تاريخًا لاستبدالها.",
348
+ },
349
+ dateTime: {
350
+ impossibleDay: "القيمة المحفوظة «{{value}}» ليست تاريخًا حقيقيًا. اختر تاريخًا ووقتًا لاستبدالها.",
351
+ },
352
+ datePicker: {
353
+ today: "اليوم",
354
+ tomorrow: "غدًا",
355
+ clear: "مسح التاريخ",
356
+ openCalendar: "فتح التقويم",
357
+ invalid: "لم يتم الحفظ: «{{value}}» ليس تاريخًا. اكتبه بالصيغة {{format}} أو اختره من التقويم.",
358
+ },
359
+ number: {
360
+ badInput: "لم يتم الحفظ: النص في هذا المربع ليس رقمًا. أدخل رقمًا عشريًا عاديًا (مثال: {{example}}).",
361
+ },
266
362
  tags: {
267
363
  placeholder: "اكتب واضغط Enter للإضافة…",
268
364
  },
@@ -274,10 +370,25 @@ const ar = {
274
370
  postalCode: "الرمز البريدي",
275
371
  country: "الدولة",
276
372
  },
373
+ boolean: {
374
+ offBadge: "{{label}} — إيقاف",
375
+ completed: "مكتمل",
376
+ notCompleted: "غير مكتمل",
377
+ },
277
378
  textarea: {
278
379
  characterCount: "عدد الأحرف: {{count}} من {{max}}",
279
380
  charactersRemaining: "الأحرف المتبقية: {{count}}",
280
381
  },
382
+ grid: {
383
+ addLine: "إضافة سطر",
384
+ noItems: "لا توجد عناصر",
385
+ noItemsAddHint: "لا توجد عناصر بعد — انقر على «{{label}}» للبدء.",
386
+ optionalColumns: "أعمدة اختيارية",
387
+ computed: "محسوب",
388
+ openRow: "فتح الصف",
389
+ duplicateRow: "تكرار الصف",
390
+ removeRow: "إزالة الصف",
391
+ },
281
392
  },
282
393
  table: {
283
394
  rowsPerPage: "صفوف في الصفحة",
@@ -293,10 +404,15 @@ const ar = {
293
404
  selectAllRows: "تحديد جميع الصفوف",
294
405
  expandRow: "توسيع الصف",
295
406
  collapseRow: "طي الصف",
407
+ rowActions: "إجراءات الصف",
296
408
  hideColumn: "إخفاء العمود",
297
409
  freezeColumn: "تجميد العمود",
298
410
  unfreezeColumn: "إلغاء تجميد العمود",
299
411
  pageInfo: "صفحة {{current}} من {{total}}",
412
+ firstPage: "الصفحة الأولى",
413
+ previousPage: "الصفحة السابقة",
414
+ nextPage: "الصفحة التالية",
415
+ lastPage: "الصفحة الأخيرة",
300
416
  totalRecords: "{{count}} إجمالي",
301
417
  noResults: "لا نتائج",
302
418
  noResultsHint: "حاول تعديل الفلاتر أو مصطلحات البحث.",
@@ -306,23 +422,67 @@ const ar = {
306
422
  open: "فتح",
307
423
  search: "بحث…",
308
424
  modified: "{{count}} صف(صفوف) معدّل(ة)",
425
+ modified_zero: "{{count}} صف معدّل",
426
+ modified_one: "{{count}} صف معدّل",
427
+ modified_two: "صفان معدّلان ({{count}})",
428
+ modified_few: "{{count}} صفوف معدّلة",
429
+ modified_many: "{{count}} صفًا معدّلًا",
430
+ modified_other: "{{count}} صف معدّل",
431
+ saved: "{{count}} صف(صفوف) محفوظ(ة)",
432
+ saved_zero: "{{count}} صف محفوظ",
433
+ saved_one: "{{count}} صف محفوظ",
434
+ saved_two: "صفان محفوظان ({{count}})",
435
+ saved_few: "{{count}} صفوف محفوظة",
436
+ saved_many: "{{count}} صفًا محفوظًا",
437
+ saved_other: "{{count}} صف محفوظ",
309
438
  saveFailed: 'فشل الحفظ',
310
439
  selected: "{{count}} محدد(ة)",
440
+ selected_zero: "تم تحديد {{count}}",
441
+ selected_one: "تم تحديد {{count}}",
442
+ selected_two: "تم تحديد {{count}}",
443
+ selected_few: "تم تحديد {{count}}",
444
+ selected_many: "تم تحديد {{count}}",
445
+ selected_other: "تم تحديد {{count}}",
311
446
  edit: "تعديل",
312
447
  delete: "حذف",
313
448
  },
314
449
  grid: {
315
450
  bulkSelected: "تم تحديد {{count}}",
451
+ bulkSelected_zero: "تم تحديد {{count}}",
452
+ bulkSelected_one: "تم تحديد {{count}}",
453
+ bulkSelected_two: "تم تحديد {{count}}",
454
+ bulkSelected_few: "تم تحديد {{count}}",
455
+ bulkSelected_many: "تم تحديد {{count}}",
456
+ bulkSelected_other: "تم تحديد {{count}}",
316
457
  bulkSelectedAllMatches: "تم تحديد {{count}} (كل النتائج المطابقة)",
317
458
  bulkClear: "إلغاء التحديد",
318
459
  bulkAllOnPage: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
460
+ bulkAllOnPage_zero: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
461
+ bulkAllOnPage_one: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
462
+ bulkAllOnPage_two: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
463
+ bulkAllOnPage_few: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
464
+ bulkAllOnPage_many: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
465
+ bulkAllOnPage_other: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
319
466
  bulkSelectAllMatching: "تحديد كل النتائج المطابقة ({{count}})",
320
467
  bulkAllMatchingSelected: "تم تحديد جميع السجلات المطابقة ({{count}}).",
468
+ bulkActions: "إجراءات جماعية",
321
469
  bulk: {
322
470
  confirmDefault: "سيُطبَّق هذا على {{count}} من السجلات.",
471
+ confirmDefault_zero: "سيُطبَّق هذا على {{count}} من السجلات.",
472
+ confirmDefault_one: "سيُطبَّق هذا على {{count}} من السجلات.",
473
+ confirmDefault_two: "سيُطبَّق هذا على {{count}} من السجلات.",
474
+ confirmDefault_few: "سيُطبَّق هذا على {{count}} من السجلات.",
475
+ confirmDefault_many: "سيُطبَّق هذا على {{count}} من السجلات.",
476
+ confirmDefault_other: "سيُطبَّق هذا على {{count}} من السجلات.",
323
477
  overLimit: "التحديد ({{count}}) يتجاوز حد الإجراء ({{limit}}). قلّل التحديد للمتابعة.",
324
478
  affectedRecords: "السجلات المتأثرة ({{count}}):",
325
479
  skippedIneligible: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
480
+ skippedIneligible_zero: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
481
+ skippedIneligible_one: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
482
+ skippedIneligible_two: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
483
+ skippedIneligible_few: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
484
+ skippedIneligible_many: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
485
+ skippedIneligible_other: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
326
486
  rowFallback: "الصف {{index}}",
327
487
  andMore: "… و{{count}} أخرى",
328
488
  processed: "تمت معالجة {{count}} / {{total}}",
@@ -340,7 +500,6 @@ const ar = {
340
500
  undo: "تراجع",
341
501
  undoing: "جارٍ التراجع…",
342
502
  done: "تم",
343
- selectPlaceholder: "اختر…",
344
503
  loading: "جارٍ التحميل…",
345
504
  },
346
505
  actions: "إجراءات",
@@ -348,22 +507,32 @@ const ar = {
348
507
  delete: "حذف",
349
508
  export: "تصدير",
350
509
  exportAs: "تصدير كـ {{format}}",
351
- loading: "جاري تحميل الشبكة…",
510
+ loading: "جارٍ تحميل الشبكة…",
352
511
  errorLoading: "خطأ في تحميل الشبكة",
353
512
  pullToRefresh: "اسحب للتحديث",
354
- refreshing: "جاري التحديث…",
513
+ refreshing: "جارٍ التحديث…",
355
514
  openRecord: "فتح السجل",
515
+ recordUnavailable: "{{object}} · السجل غير متاح",
356
516
  rowHeight: "ارتفاع الصف: {{mode}}",
357
517
  openMenu: "فتح القائمة",
358
518
  empty: "فارغ",
359
519
  yes: "نعم",
360
520
  no: "لا",
361
521
  systemFields: "النظام",
522
+ // objectui#10881 — the grouped grid's two refusals: over a data source
523
+ // that cannot answer the group header query, and over rows a host
524
+ // handed in while declaring them one page of more. `queryGroupHeaders`
525
+ // is the member's name and stays untranslated.
526
+ grouping: {
527
+ needsHeaderQuery: "هذا العرض مُجمَّع، لكن مصدر بياناته لا يطبّق queryGroupHeaders، لذا لا يمكن عدّ المجموعات. أزِل التجميع لعرض السجلات.",
528
+ needsWholeRows: "يتطلب التجميع جميع السجلات، لكن هذه الشبكة تلقّت صفحة واحدة منها فقط، لذا لا يمكن عدّ المجموعات. مرّر جميع السجلات، أو دع الشبكة تجلبها من مصدر بيانات يطبّق queryGroupHeaders.",
529
+ },
362
530
  // objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
363
531
  // `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
364
532
  // pack controls its own separator and word order.
365
533
  summary: {
366
534
  pattern: "{{label}}: {{value}}",
535
+ pagePattern: "{{label}} (هذه الصفحة): {{value}}",
367
536
  count: "العدد",
368
537
  countEmpty: "فارغة",
369
538
  countFilled: "ممتلئة",
@@ -385,10 +554,18 @@ const ar = {
385
554
  },
386
555
  import: {
387
556
  downloadTemplate: "تنزيل القالب",
388
- downloadTemplateHint: "احصل على ملف CSV بالأعمدة الصحيحة (الحقول المطلوبة معلَّمة بـ *).",
557
+ downloadTemplateHint: "احصل على ملف Excel بالأعمدة التي يمكنك استيرادها (الحقول المطلوبة معلَّمة بـ *) مع تعليمات التعبئة.",
389
558
  templateFileName: "{{object}}-import-template",
559
+ templateDownloadFailed: "تعذّر تنزيل القالب. يرجى المحاولة مرة أخرى.",
560
+ templateNotPermitted: "ليست لديك صلاحية إنشاء سجلات لهذا الكائن، لذا فإن قالب الاستيراد غير متاح.",
390
561
  autoMatched: "تمت المطابقة تلقائيًا",
391
562
  autoMatchedSummary: "تمت مطابقة {{count}} عمودًا تلقائيًا — راجعها وعدّلها أدناه.",
563
+ autoMatchedSummary_zero: "تمت مطابقة {{count}} عمود تلقائيًا — راجِع وعدِّل أدناه.",
564
+ autoMatchedSummary_one: "تمت مطابقة {{count}} عمود تلقائيًا — راجِع وعدِّل أدناه.",
565
+ autoMatchedSummary_two: "تمت مطابقة عمودين ({{count}}) تلقائيًا — راجِع وعدِّل أدناه.",
566
+ autoMatchedSummary_few: "تمت مطابقة {{count}} أعمدة تلقائيًا — راجِع وعدِّل أدناه.",
567
+ autoMatchedSummary_many: "تمت مطابقة {{count}} عمودًا تلقائيًا — راجِع وعدِّل أدناه.",
568
+ autoMatchedSummary_other: "تمت مطابقة {{count}} عمود تلقائيًا — راجِع وعدِّل أدناه.",
392
569
  confidence: {
393
570
  high: "ثقة عالية",
394
571
  medium: "ثقة متوسطة",
@@ -401,8 +578,26 @@ const ar = {
401
578
  cancelImport: "إلغاء الاستيراد",
402
579
  importCancelled: "تم إلغاء الاستيراد",
403
580
  resultsTruncated: "عرض نتائج أول {{count}} صفًا (من أصل {{total}}).",
581
+ resultsTruncated_zero: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
582
+ resultsTruncated_one: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
583
+ resultsTruncated_two: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
584
+ resultsTruncated_few: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
585
+ resultsTruncated_many: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
586
+ resultsTruncated_other: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
404
587
  createdCount: "تم إنشاء {{count}}",
588
+ createdCount_zero: "تم إنشاء {{count}}",
589
+ createdCount_one: "تم إنشاء {{count}}",
590
+ createdCount_two: "تم إنشاء {{count}}",
591
+ createdCount_few: "تم إنشاء {{count}}",
592
+ createdCount_many: "تم إنشاء {{count}}",
593
+ createdCount_other: "تم إنشاء {{count}}",
405
594
  updatedCount: "تم تحديث {{count}}",
595
+ updatedCount_zero: "تم تحديث {{count}}",
596
+ updatedCount_one: "تم تحديث {{count}}",
597
+ updatedCount_two: "تم تحديث {{count}}",
598
+ updatedCount_few: "تم تحديث {{count}}",
599
+ updatedCount_many: "تم تحديث {{count}}",
600
+ updatedCount_other: "تم تحديث {{count}}",
406
601
  downloadFailed: "تنزيل الصفوف الفاشلة",
407
602
  options: "خيارات الاستيراد",
408
603
  writeMode: "عند تطابق صف مع سجل موجود",
@@ -417,9 +612,6 @@ const ar = {
417
612
  needMatchFields: "اختر حقلًا واحدًا على الأقل للمطابقة.",
418
613
  matchOnlyField: "(للمطابقة فقط)",
419
614
  optCreateOptions: "الاحتفاظ بقيم الخيارات غير المعروفة",
420
- optRunAutomations: "تشغيل الأتمتة والمشغّلات",
421
- optTreatHistorical: "الاستيراد كبيانات تاريخية",
422
- optTreatHistoricalHint: "(استيراد السجلات المكتملة كما هي — تخطي فحوصات آلة الحالات والاحتفاظ بالطوابع الزمنية والمؤلف الأصليين بدل ختمها الآن)",
423
615
  optSkipBlankKey: "تخطي الصفوف التي تكون قيمة المطابقة فيها فارغة",
424
616
  optBackground: "الاستيراد في الخلفية",
425
617
  optBackgroundHint: "(يعمل كمهمة قابلة للتراجع)",
@@ -434,6 +626,7 @@ const ar = {
434
626
  invalidBoolean: "«{{value}}» ليست قيمة صواب/خطأ صالحة",
435
627
  invalidNumber: "«{{value}}» ليست رقمًا صالحًا",
436
628
  invalidDate: "«{{value}}» ليست تاريخًا صالحًا",
629
+ invalidTime: "«{{value}}» ليست وقتًا صالحًا",
437
630
  invalidOption: "«{{value}}» ليست ضمن الخيارات المسموح بها",
438
631
  requiredValue: "هذا الحقل مطلوب",
439
632
  matchAmbiguous: "يطابق أكثر من سجل موجود — استخدم قيمة فريدة أو معرّف السجل",
@@ -450,10 +643,23 @@ const ar = {
450
643
  historyColResult: "النتيجة",
451
644
  historyColTime: "الوقت",
452
645
  errorCount: "{{count}} من الأخطاء",
646
+ errorCount_zero: "{{count}} من الأخطاء",
647
+ errorCount_one: "{{count}} من الأخطاء",
648
+ errorCount_two: "{{count}} من الأخطاء",
649
+ errorCount_few: "{{count}} من الأخطاء",
650
+ errorCount_many: "{{count}} من الأخطاء",
651
+ errorCount_other: "{{count}} من الأخطاء",
453
652
  undoImport: "التراجع عن الاستيراد",
454
653
  undoing: "جارٍ التراجع…",
455
654
  undoConfirm: "هل تريد التراجع عن هذا الاستيراد؟ ستُحذف السجلات التي أنشأها وتُستعاد السجلات التي حدّثها إلى قيمها السابقة.",
456
655
  reverted: "تم التراجع",
656
+ undoPartial: "لم يتم التراجع عن {{count}} صف(صفوف). التراجع مرة أخرى يعيد محاولة هذه الصفوف فقط.",
657
+ undoPartial_zero: "لم يتم التراجع عن {{count}} صف. التراجع مرة أخرى يعيد محاولة هذه الصفوف فقط.",
658
+ undoPartial_one: "لم يتم التراجع عن {{count}} صف. التراجع مرة أخرى يعيد محاولة هذا الصف فقط.",
659
+ undoPartial_two: "لم يتم التراجع عن صفّين ({{count}}). التراجع مرة أخرى يعيد محاولة هذين الصفّين فقط.",
660
+ undoPartial_few: "لم يتم التراجع عن {{count}} صفوف. التراجع مرة أخرى يعيد محاولة هذه الصفوف فقط.",
661
+ undoPartial_many: "لم يتم التراجع عن {{count}} صفًا. التراجع مرة أخرى يعيد محاولة هذه الصفوف فقط.",
662
+ undoPartial_other: "لم يتم التراجع عن {{count}} صف. التراجع مرة أخرى يعيد محاولة هذه الصفوف فقط.",
457
663
  jobStatus: {
458
664
  pending: "قيد الانتظار",
459
665
  running: "قيد التنفيذ",
@@ -510,19 +716,45 @@ const ar = {
510
716
  mapped: "مُعيَّن",
511
717
  skipped: "مُتخطَّى",
512
718
  rowsWithErrors: "{{count}} صف(صفوف) بها أخطاء",
719
+ rowsWithErrors_zero: "{{count}} صف بها أخطاء",
720
+ rowsWithErrors_one: "{{count}} صف به أخطاء",
721
+ rowsWithErrors_two: "صفان بهما أخطاء ({{count}})",
722
+ rowsWithErrors_few: "{{count}} صفوف بها أخطاء",
723
+ rowsWithErrors_many: "{{count}} صفًا بها أخطاء",
724
+ rowsWithErrors_other: "{{count}} صف بها أخطاء",
513
725
  rowsCorrected: "{{count}} صف(صفوف) تم تصحيحها",
726
+ rowsCorrected_zero: "تم تصحيح {{count}} صف",
727
+ rowsCorrected_one: "تم تصحيح {{count}} صف",
728
+ rowsCorrected_two: "تم تصحيح صفين ({{count}})",
729
+ rowsCorrected_few: "تم تصحيح {{count}} صفوف",
730
+ rowsCorrected_many: "تم تصحيح {{count}} صفًا",
731
+ rowsCorrected_other: "تم تصحيح {{count}} صف",
514
732
  clickToFix: "— انقر على خلية مميزة للتعديل.",
515
733
  showingRows: "عرض {{shown}} من {{total}} صف",
516
734
  importing: "جارٍ الاستيراد… {{progress}}%",
517
735
  importComplete: "اكتمل الاستيراد",
736
+ importPartial: "اكتمل الاستيراد مع وجود أخطاء",
737
+ importFailed: "فشل الاستيراد",
518
738
  imported: "{{count}} مُستورَد(ة)",
519
739
  skippedCount: "{{count}} مُتخطَّى(ة)",
520
740
  moreErrors: "…و{{count}} خطأ(أخطاء) أخرى",
741
+ moreErrors_zero: "…و{{count}} خطأ آخر",
742
+ moreErrors_one: "…و{{count}} خطأ آخر",
743
+ moreErrors_two: "…وخطآن آخران ({{count}})",
744
+ moreErrors_few: "…و{{count}} أخطاء أخرى",
745
+ moreErrors_many: "…و{{count}} خطأً آخر",
746
+ moreErrors_other: "…و{{count}} خطأ آخر",
521
747
  cancel: "إلغاء",
522
748
  back: "رجوع",
523
749
  next: "التالي",
524
750
  close: "إغلاق",
525
751
  importNRows: "استيراد {{count}} صف",
752
+ importNRows_zero: "استيراد {{count}} صف",
753
+ importNRows_one: "استيراد {{count}} صف",
754
+ importNRows_two: "استيراد صفين ({{count}})",
755
+ importNRows_few: "استيراد {{count}} صفوف",
756
+ importNRows_many: "استيراد {{count}} صفًا",
757
+ importNRows_other: "استيراد {{count}} صف",
526
758
  importingProgress: "جارٍ الاستيراد…",
527
759
  requiredMark: "*",
528
760
  required: "مطلوب",
@@ -534,17 +766,48 @@ const ar = {
534
766
  month: "شهر",
535
767
  week: "أسبوع",
536
768
  day: "يوم",
537
- agenda: "جدول أعمال",
538
769
  allDay: "طوال اليوم",
539
- noEvents: "لا توجد أحداث",
540
770
  newEvent: "حدث جديد",
541
771
  moreEvents: "+{{count}} المزيد",
772
+ unscheduled: "غير مجدولة ({{count}})",
773
+ loading: "جارٍ تحميل التقويم…",
774
+ loadError: "خطأ: {{message}}",
775
+ configRequired: "إعداد التقويم مطلوب. يُرجى تحديد startDateField، وهو المفتاح المطلوب الوحيد للتقويم؛ ويُحلّ عنوان الحدث دون titleField.",
776
+ configRequiredHint: "هو ينتمي إلى كتلة calendar في العرض. صفحة الواجهة ليس لها فتحة تقويم خاصة بها: وجّه sourceView الخاص بها إلى عرض يعلن واحدة.",
777
+ eventDetails: "تفاصيل الحدث",
778
+ pullToRefresh: "اسحب للتحديث",
779
+ refreshing: "جارٍ التحديث…",
780
+ onDate: "في {{date}}",
781
+ eventTitle: "العنوان",
782
+ eventTitlePlaceholder: "ما موضوع هذا الحدث؟",
783
+ creating: "جارٍ الإنشاء…",
784
+ titleRequired: "العنوان مطلوب",
785
+ a11y: {
786
+ region: "التقويم",
787
+ grid: "شبكة التقويم",
788
+ goToToday: "الانتقال إلى اليوم",
789
+ previousPeriod: "الفترة السابقة",
790
+ nextPeriod: "الفترة التالية",
791
+ currentDate: "التاريخ الحالي: {{date}}",
792
+ dayCell: "{{date}}، عدد الأحداث: {{count}}",
793
+ dayCell_zero: "{{date}}، {{count}} حدث",
794
+ dayCell_one: "{{date}}، {{count}} حدث",
795
+ dayCell_two: "{{date}}، حدثان ({{count}})",
796
+ dayCell_few: "{{date}}، {{count}} أحداث",
797
+ dayCell_many: "{{date}}، {{count}} حدثًا",
798
+ dayCell_other: "{{date}}، عدد الأحداث: {{count}}",
799
+ resizeEventEnd: "تغيير نهاية الحدث",
800
+ resizeEventEndHint: "اسحب لتغيير تاريخ الانتهاء",
801
+ resizeStart: "تغيير وقت البدء",
802
+ resizeEnd: "تغيير وقت الانتهاء",
803
+ },
542
804
  },
543
805
  list: {
544
806
  firstRunTitle: "لا يوجد شيء هنا بعد",
545
807
  firstRunMessage: "أنشئ سجلك الأول للبدء.",
546
808
  noMatches: "لا توجد سجلات مطابقة",
547
809
  noMatchesMessage: "لا توجد سجلات تطابق عوامل التصفية أو البحث الحالية. حاول تعديلها أو مسحها.",
810
+ viewFilterNoMatchesMessage: "لا توجد سجلات تطابق عامل التصفية لطريقة العرض هذه.",
548
811
  loadErrorTitle: "تعذّر تحميل السجلات",
549
812
  loadErrorMessage: "حدث خطأ أثناء تحميل هذه البيانات. تحقق من اتصالك وحاول مرة أخرى.",
550
813
  loadErrorForbiddenTitle: "ليس لديك صلاحية الوصول",
@@ -580,18 +843,36 @@ const ar = {
580
843
  },
581
844
  refresh: "تحديث",
582
845
  loading: "جارٍ تحميل السجلات…",
583
- recordCount: "{{count}} سجلات",
584
- recordCountOne: "{{count}} سجل",
846
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
847
+ // own noun form. The base key, a count-invariant form, answers a call made
848
+ // without a count.
849
+ recordCount: "عدد السجلات: {{count}}",
850
+ recordCount_zero: "{{count}} سجل",
851
+ recordCount_one: "{{count}} سجل",
852
+ recordCount_two: "سجلان ({{count}})",
853
+ recordCount_few: "{{count}} سجلات",
854
+ recordCount_many: "{{count}} سجلًا",
855
+ recordCount_other: "{{count}} سجل",
585
856
  addRecord: "إضافة سجل",
857
+ // objectui#12703 — the compact list's footer link to the object's list or the block's view.
858
+ viewAll: "عرض الكل",
586
859
  tabs: "علامات التبويب",
587
860
  allRecords: "جميع السجلات",
588
861
  search: "بحث",
589
862
  filter: "تصفية",
590
863
  filterRecords: "تصفية السجلات",
864
+ filterActive: "تصفية، عوامل التصفية النشطة: {{count}}",
865
+ filterActive_zero: "تصفية، {{count}} عامل تصفية نشط",
866
+ filterActive_one: "تصفية، {{count}} عامل تصفية نشط",
867
+ filterActive_two: "تصفية، عاملا تصفية نشطان ({{count}})",
868
+ filterActive_few: "تصفية، {{count}} عوامل تصفية نشطة",
869
+ filterActive_many: "تصفية، {{count}} عامل تصفية نشطًا",
870
+ filterActive_other: "تصفية، {{count}} عامل تصفية نشط",
591
871
  sort: "ترتيب",
592
872
  sortRecords: "ترتيب السجلات",
593
873
  sortByIdSuffix: "(حسب المعرّف)",
594
874
  sortRelationalHint: "الأعمدة التي تشير إلى سجل آخر غير مدرجة هنا: يمكن ترتيبها حسب المعرّف المخزَّن فقط، وليس حسب الاسم الظاهر في الخلية. للترتيب حسب ذلك الاسم، أضِف الاسم إلى هذا الكائن نفسه (إلغاء التطبيع) كحقل مخزَّن يُكتب عند تغيّر المصدر، ثم رتّب حسبه. وليس حقل صيغة: فهو افتراضي، ولا يُخزَّن له أي عمود، ويرفض الخادم الترتيب حسبه.",
875
+ sortRelationalPicked: "يُرتَّب العمود المرتبط حسب المعرّف المخزَّن، لا حسب الاسم المعروض.",
595
876
  resetSortToDefault: "إعادة التعيين إلى الترتيب الافتراضي للعرض",
596
877
  group: "تجميع",
597
878
  groupBy: "تجميع حسب",
@@ -612,14 +893,15 @@ const ar = {
612
893
  print: "طباعة",
613
894
  hideFieldsTitle: "إخفاء الحقول",
614
895
  dataLimitReached: "يتم عرض أول {{limit}} سجل. قد تتوفر بيانات إضافية.",
615
- viewSettings: "إعدادات العرض",
616
- viewSettingsHint: "التجميع واللون والكثافة والحقول المرئية.",
896
+ display: "العرض",
897
+ layout: "التخطيط",
898
+ rowNumbers: "أرقام الصفوف",
899
+ resetToViewDefault: "إعادة التعيين إلى الإعدادات الافتراضية للعرض",
617
900
  addGroup: "إضافة حقل مجموعة",
618
901
  collapsedByDefault: "مطوي افتراضياً",
619
902
  removeGroup: "إزالة",
620
903
  inlineEditShort: "تحرير مضمّن",
621
904
  inlineEditLabel: "حرّر السجلات مباشرة (انقر خلية للتحرير)",
622
- recordEditingTitle: "تحرير السجلات",
623
905
  },
624
906
  managedByBadge: {
625
907
  systemWritable: {
@@ -650,6 +932,7 @@ const ar = {
650
932
  },
651
933
  kanban: {
652
934
  uncategorized: "غير مصنّف",
935
+ loadMore: "تحميل المزيد",
653
936
  columns: "أعمدة",
654
937
  addCard: "إضافة بطاقة",
655
938
  addColumn: "إضافة عمود",
@@ -657,13 +940,28 @@ const ar = {
657
940
  deleteCard: "حذف بطاقة",
658
941
  deleteColumn: "حذف عمود",
659
942
  noCards: "لا بطاقات",
943
+ columnCards: "بطاقات العمود {{column}}",
944
+ laneCards: "بطاقات {{column}} - {{lane}}",
660
945
  cardTitlePlaceholder: "أدخل عنوان البطاقة…",
661
946
  requiredFieldsTitle: "أكمل الحقول المطلوبة",
662
947
  requiredFieldsDescription: "يجعل هذا النقل الحقول أدناه مطلوبة. أكملها للمتابعة.",
948
+ dnd: {
949
+ start: "تم التقاط البطاقة {{card}} في العمود {{column}}.",
950
+ overCard: "البطاقة {{card}} فوق البطاقة {{target}} في العمود {{column}}.",
951
+ overColumn: "البطاقة {{card}} فوق العمود {{column}}.",
952
+ overNone: "البطاقة {{card}} ليست فوق أي عمود.",
953
+ moved: "تم نقل البطاقة {{card}} إلى العمود {{column}}.",
954
+ dropped: "تم إفلات البطاقة {{card}}. لا تزال في العمود {{column}}.",
955
+ cancelled: "تم إلغاء السحب. لا تزال البطاقة {{card}} في العمود {{column}}.",
956
+ untitledCard: "بلا عنوان",
957
+ unnamedColumn: "بلا اسم",
958
+ instructions: "لنقل هذه البطاقة إلى عمود آخر، اسحبها بالمؤشر أو باللمس.",
959
+ dragging: "جارٍ سحب البطاقة {{card}}",
960
+ },
663
961
  },
664
962
  timeline: {
665
963
  bucket: {
666
- overdue: "متأخر",
964
+ earlier: "سابقاً",
667
965
  today: "اليوم",
668
966
  tomorrow: "غداً",
669
967
  thisWeek: "هذا الأسبوع",
@@ -678,6 +976,17 @@ const ar = {
678
976
  },
679
977
  gantt: {
680
978
  rowLabel: "العناصر",
979
+ unusableRange: {
980
+ malformedDate: "نطاق تواريخ جانت غير صالح للاستخدام — {{path}} يساوي {{value}}، وهو ليس تاريخًا صالحًا. يجب أن تكون كل تواريخ جانت قابلة للتحليل: startDate و endDate لكل عنصر صف، بالإضافة إلى أي minDate / maxDate مثبّت في المخطط.",
981
+ malformedRow: "صفوف جانت غير صالحة للاستخدام — {{path}} يساوي {{value}}، وهو ليس على شكل صف. يقرأ جانت items كقائمة من الصفوف، وكل صف ككائن يحمل label و items خاصة به، و items كل صف كقائمة من الأشرطة؛ لا يمكن رسم null أو رقم أو سلسلة نصية أو كائن عادي في أي من هذه المواضع.",
982
+ inverted: "نطاق تواريخ جانت غير صالح للاستخدام — minDate {{minDate}} يقع بعد maxDate {{maxDate}}. يتجاوز minDate / maxDate المثبّت النطاق المحسوب من الصفوف، لذلك لا يحتوي هذا المحور على أي أعمدة ولا يمكن وضع أي شريط عليه؛ بدّل القيمتين.",
983
+ },
984
+ },
985
+ unsupported: {
986
+ objectBoundGantt: "النوع \"gantt\" غير مدعوم — المخطط الزمني المرتبط بكائن يعرض أنواع التغذية ({{variants}}). يحتاج مخطط جانت إلى صفوف صريحة، لكل منها عناصر items متداخلة خاصة به، لذلك لا يؤثر محور جانت (scale) هنا.",
987
+ },
988
+ unconfigured: {
989
+ noDateAxis: "محور تواريخ المخطط الزمني مطلوب — هذا العرض لا يعلن أي حقل تاريخ، والمخطط الزمني المرتبط بكائن لا يخترع حقلاً. أعلن أحد الحقول التالية: {{fields}}. الأول هو صيغة المواصفة، والبقية أسماء مستعارة قديمة.",
681
990
  },
682
991
  },
683
992
  gantt: {
@@ -695,6 +1004,7 @@ const ar = {
695
1004
  },
696
1005
  aria: {
697
1006
  taskList: "قائمة المهام",
1007
+ refreshing: "جارٍ التحديث…",
698
1008
  },
699
1009
  tooltip: {
700
1010
  days: "ي",
@@ -740,13 +1050,31 @@ const ar = {
740
1050
  conflict: {
741
1051
  title: "تعارض في الجدولة",
742
1052
  body: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1053
+ body_zero: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1054
+ body_one: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1055
+ body_two: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1056
+ body_few: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1057
+ body_many: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1058
+ body_other: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
743
1059
  confirm: "إعادة الجدولة تلقائيًا",
744
1060
  cancel: "الإبقاء كما هو",
745
1061
  },
746
1062
  autoScheduleDlg: {
747
1063
  title: "الجدولة التلقائية",
748
1064
  body: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1065
+ body_zero: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1066
+ body_one: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1067
+ body_two: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1068
+ body_few: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1069
+ body_many: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1070
+ body_other: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
749
1071
  skipped: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1072
+ skipped_zero: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1073
+ skipped_one: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1074
+ skipped_two: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1075
+ skipped_few: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1076
+ skipped_many: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1077
+ skipped_other: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
750
1078
  confirm: "تطبيق",
751
1079
  cancel: "إلغاء",
752
1080
  none: "جميع التبعيات مستوفاة — لا شيء لإعادة جدولته.",
@@ -825,10 +1153,14 @@ const ar = {
825
1153
  tabActionsFor: "إجراءات العرض لـ {{name}}",
826
1154
  readonlyAriaLabel: "عرض للقراءة فقط",
827
1155
  readonlyTooltip: "عرض النظام — معرَّف في الكود، للقراءة فقط.",
1156
+ malformedFilter: "عامل تصفية طريقة العرض هذه غير صالح، لذا لا تُعرض أي سجلات: يتعذّر تطبيق الشرط {{subject}}.",
1157
+ noObject: "لم يُحدَّد أي كائن: عيّن {{property}} أو dataSource.object.",
828
1158
  },
829
1159
  designer: {
830
1160
  undo: "تراجع",
831
1161
  redo: "إعادة",
1162
+ canvasMinimap: "الخريطة المصغرة للوحة",
1163
+ versionHistory: "سجل الإصدارات",
832
1164
  },
833
1165
  detail: {
834
1166
  editInlineHint: "انقر نقرًا مزدوجًا للتحرير",
@@ -851,8 +1183,16 @@ const ar = {
851
1183
  addReaction: "إضافة تفاعل",
852
1184
  pageHeaderActions: "إجراءات رأس الصفحة",
853
1185
  emojiPicker: "منتقي الرموز التعبيرية",
854
- reactionCount: "{{emoji}} {{count}} تفاعلات",
855
- reactionCountOne: "{{emoji}} {{count}} تفاعل",
1186
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
1187
+ // own noun form. The base key, a count-invariant form, answers a call made
1188
+ // without a count.
1189
+ reactionCount: "{{emoji}} عدد التفاعلات: {{count}}",
1190
+ reactionCount_zero: "{{emoji}} {{count}} تفاعل",
1191
+ reactionCount_one: "{{emoji}} {{count}} تفاعل",
1192
+ reactionCount_two: "{{emoji}} تفاعلان ({{count}})",
1193
+ reactionCount_few: "{{emoji}} {{count}} تفاعلات",
1194
+ reactionCount_many: "{{emoji}} {{count}} تفاعلًا",
1195
+ reactionCount_other: "{{emoji}} {{count}} تفاعل",
856
1196
  recordDetail: "تفاصيل السجل",
857
1197
  recordDetailWithLabel: "تفاصيل {{label}}",
858
1198
  openAsFullPage: "فتح كصفحة كاملة",
@@ -870,7 +1210,7 @@ const ar = {
870
1210
  relatedRecords: "{{count}} سجلات",
871
1211
  relatedRecordOne: "{{count}} سجل",
872
1212
  noRelatedRecords: "لا توجد سجلات ذات صلة",
873
- loading: "جاري التحميل…",
1213
+ loading: "جارٍ التحميل…",
874
1214
  copyToClipboard: "نسخ إلى الحافظة",
875
1215
  copied: "تم النسخ!",
876
1216
  deleteConfirmation: "هل أنت متأكد أنك تريد حذف هذا السجل؟",
@@ -879,7 +1219,6 @@ const ar = {
879
1219
  viewAll: "عرض الكل",
880
1220
  new: "جديد",
881
1221
  add: "إضافة",
882
- emptyValue: "—",
883
1222
  comments: "التعليقات",
884
1223
  searchComments: "البحث في التعليقات…",
885
1224
  addCommentPlaceholder: "أضف تعليقاً… (Ctrl+Enter للإرسال)",
@@ -890,11 +1229,34 @@ const ar = {
890
1229
  unpin: "إلغاء التثبيت",
891
1230
  justNow: "الآن",
892
1231
  minutesAgo: "منذ {{count}} دقيقة",
1232
+ minutesAgo_zero: "منذ {{count}} دقيقة",
1233
+ minutesAgo_one: "منذ {{count}} دقيقة",
1234
+ minutesAgo_two: "منذ دقيقتين ({{count}})",
1235
+ minutesAgo_few: "منذ {{count}} دقائق",
1236
+ minutesAgo_many: "منذ {{count}} دقيقة",
1237
+ minutesAgo_other: "منذ {{count}} دقيقة",
893
1238
  hoursAgo: "منذ {{count}} ساعة",
1239
+ hoursAgo_zero: "منذ {{count}} ساعة",
1240
+ hoursAgo_one: "منذ {{count}} ساعة",
1241
+ hoursAgo_two: "منذ ساعتين ({{count}})",
1242
+ hoursAgo_few: "منذ {{count}} ساعات",
1243
+ hoursAgo_many: "منذ {{count}} ساعة",
1244
+ hoursAgo_other: "منذ {{count}} ساعة",
894
1245
  daysAgo: "منذ {{count}} يوم",
1246
+ daysAgo_zero: "منذ {{count}} يوم",
1247
+ daysAgo_one: "منذ {{count}} يوم",
1248
+ daysAgo_two: "منذ يومين ({{count}})",
1249
+ daysAgo_few: "منذ {{count}} أيام",
1250
+ daysAgo_many: "منذ {{count}} يومًا",
1251
+ daysAgo_other: "منذ {{count}} يوم",
895
1252
  dropFilesToUpload: "اسحب الملفات هنا أو انقر للرفع",
896
1253
  attachmentCount: "{{count}} مرفق",
897
- attachmentCountPlural: "{{count}} مرفقات",
1254
+ attachmentCount_zero: "{{count}} مرفق",
1255
+ attachmentCount_one: "{{count}} مرفق",
1256
+ attachmentCount_two: "مرفقان ({{count}})",
1257
+ attachmentCount_few: "{{count}} مرفقات",
1258
+ attachmentCount_many: "{{count}} مرفقًا",
1259
+ attachmentCount_other: "{{count}} مرفق",
898
1260
  removeAttachment: "إزالة المرفق",
899
1261
  // Record Attachments panel (enable.files, objectstack#4358)
900
1262
  attachments: "المرفقات",
@@ -903,6 +1265,7 @@ const ar = {
903
1265
  noAttachments: "لا توجد مرفقات بعد. ارفع ملفًا للبدء.",
904
1266
  downloadAttachment: "تنزيل",
905
1267
  deleteAttachment: "حذف المرفق",
1268
+ deleteAttachmentConfirm: "هل أنت متأكد أنك تريد حذف المرفق \"{{name}}\"؟",
906
1269
  attachmentDeleteDenied: "لا يمكن حذف هذا المرفق إلا لمن رفعه أو لمن يمكنه تعديل هذا السجل.",
907
1270
  attachmentParentAccessDenied: "ليس لديك صلاحية إرفاق ملفات بهذا السجل.",
908
1271
  attachmentDownloadDenied: "ليس لديك صلاحية تنزيل هذا المرفق.",
@@ -912,11 +1275,6 @@ const ar = {
912
1275
  attachmentsLoadFailed: "تعذر تحميل مرفقات هذا السجل.",
913
1276
  attachmentsApiUnavailable: "قائمة المرفقات غير متاحة على هذا الكائن.",
914
1277
  retryLoadAttachments: "إعادة المحاولة",
915
- unifiedDiff: "عرض موحد",
916
- sideBySideDiff: "عرض جنباً إلى جنب",
917
- noChanges: "لا توجد تغييرات",
918
- previousVersion: "السابق",
919
- currentVersion: "الحالي",
920
1278
  discussion: "المناقشة",
921
1279
  showDiscussion: "إظهار المناقشة ({{count}})",
922
1280
  hideDiscussion: "إخفاء المناقشة",
@@ -931,25 +1289,39 @@ const ar = {
931
1289
  writeComment: "اكتب تعليقاً…",
932
1290
  subscribedTooltip: "مشترك — انقر لإلغاء الاشتراك",
933
1291
  unsubscribedTooltip: "الاشتراك في الإشعارات",
934
- firstRecord: "السجل الأول (Home)",
935
- previousRecordKey: "السجل السابق (←)",
936
- nextRecordKey: "السجل التالي (→)",
937
- lastRecord: "السجل الأخير (End)",
938
1292
  noRecords: "لا توجد سجلات",
939
- searchWhileNavigating: "البحث أثناء التصفح",
940
- searchRecords: "البحث في السجلات…",
941
1293
  allActivity: "كل النشاط",
942
1294
  commentsOnly: "التعليقات فقط",
943
1295
  fieldChangesFilter: "تغييرات الحقول",
944
1296
  tasksOnly: "المهام فقط",
945
1297
  leaveCommentPlaceholder: "اترك تعليقاً… (Ctrl+Enter للإرسال)",
946
1298
  noActivity: "لا يوجد نشاط مسجل",
1299
+ activityAccessDenied: "ليس لديك صلاحية عرض نشاط هذا السجل.",
1300
+ commentsAccessDenied: "ليس لديك صلاحية عرض التعليقات على هذا السجل.",
1301
+ // objectui#7149 — the rest of `ActivityTimeline`. The four chip labels the
1302
+ // `detail.*` pack did not already name, and the `formatFieldChange`
1303
+ // sentences, which are assembled in code and so need interpolation holes.
1304
+ allFilter: 'الكل',
1305
+ createsFilter: 'عمليات الإنشاء',
1306
+ deletesFilter: 'عمليات الحذف',
1307
+ statusChangesFilter: 'تغييرات الحالة',
1308
+ activityEmptyValue: '(فارغ)',
1309
+ activityFieldChanged: 'غيّر {{field}} من "{{old}}" إلى "{{new}}"',
1310
+ activityCreated: 'أنشأ هذا السجل',
1311
+ activityDeleted: 'حذف هذا السجل',
1312
+ activityStatusChanged: 'غيّر الحالة إلى "{{value}}"',
1313
+ activityUpdated: 'حدّث السجل',
947
1314
  loadMore: "تحميل المزيد",
948
1315
  edited: "(معدل)",
949
1316
  via: "عبر {{source}}",
950
1317
  viewSource: "عرض المصدر",
951
1318
  replyCount: "{{count}} رد",
952
- replyCountPlural: "{{count}} ردود",
1319
+ replyCount_zero: "{{count}} رد",
1320
+ replyCount_one: "{{count}} رد",
1321
+ replyCount_two: "ردّان ({{count}})",
1322
+ replyCount_few: "{{count}} ردود",
1323
+ replyCount_many: "{{count}} ردًّا",
1324
+ replyCount_other: "{{count}} رد",
953
1325
  replyPlaceholder: "رد…",
954
1326
  filterActivity: "تصفية النشاط",
955
1327
  openDiscussion: "فتح لوحة المناقشة",
@@ -961,9 +1333,12 @@ const ar = {
961
1333
  lockedByApproval: "مقفل للموافقة",
962
1334
  lockedTooltip: "يحتوي هذا السجل على طلب موافقة معلق؛ التعديل مقفل",
963
1335
  writeStrippedTitle: "تم الحفظ، لكن بعض الحقول لم تُطبَّق",
1336
+ writeWarningsTitle: "تم الحفظ، مع تحذيرات",
964
1337
  writeStrippedReadonly: "للقراءة فقط، لذلك لم تُطبَّق: {{fields}}",
965
1338
  writeStrippedByState: "غير قابلة للتعديل في الحالة الحالية لهذا السجل، لذلك لم تُطبَّق: {{fields}}",
966
1339
  writeStrippedPrimaryKey: "معرّف السجل لا يمكن تغييره عند الحفظ، لذلك لم تُطبَّق: {{fields}}",
1340
+ writeStrippedComputed: "يحسبها الخادم بواسطة صيغة، لذلك لم تُطبَّق القيمة المُرسَلة: {{fields}}",
1341
+ writeStrippedStoredExpression: "تُحسب من السجل، لذلك حُفظت القيمة المحسوبة بدلًا من القيمة المُرسَلة: {{fields}}",
967
1342
  writeStrippedUnknownReason: "لم تُطبَّق من قِبل الخادم: {{fields}}",
968
1343
  approvalPendingEditable: "قيد الموافقة · قابل للتعديل",
969
1344
  approvalPendingTooltip: "يحتوي هذا السجل على طلب موافقة معلق، لكن هذه الخطوة لا تزال تسمح بالتعديل",
@@ -985,6 +1360,13 @@ const ar = {
985
1360
  pathStageLostUpcoming: '{{stage}}، خاسرة، لم يتم الوصول إليها',
986
1361
  pathStageWonUpcoming: '{{stage}}، المرحلة الهدف، لم يتم الوصول إليها',
987
1362
  linkCopied: "تم نسخ الرابط إلى الحافظة",
1363
+ commentFailed: "لم يُنشر تعليقك. لم يُحفظ أي شيء — يُرجى المحاولة مرة أخرى.",
1364
+ reactionFailed: "لم يُحفظ تفاعلك. يُرجى المحاولة مرة أخرى.",
1365
+ editComment: "تعديل التعليق",
1366
+ deleteComment: "حذف التعليق",
1367
+ deleteCommentConfirm: "هل أنت متأكد أنك تريد حذف هذا التعليق؟",
1368
+ commentEditFailed: "لم يُحفظ تعديلك. يحتفظ التعليق بنصه السابق.",
1369
+ commentDeleteFailed: "لم يُحذف التعليق. يُرجى المحاولة مرة أخرى.",
988
1370
  linkCopyFailed: "فشل نسخ الرابط",
989
1371
  cancel: "إلغاء",
990
1372
  cancelEdit: "تجاهل التغييرات",
@@ -1014,40 +1396,81 @@ const ar = {
1014
1396
  sortBy: "ترتيب حسب",
1015
1397
  filterPlaceholder: "تصفية…",
1016
1398
  highlightFields: "الحقول الرئيسية",
1399
+ highlightsLabel: "الحقول الرئيسية للسجل",
1017
1400
  createdBy: "أنشأه",
1018
1401
  updatedBy: "حدّثه",
1019
- // objectui#3863 — base key, and in ar this is the slot users actually hit: `zero`,
1020
- // `two` (2), `few` (3-10) and `many` (11-99) are unenumerated, so before this key
1021
- // those counts rendered ENGLISH. It uses the «{{count}} مفرد(جمع)» marker this
1022
- // pack writes throughout (perm.facet.objects, and the sibling toggle
1023
- // showEmptyFields below), which reads correctly for every count.
1402
+ // objectui#3863 — base key, answering only a call made without a count: since
1403
+ // objectui#11432 every ar category has its own slot — `_zero` and `_other`
1404
+ // (100+) singular, `_two` dual with the numeral in parentheses, `_few` (3-10)
1405
+ // the plural agreement, `_many` (11-99) accusative singular. The adjective
1406
+ // agrees with the masculine noun it stands for, as `_one` does.
1024
1407
  showEmptyRelated: "+ {{count}} فارغ(فارغة)",
1408
+ showEmptyRelated_zero: "+ {{count}} فارغ",
1025
1409
  showEmptyRelated_one: "+ {{count}} فارغ",
1026
- showEmptyRelated_other: "+ {{count}} فارغة",
1410
+ showEmptyRelated_two: "+ فارغان ({{count}})",
1411
+ showEmptyRelated_few: "+ {{count}} فارغة",
1412
+ showEmptyRelated_many: "+ {{count}} فارغًا",
1413
+ showEmptyRelated_other: "+ {{count}} فارغ",
1027
1414
  copyEmail: "نسخ البريد الإلكتروني",
1028
1415
  copyPhone: "نسخ الهاتف",
1029
1416
  copyRecordId: "نسخ معرف السجل",
1030
1417
  showEmptyFields: "إظهار {{count}} حقل(حقول) فارغة",
1418
+ showEmptyFields_zero: "إظهار {{count}} حقل فارغ",
1419
+ showEmptyFields_one: "إظهار {{count}} حقل فارغ",
1420
+ showEmptyFields_two: "إظهار حقلين فارغين ({{count}})",
1421
+ showEmptyFields_few: "إظهار {{count}} حقول فارغة",
1422
+ showEmptyFields_many: "إظهار {{count}} حقلًا فارغًا",
1423
+ showEmptyFields_other: "إظهار {{count}} حقل فارغ",
1031
1424
  hideEmptyFields: "إخفاء الحقول الفارغة",
1032
1425
  noValue: "لا قيمة",
1426
+ unresolvedReference: "مرجع غير مُحلّل: لم يتم تحويل {{value}} إلى مستخدم",
1427
+ unresolvedLookupReference: "مرجع غير مُحلّل: لم يتم تحويل {{value}} إلى سجل في هذه الشاشة",
1428
+ repeaterItemCount: "{{count}} عنصر (عناصر)",
1429
+ repeaterItemCount_zero: "{{count}} عنصر",
1430
+ repeaterItemCount_one: "{{count}} عنصر",
1431
+ repeaterItemCount_two: "عنصران ({{count}})",
1432
+ repeaterItemCount_few: "{{count}} عناصر",
1433
+ repeaterItemCount_many: "{{count}} عنصرًا",
1434
+ repeaterItemCount_other: "{{count}} عنصر",
1435
+ fileCount: "{{count}} ملف (ملفات)",
1436
+ fileCount_zero: "{{count}} ملف",
1437
+ fileCount_one: "{{count}} ملف",
1438
+ fileCount_two: "ملفان ({{count}})",
1439
+ fileCount_few: "{{count}} ملفات",
1440
+ fileCount_many: "{{count}} ملفًا",
1441
+ fileCount_other: "{{count}} ملف",
1033
1442
  },
1034
1443
  chart: {
1035
- noData: "لا تتوفر بيانات للرسم البياني",
1036
- loading: "جاري تحميل الرسم البياني…",
1444
+ loading: "جارٍ تحميل الرسم البياني…",
1445
+ refreshing: "جارٍ التحديث…",
1037
1446
  nullCategory: "(غير محدد)",
1038
- },
1039
- map: {
1040
- searchLocations: "البحث عن المواقع…",
1041
- locationDetails: "تفاصيل الموقع",
1042
- markersCount: "{{count}} علامة",
1043
- invalidCoordinates: "{{count}} سجل بإحداثيات مفقودة أو غير صالحة مستبعد من الخريطة.",
1044
- invalidCoordinatesPlural: "{{count}} سجلات بإحداثيات مفقودة أو غير صالحة مستبعدة من الخريطة.",
1447
+ scatterOneMeasure: "المخطط المبعثر يرسم مقياسًا واحدًا فقط. أبقِ سلسلة واحدة:",
1448
+ unconfigured: {
1449
+ noCategoryAxis: "محور فئات الرسم البياني مطلوب — الرسم البياني المرتبط بكائن لا يخترع محورًا. أعلن أحد التالي:",
1450
+ },
1045
1451
  },
1046
1452
  dashboard: {
1047
- noRows: "لا توجد صفوف",
1453
+ // objectui#7063 — the DEFAULT empty state every dashboard widget renders
1454
+ // when its query SUCCEEDED and returned nothing. It replaced the terse
1455
+ // per-widget `noRows` / `noDataAvailable` fragments at the render site;
1456
+ // objectui#7125 deleted those two keys from all ten packs once nothing
1457
+ // read them. The copy here has to read as a state rather than a failure,
1458
+ // which is why it says the widget loaded. `sourceLabel` carries its own
1459
+ // punctuation so the call site concatenates no separator (see
1460
+ // `WidgetEmptyState`).
1461
+ empty: {
1462
+ title: "لا توجد بيانات بعد",
1463
+ message: "تم تحميل هذه الأداة بنجاح، لكن الاستعلام لم يُرجع أي سجلات بعد.",
1464
+ sourceLabel: "مصدر البيانات:",
1465
+ },
1048
1466
  loading: "جارٍ التحميل…",
1467
+ refreshing: "جارٍ التحديث…",
1468
+ refreshAll: "تحديث الكل",
1469
+ refreshDashboard: "تحديث لوحة القيادة",
1049
1470
  pickMeasures: "اختر المقاييس (القيم) لأداة مجموعة البيانات هذه.",
1050
1471
  datasetUnsupported: "مصدر البيانات هذا لا يدعم استعلامات مجموعات البيانات.",
1472
+ widgetForbiddenTitle: "لا تملك صلاحية الوصول",
1473
+ widgetForbiddenMessage: "ليست لديك صلاحية لعرض البيانات الخاصة بهذه الأداة.",
1051
1474
  details: "التفاصيل",
1052
1475
  exportCsv: "تصدير CSV",
1053
1476
  openInList: "فتح في القائمة",
@@ -1075,12 +1498,10 @@ const ar = {
1075
1498
  },
1076
1499
  },
1077
1500
  addWidget: "إضافة أداة",
1078
- removeWidget: "إزالة أداة",
1079
1501
  editLayout: "تعديل التخطيط",
1080
1502
  saveLayout: "حفظ التخطيط",
1081
1503
  resetLayout: "إعادة تعيين التخطيط",
1082
1504
  total: "الإجمالي",
1083
- noDataAvailable: "لا بيانات متاحة",
1084
1505
  noDataSourceFor: "لا مصدر بيانات لـ",
1085
1506
  config: {
1086
1507
  breadcrumb: {
@@ -1202,10 +1623,6 @@ const ar = {
1202
1623
  appDescription: "الوصف",
1203
1624
  appIcon: "الأيقونة",
1204
1625
  template: "القالب",
1205
- layout: "التخطيط",
1206
- layoutSidebar: "الشريط الجانبي",
1207
- layoutHeader: "الرأس",
1208
- layoutEmpty: "فارغ",
1209
1626
  selectObjects: "تحديد الكائنات",
1210
1627
  searchObjects: "البحث في الكائنات…",
1211
1628
  selectAll: "تحديد الكل",
@@ -1214,7 +1631,6 @@ const ar = {
1214
1631
  addGroup: "إضافة مجموعة",
1215
1632
  addUrl: "إضافة URL",
1216
1633
  addSeparator: "إضافة فاصل",
1217
- noNavItems: "لا توجد عناصر تنقل بعد.",
1218
1634
  logoUrl: "Logo URL",
1219
1635
  primaryColor: "اللون الأساسي",
1220
1636
  faviconUrl: "Favicon URL",
@@ -1241,13 +1657,12 @@ const ar = {
1241
1657
  appearance: "المظهر",
1242
1658
  rowHeight: "ارتفاع الصف",
1243
1659
  livePreview: "معاينة مباشرة",
1244
- stepBasicDesc: "الاسم والعنوان والتخطيط",
1660
+ stepBasicDesc: "الاسم والعنوان والأيقونة",
1245
1661
  stepObjectsDesc: "اختيار كائنات الأعمال",
1246
1662
  stepNavigationDesc: "بناء شجرة التنقل",
1247
1663
  stepBrandingDesc: "الشعار والألوان والأيقونة",
1248
1664
  noObjectsFound: "لم يتم العثور على كائنات.",
1249
1665
  noNavItemsHint: "لا توجد عناصر تنقل بعد. حدد كائنات في الخطوة السابقة أو أضف عناصر يدويًا.",
1250
- separator: "فاصل",
1251
1666
  separatorLabel: "— فاصل —",
1252
1667
  newGroup: "مجموعة جديدة",
1253
1668
  newLink: "رابط جديد",
@@ -1281,6 +1696,7 @@ const ar = {
1281
1696
  navTypeSeparator: "فاصل",
1282
1697
  navTypeAction: "إجراء",
1283
1698
  navTypeComponent: "مكوّن",
1699
+ navTypeDoc: "مستند",
1284
1700
  navEditIcon: "تعديل الأيقونة",
1285
1701
  navToggleVisible: "تبديل الرؤية",
1286
1702
  navHidden: "مخفي",
@@ -1358,11 +1774,8 @@ const ar = {
1358
1774
  defaultValue: "القيمة الافتراضية",
1359
1775
  placeholder: "نص تلميحي",
1360
1776
  referenceTo: "مرجع إلى",
1361
- formula: "صيغة",
1362
1777
  options: "خيارات",
1363
1778
  addOption: "إضافة خيار",
1364
- validationRules: "قواعد التحقق",
1365
- addRule: "إضافة قاعدة",
1366
1779
  systemBadge: "النظام",
1367
1780
  ungrouped: "عام",
1368
1781
  deleteConfirmTitle: "حذف الحقل؟",
@@ -1381,16 +1794,39 @@ const ar = {
1381
1794
  },
1382
1795
  },
1383
1796
  console: {
1797
+ studio: {
1798
+ title: "Studio",
1799
+ accessRequired: "تحتاج إلى صلاحية الوصول إلى Studio لفتح Studio.",
1800
+ },
1384
1801
  saveAdvisoryTitle: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1802
+ saveAdvisoryTitle_zero: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1803
+ saveAdvisoryTitle_one: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1804
+ saveAdvisoryTitle_two: "تم الحفظ — أنتج فحص التأليف ملاحظتين إرشاديتين ({{count}})",
1805
+ saveAdvisoryTitle_few: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظات إرشادية",
1806
+ saveAdvisoryTitle_many: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1807
+ saveAdvisoryTitle_other: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1808
+ publishAdvisoryTitle: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1809
+ publishAdvisoryTitle_zero: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1810
+ publishAdvisoryTitle_one: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1811
+ publishAdvisoryTitle_two: "تم النشر — أنتج فحص التأليف ملاحظتين إرشاديتين ({{count}})",
1812
+ publishAdvisoryTitle_few: "تم النشر — أنتج فحص التأليف {{count}} ملاحظات إرشادية",
1813
+ publishAdvisoryTitle_many: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1814
+ publishAdvisoryTitle_other: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1815
+ importMappingsUnavailable: "تعذّر تحميل تعيينات الاستيراد المحفوظة لـ {{object}}",
1816
+ importMappingsRefused: "رفض الخادم هذا الطلب، لذلك فإن هذه القائمة فارغة لأنه تعذّرت قراءتها، لا لأنه لا يوجد شيء مسجَّل. سجّل الدخول مرة أخرى أو اطلب صلاحية الوصول من المسؤول.",
1817
+ importMappingsUnreadable: "هذه القائمة فارغة لأنه تعذّرت قراءتها، لا لأنه لا يوجد شيء مسجَّل. أعد المحاولة، وأبلغ عن المشكلة إذا استمرت.",
1818
+ savedViewsUnavailable: "تعذّر تحميل العروض المحفوظة لـ {{object}}",
1819
+ savedViewsRefused: "رفض الخادم هذا الطلب، لذلك فإن هذه القائمة فارغة لأنه تعذّرت قراءتها، لا لأن هذا الكائن ليس لديه عروض محفوظة. سجّل الدخول مرة أخرى أو اطلب صلاحية الوصول من المسؤول.",
1820
+ savedViewsUnreadable: "هذه القائمة فارغة لأنه تعذّرت قراءتها، لا لأن هذا الكائن ليس لديه عروض محفوظة. أعد المحاولة، وأبلغ عن المشكلة إذا استمرت.",
1385
1821
  settingsHub: {
1386
1822
  title: "الإعدادات",
1387
- subtitle: "اضبط مساحة العمل والتكاملات وأعلام الميزات.",
1823
+ subtitle: "اضبط النظام والتكاملات وأعلام الميزات.",
1388
1824
  loadError: "تعذّر تحميل الإعدادات",
1389
1825
  empty: "لا توجد إعدادات مسجّلة. يمكن للإضافات تسجيل بيانات الإعدادات عبر SettingsService.",
1390
1826
  settingsCount: "{{n}} من الإعدادات",
1391
1827
  beta: "إصدار تجريبي",
1392
1828
  categories: {
1393
- Workspace: "مساحة العمل",
1829
+ Workspace: "عام",
1394
1830
  Communication: "الاتصالات",
1395
1831
  Security: "الأمان",
1396
1832
  Infrastructure: "البنية التحتية",
@@ -1435,13 +1871,26 @@ const ar = {
1435
1871
  },
1436
1872
  usage: {
1437
1873
  title: "استخدام الذكاء الاصطناعي",
1438
- meterBuild: "الإنشاء",
1439
- meterAsk: "السؤال",
1874
+ poolUsed: "تم استخدام {{percent}}",
1440
1875
  statusOk: "المتبقّي وفير",
1441
1876
  statusLow: "على وشك النفاد",
1442
1877
  statusFull: "تم بلوغ الحد",
1443
1878
  resetsDaily: "تُعاد التهيئة الليلة",
1444
1879
  resetsMonthly: "تُعاد التهيئة في الدورة القادمة",
1880
+ resetsWeeklyDays: "{{count}} يوم(أيام) حتى إعادة التعيين",
1881
+ resetsWeeklyDays_zero: "{{count}} يوم حتى إعادة التعيين",
1882
+ resetsWeeklyDays_one: "{{count}} يوم حتى إعادة التعيين",
1883
+ resetsWeeklyDays_two: "يومان ({{count}}) حتى إعادة التعيين",
1884
+ resetsWeeklyDays_few: "{{count}} أيام حتى إعادة التعيين",
1885
+ resetsWeeklyDays_many: "{{count}} يومًا حتى إعادة التعيين",
1886
+ resetsWeeklyDays_other: "{{count}} يوم حتى إعادة التعيين",
1887
+ resetsWeeklyHours: "{{count}} ساعة(ساعات) حتى إعادة التعيين",
1888
+ resetsWeeklyHours_zero: "{{count}} ساعة حتى إعادة التعيين",
1889
+ resetsWeeklyHours_one: "{{count}} ساعة حتى إعادة التعيين",
1890
+ resetsWeeklyHours_two: "ساعتان ({{count}}) حتى إعادة التعيين",
1891
+ resetsWeeklyHours_few: "{{count}} ساعات حتى إعادة التعيين",
1892
+ resetsWeeklyHours_many: "{{count}} ساعة حتى إعادة التعيين",
1893
+ resetsWeeklyHours_other: "{{count}} ساعة حتى إعادة التعيين",
1445
1894
  ctaUpgrade: "قم بالترقية للمتابعة",
1446
1895
  ctaTopUp: "أضف أرصدة للمتابعة",
1447
1896
  ariaLabel: "استخدام الذكاء الاصطناعي: {{status}}",
@@ -1454,6 +1903,31 @@ const ar = {
1454
1903
  share: "مشاركة",
1455
1904
  shareTitle: "مشاركة هذه المحادثة",
1456
1905
  shareDisabledTitle: "ابدأ المحادثة لتفعيل المشاركة",
1906
+ buildDoctor: "تشخيص البناء",
1907
+ buildDoctorTitle: "تشخيص البناء — ما الذي طُبِّق فعلًا؟",
1908
+ buildDoctorDisabledTitle: "أرسل رسالة أولًا",
1909
+ buildDoctorDrawer: {
1910
+ description: 'ما ادّعاه الوكيل مقابل ما هو فعّال فعلًا. تشخيص للقراءة فقط.',
1911
+ reconciling: 'جارٍ المطابقة…',
1912
+ notAvailable: 'غير متاح — لم يتم العثور على المحادثة أو ليست لديك صلاحية.',
1913
+ untitled: '(بدون عنوان)',
1914
+ summary: 'الجولات: {{turns}} · الرسائل: {{messages}} · الرموز: {{tokens}} · LLM: {{seconds}} ث',
1915
+ allLive: 'جميع التغييرات التي جرت محاولتها ({{count}}) فعّالة — لم يُفقد شيء.',
1916
+ discrepancies: 'عدد التناقضات: {{count}} — ما قالته المحادثة لا يطابق ما هو فعّال.',
1917
+ orphanedTitle: 'مقترح ولكن لم يُطبَّق أبدًا',
1918
+ orphanedHint: 'بطاقة تأكيد اقترحها الوكيل ولكن لم تطبّقها أي جولة لاحقة — فُقد التغيير بصمت.',
1919
+ missingTitle: 'مُدّعى ولكنه مفقود',
1920
+ missingHint: 'ذكرت نتيجة أداة أنه تم التطبيق، لكن العنصر غير فعّال في sys_metadata.',
1921
+ toolErrorsTitle: 'أخطاء الأدوات',
1922
+ toolErrorsHint: 'استدعاءات الأدوات التي أعادت خطأً أثناء البناء.',
1923
+ verifyTitle: 'فحص البناء (verify_build)',
1924
+ yourApp: 'تطبيقك:',
1925
+ noIssues: 'عدد المشكلات: 0',
1926
+ issueCount: 'عدد المشكلات: {{count}}',
1927
+ platformNoise: 'تم إخفاء {{count}} من نتائج المنصة sys_*',
1928
+ pendingActions: 'الإجراءات المعلّقة',
1929
+ timeline: 'المخطط الزمني ({{count}})',
1930
+ },
1457
1931
  newChat: "جديدة",
1458
1932
  searchChats: "البحث في المحادثات…",
1459
1933
  noChatsYet: "لا توجد محادثات بعد",
@@ -1476,6 +1950,8 @@ const ar = {
1476
1950
  liveCanvasUnlisted: "تطبيق حي — {{app}} (غير مُدرج حتى النشر)",
1477
1951
  loadingAgents: "جارٍ تحميل الوكلاء…",
1478
1952
  askAnything: "اسأل عن أي شيء…",
1953
+ askOrChangeApp: "اسأل عن بياناتك، أو اطلب مني تعديل هذا التطبيق…",
1954
+ describeAppToBuild: "صِف التطبيق الذي تريد إنشاءه، أو ما تريد تغييره…",
1479
1955
  emptyTitle: "ابدأ محادثة",
1480
1956
  emptyDescription: "اسأل عن أي شيء — يمكن للمساعد الاطلاع على سياق تطبيقك الحالي.",
1481
1957
  switchAssistant: "تبديل المساعد",
@@ -1483,7 +1959,7 @@ const ar = {
1483
1959
  empty: {
1484
1960
  build: {
1485
1961
  title: "الإنشاء بالذكاء الاصطناعي",
1486
- description: "صف تطبيقًا أو سير عمل بلغة بسيطة — سأعدّ مسودة الكائنات والشاشات والأتمتة، ثم تراجعها وتنشرها.",
1962
+ description: "صف تطبيقًا بلغة بسيطة — سأعدّ مسودة الكائنات والشاشات والبيانات النموذجية، ثم تراجعها وتنشرها.",
1487
1963
  },
1488
1964
  ask: {
1489
1965
  title: "اسأل بياناتك",
@@ -1492,17 +1968,22 @@ const ar = {
1492
1968
  editApp: {
1493
1969
  title: "تحرير «{{app}}»",
1494
1970
  titleGeneric: "تحرير هذا التطبيق",
1495
- description: "ما الذي تريد تغييره؟ سأعدّل هذا التطبيق في مكانه — إضافة حقل أو كائن أو عرض أو أتمتة، أو تعديل ما هو موجود.",
1971
+ description: "ما الذي تريد تغييره؟ سأعدّل هذا التطبيق في مكانه — إضافة حقل أو كائن أو عرض أو لوحة معلومات، أو تعديل ما هو موجود.",
1496
1972
  },
1497
1973
  },
1498
1974
  clearConversation: "مسح",
1499
1975
  sendHint: "للإرسال",
1976
+ newlineHint: "لسطر جديد",
1500
1977
  agentActivity: "نشاط الوكيل",
1501
1978
  toolCompleted: "مكتمل",
1502
1979
  toolRunning: "قيد التنفيذ",
1503
1980
  toolAwaitingApproval: "بانتظار الموافقة",
1504
1981
  toolFailed: "فشل",
1505
1982
  toolDetailsHidden: "مدخلات الأدوات والنتائج الخام مخفية في هذا العرض.",
1983
+ toolDenyReason: "رفضه المشغّل من المحادثة",
1984
+ builderHandoffTitle: "الإنشاء في المُنشئ",
1985
+ builderHandoffOpen: "فتح في المُنشئ →",
1986
+ builderHandoffSuperseded: "يتوفر طلب أحدث",
1506
1987
  copy: "نسخ",
1507
1988
  copied: "تم النسخ",
1508
1989
  regenerate: "إعادة التوليد",
@@ -1517,7 +1998,7 @@ const ar = {
1517
1998
  publishOk: "تم النشر — الكائنات فعّالة الآن.",
1518
1999
  seedWarn: "تم النشر، لكن تعذّر تحميل بعض البيانات التجريبية.",
1519
2000
  openBuiltApp: "فتح التطبيق",
1520
- designBuiltApp: "التصميم في Studio",
2001
+ viewBuiltAppInStudio: "العرض في Studio",
1521
2002
  previewDraft: "معاينة",
1522
2003
  previewApp: "معاينة التطبيق",
1523
2004
  resizeSplit: "تغيير حجم المحادثة والمعاينة",
@@ -1545,23 +2026,41 @@ const ar = {
1545
2026
  recentRecords: "اذكر أحدث 5 سجلات تم إنشاؤها.",
1546
2027
  recordCounts: "احسب عدد السجلات لكل كائن.",
1547
2028
  },
2029
+ // cloud#1984 — these five chips are the maker's own recommendations, so
2030
+ // they may only ask for what ADR-0112 v1 BUILDS: objects, fields, views
2031
+ // (grid/kanban/calendar/gallery), pages, dashboards and sample data. No
2032
+ // wording that promises autonomous behaviour (alert / remind / notify /
2033
+ // automate / status workflow) — v1 has no flows, actions or schedules, and
2034
+ // the model silently degrades such a request into a board or a filtered
2035
+ // view, so the chip would promise an alert and deliver a page. REVERT to
2036
+ // the automation wording when ADR-0112 v2 re-adds flows and actions.
1548
2037
  metadataAssistant: {
1549
- buildCrm: "أنشئ نظام إدارة علاقات عملاء للمبيعات — عملاء وجهات اتصال ومسار صفقات يمكنني تجميعه حسب المرحلة.",
1550
- buildApp: "أنشئ متتبّع مشاريع — مشاريع ومهام بمسؤولين وتواريخ استحقاق ولوحة حسب الحالة.",
1551
- buildFlow: "صمّم مكتب دعم — تذاكر بأولوية وسير عمل للحالات وروابط بالعملاء.",
1552
- buildInventory: "أنشئ تطبيق مخزون — منتجات ومستويات مخزون وموردين وتنبيه لانخفاض المخزون.",
1553
- buildRecruiting: "أنشئ متتبّع متقدمين — مرشحون ووظائف شاغرة ومراحل مقابلات وملاحظات.",
2038
+ buildCrm: "أنشئ نظام إدارة علاقات عملاء للمبيعات — عملاء وجهات اتصال وصفقات بحقل للمرحلة، ولوحة معلومات تجمع قيمة الصفقات حسب المرحلة.",
2039
+ buildApp: "أنشئ متتبّع مشاريع — مشاريع ومهام بمسؤولين وتواريخ استحقاق، ولوحة حسب الحالة، وتقويم لتواريخ الاستحقاق.",
2040
+ buildFlow: "صمّم مكتب دعم — تذاكر بحقلي الأولوية والحالة، ولوحة حسب الحالة، وروابط بالعملاء.",
2041
+ buildInventory: "أنشئ تطبيق مخزون — منتجات ومستويات مخزون وموردين، وعرض يصفّي الأصناف دون حد إعادة الطلب.",
2042
+ buildRecruiting: "أنشئ متتبّع متقدمين — مرشحون ووظائف شاغرة وحقل لمرحلة المقابلة، ولوحة حسب المرحلة.",
1554
2043
  },
1555
2044
  generic: {
1556
2045
  help: "بماذا يمكنك مساعدتي؟",
1557
2046
  availableObjects: "اذكر كائنات البيانات المتاحة.",
1558
2047
  recentActivity: "لخّص نشاطي الأخير.",
1559
2048
  },
2049
+ // objectui#7709 — the edit-mode starters, shown when the maker is bound
2050
+ // to an EXISTING app (`?package=`). Same rule as the five above: they
2051
+ // may only ask for what ADR-0112 v1 BUILDS. The fourth chip used to be
2052
+ // `addAutomation` ("an approval, a status flow, or a notification") and
2053
+ // every capability it named is refused by v1 (cloud#1956 / PR #1970), so
2054
+ // it now asks for sample data — `seed` IS on v1's whitelist, and having
2055
+ // no data is what an existing app most often lacks. REVERT: when
2056
+ // ADR-0112 v2 re-adds flows and actions, THIS chip's automation wording
2057
+ // comes back as `addAutomation`; the retired string is pinned for every
2058
+ // pack in `packages/i18n/src/__tests__/makerEditChips-v1-scope-7709.test.ts`.
1560
2059
  editApp: {
1561
2060
  addField: "أضف حقلًا إلى أحد الكائنات.",
1562
2061
  addObject: "أضف كائنًا جديدًا واربطه بكائن موجود.",
1563
2062
  addDashboard: "أضف لوحة معلومات للمؤشرات الرئيسية.",
1564
- addAutomation: "أضف أتمتة — موافقة أو سير حالات أو إشعارًا.",
2063
+ addSampleData: "املأ الكائنات الحالية ببيانات نموذجية واقعية تصلح للعرض التوضيحي.",
1565
2064
  },
1566
2065
  },
1567
2066
  changesTitle: "تأكيد التغييرات",
@@ -1626,6 +2125,7 @@ const ar = {
1626
2125
  collapse: "طي المحادثة",
1627
2126
  maximize: "فتح كصفحة كاملة",
1628
2127
  open: "فتح المساعد",
2128
+ planAwaitingApproval: "خطة مقترحة بانتظار موافقتك",
1629
2129
  },
1630
2130
  group: {
1631
2131
  today: "اليوم",
@@ -1636,13 +2136,17 @@ const ar = {
1636
2136
  },
1637
2137
  },
1638
2138
  title: "وحدة تحكم ObjectStack",
1639
- initializing: "جاري تهيئة التطبيق…",
1640
- loadingHint: "قد يستغرق إعداد بيئة جديدة بعض الوقت.",
2139
+ initializing: "جارٍ فتح وحدة التحكم…",
2140
+ skipToContent: "الانتقال إلى المحتوى",
1641
2141
  breadcrumb: {
1642
- dashboards: "لوحات المعلومات",
1643
- pages: "الصفحات",
1644
- reports: "التقارير",
1645
2142
  system: "النظام",
2143
+ marketplace: "السوق",
2144
+ settings: 'الإعدادات',
2145
+ apps: 'التطبيقات',
2146
+ profile: 'الملف الشخصي',
2147
+ approvals: 'الموافقات',
2148
+ aiApprovals: 'موافقات الذكاء الاصطناعي',
2149
+ auditLog: 'سجل التدقيق',
1646
2150
  },
1647
2151
  // objectui#4024 — the single-namespace settings screen. Its sibling
1648
2152
  // `settingsHub` above already resolved through this pack; the view was the
@@ -1661,18 +2165,40 @@ const ar = {
1661
2165
  discard: "تجاهل",
1662
2166
  saveChanges: "حفظ التغييرات",
1663
2167
  unsavedCount: "{{count}} تغيير(تغييرات) غير محفوظ",
2168
+ unsavedCount_zero: "{{count}} تغيير غير محفوظ",
1664
2169
  unsavedCount_one: "{{count}} تغيير غير محفوظ",
1665
- unsavedCount_other: "{{count}} تغييرات غير محفوظة",
2170
+ unsavedCount_two: "تغييران غير محفوظين ({{count}})",
2171
+ unsavedCount_few: "{{count}} تغييرات غير محفوظة",
2172
+ unsavedCount_many: "{{count}} تغييرًا غير محفوظ",
2173
+ unsavedCount_other: "{{count}} تغيير غير محفوظ",
2174
+ fieldErrorsToast: "إعدادات تحتاج إلى مراجعة ({{count}}): {{settings}}",
2175
+ fieldErrorsToast_zero: "{{count}} إعداد يحتاج إلى مراجعة: {{settings}}",
2176
+ fieldErrorsToast_one: "{{count}} إعداد يحتاج إلى مراجعة: {{settings}}",
2177
+ fieldErrorsToast_two: "إعدادان يحتاجان إلى مراجعة ({{count}}): {{settings}}",
2178
+ fieldErrorsToast_few: "{{count}} إعدادات تحتاج إلى مراجعة: {{settings}}",
2179
+ fieldErrorsToast_many: "{{count}} إعدادًا يحتاج إلى مراجعة: {{settings}}",
2180
+ fieldErrorsToast_other: "{{count}} إعداد يحتاج إلى مراجعة: {{settings}}",
1666
2181
  cryptoRefusalTitle: "لا يمكن لهذا النشر تشفير الأسرار",
1667
2182
  cryptoRefusalSubjectSuffix: "معلن كمشفَّر، لذلك لم تتم كتابة أي شيء.",
1668
2183
  cryptoRefusalNoSubject: "تم رفض القيمة المعلنة كمشفَّرة، لذلك لم تتم كتابة أي شيء.",
1669
2184
  cryptoRefusalToast: "تعذّر تشفير الأسرار: {{subject}}",
1670
2185
  cryptoRefusalToastNoSubject: "تعذّر تشفير الأسرار",
1671
- },
1672
- loadingSteps: {
1673
- connecting: "جاري الاتصال بمصدر البيانات",
1674
- loadingConfig: "جاري تحميل الإعدادات",
1675
- preparingWorkspace: "جاري تجهيز مساحة العمل",
2186
+ sourceBadgeInherited: "موروث من {{source}}",
2187
+ sourceBadgeOverrides: "يتجاوز {{source}}",
2188
+ resetToDefault: "إعادة التعيين إلى الافتراضي",
2189
+ envLockBadge: "مقفل بواسطة البيئة",
2190
+ envLockBadgeTitle: "مثبّت بواسطة متغير بيئة — لا يمكن تعديله من الواجهة.",
2191
+ deprecatedBadge: "مهمل",
2192
+ deprecatedBadgeReplacedBy: "مهمل ← {{replacedBy}}",
2193
+ unsupportedSpecifierType: "نوع إعداد غير مدعوم: {{type}}",
2194
+ },
2195
+ workspaceTimezonePrompt: {
2196
+ title: "تعيين المنطقة الزمنية للنظام",
2197
+ description: "لا يزال هذا النظام يستخدم المنطقة الزمنية الافتراضية للمنصة، {{current}}. تحدد المنطقة الزمنية للنظام معنى \"اليوم\" في الصيغ، وكيفية تجميع التقارير حسب التاريخ، وكيفية عرض التواريخ والأوقات، لجميع مستخدمي النظام. تم إدخال المنطقة الزمنية لمتصفحك أدناه.",
2198
+ laterHint: "يمكنك تغييرها في أي وقت من صفحة الإعدادات.",
2199
+ decline: "الإبقاء على الافتراضي",
2200
+ confirm: "تعيين المنطقة الزمنية",
2201
+ saved: "تم تعيين المنطقة الزمنية للنظام إلى {{zone}}",
1676
2202
  },
1677
2203
  error: {
1678
2204
  connectionFailed: "تعذّر الاتصال بالخادم",
@@ -1682,7 +2208,7 @@ const ar = {
1682
2208
  },
1683
2209
  actions: {
1684
2210
  retry: "إعادة المحاولة",
1685
- retrying: "جاري إعادة المحاولة…",
2211
+ retrying: "جارٍ إعادة المحاولة…",
1686
2212
  },
1687
2213
  serverAction: {
1688
2214
  openingTitle: "جارٍ الفتح…",
@@ -1697,27 +2223,28 @@ const ar = {
1697
2223
  groups: {
1698
2224
  general: "عام",
1699
2225
  navigation: "التنقل",
1700
- dataViews: "عروض البيانات",
1701
2226
  aiChat: "مساعد الذكاء الاصطناعي",
1702
- preferences: "التفضيلات",
1703
2227
  },
1704
2228
  openCommandPalette: "فتح لوحة الأوامر",
1705
2229
  showShortcuts: "عرض اختصارات لوحة المفاتيح",
1706
2230
  closeDialog: "إغلاق النافذة / اللوحة",
1707
2231
  toggleSidebar: "تبديل الشريط الجانبي",
1708
- focusSearch: "التركيز على البحث",
1709
- createRecord: "إنشاء سجل جديد",
1710
- refreshData: "تحديث البيانات",
1711
- editRecord: "تعديل السجل المحدد",
1712
2232
  newChat: "محادثة جديدة",
1713
2233
  toggleChatsList: "تبديل قائمة المحادثات",
1714
- toggleDarkMode: "تبديل الوضع الداكن",
2234
+ goHome: "العودة إلى الرئيسية",
2235
+ },
2236
+ reportIndex: {
2237
+ title: "التقارير",
2238
+ emptyTitle: "لا توجد تقارير",
2239
+ emptyDescription: "لا يحتوي هذا التطبيق على تقارير يمكنك فتحها.",
1715
2240
  },
1716
2241
  commandPalette: {
1717
2242
  title: "لوحة الأوامر",
1718
2243
  placeholder: "اكتب أمراً أو ابحث…",
1719
2244
  noResults: "لم يتم العثور على نتائج.",
1720
2245
  objects: "الكائنات",
2246
+ packages: "الحزم",
2247
+ flows: "التدفقات",
1721
2248
  dashboards: "لوحات المعلومات",
1722
2249
  pages: "الصفحات",
1723
2250
  reports: "التقارير",
@@ -1734,6 +2261,21 @@ const ar = {
1734
2261
  records: "السجلات",
1735
2262
  recentRecords: "شوهد مؤخراً",
1736
2263
  },
2264
+ // objectui#9954 — see the `en` pack for what raises each case.
2265
+ readRate: {
2266
+ ratioTitle: 'حجم قراءة غير معتاد في هذا النظام',
2267
+ ratio: 'تتم قراءة {{ratio}} صف مقابل كل صف مكتوب. تُعلِّم المنصة كل ما يتجاوز {{threshold}}. لا يتم تقييد أو حظر أي شيء؛ هذا تقرير لمراجعة نمط القراءة.',
2268
+ noWritesTitle: 'قراءات بدون أي كتابة في هذا النظام',
2269
+ noWrites: 'تتم قراءة صفوف دون كتابة أي صف على الإطلاق، لذا لا يوجد حد أعلى لمعدل القراءة. هذه هي أخطر قراءة. تُعلِّم المنصة كل ما يتجاوز {{threshold}}. لا يتم تقييد أو حظر أي شيء؛ هذا تقرير لمراجعة نمط القراءة.',
2270
+ },
2271
+ // objectui#10439 — see the `en` pack for what raises each case.
2272
+ storageUsage: {
2273
+ warningTitle: 'مساحة التخزين توشك على الامتلاء',
2274
+ warning: 'تم استخدام {{used}} ميغابايت من {{limit}} ميغابايت. يتوقف الرفع والاستيراد مؤقتًا عند امتلاء مساحة التخزين.',
2275
+ blockedTitle: 'مساحة التخزين ممتلئة: الرفع والاستيراد متوقفان مؤقتًا',
2276
+ blocked: 'تم استخدام {{used}} ميغابايت من {{limit}} ميغابايت. البيانات الحالية لم تُمس، ولا تزال القراءة والتصدير وتعديل السجلات الفردية تعمل.',
2277
+ upgrade: 'قم بالترقية للمتابعة',
2278
+ },
1737
2279
  errors: {
1738
2280
  somethingWentWrong: "حدث خطأ ما",
1739
2281
  unexpectedError: "حدث خطأ غير متوقع أثناء عرض هذا المحتوى.",
@@ -1764,22 +2306,33 @@ const ar = {
1764
2306
  viewNameInvalid: "استخدم أحرفًا إنجليزية صغيرة وأرقامًا وشرطات سفلية؛ وابدأ بحرف أو شرطة سفلية.",
1765
2307
  systemViewReadonly: "عرض النظام معرَّف في الكود — للقراءة فقط.",
1766
2308
  cannotEditMetaView: "هذا عرض مدمج معرَّف في الكود — لا يمكن تعديله.",
2309
+ resetView: "إعادة تعيين العرض",
2310
+ resetViewTitle: "إعادة هذا العرض إلى الفرز وعوامل التصفية وعرض الأعمدة الخاصة به. تتغير إعداداتك فقط.",
1767
2311
  cannotDeleteMetaView: "هذا عرض مدمج معرَّف في الكود — لا يمكن حذفه.",
1768
2312
  expandToPage: "فتح كصفحة كاملة",
1769
2313
  objectNotFound: "الكائن غير موجود",
1770
2314
  objectNotFoundDescription: "الكائن \"{{objectName}}\" غير موجود في الإعدادات الحالية.",
1771
2315
  objectNotFoundHint: "تحقق من إعدادات التنقل في تطبيقك أو اختر كائنًا آخر من الشريط الجانبي.",
2316
+ objectPackageDisabled: "الكائن \"{{objectName}}\" ينتمي إلى حزمة معطّلة، لذلك لا يتم تقديمه.",
1772
2317
  filterOrNotSavable: "يستخدم هذا الفلتر «أو» بين الشروط، وهو ما لا يمكن للعرض المحفوظ تخزينه بعد. لا يزال مطبقًا على هذه القائمة — أزل تجميع «أو» لحفظه في العرض.",
1773
2318
  filterNestedNotSavable: "يستخدم هذا الفلتر مجموعات شروط متداخلة لا يمكن للعرض المحفوظ تخزينها. حوّله إلى قائمة شروط واحدة لحفظه في العرض.",
1774
2319
  allRecords: "جميع السجلات",
1775
2320
  new: "جديد",
1776
2321
  configureView: "تكوين العرض",
1777
- toolbar: "شريط الأدوات",
1778
2322
  toolbarEnabledCount: "{{count}} من {{total}} مفعّل",
1779
2323
  searchFields: "البحث في الحقول…",
1780
2324
  title: "العنوان",
1781
2325
  viewType: "نوع العرض",
1782
- recordCount: "{{count}} سجل",
2326
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
2327
+ // own noun form. The base key, a count-invariant form, answers a call made
2328
+ // without a count.
2329
+ recordCount: "عدد السجلات: {{count}}",
2330
+ recordCount_zero: "{{count}} سجل",
2331
+ recordCount_one: "{{count}} سجل",
2332
+ recordCount_two: "سجلان ({{count}})",
2333
+ recordCount_few: "{{count}} سجلات",
2334
+ recordCount_many: "{{count}} سجلًا",
2335
+ recordCount_other: "{{count}} سجل",
1783
2336
  save: "حفظ",
1784
2337
  discard: "تجاهل",
1785
2338
  createView: "إنشاء عرض",
@@ -1791,11 +2344,16 @@ const ar = {
1791
2344
  longitudeField: "حقل خط الطول",
1792
2345
  imageField: "حقل الصورة",
1793
2346
  selectField: "اختر حقلاً…",
1794
- groupBy: "تجميع حسب",
1795
2347
  endDateField: "حقل تاريخ الانتهاء",
1796
2348
  import: "استيراد",
1797
2349
  importTitle: "استيراد من CSV",
1798
2350
  importedToast: "تم استيراد {{count}} صف(صفوف).",
2351
+ importedToast_zero: "تم استيراد {{count}} صف.",
2352
+ importedToast_one: "تم استيراد {{count}} صف.",
2353
+ importedToast_two: "تم استيراد صفين ({{count}}).",
2354
+ importedToast_few: "تم استيراد {{count}} صفوف.",
2355
+ importedToast_many: "تم استيراد {{count}} صفًا.",
2356
+ importedToast_other: "تم استيراد {{count}} صف.",
1799
2357
  importedWithSkipped: "تم استيراد {{ok}} صف(صفوف)؛ تم تخطي {{skipped}}.",
1800
2358
  createViewDesc: "اختر نوع العرض وأعطه اسماً. يمكن تغيير جميع الإعدادات لاحقاً.",
1801
2359
  cancel: "إلغاء",
@@ -1804,6 +2362,12 @@ const ar = {
1804
2362
  deleteViewTitle: "حذف العرض",
1805
2363
  deleteViewConfirm: "حذف العرض \"{{name}}\"؟ لا يمكن التراجع عن ذلك.",
1806
2364
  bulkDeleteConfirm: "حذف {{count}} سجل(ات) محدد(ة)؟ لا يمكن التراجع عن ذلك.",
2365
+ bulkDeleteConfirm_zero: "حذف {{count}} سجل محدد؟ لا يمكن التراجع عن ذلك.",
2366
+ bulkDeleteConfirm_one: "حذف {{count}} سجل محدد؟ لا يمكن التراجع عن ذلك.",
2367
+ bulkDeleteConfirm_two: "حذف سجلين محددين ({{count}})؟ لا يمكن التراجع عن ذلك.",
2368
+ bulkDeleteConfirm_few: "حذف {{count}} سجلات محددة؟ لا يمكن التراجع عن ذلك.",
2369
+ bulkDeleteConfirm_many: "حذف {{count}} سجلًا محددًا؟ لا يمكن التراجع عن ذلك.",
2370
+ bulkDeleteConfirm_other: "حذف {{count}} سجل محدد؟ لا يمكن التراجع عن ذلك.",
1807
2371
  duplicateViewName: "يوجد عرض بهذا الاسم بالفعل.",
1808
2372
  viewTypeGrid: "شبكة",
1809
2373
  viewTypeGridDesc: "جدول سجلات بأسلوب جدول البيانات.",
@@ -1840,14 +2404,22 @@ const ar = {
1840
2404
  chartTypePie: "مخطط دائري",
1841
2405
  chartTypeArea: "مخطط مساحة",
1842
2406
  chartTypeScatter: "مخطط نقطي",
1843
- xAxisField: "حقل المحور X",
1844
- xAxisFieldHelp: "البُعد الفئوي أو الزمني.",
1845
- yAxisField: "حقل المحور Y",
1846
- yAxisFieldHelp: "الحقل الرقمي للتجميع.",
2407
+ dataset: "مجموعة البيانات",
2408
+ datasetHelp: "يقرأ المخطط أرقامه من مجموعة البيانات هذه الخاصة بالكائن.",
2409
+ chartMeasure: "المقياس",
2410
+ chartMeasureHelp: "مقياس مجموعة البيانات المعروض على محور القيم.",
2411
+ chartDimension: "البُعد",
2412
+ chartDimensionHelp: "بُعد مجموعة البيانات الذي تُجمَّع القيم حسبه (اختياري).",
2413
+ viewTypeUnavailableDataset: "لا يوفّر هذا الكائن أي مجموعة بيانات للمخطط.",
2414
+ noDatasetMeasure: "لا تعلن مجموعة البيانات هذه عن أي مقياس للمخطط.",
1847
2415
  ufTabs: "علامات تبويب",
1848
2416
  ufAddField: "+ إضافة حقل فلتر…",
1849
2417
  ufShowAllRecords: "إظهار علامة \"جميع السجلات\"",
1850
2418
  },
2419
+ runtimeDraft: {
2420
+ publishFailed: "فشل النشر",
2421
+ discardFailed: "فشل تجاهل المسودة",
2422
+ },
1851
2423
  localeSwitcher: {
1852
2424
  label: "اللغة",
1853
2425
  },
@@ -1855,14 +2427,22 @@ const ar = {
1855
2427
  nav: {
1856
2428
  pinItem: "تثبيت {{name}}",
1857
2429
  unpinItem: "إلغاء تثبيت {{name}}",
1858
- dragToReorder: "اسحب لإعادة الترتيب",
1859
2430
  favorites: "المفضلة",
2431
+ launcherLabel: "مشغّل التطبيقات",
2432
+ menuLabel: "تنقّل التطبيق",
2433
+ menuEmpty: "لا توجد في هذا التطبيق عناصر تنقّل يمكنك فتحها.",
2434
+ itemMenu: "المزيد من الإجراءات لـ {{name}}",
2435
+ openInNewTab: "فتح في علامة تبويب جديدة",
2436
+ copyLink: "نسخ الرابط",
2437
+ linkCopied: "تم نسخ الرابط إلى الحافظة",
2438
+ linkCopyFailed: "فشل نسخ الرابط",
2439
+ design: "تصميم",
1860
2440
  },
1861
2441
  },
1862
2442
  auth: {
1863
2443
  setPassword: {
1864
2444
  title: "تعيين كلمة مرور للاسترداد",
1865
- description: "لقد سجّلت الدخول عبر الدخول الموحّد. عيّن كلمة مرور محلية لتتمكن من الدخول إلى هذه البيئة مباشرةً إذا أصبح الدخول الموحّد غير متاح.",
2445
+ description: "لقد سجّلت الدخول عبر الدخول الموحّد. عيّن كلمة مرور محلية لتتمكن من الدخول مباشرةً إذا أصبح الدخول الموحّد غير متاح.",
1866
2446
  email: "البريد الإلكتروني",
1867
2447
  newPassword: "كلمة المرور الجديدة",
1868
2448
  confirmPassword: "تأكيد كلمة المرور",
@@ -1878,9 +2458,8 @@ const ar = {
1878
2458
  signingIn: "جارٍ تسجيل دخولك…",
1879
2459
  ssoHandoff: "المتابعة إلى {{target}}",
1880
2460
  devAdminHint: {
1881
- title: "بيئة تطوير",
1882
- body: "سجّل الدخول بحساب مسؤول التطوير المهيأ مسبقًا:",
1883
- dismiss: "تجاهل",
2461
+ title: "بيئة تطوير محلية",
2462
+ signIn: "تسجيل الدخول كمسؤول التطوير",
1884
2463
  },
1885
2464
  title: "تسجيل الدخول إلى حسابك",
1886
2465
  description: "أدخل بريدك الإلكتروني وكلمة المرور للمتابعة",
@@ -1910,6 +2489,22 @@ const ar = {
1910
2489
  resendOtpCountdownText: "إعادة الإرسال بعد {seconds} ثانية",
1911
2490
  usePhoneOtpText: "تسجيل الدخول برمز التحقق",
1912
2491
  usePasswordSignInText: "تسجيل الدخول بكلمة المرور بدلاً من ذلك",
2492
+ socialButton: "المتابعة باستخدام {provider}",
2493
+ orText: "أو تابع باستخدام البريد الإلكتروني",
2494
+ ssoButton: "تسجيل الدخول باستخدام SSO",
2495
+ ssoOnlyDescription: "سجّل الدخول عبر الدخول الموحّد لمؤسستك",
2496
+ usePasswordText: "استخدام كلمة المرور بدلاً من ذلك",
2497
+ backToSsoText: "العودة إلى الدخول الموحّد",
2498
+ // objectui#12600 — the console login card's own header, the password
2499
+ // field's reveal toggle, and the footer's legal links.
2500
+ welcomeTitle: "مرحبًا بعودتك",
2501
+ welcomeDescription: "سجّل الدخول لمتابعة عملك",
2502
+ showPasswordText: "إظهار كلمة المرور",
2503
+ hidePasswordText: "إخفاء كلمة المرور",
2504
+ footer: {
2505
+ privacy: "الخصوصية",
2506
+ terms: "الشروط",
2507
+ },
1913
2508
  },
1914
2509
  register: {
1915
2510
  title: "إنشاء حساب",
@@ -1928,8 +2523,12 @@ const ar = {
1928
2523
  submittingButton: "جارٍ إنشاء الحساب…",
1929
2524
  hasAccountText: "لديك حساب بالفعل؟",
1930
2525
  signInText: "تسجيل الدخول",
2526
+ socialButton: "التسجيل باستخدام {provider}",
2527
+ orText: "أو تابع باستخدام البريد الإلكتروني",
1931
2528
  errors: {
1932
2529
  userExists: "يوجد حساب بهذا البريد الإلكتروني بالفعل. حاول تسجيل الدخول.",
2530
+ selfRegistrationClosed: "التسجيل الذاتي غير متاح في هذا النظام. اطلب دعوة من المسؤول.",
2531
+ emailDomainNotAllowed: "نطاق هذا البريد الإلكتروني غير مسموح له بالتسجيل هنا. استخدم البريد الإلكتروني لمؤسستك أو اطلب دعوة من المسؤول.",
1933
2532
  },
1934
2533
  verifyInbox: {
1935
2534
  title: "تحقق من صندوق الوارد",
@@ -2005,7 +2604,7 @@ const ar = {
2005
2604
  checkSpam: "لم تستلم البريد؟ تحقق من مجلد البريد غير المرغوب أو تواصل مع الدعم.",
2006
2605
  or: "أو",
2007
2606
  // objectui#3546 slice three.
2008
- resendUnavailable: "قد يكون إرسال البريد الإلكتروني غير مُهيأ في هذه البيئة. تواصل مع الدعم إذا استمرت المشكلة.",
2607
+ resendUnavailable: "قد يكون إرسال البريد الإلكتروني غير مُهيأ في هذا النظام. تواصل مع الدعم إذا استمرت المشكلة.",
2009
2608
  },
2010
2609
  setup: {
2011
2610
  welcomeTitle: "مرحباً بك في ObjectStack",
@@ -2049,7 +2648,7 @@ const ar = {
2049
2648
  disabledDescription: "لم يتم تمكين تفويض الأجهزة في هذا النشر، لذا لا يمكن الموافقة على هذا الجهاز هنا.",
2050
2649
  },
2051
2650
  shell: {
2052
- tenantHostHint: "تسجل الدخول إلى مساحة العمل هذه",
2651
+ tenantHostHint: "تسجل الدخول إلى هذا النظام",
2053
2652
  },
2054
2653
  layout: {
2055
2654
  headline: "أنشئ تطبيقات أعمال قوية بسرعة أكبر.",
@@ -2059,6 +2658,7 @@ const ar = {
2059
2658
  signOut: "تسجيل الخروج بدلاً من ذلك",
2060
2659
  password: {
2061
2660
  title: "انتهت صلاحية كلمة المرور",
2661
+ resetTitle: "يجب عليك تغيير كلمة المرور",
2062
2662
  fallbackMessage: "يرجى تعيين كلمة مرور جديدة للمتابعة.",
2063
2663
  current: "كلمة المرور الحالية",
2064
2664
  next: "كلمة المرور الجديدة",
@@ -2084,6 +2684,11 @@ const ar = {
2084
2684
  verifying: "جارٍ التحقق…",
2085
2685
  invalidCode: "رمز غير صالح. حاول مرة أخرى.",
2086
2686
  },
2687
+ impersonation: {
2688
+ passwordTitle: "يجب على {{user}} تغيير كلمة المرور",
2689
+ mfaTitle: "يجب على {{user}} إعداد المصادقة الثنائية",
2690
+ body: "أنت تنتحل هوية {{user}}، ولا يمكن لأحد غيره القيام بذلك. أنهِ انتحال الهوية للعودة إلى حسابك.",
2691
+ },
2087
2692
  },
2088
2693
  },
2089
2694
  // objectui#3546 slice three — the /oauth/consent screen.
@@ -2092,12 +2697,17 @@ const ar = {
2092
2697
  title: "يطلب {{appName}} الوصول إلى حسابك",
2093
2698
  request: "يطلب {{appName}} الإذن{{suffix}}.",
2094
2699
  unknownApp: "تطبيق ما",
2700
+ unidentified: "تعذّر التعرّف على هذا التطبيق.",
2701
+ clientId: "معرّف العميل",
2095
2702
  willAllow: "سيتمكن هذا التطبيق من:",
2096
2703
  scope: {
2097
2704
  openid: "تأكيد هويتك",
2098
2705
  profile: "قراءة ملفك الشخصي الأساسي (الاسم، الصورة)",
2099
2706
  email: "قراءة عنوان بريدك الإلكتروني",
2100
2707
  offlineAccess: "البقاء مسجّلاً للدخول (تحديث الوصول)",
2708
+ dataRead: "قراءة السجلات (ضمن صلاحياتك الخاصة)",
2709
+ dataWrite: "إنشاء السجلات وتعديلها وحذفها (ضمن صلاحياتك الخاصة)",
2710
+ actionsExecute: "تنفيذ الإجراءات نيابةً عنك (ضمن صلاحياتك الخاصة)",
2101
2711
  },
2102
2712
  deny: "رفض",
2103
2713
  authorize: "تفويض",
@@ -2128,11 +2738,20 @@ const ar = {
2128
2738
  role: "الدور",
2129
2739
  save: "حفظ التغييرات",
2130
2740
  },
2741
+ language: {
2742
+ title: "اللغة",
2743
+ description: "اللغة المستخدمة في الإشعارات والرسائل المرسلة إليك. أما لغة الواجهة فتُختار بشكل منفصل من قائمة الكرة الأرضية.",
2744
+ label: "اللغة المفضلة",
2745
+ systemDefault: "استخدام الإعداد الافتراضي للنشر",
2746
+ save: "حفظ",
2747
+ saved: "تم تحديث تفضيل اللغة.",
2748
+ readOnly: "يدير المسؤول لغة حسابك.",
2749
+ },
2131
2750
  password: {
2132
2751
  changeTitle: "تغيير كلمة المرور",
2133
2752
  setTitle: "تعيين كلمة مرور محلية",
2134
- changeDescription: "قم بتحديث كلمة المرور التي تستخدمها لتسجيل الدخول إلى هذه البيئة.",
2135
- setDescription: "لقد سجّلت الدخول عبر تسجيل الدخول الموحّد. عيّن كلمة مرور محلية لتتمكن أيضاً من تسجيل الدخول بالبريد الإلكتروني وكلمة المرور في هذه البيئة.",
2753
+ changeDescription: "قم بتحديث كلمة المرور التي تستخدمها لتسجيل الدخول.",
2754
+ setDescription: "لقد سجّلت الدخول عبر تسجيل الدخول الموحّد. عيّن كلمة مرور محلية لتتمكن أيضاً من تسجيل الدخول بالبريد الإلكتروني وكلمة المرور.",
2136
2755
  current: "كلمة المرور الحالية",
2137
2756
  new: "كلمة المرور الجديدة",
2138
2757
  password: "كلمة المرور",
@@ -2141,7 +2760,7 @@ const ar = {
2141
2760
  mismatch: "كلمتا المرور غير متطابقتين",
2142
2761
  enterCurrent: "أدخل كلمة المرور الحالية",
2143
2762
  changed: "تم تغيير كلمة المرور.",
2144
- localSet: "تم تعيين كلمة المرور المحلية. يمكنك الآن تسجيل الدخول بالبريد الإلكتروني وكلمة المرور في هذه البيئة.",
2763
+ localSet: "تم تعيين كلمة المرور المحلية. يمكنك الآن تسجيل الدخول بالبريد الإلكتروني وكلمة المرور.",
2145
2764
  changeAction: "تغيير كلمة المرور",
2146
2765
  setAction: "تعيين كلمة المرور",
2147
2766
  },
@@ -2156,22 +2775,21 @@ const ar = {
2156
2775
  unknown: "حدث خطأ غير متوقع.",
2157
2776
  },
2158
2777
  workspace: {
2159
- label: "مساحات العمل",
2160
- default: "مساحة العمل الخاصة بي",
2161
- switch: "تبديل مساحة العمل",
2162
- create: "إنشاء مساحة عمل",
2163
- createTitle: "إنشاء مساحة عمل",
2164
- createDescription: "مساحة العمل هي مساحة مشتركة لفريقك للتعاون.",
2165
- createButton: "إنشاء مساحة عمل",
2166
- nameLabel: "اسم مساحة العمل",
2778
+ label: "المؤسسات",
2779
+ default: "مؤسستي",
2780
+ switch: "تبديل المؤسسة",
2781
+ createTitle: "إنشاء مؤسسة",
2782
+ createDescription: "المؤسسة مكان مشترك يتعاون فيه فريقك.",
2783
+ createButton: "إنشاء مؤسسة",
2784
+ nameLabel: "اسم المؤسسة",
2167
2785
  namePlaceholder: "مثلاً، Acme Inc",
2168
2786
  slugLabel: "معرف URL",
2169
2787
  slugHint: "يستخدم في عناوين URL. أحرف صغيرة وأرقام وشرطات فقط.",
2170
2788
  invite: "دعوة عضو",
2171
2789
  members: "الأعضاء",
2172
- settings: "إعدادات مساحة العمل",
2790
+ settings: "إعدادات المؤسسة",
2173
2791
  multiOrgDisabled: "إنشاء مؤسسات جديدة معطّل في هذا النشر.",
2174
- createFailed: 'تعذّر إنشاء مساحة العمل',
2792
+ createFailed: 'تعذّر إنشاء المؤسسة',
2175
2793
  },
2176
2794
  help: {
2177
2795
  onThisPage: "في هذه الصفحة",
@@ -2179,12 +2797,17 @@ const ar = {
2179
2797
  appDocs: 'وثائق هذا التطبيق',
2180
2798
  allDocs: 'كل الوثائق',
2181
2799
  onlineDocs: 'الوثائق عبر الإنترنت',
2800
+ loadingDocumentation: 'جارٍ تحميل الوثائق',
2801
+ about: 'حول',
2802
+ aboutTitle: 'حول وحدة التحكم هذه',
2803
+ aboutDescription: 'الإصدار الذي بُنيت منه وحدة التحكم هذه.',
2804
+ aboutBuild: 'إصدار وحدة التحكم',
2805
+ aboutBuildUnknown: 'إصدار غير معروف (لم يُحدَّد أي إصدار عند بناء وحدة التحكم هذه)',
2182
2806
  },
2183
2807
  sidebar: {
2184
2808
  packageManagement: "إدارة الحزم",
2185
2809
  searchNavigation: "البحث في التنقل…",
2186
2810
  settings: "الإعدادات",
2187
- help: "المساعدة",
2188
2811
  helpTooltip: "المساعدة والوثائق",
2189
2812
  activityFeed: "موجز النشاط",
2190
2813
  notifications: "الإشعارات",
@@ -2194,18 +2817,16 @@ const ar = {
2194
2817
  area: "المنطقة",
2195
2818
  scope: "النطاق",
2196
2819
  recent: "الأخيرة",
2197
- favorites: "المفضلة",
2198
2820
  starred: "المميزة",
2199
2821
  removeFromFavorites: "إزالة {{name}} من المفضلة",
2822
+ allReports: "كل التقارير",
2200
2823
  },
2201
2824
  topbar: {
2202
2825
  openAssistant: "فتح مساعد {{name}}",
2203
2826
  offline: "غير متصل",
2204
2827
  usersOnline: "المستخدمون المتصلون الآن",
2205
2828
  switchView: "تبديل العرض",
2206
- switchObject: "تبديل الكائن",
2207
2829
  connection: {
2208
- connected: "متصل",
2209
2830
  connecting: "جارٍ الاتصال…",
2210
2831
  reconnecting: "جارٍ إعادة الاتصال…",
2211
2832
  disconnected: "منقطع",
@@ -2218,23 +2839,22 @@ const ar = {
2218
2839
  },
2219
2840
  aiAssistant: "مساعد الذكاء الاصطناعي",
2220
2841
  designInStudio: "التصميم في Studio",
2842
+ editApp: "تعديل التطبيق",
2221
2843
  },
2222
2844
  home: {
2223
2845
  build: {
2224
2846
  title: "إنشاء تطبيق",
2225
- subtitle: "ابدأ من الصفر — صمّم الكائنات والنماذج والأتمتة والواجهات.",
2226
- noCapability: "إنشاء التطبيقات غير متاح في مساحة العمل هذه — فهو يتطلب إذن «إدارة البيانات الوصفية» الذي لا يملكه حسابك.",
2847
+ noCapability: "إنشاء التطبيقات غير متاح في هذا النظام — فهو يتطلب إذن «إدارة البيانات الوصفية» الذي لا يملكه حسابك.",
2227
2848
  },
2228
2849
  template: {
2229
2850
  title: "ابدأ من قالب",
2230
- subtitle: "ثبّت تطبيق قالب من السوق وخصّصه.",
2231
2851
  marketplaceDisabled: "لا يوجد سوق تطبيقات مُهيّأ لوقت التشغيل هذا، لذا لا توجد قوالب لتثبيتها هنا.",
2232
2852
  },
2233
2853
  welcomeAdminDescription: "صف نشاطك التجاري في جملة واحدة — وسيولّد الذكاء الاصطناعي الكائنات والشاشات وواجهات البرمجة وأدوات الوكيل. أو أعدّها بنفسك من القائمة على اليسار.",
2234
2854
  welcomeAdminDescriptionNoBuild: "أعدّ تطبيقك الأول من قائمة الإدارة على اليسار. وبمجرد توفر البيانات، يمكن لمساعد الذكاء الاصطناعي مساعدتك في استكشافها.",
2235
2855
  welcomeAdminDescriptionNoAi: "أعدّ تطبيقك الأول من قائمة الإدارة على اليسار.",
2236
2856
  noAppsTitle: "لا توجد تطبيقات بعد",
2237
- noAppsDescription: "يجري إعداد مساحة عملك — وستظهر هنا التطبيقات التي يشاركها معك المسؤول.",
2857
+ noAppsDescription: "يجري إعداد النظام — وستظهر هنا التطبيقات التي يشاركها معك المسؤول.",
2238
2858
  buildWithAI: "الإنشاء بالذكاء الاصطناعي",
2239
2859
  askAI: "اسأل الذكاء الاصطناعي",
2240
2860
  recoveryReminder: {
@@ -2243,7 +2863,19 @@ const ar = {
2243
2863
  dismiss: "تجاهل",
2244
2864
  },
2245
2865
  pendingDrafts: {
2246
- message: "لديك {{count}} من التغييرات غير المنشورة — انشرها لتصبح فعّالة.",
2866
+ // objectui#12602 — the drafts row in Home's "My work" section: the
2867
+ // count, then the first draft names joined by `nameSeparator`, in
2868
+ // their package when they share one.
2869
+ title: "{{count}} من التغييرات غير المنشورة",
2870
+ title_zero: "{{count}} من التغييرات غير المنشورة",
2871
+ title_one: "{{count}} من التغييرات غير المنشورة",
2872
+ title_two: "{{count}} من التغييرات غير المنشورة",
2873
+ title_few: "{{count}} من التغييرات غير المنشورة",
2874
+ title_many: "{{count}} من التغييرات غير المنشورة",
2875
+ title_other: "{{count}} من التغييرات غير المنشورة",
2876
+ inPackage: "{{names}} بانتظار النشر في {{package}}",
2877
+ waiting: "{{names}} بانتظار النشر",
2878
+ nameSeparator: "، ",
2247
2879
  cta: "نشر",
2248
2880
  publishing: "جارٍ النشر…",
2249
2881
  published: "تم النشر! تغييراتك فعّالة الآن.",
@@ -2258,20 +2890,24 @@ const ar = {
2258
2890
  capabilityWarn: "فحص التأليف: {{count}} مرجع(مراجع) قدرات لا تشير إلى شيء.",
2259
2891
  },
2260
2892
  title: "الرئيسية",
2261
- subtitle: "لوحة تحكم مساحة العمل",
2262
2893
  nav: "الرئيسية",
2263
2894
  allApps: "جميع التطبيقات",
2264
2895
  yourApps: "تطبيقاتك",
2265
2896
  showMoreApps: "المزيد",
2266
2897
  showLess: "عرض أقل",
2267
2898
  continueEmpty: "ستظهر هنا العناصر التي تفتحها.",
2268
- actionCenter: {
2269
- title: "يتطلب انتباهك",
2270
- empty: "لقد أنجزت كل شيء",
2899
+ // objectui#12602 — Home's "My work" section: its heading, the link to the
2900
+ // full inbox, each column's title, "view all" link and empty line.
2901
+ myWork: {
2902
+ title: "عملي",
2903
+ openInbox: "فتح البريد الوارد",
2904
+ viewAll: "عرض الكل",
2905
+ approvals: "بانتظار الموافقة",
2906
+ approvalsEmpty: "لا شيء بانتظار موافقتك",
2907
+ notifications: "الإشعارات",
2908
+ notificationsEmpty: "لا توجد إشعارات غير مقروءة",
2271
2909
  },
2272
- loading: "جارٍ تحميل مساحة العمل…",
2273
- recent: "الأخيرة",
2274
- starred: "المميزة بنجمة",
2910
+ loading: "جارٍ التحميل…",
2275
2911
  welcome: "مرحباً بك في ObjectUI",
2276
2912
  welcomeDescription: "ابدأ بإنشاء تطبيقك الأول أو تكوين إعدادات النظام.",
2277
2913
  createFirstApp: "أنشئ أول تطبيق لك",
@@ -2279,12 +2915,10 @@ const ar = {
2279
2915
  browseMarketplace: "تصفح متجر التطبيقات",
2280
2916
  quickActions: {
2281
2917
  title: "إجراءات سريعة",
2282
- createApp: "إنشاء تطبيق",
2283
- createAppDesc: "ابدأ بتطبيق جديد",
2284
2918
  manageObjects: "إدارة الكائنات",
2285
2919
  manageObjectsDesc: "تكوين نماذج البيانات",
2286
2920
  systemSettings: "إعدادات النظام",
2287
- systemSettingsDesc: "تكوين مساحة العمل الخاصة بك",
2921
+ systemSettingsDesc: "تكوين النظام",
2288
2922
  },
2289
2923
  appCard: {
2290
2924
  noDescription: "لا يوجد وصف",
@@ -2294,20 +2928,33 @@ const ar = {
2294
2928
  greetingAfternoon: "مساء الخير",
2295
2929
  greetingEvening: "مساء النور",
2296
2930
  greetingNight: "وردية الليل",
2297
- heroTagline: "استمر من حيث توقفت أو اكتشف شيئاً جديداً.",
2931
+ greetingSeparator: "، ",
2932
+ greetingEnd: ".",
2933
+ search: "ابحث في التطبيقات والسجلات والصفحات…",
2934
+ summary: {
2935
+ approvals: "لديك اليوم {{count}} من طلبات الموافقة المعلّقة",
2936
+ approvals_zero: "لديك اليوم {{count}} من طلبات الموافقة المعلّقة",
2937
+ approvals_one: "لديك اليوم {{count}} من طلبات الموافقة المعلّقة",
2938
+ approvals_two: "لديك اليوم {{count}} من طلبات الموافقة المعلّقة",
2939
+ approvals_few: "لديك اليوم {{count}} من طلبات الموافقة المعلّقة",
2940
+ approvals_many: "لديك اليوم {{count}} من طلبات الموافقة المعلّقة",
2941
+ approvals_other: "لديك اليوم {{count}} من طلبات الموافقة المعلّقة",
2942
+ none: "لا شيء بانتظارك اليوم",
2943
+ },
2944
+ addApp: "إضافة تطبيق",
2945
+ appOpened: "فُتح {{time}}",
2298
2946
  open: "فتح",
2299
- stats: {
2300
- apps: "التطبيقات",
2301
- starred: "المميزة",
2302
- recent: "الأخيرة",
2303
- },
2304
2947
  recentApps: {
2305
2948
  title: "فُتح مؤخراً",
2306
2949
  itemType: {
2307
2950
  object: "كائن",
2308
2951
  dashboard: "لوحة تحكم",
2309
2952
  page: "صفحة",
2953
+ report: "تقرير",
2954
+ package: "حزمة",
2955
+ view: "عرض القائمة",
2310
2956
  record: "سجل",
2957
+ metadata: "البيانات الوصفية",
2311
2958
  },
2312
2959
  },
2313
2960
  starredApps: {
@@ -2329,7 +2976,6 @@ const ar = {
2329
2976
  organizations: "المؤسسات",
2330
2977
  roles: "الأدوار",
2331
2978
  configuration: "التهيئة",
2332
- createApp: "إنشاء تطبيق",
2333
2979
  administration: "الإدارة",
2334
2980
  datasources: "مصادر البيانات",
2335
2981
  documentation: "الوثائق",
@@ -2344,16 +2990,23 @@ const ar = {
2344
2990
  manageAllApps: "إدارة جميع التطبيقات",
2345
2991
  systemConsole: "وحدة تحكم النظام",
2346
2992
  noAppsConfigured: "لا تطبيقات مُهيأة",
2993
+ allApps: "جميع التطبيقات",
2994
+ editAppInStudio: "تعديل {{app}} في Studio",
2995
+ backToHome: "العودة إلى الرئيسية",
2996
+ settings: "الإعدادات",
2997
+ productHome: "الصفحة الرئيسية لـ {{product}}",
2347
2998
  },
2348
2999
  activityFeed: {
2349
3000
  title: "النشاط الأخير",
2350
3001
  filter: "تصفية",
2351
3002
  empty: "لا نشاط أخير",
3003
+ accessDenied: "ليس لديك صلاحية عرض النشاط.",
2352
3004
  ariaLabel: "تغذية النشاط",
2353
3005
  typeCreate: "إنشاء",
2354
3006
  typeUpdate: "تحديث",
2355
3007
  typeDelete: "حذف",
2356
3008
  typeComment: "تعليق",
3009
+ typeSystem: "النظام",
2357
3010
  relativeJustNow: "الآن",
2358
3011
  relativeSecondsAgo: "منذ {{count}} ث",
2359
3012
  relativeMinutesAgo: "منذ {{count}} د",
@@ -2375,8 +3028,22 @@ const ar = {
2375
3028
  placeholder: "ابحث في الكائنات، لوحات التحكم، الصفحات، التقارير…",
2376
3029
  inputAriaLabel: "ابحث في الكائنات، لوحات التحكم، الصفحات، التقارير",
2377
3030
  resultsCount: "{{count}} نتيجة لـ \"{{query}}\"",
2378
- resultsCountPlural: "{{count}} نتيجة لـ \"{{query}}\"",
2379
- itemsAvailable: "{{count}} عنصر(عناصر) متاح(ة)",
3031
+ resultsCount_zero: "{{count}} نتيجة لـ \"{{query}}\"",
3032
+ resultsCount_one: "{{count}} نتيجة لـ \"{{query}}\"",
3033
+ resultsCount_two: "نتيجتان لـ \"{{query}}\" ({{count}})",
3034
+ resultsCount_few: "{{count}} نتائج لـ \"{{query}}\"",
3035
+ resultsCount_many: "{{count}} نتيجة لـ \"{{query}}\"",
3036
+ resultsCount_other: "{{count}} نتيجة لـ \"{{query}}\"",
3037
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
3038
+ // own noun form. The base key, a count-invariant form, answers a call made
3039
+ // without a count.
3040
+ itemsAvailable: "عدد العناصر المتاحة: {{count}}",
3041
+ itemsAvailable_zero: "{{count}} عنصر متاح",
3042
+ itemsAvailable_one: "{{count}} عنصر متاح",
3043
+ itemsAvailable_two: "عنصران متاحان ({{count}})",
3044
+ itemsAvailable_few: "{{count}} عناصر متاحة",
3045
+ itemsAvailable_many: "{{count}} عنصرًا متاحًا",
3046
+ itemsAvailable_other: "{{count}} عنصر متاح",
2380
3047
  noResults: "لم يتم العثور على نتائج",
2381
3048
  noResultsHint: "جرب تعديل مصطلحات البحث",
2382
3049
  typeObjects: "الكائنات",
@@ -2401,26 +3068,38 @@ const ar = {
2401
3068
  noAppsConfigured: "لا تطبيقات مُهيأة",
2402
3069
  noAppsConfiguredDescription: "لا تطبيقات مسجلة. أنشئ تطبيقك الأول أو زر إعدادات النظام.",
2403
3070
  appNotAvailable: "التطبيق غير متاح",
2404
- appNotAvailableDescription: "هذا التطبيق غير متاح بعد — قد يكون النشر ما زال جارياً. أعد المحاولة بعد لحظات.",
3071
+ appNotAvailableDescription: "هذا التطبيق غير متاح — أعد المحاولة بعد لحظات.",
3072
+ appNotFound: "تعذّر فتح هذا التطبيق",
3073
+ appNotFoundDescription: "لم يُرجع الخادم هذا التطبيق لحسابك.",
3074
+ appUnreachable: "تعذّر الوصول إلى الخادم",
3075
+ appUnreachableDescription: "تعذّر التحقق من هذا التطبيق. أعد المحاولة بعد لحظات.",
2405
3076
  appAccessDenied: "ليس لديك حق الوصول إلى هذا التطبيق",
2406
3077
  appAccessDeniedDescription: "هذا التطبيق موجود، لكن حسابك غير مخوَّل بفتحه. اطلب من المسؤول منحك حق الوصول.",
2407
3078
  appAccessDeniedHome: "العودة إلى الرئيسية",
3079
+ appNothingAvailable: "لا يتوفر لك أي شيء في {{app}} بعد",
3080
+ appNothingAvailableDescription: "لا يحتوي هذا التطبيق على صفحات يمكن لحسابك فتحها. اطلب من المسؤول منحك حق الوصول.",
3081
+ appNothingAvailableGrantDescription: "لا يحتوي هذا التطبيق على صفحات يمكن لحسابك فتحها. يمكنك منح حق الوصول من الإعداد.",
3082
+ openSetup: "فتح الإعداد",
2408
3083
  createFirstApp: "إنشاء أول تطبيق",
2409
3084
  systemSettings: "إعدادات النظام",
2410
3085
  back: "رجوع",
2411
3086
  recordNotFound: "السجل غير موجود",
2412
3087
  recordNotFoundDescription: "السجل الذي تبحث عنه غير موجود أو ربما تم حذفه.",
3088
+ recordAccessDenied: "ليس لديك صلاحية الوصول إلى سجلات {{object}}",
3089
+ recordAccessDeniedDescription: "ليس لديك إذن لعرض السجلات من هذا النوع. تواصل مع المسؤول إذا كنت تعتقد أنه يجب أن يكون لديك وصول.",
3090
+ recordLoadFailed: "تعذّر تحميل هذا السجل",
3091
+ recordLoadFailedDescription: "حدث خطأ أثناء التحميل. تحقق من اتصالك وحاول مرة أخرى.",
2413
3092
  },
2414
3093
  actionDialog: {
2415
3094
  title: "معامِلات الإجراء",
2416
3095
  description: "يرجى إدخال المعلومات المطلوبة للمتابعة.",
2417
3096
  selectPlaceholder: "تحديد {{label}}",
2418
3097
  requiredError: "{{label}} مطلوب",
3098
+ unresolvedParam: 'تعذّر عرض هذه المَعلمة: الحقل الذي تستند إليه غير موجود في بيانات تعريف الكائن، لذا يتعذّر إنشاء عنصر التحكم المطلوب. اطلب من المسؤول تصحيح تعريف الإجراء.',
3099
+ carryOverHint: 'يُنقل دون تغيير (للقراءة فقط)',
2419
3100
  cancel: "إلغاء",
2420
3101
  confirm: "تأكيد",
2421
3102
  uploading: "جارٍ الرفع…",
2422
- defaultActionTitle: "إجراء",
2423
- ok: "موافق",
2424
3103
  lookupPlaceholder: "معرف السجل لـ {{label}}",
2425
3104
  lookupHelpText: "لم يتم تكوين كائن مرجعي لهذه المعلمة، لذا فإن أداة اختيار السجلات غير متاحة. أدخل معرف السجل، أو اطلب من المسؤول تصحيح معلمة الإجراء.",
2426
3105
  },
@@ -2429,11 +3108,6 @@ const ar = {
2429
3108
  confirm: "متابعة",
2430
3109
  cancel: "إلغاء",
2431
3110
  },
2432
- rowAction: {
2433
- openMenu: "فتح القائمة",
2434
- edit: "تعديل",
2435
- delete: "حذف",
2436
- },
2437
3111
  navigationSync: {
2438
3112
  addedPage: "تم تحديث التنقل: تمت إضافة الصفحة \"{{name}}\"",
2439
3113
  addedDashboard: "تم تحديث التنقل: تمت إضافة لوحة التحكم \"{{name}}\"",
@@ -2447,13 +3121,26 @@ const ar = {
2447
3121
  updateFailed: "تعذر تحديث التنقل",
2448
3122
  },
2449
3123
  objectActions: {
2450
- resetPackageSetConfirm: "مجموعة الأذونات هذه تأتي ضمن حزمة مثبَّتة ولا يمكن إزالتها. الحذف يعيدها إلى الحالة الأصلية المرفقة بالحزمة ويتجاهل تخصيصاتك في هذه البيئة. هل تريد المتابعة؟",
2451
- resetPackageSetSuccess: "تمت إعادة مجموعة الأذونات إلى حالتها الأصلية المرفقة بالحزمة",
2452
3124
  deleteSuccess: "تم حذف {{label}} بنجاح",
2453
3125
  deleteFailed: "تعذر حذف {{label}}",
2454
3126
  noRecordId: "لم يتم توفير معرف سجل",
2455
3127
  deleteConfirm: "حذف هذا السجل؟",
3128
+ deleteConfirmTitle: "حذف {{label}} \"{{name}}\"؟",
3129
+ bulkDeleteConfirmTitle: "حذف {{count}} سجل(ات) {{label}}؟",
3130
+ bulkDeleteConfirmTitle_zero: "حذف {{count}} من سجلات {{label}}؟",
3131
+ bulkDeleteConfirmTitle_one: "حذف {{count}} من سجلات {{label}}؟",
3132
+ bulkDeleteConfirmTitle_two: "حذف {{count}} من سجلات {{label}}؟",
3133
+ bulkDeleteConfirmTitle_few: "حذف {{count}} من سجلات {{label}}؟",
3134
+ bulkDeleteConfirmTitle_many: "حذف {{count}} من سجلات {{label}}؟",
3135
+ bulkDeleteConfirmTitle_other: "حذف {{count}} من سجلات {{label}}؟",
3136
+ deleteConfirmButton: "حذف",
2456
3137
  bulkDeleteSuccess: "تم حذف {{count}} سجل(ات) {{label}}",
3138
+ bulkDeleteSuccess_zero: "تم حذف {{count}} من سجلات {{label}}",
3139
+ bulkDeleteSuccess_one: "تم حذف {{count}} من سجلات {{label}}",
3140
+ bulkDeleteSuccess_two: "تم حذف {{count}} من سجلات {{label}}",
3141
+ bulkDeleteSuccess_few: "تم حذف {{count}} من سجلات {{label}}",
3142
+ bulkDeleteSuccess_many: "تم حذف {{count}} من سجلات {{label}}",
3143
+ bulkDeleteSuccess_other: "تم حذف {{count}} من سجلات {{label}}",
2457
3144
  bulkDeletePartial: "تم حذف {{succeeded}}، فشل {{failed}}",
2458
3145
  },
2459
3146
  objectViewActions: {
@@ -2465,15 +3152,6 @@ const ar = {
2465
3152
  exportFailed: "فشل التصدير: {{message}}",
2466
3153
  forecastSoon: "عرض التوقعات قادم قريباً",
2467
3154
  },
2468
- recordDetail: {
2469
- viewersTooltip: "المستخدمون يشاهدون هذا السجل الآن",
2470
- },
2471
- cellRender: {
2472
- empty: "فارغ",
2473
- yes: "نعم",
2474
- no: "لا",
2475
- systemFields: "النظام",
2476
- },
2477
3155
  user: {
2478
3156
  profile: "الملف الشخصي",
2479
3157
  settings: "الإعدادات",
@@ -2495,6 +3173,7 @@ const ar = {
2495
3173
  loading: "جارٍ التحميل…",
2496
3174
  failedToLoad: "فشل تحميل المصفوفة: {{message}}",
2497
3175
  needsAcross: "يتطلب تقرير المصفوفة حقل `groupingsAcross` واحداً على الأقل.",
3176
+ forbiddenMessage: "ليست لديك صلاحية لعرض البيانات الخاصة بهذا التقرير.",
2498
3177
  aggregate: {
2499
3178
  count: "عدد",
2500
3179
  countDistinct: "عدد الفريد",
@@ -2509,18 +3188,18 @@ const ar = {
2509
3188
  },
2510
3189
  },
2511
3190
  organizations: {
2512
- create: "إنشاء مساحة عمل",
2513
- mine: "مساحات عملي",
2514
- title: "مساحات العمل",
2515
- heading: "مساحات عملك",
2516
- subtitle: "اختر مساحة عمل للمتابعة، أو أنشئ مساحة عمل جديدة.",
2517
- searchPlaceholder: "ابحث عن مساحة عمل",
2518
- new: "مساحة عمل جديدة",
2519
- current: "مساحة العمل الحالية",
3191
+ create: "إنشاء مؤسسة",
3192
+ mine: "مؤسساتي",
3193
+ title: "المؤسسات",
3194
+ heading: "مؤسساتك",
3195
+ subtitle: "اختر مؤسسة للمتابعة، أو أنشئ مؤسسة جديدة.",
3196
+ searchPlaceholder: "ابحث عن مؤسسة",
3197
+ new: "مؤسسة جديدة",
3198
+ current: "المؤسسة الحالية",
2520
3199
  manage: "إدارة",
2521
- emptyTitle: "لا توجد مساحات عمل بعد",
2522
- emptyDescription: "أنشئ مساحة عملك الأولى للبدء.",
2523
- noMatches: "لا توجد مساحات عمل تطابق بحثك.",
3200
+ emptyTitle: "لا توجد مؤسسات بعد",
3201
+ emptyDescription: "أنشئ مؤسستك الأولى للبدء.",
3202
+ noMatches: "لا توجد مؤسسات تطابق بحثك.",
2524
3203
  },
2525
3204
  organization: {
2526
3205
  roles: {
@@ -2605,6 +3284,7 @@ const ar = {
2605
3284
  readOnlyNote: "يمكن للمالكين فقط تغيير الإعدادات.",
2606
3285
  nameLabel: "اسم المؤسسة",
2607
3286
  slugLabel: "المعرف",
3287
+ slugLockedNote: "لدى هذه المؤسسة بيئات نشطة، لذا لا يمكن تغيير المعرف هنا: إعادة التسمية تنقل أيضًا نطاقاتها الفرعية.",
2608
3288
  logoLabel: "الشعار",
2609
3289
  logoUpload: "رفع",
2610
3290
  logoReplace: "استبدال",
@@ -2663,18 +3343,61 @@ const ar = {
2663
3343
  regionLabel: "الإشعارات",
2664
3344
  groupCount: "{{count}} من الإشعارات",
2665
3345
  groupUnread: "{{count}} غير مقروء",
3346
+ groupUnread_zero: "غير المقروءة: {{count}}",
3347
+ groupUnread_one: "غير المقروءة: {{count}}",
3348
+ groupUnread_two: "غير المقروءة: {{count}}",
3349
+ groupUnread_few: "غير المقروءة: {{count}}",
3350
+ groupUnread_many: "غير المقروءة: {{count}}",
3351
+ groupUnread_other: "غير المقروءة: {{count}}",
2666
3352
  groupMarkRead: "تعليم كمقروء",
2667
3353
  groupMarkReadTitle: "تعليم كل هذا النوع كمقروء",
2668
3354
  empty: "لا توجد إشعارات",
2669
3355
  markAllRead: "تعليم الكل كمقروء",
2670
3356
  viewAll: "عرض جميع الإشعارات",
2671
3357
  approvalsPending: "{{count}} موافقات معلقة",
3358
+ approvalsPending_zero: "{{count}} موافقة معلقة",
3359
+ approvalsPending_one: "{{count}} موافقة معلقة",
3360
+ approvalsPending_two: "موافقتان معلقتان ({{count}})",
3361
+ approvalsPending_few: "{{count}} موافقات معلقة",
3362
+ approvalsPending_many: "{{count}} موافقة معلقة",
3363
+ approvalsPending_other: "{{count}} موافقة معلقة",
2672
3364
  viewApprovals: "عرض الموافقات",
2673
3365
  noPendingApprovals: "لا توجد موافقات معلقة",
2674
3366
  openApprovalsInbox: "فتح صندوق الموافقات",
2675
3367
  badgeTotal: "{{total}} إجمالاً",
2676
- badgeNotifications: "{{unread}} إشعارات",
2677
- badgeApprovals: "{{approvals}} موافقات معلقة",
3368
+ badgeNotifications: "{{count}} إشعارات",
3369
+ badgeNotifications_zero: "{{count}} إشعار",
3370
+ badgeNotifications_one: "{{count}} إشعار",
3371
+ badgeNotifications_two: "إشعاران ({{count}})",
3372
+ badgeNotifications_few: "{{count}} إشعارات",
3373
+ badgeNotifications_many: "{{count}} إشعار",
3374
+ badgeNotifications_other: "{{count}} إشعار",
3375
+ badgeApprovals: "{{count}} موافقات معلقة",
3376
+ badgeApprovals_zero: "{{count}} موافقة معلقة",
3377
+ badgeApprovals_one: "{{count}} موافقة معلقة",
3378
+ badgeApprovals_two: "موافقتان معلقتان ({{count}})",
3379
+ badgeApprovals_few: "{{count}} موافقات معلقة",
3380
+ badgeApprovals_many: "{{count}} موافقة معلقة",
3381
+ badgeApprovals_other: "{{count}} موافقة معلقة",
3382
+ arrivalMany: "{{count}} رسائل جديدة",
3383
+ arrivalMany_zero: "{{count}} رسالة جديدة",
3384
+ arrivalMany_one: "{{count}} رسالة جديدة",
3385
+ arrivalMany_two: "رسالتان جديدتان ({{count}})",
3386
+ arrivalMany_few: "{{count}} رسائل جديدة",
3387
+ arrivalMany_many: "{{count}} رسالة جديدة",
3388
+ arrivalMany_other: "{{count}} رسالة جديدة",
3389
+ arrivalRepeats: "{{count}} رسائل جديدة في هذا الموضوع",
3390
+ arrivalRepeats_zero: "{{count}} رسالة جديدة في هذا الموضوع",
3391
+ arrivalRepeats_one: "{{count}} رسالة جديدة في هذا الموضوع",
3392
+ arrivalRepeats_two: "رسالتان جديدتان ({{count}}) في هذا الموضوع",
3393
+ arrivalRepeats_few: "{{count}} رسائل جديدة في هذا الموضوع",
3394
+ arrivalRepeats_many: "{{count}} رسالة جديدة في هذا الموضوع",
3395
+ arrivalRepeats_other: "{{count}} رسالة جديدة في هذا الموضوع",
3396
+ arrivalOpen: "عرض",
3397
+ toastEnabled: "تنبيهات داخل التطبيق",
3398
+ desktopEnabled: "إشعارات سطح المكتب",
3399
+ desktopBlocked: "محظور. اسمح بالإشعارات لهذا الموقع من إعدادات المتصفح.",
3400
+ desktopUnsupported: "هذا المتصفح لا يدعم إشعارات سطح المكتب.",
2678
3401
  emptyUnread: "كل شيء مقروء",
2679
3402
  filterUnread: "غير مقروء",
2680
3403
  filterAll: "الكل",
@@ -2688,12 +3411,14 @@ const ar = {
2688
3411
  thankYouTitle: "شكراً!",
2689
3412
  thankYouMessage: "تم استلام إرسالك بنجاح.",
2690
3413
  redirecting: "إعادة توجيه خلال {{seconds}} ثانية(ثوانٍ)…",
3414
+ redirectPending: "جارٍ إعادة التوجيه…",
2691
3415
  unavailableTitle: "النموذج غير متاح",
2692
3416
  unavailableDescription: "لا يوجد نموذج عام متاح على هذا الرابط. تأكد من تمكين المشاركة المجهولة للعرض الأساسي.",
2693
3417
  tryDemo: "تجربة العرض التوضيحي",
2694
3418
  retry: "إعادة المحاولة",
2695
3419
  loading: "جارٍ تحميل النموذج…",
2696
3420
  requiredHint: "* حقل مطلوب",
3421
+ requiredFields: "الحقول المطلوبة: {{fields}}",
2697
3422
  consentLabelDefault: "أوافق على سياسة الخصوصية وأعطي موافقتي على معالجة بياناتي لهذا الطلب.",
2698
3423
  consentLink: "سياسة الخصوصية",
2699
3424
  consentRequired: "يرجى قبول سياسة الخصوصية للمتابعة.",
@@ -2706,10 +3431,10 @@ const ar = {
2706
3431
  body: 'واجهة MCP متوقفة (OS_MCP_SERVER_ENABLED=false). اطلب من المشغّل إعادة تفعيلها.',
2707
3432
  },
2708
3433
  url: {
2709
- title: 'نقطة نهاية MCP لهذه البيئة',
3434
+ title: 'نقطة نهاية MCP لهذا النظام',
2710
3435
  body: 'أي عميل ذكاء اصطناعي يدعم MCP يتصل عبر هذا العنوان. الهوية ذاتية الخدمة: النشر هو خادم تفويض OAuth 2.1 الخاص به — تسجّل الدخول بهويتك، وكل استدعاء يخضع لصلاحياتك وأمان مستوى الصفوف.',
2711
3436
  downloadSkill: 'تنزيل SKILL.md',
2712
- skillHint: 'مهارة الوكيل المحمولة: تعلّم أي وكيل داعم للمهارات كيفية العمل مع هذه البيئة.',
3437
+ skillHint: 'مهارة الوكيل المحمولة: تعلّم أي وكيل داعم للمهارات كيفية العمل مع هذا النظام.',
2713
3438
  },
2714
3439
  claude: {
2715
3440
  body: 'الإعدادات ← الموصلات ← إضافة موصل مخصص، الصق هذا العنوان وسجّل الدخول عبر المتصفح.',
@@ -2744,18 +3469,95 @@ const ar = {
2744
3469
  noImportableFields: "لا تحتوي هذه الكائن على حقول قابلة للاستيراد.",
2745
3470
  schemaReadFailed: "تعذّرت قراءة مخطط الكائن.",
2746
3471
  imported: "تم استيراد {{count}} صف إلى {{object}}.",
3472
+ imported_zero: "تم استيراد {{count}} صف إلى {{object}}.",
3473
+ imported_one: "تم استيراد {{count}} صف إلى {{object}}.",
3474
+ imported_two: "تم استيراد صفين ({{count}}) إلى {{object}}.",
3475
+ imported_few: "تم استيراد {{count}} صفوف إلى {{object}}.",
3476
+ imported_many: "تم استيراد {{count}} صفًا إلى {{object}}.",
3477
+ imported_other: "تم استيراد {{count}} صف إلى {{object}}.",
2747
3478
  importFrom: "استيراد الصفوف الفعلية من",
2748
3479
  into: "إلى",
2749
3480
  opening: "جارٍ الفتح…",
2750
3481
  importAction: "استيراد",
2751
3482
  dismiss: "تجاهل",
2752
3483
  },
2753
- cloudOnboarding: {
2754
- hintCreate: "أنشئ بيئتك الأولى — مساحة عمل خاصة لها رابطها وقاعدة بياناتها وخطتها. يجري بناء التطبيقات داخلها.",
2755
- hintReady: "بيئة الإنتاج جاهزة. افتحها لبناء تطبيقاتك وتشغيلها — كل ذلك يحدث داخل البيئة.",
2756
- createEnvironment: "أنشئ بيئتك",
2757
- openProduction: "فتح بيئة الإنتاج",
2758
- manageEnvironments: "إدارة البيئات",
3484
+ cloudWorkspaceTimezoneNotice: {
3485
+ seeded: "تم تعيين المنطقة الزمنية للبيئة إلى {{zone}} وفقًا لمتصفحك عند إنشائها. يمكنك تغييرها من الإعدادات → التوطين.",
3486
+ },
3487
+ ai: {
3488
+ nlQuery: {
3489
+ placeholder: "اطرح سؤالًا حول بياناتك…",
3490
+ ask: "اسأل",
3491
+ results: "النتائج",
3492
+ match: "نسبة التطابق: {{percent}}",
3493
+ simulatedSummary: "نتائج: {{query}}",
3494
+ noResults: "لم يتم العثور على سجلات مطابقة",
3495
+ recentQueries: "الاستعلامات الأخيرة",
3496
+ },
3497
+ formAssist: {
3498
+ title: "اقتراحات الذكاء الاصطناعي",
3499
+ suggestionCount: "عدد الاقتراحات: {{count}}",
3500
+ suggestionCount_zero: "{{count}} اقتراح",
3501
+ suggestionCount_one: "{{count}} اقتراح",
3502
+ suggestionCount_two: "اقتراحان ({{count}})",
3503
+ suggestionCount_few: "{{count}} اقتراحات",
3504
+ suggestionCount_many: "{{count}} اقتراحًا",
3505
+ suggestionCount_other: "{{count}} اقتراح",
3506
+ applyAll: "تطبيق الكل",
3507
+ confidence: "الثقة: {{percent}}",
3508
+ appliedCount: "عدد الاقتراحات المطبّقة: {{count}}",
3509
+ appliedCount_zero: "تم تطبيق {{count}} اقتراح",
3510
+ appliedCount_one: "تم تطبيق {{count}} اقتراح",
3511
+ appliedCount_two: "تم تطبيق اقتراحين ({{count}})",
3512
+ appliedCount_few: "تم تطبيق {{count}} اقتراحات",
3513
+ appliedCount_many: "تم تطبيق {{count}} اقتراحًا",
3514
+ appliedCount_other: "تم تطبيق {{count}} اقتراح",
3515
+ },
3516
+ recommendations: {
3517
+ title: "التوصيات",
3518
+ generating: "جارٍ إنشاء التوصيات…",
3519
+ empty: "لا توجد توصيات متاحة",
3520
+ },
3521
+ },
3522
+ aiApprovals: {
3523
+ title: "موافقات الذكاء الاصطناعي",
3524
+ description: "إجراءات اقترحها وكيل ذكاء اصطناعي وتحتاج إلى مراجعة بشرية قبل تنفيذها.",
3525
+ tabPending: "قيد الانتظار",
3526
+ tabDecided: "تم البت فيها",
3527
+ tabAll: "الكل",
3528
+ statusPending: "قيد الانتظار",
3529
+ statusApproved: "تمت الموافقة",
3530
+ statusExecuted: "تم التنفيذ",
3531
+ statusFailed: "فشل",
3532
+ statusRejected: "مرفوض",
3533
+ colTool: "الأداة",
3534
+ colAction: "الإجراء",
3535
+ colObject: "الكائن",
3536
+ colStatus: "الحالة",
3537
+ colProposed: "وقت الاقتراح",
3538
+ colDecision: "القرار",
3539
+ emptyTitle: "لا توجد إجراءات في الانتظار",
3540
+ emptyDescription: "عندما يقترح الذكاء الاصطناعي إجراءً حساسًا سيظهر هنا للمراجعة.",
3541
+ view: "عرض",
3542
+ approve: "موافقة",
3543
+ reject: "رفض",
3544
+ working: "جارٍ التنفيذ…",
3545
+ approveAndExecute: "الموافقة والتنفيذ",
3546
+ outcomeApprove: "موافقة على {{id}}: {{message}}",
3547
+ outcomeReject: "رفض {{id}}: {{message}}",
3548
+ outcomeExecuteFailed: "فشل الإجراء أثناء التنفيذ",
3549
+ drawerFallbackTitle: "إجراء قيد الانتظار",
3550
+ drawerSubtitle: "الأداة {{tool}} على {{object}}",
3551
+ fieldProposedBy: "اقترحه",
3552
+ fieldDecidedBy: "قرّره",
3553
+ fieldConversation: "المحادثة",
3554
+ fieldToolInput: "مدخلات الأداة",
3555
+ fieldResult: "النتيجة",
3556
+ fieldError: "خطأ",
3557
+ fieldRejectionReason: "سبب الرفض",
3558
+ rejectTitle: "هل تريد رفض هذا الإجراء؟",
3559
+ rejectBody: "يُعاد السبب إلى الذكاء الاصطناعي ليعدّل ردّه التالي.",
3560
+ rejectPlaceholder: "سبب اختياري (مثال: «معرّف السجل غير صحيح — يرجى التأكيد مع المستخدم أولاً.»)",
2759
3561
  },
2760
3562
  aiModelStatus: {
2761
3563
  summary: "يستخدم الإنشاء / السؤال {{conversational}} ({{conversationalSource}})؛ ويستخدم الإخراج المهيكل {{structured}} ({{structuredSource}}).",
@@ -2765,8 +3567,8 @@ const ar = {
2765
3567
  rowConversational: "نموذج Build / Ask",
2766
3568
  rowStructured: "مُهيكل (blueprint / seed)",
2767
3569
  rowReasoning: "مستوى الاستدلال",
2768
- readFailed: "تعذّرت قراءة نموذج الذكاء الاصطناعي الفعّال. قد لا تُشغّل هذه البيئة خدمة ذكاء اصطناعي، أو قد لا تملك صلاحية ai:read.",
2769
- readFailedWithStatus: "تعذّرت قراءة نموذج الذكاء الاصطناعي الفعّال (HTTP {{status}}). قد لا تُشغّل هذه البيئة خدمة ذكاء اصطناعي، أو قد لا تملك صلاحية ai:read.",
3570
+ readFailed: "تعذّرت قراءة نموذج الذكاء الاصطناعي الفعّال. قد لا يُشغّل هذا النظام خدمة ذكاء اصطناعي، أو قد لا تملك صلاحية ai:read.",
3571
+ readFailedWithStatus: "تعذّرت قراءة نموذج الذكاء الاصطناعي الفعّال (HTTP {{status}}). قد لا يُشغّل هذا النظام خدمة ذكاء اصطناعي، أو قد لا تملك صلاحية ai:read.",
2770
3572
  overridesInEffect: "التجاوزات السارية: ",
2771
3573
  noOverrides: "لا شيء — يجري تشغيل القيم الافتراضية للكود المنشور.",
2772
3574
  adapter: "المحوّل: ",
@@ -2774,6 +3576,202 @@ const ar = {
2774
3576
  sourceInherits: "مثل build/ask",
2775
3577
  sourcePinned: "مثبّت بواسطة {{source}}",
2776
3578
  },
3579
+ // objectui#7254 — the AI copilot's tool cards. Three families, all of them
3580
+ // English-only until this landed while every other string on the same screen
3581
+ // was translated:
3582
+ //
3583
+ // `tool.*` — one entry per PLATFORM-PROVIDED tool name
3584
+ // (@objectstack/spec `PLATFORM_TOOLS_BY_PACKAGE`, the
3585
+ // closed registry those runtimes are conformance-tested
3586
+ // against). `humanizeToolName` looks each up as
3587
+ // `chatbot.tool.<tool_name>` and falls back to its English
3588
+ // title-caser for a custom / third-party tool, so a name
3589
+ // missing here is degraded, never broken. Every value, `en`
3590
+ // included, is a short sentence in the pack's language
3591
+ // saying what the step does (cloud#2927 Target 3, ruled
3592
+ // 「同意」; objectui#12724): never the tool id, and never
3593
+ // the title-caser's output for it, which is how the step
3594
+ // reads for a tool the pack has no entry for.
3595
+ // `toolLabels-locale-parity-7481` holds both.
3596
+ // `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
3597
+ // set for both surfaces (they used to carry separate
3598
+ // tables and disagreed on casing).
3599
+ // `plan.*` — the "N objects · N views · N dashboards" strip. Plural
3600
+ // FAMILIES: one slot per CLDR category the pack's language
3601
+ // selects (objectui#11432), plus the base key for a call
3602
+ // made without a count. `all-locales-key-parity.test.ts`
3603
+ // derives the required slots from `Intl.PluralRules`.
3604
+ //
3605
+ // objectui#7481 — five `tool.*` entries are NEWER than the registry above:
3606
+ // `get_authoring_rules` (cloud#1837), `load_tools`, `open_record`, `test_flow`
3607
+ // and `toggle_flow` are registered by cloud `service-ai-studio` but the pinned
3608
+ // `@objectstack/spec` snapshot does not list them yet. They are kept here on
3609
+ // purpose: a step label the user reads must not wait on a pin bump. When the
3610
+ // pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
3611
+ // against the registry instead of against its own hand-held list.
3612
+ chatbot: {
3613
+ answer: {
3614
+ showFull: 'عرض الإجابة كاملة',
3615
+ collapse: 'طي',
3616
+ expandTable: 'توسيع',
3617
+ exitExpandedTable: 'إغلاق',
3618
+ },
3619
+ tool: {
3620
+ aggregate_data: "تجميع البيانات ذات الصلة",
3621
+ get_record: "قراءة هذا السجل",
3622
+ query_data: "الاستعلام عن البيانات المطلوبة",
3623
+ query_records: "البحث عن السجلات المطابقة",
3624
+ search_knowledge: "البحث في قاعدة المعرفة عن معلومات",
3625
+ visualize_data: "عرض البيانات في رسم بياني",
3626
+ add_field: "إضافة حقل إلى الكائن",
3627
+ apply_blueprint: "بناء التطبيق وفق الخطة",
3628
+ apply_edit: "تطبيق هذا التغيير",
3629
+ create_metadata: "إنشاء عنصر بيانات وصفية",
3630
+ create_object: "إنشاء كائن جديد",
3631
+ create_package: "إنشاء حزمة جديدة",
3632
+ create_seed: "توليد بيانات تجريبية للكائنات",
3633
+ delete_field: "حذف أحد الحقول",
3634
+ describe_metadata: "مراجعة البيانات الوصفية",
3635
+ describe_object: "مراجعة بنية الكائن",
3636
+ get_active_package: "التحقق من الحزمة النشطة",
3637
+ get_authoring_rules: "الاطلاع على قواعد التأليف",
3638
+ get_metadata_schema: "الاطلاع على تنسيق البيانات الوصفية",
3639
+ get_package: "مراجعة معلومات الحزمة",
3640
+ list_metadata: "سرد البيانات الوصفية الموجودة",
3641
+ list_objects: "سرد الكائنات الموجودة",
3642
+ list_packages: "سرد الحزم الموجودة",
3643
+ load_tools: "تحميل أدوات إضافية",
3644
+ modify_field: "تعديل أحد الحقول",
3645
+ open_record: "فتح هذا السجل",
3646
+ propose_blueprint: "صياغة خطة التطبيق",
3647
+ set_active_package: "الانتقال إلى الحزمة المطلوبة",
3648
+ suggest_builder: "اقتراح البناء بالذكاء الاصطناعي",
3649
+ test_flow: "تشغيل تجريبي للتدفق",
3650
+ todo_write: "تدوين ما يجب التحقق منه لاحقًا",
3651
+ toggle_flow: "تشغيل التدفق أو إيقافه",
3652
+ update_metadata: "تحديث عنصر بيانات وصفية",
3653
+ validate_expression: "التحقق من صحة التعبير",
3654
+ verify_build: "مطابقة نتيجة البناء",
3655
+ },
3656
+ toolState: {
3657
+ agentActivity: "نشاط الوكيل",
3658
+ pending: "قيد الانتظار",
3659
+ running: "قيد التنفيذ",
3660
+ awaitingApproval: "بانتظار الموافقة",
3661
+ responded: "تمت الاستجابة",
3662
+ completed: "مكتمل",
3663
+ error: "خطأ",
3664
+ denied: "مرفوض",
3665
+ failed: "فشل",
3666
+ },
3667
+ phase: {
3668
+ build: "الإنشاء",
3669
+ design: "تصميم الخطة",
3670
+ stepCount: "{{count}} خطوات",
3671
+ stepCount_zero: "{{count}} خطوة",
3672
+ stepCount_one: "{{count}} خطوة",
3673
+ stepCount_two: "خطوتان ({{count}})",
3674
+ stepCount_few: "{{count}} خطوات",
3675
+ stepCount_many: "{{count}} خطوة",
3676
+ stepCount_other: "{{count}} خطوة",
3677
+ expand: "إظهار الخطوات",
3678
+ collapse: "إخفاء الخطوات",
3679
+ },
3680
+ plan: {
3681
+ countObjects: "{{count}} كائنات",
3682
+ countObjects_zero: "{{count}} كائن",
3683
+ countObjects_one: "{{count}} كائن",
3684
+ countObjects_two: "كائنان ({{count}})",
3685
+ countObjects_few: "{{count}} كائنات",
3686
+ countObjects_many: "{{count}} كائنًا",
3687
+ countObjects_other: "{{count}} كائن",
3688
+ countViews: "{{count}} طرق عرض",
3689
+ countViews_zero: "{{count}} طريقة عرض",
3690
+ countViews_one: "{{count}} طريقة عرض",
3691
+ countViews_two: "طريقتا عرض ({{count}})",
3692
+ countViews_few: "{{count}} طرق عرض",
3693
+ countViews_many: "{{count}} طريقة عرض",
3694
+ countViews_other: "{{count}} طريقة عرض",
3695
+ countDashboards: "{{count}} لوحات معلومات",
3696
+ countDashboards_zero: "{{count}} لوحة معلومات",
3697
+ countDashboards_one: "{{count}} لوحة معلومات",
3698
+ countDashboards_two: "لوحتا معلومات ({{count}})",
3699
+ countDashboards_few: "{{count}} لوحات معلومات",
3700
+ countDashboards_many: "{{count}} لوحة معلومات",
3701
+ countDashboards_other: "{{count}} لوحة معلومات",
3702
+ countSeedData: "بيانات تجريبية",
3703
+ extendTarget: "إضافة إلى التطبيق الحالي: {{app}}",
3704
+ awaitingConfirm: "بانتظار التأكيد",
3705
+ objectsAndFields: "الكائنات والحقول",
3706
+ views: "طرق العرض",
3707
+ suggestedField: "مقترح",
3708
+ nameField: "الاسم: {{field}}",
3709
+ },
3710
+ build: {
3711
+ building: "جارٍ إنشاء {{app}}…",
3712
+ built: "تم إنشاء {{app}}",
3713
+ builtAndLive: "تم الإنشاء والنشر · {{app}}",
3714
+ appFallback: "تطبيقك",
3715
+ addingSampleData: "جارٍ إضافة بيانات تجريبية",
3716
+ group: {
3717
+ object: "الكائنات",
3718
+ view: "طرق العرض",
3719
+ dashboard: "لوحات المعلومات",
3720
+ app: "التطبيق",
3721
+ seed: "بيانات تجريبية",
3722
+ },
3723
+ moreArtifacts: "+{{n}} أخرى",
3724
+ verifying: "جارٍ التحقق من التغيير…",
3725
+ verifyStep: "الخطوة {{n}}",
3726
+ verified: "تم التحقق من التغيير",
3727
+ unknownPhase: "مرحلة إنشاء غير معروفة",
3728
+ nextStepsLead: "بعد ذلك يمكنك أن تقول: {{steps}}",
3729
+ nextStepQuote: "«{{step}}»",
3730
+ draftPosture: "تُحفظ التغييرات اللاحقة كمسودات، وأنت من ينشرها في Studio.",
3731
+ checksPassed: "اجتازت الفحوصات {{passed}}/{{total}}",
3732
+ },
3733
+ changes: {
3734
+ planTitle: "خطة التغييرات · {{count}} تغييرات",
3735
+ planTitle_zero: "خطة التغييرات · {{count}} تغيير",
3736
+ planTitle_one: "خطة التغييرات · {{count}} تغيير",
3737
+ planTitle_two: "خطة التغييرات · تغييران ({{count}})",
3738
+ planTitle_few: "خطة التغييرات · {{count}} تغييرات",
3739
+ planTitle_many: "خطة التغييرات · {{count}} تغييرًا",
3740
+ planTitle_other: "خطة التغييرات · {{count}} تغيير",
3741
+ saveDraft: "حفظ كمسودة",
3742
+ reviewAndPublish: "مراجعة التغييرات ونشرها",
3743
+ undo: "تراجع",
3744
+ undoWithOthers: "تراجع (مع {{count}} مسودات أخرى)",
3745
+ undoWithOthers_zero: "تراجع (مع {{count}} مسودة أخرى)",
3746
+ undoWithOthers_one: "تراجع (مع {{count}} مسودة أخرى)",
3747
+ undoWithOthers_two: "تراجع (مع مسودتين أخريين: {{count}})",
3748
+ undoWithOthers_few: "تراجع (مع {{count}} مسودات أخرى)",
3749
+ undoWithOthers_many: "تراجع (مع {{count}} مسودة أخرى)",
3750
+ undoWithOthers_other: "تراجع (مع {{count}} مسودة أخرى)",
3751
+ undoConfirm: "يؤدي التراجع إلى حذف جميع المسودات غير المنشورة في هذه الحزمة وعددها {{total}}، منها {{count}} لا تخص هذا التغيير.",
3752
+ undoConfirm_zero: "يؤدي التراجع إلى حذف جميع المسودات غير المنشورة في هذه الحزمة وعددها {{total}}، منها {{count}} لا تخص هذا التغيير.",
3753
+ undoConfirm_one: "يؤدي التراجع إلى حذف جميع المسودات غير المنشورة في هذه الحزمة وعددها {{total}}، منها {{count}} لا تخص هذا التغيير.",
3754
+ undoConfirm_two: "يؤدي التراجع إلى حذف جميع المسودات غير المنشورة في هذه الحزمة وعددها {{total}}، منها {{count}} لا تخص هذا التغيير.",
3755
+ undoConfirm_few: "يؤدي التراجع إلى حذف جميع المسودات غير المنشورة في هذه الحزمة وعددها {{total}}، منها {{count}} لا تخص هذا التغيير.",
3756
+ undoConfirm_many: "يؤدي التراجع إلى حذف جميع المسودات غير المنشورة في هذه الحزمة وعددها {{total}}، منها {{count}} لا تخص هذا التغيير.",
3757
+ undoConfirm_other: "يؤدي التراجع إلى حذف جميع المسودات غير المنشورة في هذه الحزمة وعددها {{total}}، منها {{count}} لا تخص هذا التغيير.",
3758
+ undoConfirmUnknown: "يؤدي التراجع إلى حذف جميع المسودات غير المنشورة في هذه الحزمة، وليس هذا التغيير فقط.",
3759
+ undoConfirmAction: "تراجع عن الكل",
3760
+ undoCancel: "إلغاء",
3761
+ undoing: "جارٍ التراجع…",
3762
+ undone: "تم التراجع",
3763
+ undoFailed: "تعذّر التراجع",
3764
+ kind: {
3765
+ field: "حقل",
3766
+ object: "كائن",
3767
+ view: "طريقة عرض",
3768
+ dashboard: "لوحة معلومات",
3769
+ app: "تطبيق",
3770
+ seed: "بيانات تجريبية",
3771
+ package: "حزمة التطبيق",
3772
+ },
3773
+ },
3774
+ },
2777
3775
  chatbotError: {
2778
3776
  title: "فشل الرد",
2779
3777
  fallbackDetail: "حدث خطأ ما. يرجى المحاولة مرة أخرى.",
@@ -2787,10 +3785,13 @@ const ar = {
2787
3785
  buyCredits: "شراء باقة أرصدة",
2788
3786
  upgradePlan: "ترقية الخطة",
2789
3787
  },
3788
+ planTier: {
3789
+ teamAndUp: "خطة Team وما فوقها",
3790
+ },
2790
3791
  environment: {
2791
- addEnvironment: "إضافة بيئة",
2792
3792
  setUpProduction: "إعداد بيئة الإنتاج",
2793
3793
  addDevelopment: "إضافة بيئة تطوير",
3794
+ developmentLocked: "بيئات التطوير · {{tier}}",
2794
3795
  // Plan/capacity dialog (EnvironmentEntitlementDialog) — cloud#959.
2795
3796
  entitlement: {
2796
3797
  productionLimitTitle: "لديك بالفعل بيئة الإنتاج الخاصة بك",
@@ -2838,7 +3839,7 @@ const ar = {
2838
3839
  },
2839
3840
  unbound: {
2840
3841
  title: "غير متصل",
2841
- body: "اربط بيئة التشغيل هذه بمستوى تحكم ObjectStack لتصفّح الحزم الخاصة بمؤسستك وتثبيتها هنا. الموافقة بنقرة واحدة في حسابك السحابي — دون إدخال أي معرّفات أو بيانات اعتماد في هذه الصفحة.",
3842
+ body: "بيئة التشغيل هذه غير متصلة بأي مستوى تحكم. يفتح «اتصال» حسابك السحابي في نافذة جديدة، حيث تتم الموافقة على الربط بنقرة واحدة — دون إدخال أي معرّفات أو بيانات اعتماد في هذه الصفحة.",
2842
3843
  connect: "اتصال",
2843
3844
  },
2844
3845
  },
@@ -2851,10 +3852,17 @@ const ar = {
2851
3852
  dismiss: "تجاهل",
2852
3853
  confirmedToast: "تم الآن منح «{{set}}» إلى {{anchor}}.",
2853
3854
  dismissedToast: "تم تجاهل اقتراح «{{set}}».",
3855
+ guestUnsupported: "لا يمكن المنح هنا: لا تُشتق مجموعات موضع Guest من الاقتراحات المقبولة.",
3856
+ acceptedState: "تم قبول «{{set}}» لجميع المستخدمين المسجّلين (موضع Everyone).",
3857
+ notInForceState: "تم قبول «{{set}}»، لكنه لم يسرِ بعد: لم يتغير موضع Everyone في هذا الطلب. يوضّح سجل الخادم السبب.",
3858
+ dismissedState: "«{{set}}» غير ممنوح: تم تجاهل الاقتراح أو إلغاؤه.",
3859
+ revoke: "إلغاء",
3860
+ revoking: "جارٍ الإلغاء…",
3861
+ revokedToast: "تم إلغاء قبول «{{set}}».",
2854
3862
  },
2855
3863
  title: "سوق التطبيقات",
2856
3864
  subtitle: "استعرض التطبيقات المعتمدة المنشورة في كتالوج ObjectStack. انقر على تطبيق لرؤية التفاصيل وتثبيته في أحد بيئاتك.",
2857
- searchPlaceholder: "ابحث عن التطبيقات بالاسم أو معرف المانيفست…",
3865
+ searchPlaceholder: 'ابحث عن التطبيقات بالاسم أو معرف التطبيق…',
2858
3866
  searchAria: "البحث في تطبيقات السوق",
2859
3867
  installed: "مثبت",
2860
3868
  installedCount: "مثبت ({{count}})",
@@ -2864,21 +3872,26 @@ const ar = {
2864
3872
  noMatchFilters: "لا توجد تطبيقات تطابق الفلاتر.",
2865
3873
  noDescription: "لا وصف متاح.",
2866
3874
  back: "العودة إلى السوق",
2867
- installedTitle: "التطبيقات المثبتة",
2868
- installedSubtitle: "حزم السوق المثبتة حالياً في نواة هذا الوقت التشغيل.",
2869
- installedEmpty: "لا توجد تطبيقات سوق مثبتة في هذا الوقت التشغيل بعد.",
2870
3875
  browseLink: "استعراض السوق →",
2871
- installedAdditiveNote: "<strong>ملاحظة:</strong> واجهة برمجة النواة إضافية فقط — إلغاء التثبيت يزيل المانيفست من القرص لكي لا يتم تحميل الحزمة عند التشغيل التالي، لكن النواة الجارية تبقي التطبيق مسجلاً حتى إعادة التشغيل.",
2872
- installedAt: "تم التثبيت {{when}}",
2873
- installedBy: "بواسطة {{user}}",
2874
- installedPackageId: "الحزمة",
2875
- cachedAs: "مخزن مؤقتاً كـ <code>{{path}}</code>",
3876
+ installedAdditiveNote: "يزيل إلغاء التثبيت التطبيق من النواة الجارية فوراً، ومعه مجموعات الأذونات الخاصة به وتعييناتها، ويحذف المانيفست المخزن مؤقتاً لكي لا يتم تحميل الحزمة عند التشغيل التالي. تبقى السجلات المخزنة في كائناته في قاعدة البيانات.",
2876
3877
  versionBadge: "v{{version}}",
2877
3878
  installedBadge: "مثبت v{{version}}",
3879
+ // objectui#11645 — an install-local entry this runtime refused to load at
3880
+ // startup (the listing's `notLoaded` marker), read on Installed Apps.
3881
+ notLoaded: {
3882
+ badge: "غير محمّل",
3883
+ protocolIncompatible: "لم يقم وقت التشغيل هذا بتحميل هذه الحزمة: فهي تستهدف البروتوكول {{requiredRange}}، وهو بروتوكول لا يدعمه وقت التشغيل هذا.",
3884
+ otherReason: "لم يقم وقت التشغيل هذا بتحميل هذه الحزمة ({{code}}).",
3885
+ },
2878
3886
  load: {
2879
3887
  failed: "تعذر تحميل السوق",
2880
3888
  failedHintConfigured: "يصل وقت التشغيل هذا إلى السوق عبر مستوى التحكم على {{url}}. تحقق من أنه متصل بالإنترنت ويمكن الوصول إليه من هنا.",
2881
- failedHintSameOrigin: "يقدّم وقت التشغيل هذا كتالوج السوق بنفسه. تأكد من أن وقت التشغيل متصل بالإنترنت.",
3889
+ failedHintSameOrigin: "يتم الوصول إلى كتالوج السوق عبر وقت التشغيل هذا. تأكد من أن وقت التشغيل متصل بالإنترنت ويمكنه الوصول إلى الكتالوج.",
3890
+ loading: "جارٍ تحميل كتالوج السوق…",
3891
+ slow: "لا يزال التحميل جاريًا — كتالوج السوق بطيء في الاستجابة.",
3892
+ retry: "إعادة المحاولة",
3893
+ unreachable: "تعذر الوصول إلى كتالوج السوق.",
3894
+ answeredError: "استجاب كتالوج السوق بخطأ (HTTP {{status}}).",
2882
3895
  packageFailed: "تعذر تحميل الحزمة",
2883
3896
  notFound: "غير موجود.",
2884
3897
  },
@@ -2902,10 +3915,23 @@ const ar = {
2902
3915
  purgeSampleData: 'حذف البيانات التجريبية',
2903
3916
  purgeConfirm: 'حذف جميع السجلات التجريبية التي أنشأتها هذه الحزمة؟ لن تتأثر السجلات التي أضافها المستخدم.',
2904
3917
  purgeSuccess: 'تم حذف {{count}} سجل تجريبي.',
3918
+ purgeSuccess_zero: 'تم حذف {{count}} سجل تجريبي.',
3919
+ purgeSuccess_one: 'تم حذف {{count}} سجل تجريبي.',
3920
+ purgeSuccess_two: 'تم حذف سجلين تجريبيين ({{count}}).',
3921
+ purgeSuccess_few: 'تم حذف {{count}} سجلات تجريبية.',
3922
+ purgeSuccess_many: 'تم حذف {{count}} سجلًا تجريبيًا.',
3923
+ purgeSuccess_other: 'تم حذف {{count}} سجل تجريبي.',
2905
3924
  purgeNoData: 'لا توجد سجلات تجريبية للحذف.',
2906
3925
  reseedQueued: 'ستتم إعادة تحميل البيانات التجريبية عند الوصول التالي إلى البيئة.',
2907
3926
  reseedLocalSuccess: 'تمت إعادة تحميل البيانات التجريبية: {{inserted}} مضافة، {{updated}} محدثة.',
2908
3927
  reseedPartialErrors: '(فشل في كتابة {{count}} سجل)',
3928
+ reseedPartialErrors_zero: '(فشل في كتابة {{count}} سجل)',
3929
+ reseedPartialErrors_one: '(فشل في كتابة {{count}} سجل)',
3930
+ reseedPartialErrors_two: '(فشل في كتابة سجلين: {{count}})',
3931
+ reseedPartialErrors_few: '(فشل في كتابة {{count}} سجلات)',
3932
+ reseedPartialErrors_many: '(فشل في كتابة {{count}} سجلًا)',
3933
+ reseedPartialErrors_other: '(فشل في كتابة {{count}} سجل)',
3934
+ sampleDataKernelUnavailable: 'لا يحتوي مستوى التحكم هذا على نواة بيئة، لذا لا يمكن إعادة تحميل البيانات التجريبية أو حذفها من هنا. نفّذ ذلك من وقت التشغيل الخاص بالبيئة نفسها.',
2909
3935
  updateAvailable: 'يتوفر تحديث',
2910
3936
  },
2911
3937
  action: {
@@ -2915,6 +3941,7 @@ const ar = {
2915
3941
  working: "جارٍ المعالجة…",
2916
3942
  installToCloud: "تثبيت في السحابة…",
2917
3943
  installing: "جارٍ التثبيت…",
3944
+ updating: "جارٍ التحديث…",
2918
3945
  uninstall: "إلغاء التثبيت",
2919
3946
  uninstalling: "جارٍ إلغاء التثبيت…",
2920
3947
  details: "التفاصيل",
@@ -2932,15 +3959,45 @@ const ar = {
2932
3959
  environmentPlaceholder: "تحديد بيئة",
2933
3960
  includeSampleData: "تضمين بيانات نموذجية",
2934
3961
  noEnvs: "لم يتم العثور على بيئات في مؤسستك النشطة.",
2935
- noPermission: "ليس لديك إذن لتثبيت التطبيقات. فقط مالكو المؤسسة والمشرفون يمكنهم التثبيت.",
3962
+ noPermission: "ليس لديك إذن لتثبيت التطبيقات. فقط مالكو المؤسسة والمشرفون يمكنهم التثبيت — تواصل مع مشرف مؤسستك.",
2936
3963
  signInFirst: "يجب عليك أولاً تسجيل الدخول إلى ObjectStack Cloud.",
2937
3964
  success: "تم التثبيت بنجاح. افتح البيئة لرؤية التطبيق الجديد.",
2938
3965
  localSuccess: "تم تثبيت v{{version}} في هذا الوقت التشغيل. يجب أن يظهر \"{{name}}\" الآن في مبدّل التطبيقات.",
3966
+ localLoadsAtRestart: "تم تثبيت v{{version}} في وقت التشغيل هذا. سيُحمَّل \"{{name}}\" عند إعادة التشغيل التالية لوقت التشغيل، ولن يظهر في مبدّل التطبيقات قبل ذلك.",
2939
3967
  localManifestConflict: "{{message}}\nملاحظة: تطبيق محلي يمتلك بالفعل هذا المعرف. أزله أولاً من objectstack.config.ts.",
2940
3968
  localUnauthorized: "سجل الدخول إلى هذا الوقت التشغيل أولاً.",
2941
3969
  localMarketplaceUnavailable: "هذا الوقت التشغيل لا يحتوي على OS_CLOUD_URL مُهيأ.",
2942
3970
  updateTo: "تحديث → v{{version}}",
2943
3971
  installedVersion: "مثبت v{{version}}",
3972
+ deploying: "جارٍ نشر التطبيق…",
3973
+ deployed: "تم نشر التطبيق وهو جاهز.",
3974
+ openApp: "فتح {{name}}",
3975
+ deployTimeout: "تم تسجيل التثبيت، لكن هذه البيئة لا تقدّم التطبيق بعد. قد يكون النشر لا يزال جاريًا — تحقّق مرة أخرى بعد قليل. إذا لم يظهر أبدًا، فربما لم تُحمَّل الحزمة، أو لا تتضمن أي تطبيق، أو يتطلب تطبيقها إذنًا لا تملكه.",
3976
+ checkAgain: "تحقّق مرة أخرى",
3977
+ // ADR-0131 D6 — the install modes a package's manifest permits, and
3978
+ // what an unmanaged install answers (MarketplacePackagePage).
3979
+ mode: {
3980
+ label: "طريقة التثبيت",
3981
+ managed: "مُدار",
3982
+ managedHint: "تبقى الحزمة هي المرجع: تُسجَّل كتعليمات برمجية وتتلقى ترقياتها، ولا تُحرَّر عناصرها هنا.",
3983
+ unmanaged: "نسخة غير مُدارة",
3984
+ unmanagedHint: "تُنسخ مرة واحدة إلى وقت التشغيل هذا كبيانات وصفية خاصة به: كل عنصر قابل للتحرير هنا، ولا تتلقى النسخة أي ترقية.",
3985
+ required: "اختر طريقة التثبيت لتثبيت هذه الحزمة.",
3986
+ },
3987
+ unmanagedSuccess: "تم نسخ v{{version}} من \"{{name}}\" إلى وقت التشغيل هذا كبيانات وصفية خاصة به، في القاعدة {{base}}. النسخة قابلة للتحرير ولا تتلقى أي ترقية.",
3988
+ unmanagedStrippedLocks: "كانت الحزمة تقفل هذه العناصر. النسخة قابلة للتحرير، لذلك لم تُنسخ أقفالها:",
3989
+ unmanagedIgnored: "لا يدعم وقت التشغيل هذا التثبيت غير المُدار، لذلك ثُبّت \"{{name}}\" كحزمة مُدارة (مسجّلة كتعليمات برمجية) بدلاً من نسخه. رقِّ وقت التشغيل، ثم ألغِ تثبيت الحزمة وثبّتها مرة أخرى كنسخة غير مُدارة.",
3990
+ },
3991
+ // objectui#12146 — the install dialog opened as an UPDATE of the copy
3992
+ // this environment holds (MarketplacePackagePage).
3993
+ update: {
3994
+ dialogTitle: "تحديث {{name}}",
3995
+ dialogDescCurrent: "تحديث النسخة المثبتة في هذه البيئة ({{host}}).",
3996
+ dialogDescPicker: "اختر البيئة التي تريد تحديث النسخة المثبتة فيها. يجب أن تكون مسجلاً في ObjectStack Cloud.",
3997
+ majorNotice: "هذا تحديث إلى إصدار رئيسي جديد (v{{fromMajor}} → v{{toMajor}})، وقد يتضمن تغييرات غير متوافقة.",
3998
+ releaseNotes: "اقرأ ملاحظات الإصدار v{{version}}",
3999
+ success: "تم التحديث إلى v{{version}}.",
4000
+ deployTimeout: "تم تسجيل التحديث، لكن هذه البيئة لا تقدّم v{{version}} بعد. قد يكون النشر لا يزال جاريًا — تحقّق مرة أخرى بعد قليل.",
2944
4001
  },
2945
4002
  // objectui#3546 — the MarketplacePage "Your organization" strip.
2946
4003
  org: {
@@ -2958,7 +4015,8 @@ const ar = {
2958
4015
  reviewed: "تمت المراجعة والموافقة",
2959
4016
  unreviewed: "لم تتم المراجعة بعد",
2960
4017
  signed: "موقَّع",
2961
- grantsIntro: "عند التثبيت، ستُمنح هذه الحزمة:",
4018
+ grantsIntro: "تطلب هذه الحزمة:",
4019
+ notEnforced: "تُسجَّل هذه القائمة عند التثبيت ويُعاد تأكيدها إذا طلب إصدار لاحق المزيد، لكن بيئة التشغيل لا تقصر الحزمة على هذه القائمة بعد.",
2962
4020
  services: "خدمات المنصة",
2963
4021
  hooks: "خطافات دورة الحياة",
2964
4022
  network: "الوصول إلى الشبكة",
@@ -2972,9 +4030,11 @@ const ar = {
2972
4030
  },
2973
4031
  },
2974
4032
  uninstall: {
2975
- confirm: "إلغاء تثبيت {{manifestId}} v{{version}} من هذا الوقت التشغيل؟\n\nسيتم إزالة المانيفست المخزن مؤقتاً.",
2976
- successInList: "تم إزالة {{manifestId}}. أعد تشغيل الوقت التشغيل لتفريغه بالكامل.",
2977
- successInDetail: "تم إزالة المانيفست المخزن مؤقتاً لـ {{manifestId}}.",
4033
+ confirm: "إلغاء تثبيت {{manifestId}} v{{version}} من وقت التشغيل هذا؟\n\nستتم إزالة التطبيق من النواة الجارية فوراً، ومعه مجموعات الأذونات الخاصة به وتعييناتها، وستتم إزالة المانيفست المخزن مؤقتاً. تبقى السجلات المخزنة في كائناته في قاعدة البيانات.",
4034
+ successInList: "تمت إزالة {{manifestId}}: خرج التطبيق من النواة الجارية، ومعه مجموعات الأذونات الخاصة به وتعييناتها. تبقى السجلات المخزنة في كائناته في قاعدة البيانات.",
4035
+ successInDetail: "تمت إزالة {{manifestId}} والمانيفست المخزن مؤقتاً الخاص به: خرج التطبيق من النواة الجارية، ومعه مجموعات الأذونات الخاصة به وتعييناتها. تبقى السجلات المخزنة في كائناته في قاعدة البيانات.",
4036
+ confirmNotLoaded: "إلغاء تثبيت {{manifestId}} v{{version}} من وقت التشغيل هذا؟\n\nسيتم إزالة المانيفست المخزن مؤقتاً. لم يقم وقت التشغيل هذا بتحميل الحزمة، لذا لا يعمل أي جزء منها.",
4037
+ successNotLoaded: "تمت إزالة {{manifestId}}. لم تكن الحزمة محمّلة، لذا لا حاجة لإعادة التشغيل.",
2978
4038
  },
2979
4039
  accessDenied: {
2980
4040
  title: "سوق التطبيقات للمشرفين فقط",
@@ -2997,30 +4057,27 @@ const ar = {
2997
4057
  storage: "التخزين",
2998
4058
  other: "أخرى",
2999
4059
  },
3000
- pricing: {
3001
- free: "مجاني",
3002
- freemium: "مجاني جزئياً",
3003
- paid: "مدفوع",
3004
- subscription: "اشتراك",
3005
- "usage-based": "حسب الاستخدام",
3006
- "contact-sales": "تواصل مع المبيعات",
3007
- },
3008
4060
  relativeTime: {
3009
4061
  today: "اليوم",
3010
4062
  daysAgo: "منذ {{count}} ي",
3011
4063
  monthsAgo: "منذ {{count}} شهر(أشهر)",
4064
+ monthsAgo_zero: "منذ {{count}} شهر",
4065
+ monthsAgo_one: "منذ {{count}} شهر",
4066
+ monthsAgo_two: "منذ شهرين ({{count}})",
4067
+ monthsAgo_few: "منذ {{count}} أشهر",
4068
+ monthsAgo_many: "منذ {{count}} شهرًا",
4069
+ monthsAgo_other: "منذ {{count}} شهر",
3012
4070
  yearsAgo: "منذ {{count}} سنة(سنوات)",
4071
+ yearsAgo_zero: "منذ {{count}} سنة",
4072
+ yearsAgo_one: "منذ {{count}} سنة",
4073
+ yearsAgo_two: "منذ سنتين ({{count}})",
4074
+ yearsAgo_few: "منذ {{count}} سنوات",
4075
+ yearsAgo_many: "منذ {{count}} سنة",
4076
+ yearsAgo_other: "منذ {{count}} سنة",
3013
4077
  },
3014
4078
  },
3015
- approvals: {
3016
- approve: 'الموافقة',
3017
- reject: 'رفض',
3018
- comment: 'تعليق (اختياري)',
3019
- approveSuccess: 'تمت الموافقة',
3020
- rejectSuccess: 'تم الرفض',
3021
- rejectConfirm: 'هل تريد رفض طلب الموافقة هذا؟',
3022
- },
3023
4079
  approvalsInbox: {
4080
+ recordUnresolvable: 'لا يمكن فتح هذا السجل',
3024
4081
  loadMore: 'تحميل المزيد',
3025
4082
  loadingMore: 'جارٍ التحميل…',
3026
4083
  loadedOf: 'تم تحميل {{loaded}} من {{total}}',
@@ -3039,6 +4096,12 @@ const ar = {
3039
4096
  requestInfoSent: 'أُعيد إلى مقدم الطلب لاستكمال المعلومات',
3040
4097
  remindBtn: 'تذكير',
3041
4098
  remindSuccess: 'أُرسل تذكير إلى {{count}} موافق',
4099
+ remindSuccess_zero: 'أُرسل تذكير إلى {{count}} موافق',
4100
+ remindSuccess_one: 'أُرسل تذكير إلى {{count}} موافق',
4101
+ remindSuccess_two: 'أُرسل تذكير إلى موافقَين ({{count}})',
4102
+ remindSuccess_few: 'أُرسل تذكير إلى {{count}} موافقين',
4103
+ remindSuccess_many: 'أُرسل تذكير إلى {{count}} موافقًا',
4104
+ remindSuccess_other: 'أُرسل تذكير إلى {{count}} موافق',
3042
4105
  remindThrottled: 'أُرسل تذكير مؤخرًا — حاول لاحقًا.',
3043
4106
  replyPlaceholder: 'الرد على هذا الطلب…',
3044
4107
  slaRemaining: 'SLA المتبقي {{dur}}',
@@ -3055,8 +4118,15 @@ const ar = {
3055
4118
  progressApprovals: 'الموافقات — {{got}} من {{need}}',
3056
4119
  progressGroups: 'تقدم التوقيعات — {{got}} من {{need}} مجموعات',
3057
4120
  progressEligible: '{{count}} معتمِد مؤهل',
4121
+ progressEligible_zero: '{{count}} معتمِد مؤهل',
4122
+ progressEligible_one: '{{count}} معتمِد مؤهل',
4123
+ progressEligible_two: 'معتمِدان مؤهلان ({{count}})',
4124
+ progressEligible_few: '{{count}} معتمِدين مؤهلين',
4125
+ progressEligible_many: '{{count}} معتمِدًا مؤهلًا',
4126
+ progressEligible_other: '{{count}} معتمِد مؤهل',
3058
4127
  progressBar: 'تقدم القرار',
3059
4128
  declaredActions: 'الإجراءات',
4129
+ decisionPanelOffRequestPage: 'لوحة قرار الموافقة تعمل فقط في صفحات طلبات الموافقة.',
3060
4130
  attachmentChip: 'مرفق',
3061
4131
  attachmentOpenFailed: 'تعذّر فتح المرفق — يرجى المحاولة مرة أخرى',
3062
4132
  approveOneTitle: 'الموافقة على "{{title}}"؟',
@@ -3086,6 +4156,12 @@ const ar = {
3086
4156
  filterCount: '{{shown}} من {{total}}',
3087
4157
  selected: 'محدد',
3088
4158
  actionableCount: '({{count}} قابلة للتنفيذ)',
4159
+ actionableCount_zero: '({{count}} قابلة للتنفيذ)',
4160
+ actionableCount_one: '({{count}} قابلة للتنفيذ)',
4161
+ actionableCount_two: '({{count}} قابلة للتنفيذ)',
4162
+ actionableCount_few: '({{count}} قابلة للتنفيذ)',
4163
+ actionableCount_many: '({{count}} قابلة للتنفيذ)',
4164
+ actionableCount_other: '({{count}} قابلة للتنفيذ)',
3089
4165
  selectAll: 'تحديد الكل',
3090
4166
  selectRow: 'تحديد الطلب',
3091
4167
  colRequest: 'الطلب',
@@ -3120,6 +4196,13 @@ const ar = {
3120
4196
  emptyPending: 'كل شيء منجز — لا يوجد ما ينتظر موافقتك.',
3121
4197
  emptyOther: 'لا يوجد شيء هنا بعد.',
3122
4198
  emptyViewAll: 'عرض كل الطلبات',
4199
+ waitingOnOthers: "{{count}} طلب ينتظر موافقين آخرين",
4200
+ waitingOnOthers_zero: "{{count}} طلب ينتظر موافقين آخرين",
4201
+ waitingOnOthers_one: "طلب واحد ({{count}}) ينتظر موافقين آخرين",
4202
+ waitingOnOthers_two: "طلبان ({{count}}) ينتظران موافقين آخرين",
4203
+ waitingOnOthers_few: "{{count}} طلبات تنتظر موافقين آخرين",
4204
+ waitingOnOthers_many: "{{count}} طلبًا ينتظر موافقين آخرين",
4205
+ waitingOnOthers_other: "{{count}} طلب ينتظر موافقين آخرين",
3123
4206
  noMatches: 'لا نتائج مطابقة للمرشحات الحالية.',
3124
4207
  keyboardHint: 'لوحة المفاتيح: j/k تنقل · Enter فتح · x تحديد · a موافقة · r رفض',
3125
4208
  drawerTitle: 'طلب موافقة',
@@ -3137,12 +4220,12 @@ const ar = {
3137
4220
  overrideActionLabel: '{{action}} (تجاوز إداري)',
3138
4221
  overrideNotice: 'لا تشغل أي موقع موافِق في هذه الخطوة. المتابعة تستخدم تجاوزك الإداري: تُنهى الخطوة فورًا ويُتخطّى كل موافِق لم يتصرف بعد. يُسجَّل القرار بوصفه تجاوزًا إداريًا.',
3139
4222
  overrideNoticeWho: 'لا تشغل أي موقع موافِق في هذه الخطوة. المتابعة تستخدم تجاوزك الإداري: تُنهى الخطوة فورًا ويُتخطّى الموافقون الذين لم يتصرفوا بعد — {{who}}. يُسجَّل القرار بوصفه تجاوزًا إداريًا.',
4223
+ overrideReassignNotice: 'لا تشغل أي موقع موافِق في هذه الخطوة. المتابعة تستخدم تجاوزك الإداري: تنتقل الخطوة إلى الموافق الجديد الذي تختاره، ويحلّ محلّ كل موافِق لم يتصرف بعد. يبقى الطلب قيد الانتظار وينتظر الموافق الجديد. تُسجَّل إعادة الإسناد بوصفها تجاوزًا إداريًا.',
4224
+ overrideReassignNoticeWho: 'لا تشغل أي موقع موافِق في هذه الخطوة. المتابعة تستخدم تجاوزك الإداري: تنتقل الخطوة إلى الموافق الجديد الذي تختاره، ويحلّ محلّ الموافقين الذين لم يتصرفوا بعد — {{who}}. يبقى الطلب قيد الانتظار وينتظر الموافق الجديد. تُسجَّل إعادة الإسناد بوصفها تجاوزًا إداريًا.',
4225
+ overrideRecallNotice: 'لم تقدم هذا الطلب. المتابعة تستخدم تجاوزك الإداري: يُسحب الطلب، ولن يتمكن أي موافِق لم يتصرف بعد من التصرف فيه، ويُفتح قفل السجل.',
4226
+ overrideRecallNoticeWho: 'لم تقدم هذا الطلب. المتابعة تستخدم تجاوزك الإداري: يُسحب الطلب، ويُفتح قفل السجل، ولن يتمكن الموافقون الذين لم يتصرفوا بعد من التصرف فيه — {{who}}.',
3140
4227
  viaOverrideChip: 'تجاوز إداري',
3141
4228
  viaOverrideHint: 'لم يكن للمنفِّذ موقع موافِق في هذه الخطوة — سُمح له عبر مسار التجاوز الإداري.',
3142
- rawData: 'البيانات الخام (JSON)',
3143
- copy: 'نسخ',
3144
- copied: 'تم النسخ',
3145
- copyFailed: 'فشل النسخ',
3146
4229
  overrideActor: 'التصرف بهوية أخرى (مسؤول)',
3147
4230
  actor: 'الهوية',
3148
4231
  auto: 'تلقائي',
@@ -3159,11 +4242,35 @@ const ar = {
3159
4242
  approveN: 'الموافقة على {{count}}',
3160
4243
  rejectN: 'رفض {{count}}',
3161
4244
  bulkApproveTitle: 'الموافقة على {{count}} طلبات؟',
4245
+ bulkApproveTitle_zero: 'الموافقة على {{count}} طلب؟',
4246
+ bulkApproveTitle_one: 'الموافقة على {{count}} طلب؟',
4247
+ bulkApproveTitle_two: 'الموافقة على طلبين ({{count}})؟',
4248
+ bulkApproveTitle_few: 'الموافقة على {{count}} طلبات؟',
4249
+ bulkApproveTitle_many: 'الموافقة على {{count}} طلبًا؟',
4250
+ bulkApproveTitle_other: 'الموافقة على {{count}} طلب؟',
3162
4251
  bulkApproveBody: 'ستتم الموافقة على كل طلب بهويتك ويتابع التدفق عبر فرع الموافقة.',
3163
4252
  bulkRejectTitle: 'رفض {{count}} طلبات؟',
4253
+ bulkRejectTitle_zero: 'رفض {{count}} طلب؟',
4254
+ bulkRejectTitle_one: 'رفض {{count}} طلب؟',
4255
+ bulkRejectTitle_two: 'رفض طلبين ({{count}})؟',
4256
+ bulkRejectTitle_few: 'رفض {{count}} طلبات؟',
4257
+ bulkRejectTitle_many: 'رفض {{count}} طلبًا؟',
4258
+ bulkRejectTitle_other: 'رفض {{count}} طلب؟',
3164
4259
  bulkRejectBody: 'سيتم رفض الطلبات المحددة وإخطار مقدميها.',
3165
4260
  bulkApproved: 'تمت الموافقة على {{count}} طلبات',
4261
+ bulkApproved_zero: 'تمت الموافقة على {{count}} طلب',
4262
+ bulkApproved_one: 'تمت الموافقة على {{count}} طلب',
4263
+ bulkApproved_two: 'تمت الموافقة على طلبين ({{count}})',
4264
+ bulkApproved_few: 'تمت الموافقة على {{count}} طلبات',
4265
+ bulkApproved_many: 'تمت الموافقة على {{count}} طلبًا',
4266
+ bulkApproved_other: 'تمت الموافقة على {{count}} طلب',
3166
4267
  bulkRejected: 'تم رفض {{count}} طلبات',
4268
+ bulkRejected_zero: 'تم رفض {{count}} طلب',
4269
+ bulkRejected_one: 'تم رفض {{count}} طلب',
4270
+ bulkRejected_two: 'تم رفض طلبين ({{count}})',
4271
+ bulkRejected_few: 'تم رفض {{count}} طلبات',
4272
+ bulkRejected_many: 'تم رفض {{count}} طلبًا',
4273
+ bulkRejected_other: 'تم رفض {{count}} طلب',
3167
4274
  bulkPartial: 'نجح {{ok}}، فشل {{fail}}: {{which}}',
3168
4275
  rejectOneTitle: 'رفض "{{title}}"؟',
3169
4276
  rejectOneBody: 'سيتم رفض الطلب وإخطار مقدمه.',
@@ -3188,8 +4295,26 @@ const ar = {
3188
4295
  alreadyDecided: 'تم البت في هذا الطلب بالفعل. حدّث القائمة.',
3189
4296
  justNow: 'الآن',
3190
4297
  minutesAgo: 'قبل {{count}} دقيقة',
4298
+ minutesAgo_zero: 'قبل {{count}} دقيقة',
4299
+ minutesAgo_one: 'قبل {{count}} دقيقة',
4300
+ minutesAgo_two: 'قبل دقيقتين ({{count}})',
4301
+ minutesAgo_few: 'قبل {{count}} دقائق',
4302
+ minutesAgo_many: 'قبل {{count}} دقيقة',
4303
+ minutesAgo_other: 'قبل {{count}} دقيقة',
3191
4304
  hoursAgo: 'قبل {{count}} ساعة',
4305
+ hoursAgo_zero: 'قبل {{count}} ساعة',
4306
+ hoursAgo_one: 'قبل {{count}} ساعة',
4307
+ hoursAgo_two: 'قبل ساعتين ({{count}})',
4308
+ hoursAgo_few: 'قبل {{count}} ساعات',
4309
+ hoursAgo_many: 'قبل {{count}} ساعة',
4310
+ hoursAgo_other: 'قبل {{count}} ساعة',
3192
4311
  daysAgo: 'قبل {{count}} يوم',
4312
+ daysAgo_zero: 'قبل {{count}} يوم',
4313
+ daysAgo_one: 'قبل {{count}} يوم',
4314
+ daysAgo_two: 'قبل يومين ({{count}})',
4315
+ daysAgo_few: 'قبل {{count}} أيام',
4316
+ daysAgo_many: 'قبل {{count}} يومًا',
4317
+ daysAgo_other: 'قبل {{count}} يوم',
3193
4318
  },
3194
4319
  preview: {
3195
4320
  empty: {
@@ -3210,6 +4335,13 @@ const ar = {
3210
4335
  publishing: 'جارٍ النشر…',
3211
4336
  exit: 'إنهاء المعاينة',
3212
4337
  changes: 'التغييرات',
4338
+ pendingHere: 'معاينة المسودة · {{count}} تغيير غير منشور في هذه الصفحة',
4339
+ pendingHere_zero: 'معاينة المسودة · {{count}} تغيير غير منشور في هذه الصفحة',
4340
+ pendingHere_one: 'معاينة المسودة · تغيير واحد غير منشور في هذه الصفحة ({{count}})',
4341
+ pendingHere_two: 'معاينة المسودة · تغييران غير منشورين في هذه الصفحة ({{count}})',
4342
+ pendingHere_few: 'معاينة المسودة · {{count}} تغييرات غير منشورة في هذه الصفحة',
4343
+ pendingHere_many: 'معاينة المسودة · {{count}} تغييرًا غير منشور في هذه الصفحة',
4344
+ pendingHere_other: 'معاينة المسودة · {{count}} تغيير غير منشور في هذه الصفحة',
3213
4345
  },
3214
4346
  changes: {
3215
4347
  title: 'التغييرات المعلّقة',
@@ -3224,11 +4356,129 @@ const ar = {
3224
4356
  detailNone: 'لم يتم اكتشاف اختلافات — المسودة مطابقة للنسخة المنشورة.',
3225
4357
  detailChangedKeys: 'تغييرات أخرى:',
3226
4358
  confirmNote: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4359
+ confirmNote_zero: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4360
+ confirmNote_one: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4361
+ confirmNote_two: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4362
+ confirmNote_few: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4363
+ confirmNote_many: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4364
+ confirmNote_other: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4365
+ // objectui#11591 — the package-less sheet: no package to batch, so each
4366
+ // draft publishes by itself and one that fails stays pending.
4367
+ confirmNoteSeparate: 'النشر يُصدر المسودات المعلقة ({{count}}) كلًّا على حدة: المسودة التي يتعذّر نشرها تبقى معلقة، وتُنشر البقية.',
4368
+ confirmNoteSeparate_zero: 'النشر يُصدر المسودات المعلقة ({{count}}) كلًّا على حدة: المسودة التي يتعذّر نشرها تبقى معلقة، وتُنشر البقية.',
4369
+ confirmNoteSeparate_one: 'النشر يُصدر المسودات المعلقة ({{count}}) كلًّا على حدة: المسودة التي يتعذّر نشرها تبقى معلقة، وتُنشر البقية.',
4370
+ confirmNoteSeparate_two: 'النشر يُصدر المسودات المعلقة ({{count}}) كلًّا على حدة: المسودة التي يتعذّر نشرها تبقى معلقة، وتُنشر البقية.',
4371
+ confirmNoteSeparate_few: 'النشر يُصدر المسودات المعلقة ({{count}}) كلًّا على حدة: المسودة التي يتعذّر نشرها تبقى معلقة، وتُنشر البقية.',
4372
+ confirmNoteSeparate_many: 'النشر يُصدر المسودات المعلقة ({{count}}) كلًّا على حدة: المسودة التي يتعذّر نشرها تبقى معلقة، وتُنشر البقية.',
4373
+ confirmNoteSeparate_other: 'النشر يُصدر المسودات المعلقة ({{count}}) كلًّا على حدة: المسودة التي يتعذّر نشرها تبقى معلقة، وتُنشر البقية.',
3227
4374
  publishConfirm: 'نشر الكل',
3228
- // [objectui#5418] Pre-publish security-posture findings, shown next to
4375
+ summaryItems: '{{count}} عنصر',
4376
+ summaryItems_zero: '{{count}} عنصر',
4377
+ summaryItems_one: 'عنصر واحد ({{count}})',
4378
+ summaryItems_two: 'عنصران ({{count}})',
4379
+ summaryItems_few: '{{count}} عناصر',
4380
+ summaryItems_many: '{{count}} عنصرًا',
4381
+ summaryItems_other: '{{count}} عنصر',
4382
+ summaryType: '{{type}} {{n}}',
4383
+ typeCount: {
4384
+ object: 'كائنات {{count}}',
4385
+ object_zero: 'كائنات {{count}}',
4386
+ object_one: 'كائن {{count}}',
4387
+ object_two: 'كائنات {{count}}',
4388
+ object_few: 'كائنات {{count}}',
4389
+ object_many: 'كائنات {{count}}',
4390
+ object_other: 'كائنات {{count}}',
4391
+ view: 'طرق عرض {{count}}',
4392
+ view_zero: 'طرق عرض {{count}}',
4393
+ view_one: 'عرض {{count}}',
4394
+ view_two: 'طرق عرض {{count}}',
4395
+ view_few: 'طرق عرض {{count}}',
4396
+ view_many: 'طرق عرض {{count}}',
4397
+ view_other: 'طرق عرض {{count}}',
4398
+ page: 'صفحات {{count}}',
4399
+ page_zero: 'صفحات {{count}}',
4400
+ page_one: 'صفحة {{count}}',
4401
+ page_two: 'صفحات {{count}}',
4402
+ page_few: 'صفحات {{count}}',
4403
+ page_many: 'صفحات {{count}}',
4404
+ page_other: 'صفحات {{count}}',
4405
+ dashboard: 'لوحات معلومات {{count}}',
4406
+ dashboard_zero: 'لوحات معلومات {{count}}',
4407
+ dashboard_one: 'لوحة معلومات {{count}}',
4408
+ dashboard_two: 'لوحات معلومات {{count}}',
4409
+ dashboard_few: 'لوحات معلومات {{count}}',
4410
+ dashboard_many: 'لوحات معلومات {{count}}',
4411
+ dashboard_other: 'لوحات معلومات {{count}}',
4412
+ app: 'تطبيقات {{count}}',
4413
+ app_zero: 'تطبيقات {{count}}',
4414
+ app_one: 'تطبيق {{count}}',
4415
+ app_two: 'تطبيقات {{count}}',
4416
+ app_few: 'تطبيقات {{count}}',
4417
+ app_many: 'تطبيقات {{count}}',
4418
+ app_other: 'تطبيقات {{count}}',
4419
+ action: 'إجراءات {{count}}',
4420
+ action_zero: 'إجراءات {{count}}',
4421
+ action_one: 'إجراء {{count}}',
4422
+ action_two: 'إجراءات {{count}}',
4423
+ action_few: 'إجراءات {{count}}',
4424
+ action_many: 'إجراءات {{count}}',
4425
+ action_other: 'إجراءات {{count}}',
4426
+ report: 'تقارير {{count}}',
4427
+ report_zero: 'تقارير {{count}}',
4428
+ report_one: 'تقرير {{count}}',
4429
+ report_two: 'تقارير {{count}}',
4430
+ report_few: 'تقارير {{count}}',
4431
+ report_many: 'تقارير {{count}}',
4432
+ report_other: 'تقارير {{count}}',
4433
+ flow: 'تدفقات {{count}}',
4434
+ flow_zero: 'تدفقات {{count}}',
4435
+ flow_one: 'تدفق {{count}}',
4436
+ flow_two: 'تدفقات {{count}}',
4437
+ flow_few: 'تدفقات {{count}}',
4438
+ flow_many: 'تدفقات {{count}}',
4439
+ flow_other: 'تدفقات {{count}}',
4440
+ permission: 'مجموعات أذونات {{count}}',
4441
+ permission_zero: 'مجموعات أذونات {{count}}',
4442
+ permission_one: 'مجموعة أذونات {{count}}',
4443
+ permission_two: 'مجموعات أذونات {{count}}',
4444
+ permission_few: 'مجموعات أذونات {{count}}',
4445
+ permission_many: 'مجموعات أذونات {{count}}',
4446
+ permission_other: 'مجموعات أذونات {{count}}',
4447
+ agent: 'وكلاء {{count}}',
4448
+ agent_zero: 'وكلاء {{count}}',
4449
+ agent_one: 'وكيل {{count}}',
4450
+ agent_two: 'وكلاء {{count}}',
4451
+ agent_few: 'وكلاء {{count}}',
4452
+ agent_many: 'وكلاء {{count}}',
4453
+ agent_other: 'وكلاء {{count}}',
4454
+ email_template: 'قوالب بريد إلكتروني {{count}}',
4455
+ email_template_zero: 'قوالب بريد إلكتروني {{count}}',
4456
+ email_template_one: 'قالب بريد إلكتروني {{count}}',
4457
+ email_template_two: 'قوالب بريد إلكتروني {{count}}',
4458
+ email_template_few: 'قوالب بريد إلكتروني {{count}}',
4459
+ email_template_many: 'قوالب بريد إلكتروني {{count}}',
4460
+ email_template_other: 'قوالب بريد إلكتروني {{count}}',
4461
+ },
4462
+ // objectui#12929 — the unchecked choice under an added object field whose
4463
+ // literal default the batch publish can write into the existing records.
4464
+ backfillOption: 'تعبئة القيمة الافتراضية — {{count}} سجل موجود',
4465
+ backfillOption_zero: 'تعبئة القيمة الافتراضية — {{count}} سجل موجود',
4466
+ backfillOption_one: 'تعبئة القيمة الافتراضية — سجل واحد موجود ({{count}})',
4467
+ backfillOption_two: 'تعبئة القيمة الافتراضية — سجلان موجودان ({{count}})',
4468
+ backfillOption_few: 'تعبئة القيمة الافتراضية — {{count}} سجلات موجودة',
4469
+ backfillOption_many: 'تعبئة القيمة الافتراضية — {{count}} سجلًا موجودًا',
4470
+ backfillOption_other: 'تعبئة القيمة الافتراضية — {{count}} سجل موجود',
4471
+ backfillOptionNoCount: 'تعبئة القيمة الافتراضية',
4472
+ // [`7a90afdf9`] Pre-publish security-posture findings, shown next to
3229
4473
  // the confirm button so a refusal the door would issue is read BEFORE
3230
4474
  // the click rather than as a toast after the batch rolled back.
3231
4475
  securityBlockTitle: 'سيتم رفض النشر — {{count}} عنصر (عناصر) بحاجة إلى قرار أولاً',
4476
+ securityBlockTitle_zero: 'سيتم رفض النشر — {{count}} عنصر بحاجة إلى قرار أولاً',
4477
+ securityBlockTitle_one: 'سيتم رفض النشر — {{count}} عنصر بحاجة إلى قرار أولاً',
4478
+ securityBlockTitle_two: 'سيتم رفض النشر — عنصران ({{count}}) بحاجة إلى قرار أولاً',
4479
+ securityBlockTitle_few: 'سيتم رفض النشر — {{count}} عناصر بحاجة إلى قرار أولاً',
4480
+ securityBlockTitle_many: 'سيتم رفض النشر — {{count}} عنصرًا بحاجة إلى قرار أولاً',
4481
+ securityBlockTitle_other: 'سيتم رفض النشر — {{count}} عنصر بحاجة إلى قرار أولاً',
3232
4482
  securityBlockWhere: 'أصلحه في الكائن ضمن الإعدادات ← مشاركة السجلات، ثم انشر مرة أخرى.',
3233
4483
  },
3234
4484
  // ADR-0045 — the materialized-but-unlisted app banner
@@ -3253,7 +4503,7 @@ const ar = {
3253
4503
  revertLabel: 'تم التراجع عن تغيير',
3254
4504
  applyLabel: 'تغيير من البناء',
3255
4505
  revert: 'تراجع',
3256
- items: 'عناصر',
4506
+ items: 'العناصر: {{count}}',
3257
4507
  revertAction: 'تراجع',
3258
4508
  reverted: 'تم التراجع — أُلغي التغيير.',
3259
4509
  revertFailed: 'فشل التراجع',
@@ -3282,28 +4532,32 @@ const ar = {
3282
4532
  rangeEnd: "إلى",
3283
4533
  operators: {
3284
4534
  equals: "يساوي",
3285
- notEquals: "لا يساوي",
4535
+ not_equals: "لا يساوي",
3286
4536
  contains: "يحتوي",
3287
- containsCaseInsensitive: "يحتوي (مع تجاهل حالة الأحرف)",
3288
- notContains: "لا يحتوي",
3289
- isEmpty: "فارغ",
3290
- isNotEmpty: "غير فارغ",
3291
- greaterThan: "أكبر من",
3292
- lessThan: "أصغر من",
3293
- greaterOrEqual: "أكبر من أو يساوي",
3294
- lessOrEqual: "أصغر من أو يساوي",
4537
+ icontains: "يحتوي (مع تجاهل حالة الأحرف)",
4538
+ not_contains: "لا يحتوي",
4539
+ is_empty: "فارغ",
4540
+ is_not_empty: "غير فارغ",
4541
+ greater_than: "أكبر من",
4542
+ less_than: "أصغر من",
4543
+ greater_than_or_equal: "أكبر من أو يساوي",
4544
+ less_than_or_equal: "أصغر من أو يساوي",
3295
4545
  before: "قبل",
3296
4546
  after: "بعد",
3297
4547
  between: "بين",
3298
4548
  in: "ضمن",
3299
- notIn: "ليس ضمن",
3300
- startsWith: "يبدأ بـ",
3301
- endsWith: "ينتهي بـ",
3302
- isNull: "يساوي null",
3303
- isNotNull: "لا يساوي null",
4549
+ not_in: "ليس ضمن",
4550
+ starts_with: "يبدأ بـ",
4551
+ ends_with: "ينتهي بـ",
4552
+ is_null: "يساوي null",
4553
+ is_not_null: "لا يساوي null",
3304
4554
  exists: "محدد",
3305
4555
  notExists: "غير محدد",
3306
4556
  },
4557
+ emptyCheckHint: {
4558
+ text: '"{{isEmpty}}" يطابق أيضًا النص الفارغ؛ "{{isNull}}" يطابق القيمة المفقودة فقط.',
4559
+ list: '"{{isEmpty}}" يطابق أيضًا القائمة الفارغة؛ "{{isNull}}" يطابق القيمة المفقودة فقط.',
4560
+ },
3307
4561
  },
3308
4562
  sortBuilder: {
3309
4563
  sortBy: "ترتيب حسب",
@@ -3315,8 +4569,16 @@ const ar = {
3315
4569
  removeSort: "إزالة الترتيب",
3316
4570
  },
3317
4571
  collaboration: {
3318
- commentCount: "{{count}} تعليقات",
3319
- commentCountOne: "{{count}} تعليق",
4572
+ // objectui#11445 — `commentCount` and `reactionCount` below are count
4573
+ // families: each of the six CLDR slots carries its own noun form, and the
4574
+ // base key, a count label, answers a call made without a count.
4575
+ commentCount: "عدد التعليقات: {{count}}",
4576
+ commentCount_zero: "{{count}} تعليق",
4577
+ commentCount_one: "{{count}} تعليق",
4578
+ commentCount_two: "تعليقان ({{count}})",
4579
+ commentCount_few: "{{count}} تعليقات",
4580
+ commentCount_many: "{{count}} تعليقًا",
4581
+ commentCount_other: "{{count}} تعليق",
3320
4582
  resolvedSuffix: " · تم الحل",
3321
4583
  sortComments: "ترتيب التعليقات",
3322
4584
  sortOldest: "الأقدم أولاً",
@@ -3325,11 +4587,34 @@ const ar = {
3325
4587
  reopen: "إعادة الفتح",
3326
4588
  justNow: "الآن",
3327
4589
  minutesAgo: "قبل {{count}} دقيقة",
4590
+ minutesAgo_zero: "قبل {{count}} دقيقة",
4591
+ minutesAgo_one: "قبل {{count}} دقيقة",
4592
+ minutesAgo_two: "قبل دقيقتين ({{count}})",
4593
+ minutesAgo_few: "قبل {{count}} دقائق",
4594
+ minutesAgo_many: "قبل {{count}} دقيقة",
4595
+ minutesAgo_other: "قبل {{count}} دقيقة",
3328
4596
  hoursAgo: "قبل {{count}} ساعة",
4597
+ hoursAgo_zero: "قبل {{count}} ساعة",
4598
+ hoursAgo_one: "قبل {{count}} ساعة",
4599
+ hoursAgo_two: "قبل ساعتين ({{count}})",
4600
+ hoursAgo_few: "قبل {{count}} ساعات",
4601
+ hoursAgo_many: "قبل {{count}} ساعة",
4602
+ hoursAgo_other: "قبل {{count}} ساعة",
3329
4603
  daysAgo: "قبل {{count}} يوم",
4604
+ daysAgo_zero: "قبل {{count}} يوم",
4605
+ daysAgo_one: "قبل {{count}} يوم",
4606
+ daysAgo_two: "قبل يومين ({{count}})",
4607
+ daysAgo_few: "قبل {{count}} أيام",
4608
+ daysAgo_many: "قبل {{count}} يومًا",
4609
+ daysAgo_other: "قبل {{count}} يوم",
3330
4610
  edited: "(تم التعديل)",
3331
- reactionCount: "{{count}} تفاعلات",
3332
- reactionCountOne: "{{count}} تفاعل",
4611
+ reactionCount: "عدد التفاعلات: {{count}}",
4612
+ reactionCount_zero: "{{count}} تفاعل",
4613
+ reactionCount_one: "{{count}} تفاعل",
4614
+ reactionCount_two: "تفاعلان ({{count}})",
4615
+ reactionCount_few: "{{count}} تفاعلات",
4616
+ reactionCount_many: "{{count}} تفاعلًا",
4617
+ reactionCount_other: "{{count}} تفاعل",
3333
4618
  addThumbsUp: "إضافة إعجاب",
3334
4619
  reply: "رد",
3335
4620
  reactThumbsUp: "التفاعل بإعجاب",
@@ -3339,10 +4624,22 @@ const ar = {
3339
4624
  replyingToComment: "الرد على التعليق…",
3340
4625
  commentPlaceholder: "أضف تعليقًا… (استخدم @ للإشارة)",
3341
4626
  send: "إرسال",
3342
- presentUserCount: "{{count}} مستخدمين متواجدين",
3343
- presentUserCountOne: "{{count}} مستخدم متواجد",
3344
- moreUserCount: "{{count}} مستخدمين آخرين",
3345
- moreUserCountOne: "{{count}} مستخدم آخر",
4627
+ // objectui#11445 — the presence stack's name and its overflow badge are
4628
+ // count families too.
4629
+ presentUserCount: "عدد المستخدمين المتواجدين: {{count}}",
4630
+ presentUserCount_zero: "{{count}} مستخدم متواجد",
4631
+ presentUserCount_one: "{{count}} مستخدم متواجد",
4632
+ presentUserCount_two: "مستخدمان متواجدان ({{count}})",
4633
+ presentUserCount_few: "{{count}} مستخدمين متواجدين",
4634
+ presentUserCount_many: "{{count}} مستخدمًا متواجدًا",
4635
+ presentUserCount_other: "{{count}} مستخدم متواجد",
4636
+ moreUserCount: "عدد المستخدمين الآخرين: {{count}}",
4637
+ moreUserCount_zero: "{{count}} مستخدم آخر",
4638
+ moreUserCount_one: "{{count}} مستخدم آخر",
4639
+ moreUserCount_two: "مستخدمان آخران ({{count}})",
4640
+ moreUserCount_few: "{{count}} مستخدمين آخرين",
4641
+ moreUserCount_many: "{{count}} مستخدمًا آخر",
4642
+ moreUserCount_other: "{{count}} مستخدم آخر",
3346
4643
  userStatusTitle: "{{name}} ({{status}})",
3347
4644
  statusActive: "نشط",
3348
4645
  statusIdle: "خامل",
@@ -3350,6 +4647,11 @@ const ar = {
3350
4647
  },
3351
4648
  wizard: {
3352
4649
  missingRequired: "يرجى إكمال الحقول المطلوبة: {{fields}}",
4650
+ back: "رجوع",
4651
+ submitting: "جارٍ الإرسال…",
4652
+ stepFallback: "الخطوة {{n}}",
4653
+ progressLabel: "التقدم",
4654
+ emptyStep: "لا توجد حقول مهيأة لهذه الخطوة",
3353
4655
  },
3354
4656
  flowRunner: {
3355
4657
  title: 'إدخال',
@@ -3399,6 +4701,8 @@ const ar = {
3399
4701
  setDefaultFailed: "فشل تعيين التطبيق الافتراضي: {{reason}}",
3400
4702
  appDeleted: "تم حذف {{name}}",
3401
4703
  deleteFailed: "فشل حذف التطبيق: {{reason}}",
4704
+ nothingToDelete: "لا يوجد ما يُحذف لـ {{name}}: {{reason}}",
4705
+ alreadyAtDefault: "إنه بالفعل على الإعداد الافتراضي لحزمته",
3402
4706
  bulkEnabled: "تم تفعيل {{n}} تطبيقات",
3403
4707
  bulkDisabled: "تم تعطيل {{n}} تطبيقات",
3404
4708
  bulkFailed: "فشل لـ {{n}}: {{details}}",
@@ -3407,5 +4711,131 @@ const ar = {
3407
4711
  bulkOperationFailed: "فشلت العملية الجماعية: {{reason}}",
3408
4712
  },
3409
4713
  },
4714
+ // objectui#6301 — الإعداد › أتمتة الحزم (ADR-0126 §7.4). المصطلحات كما في
4715
+ // بقية الحزمة: ‏`common.package` = الحزمة، و`flowRunner.completed` = التدفق،
4716
+ // وعلامات الاقتباس «…». ⛔ لا توجد صياغة عن الأصل أو الانحراف في هذه
4717
+ // المجموعة (§9).
4718
+ packagedAutomation: {
4719
+ title: "أتمتة الحزم",
4720
+ subtitle: "تدفقات وإجراءات تأتي مع الحزم المثبّتة. يمكنك إيقاف أي منها في هذا النشر، أو استنساخ تدفق باسم جديد لتخصيصه. التحرير يتم في Studio.",
4721
+ refresh: "تحديث",
4722
+ flowsHeading: "تدفقات الحزم",
4723
+ actionsHeading: "إجراءات الحزم",
4724
+ colFlow: "التدفق",
4725
+ colActivation: "التفعيل",
4726
+ colActions: "إجراءات",
4727
+ toggleLabel: "تفعيل {{label}}",
4728
+ on: "مفعل",
4729
+ off: "إيقاف",
4730
+ notRunning: "لا يعمل هنا",
4731
+ clone: "استنساخ",
4732
+ cloneTitle: "استنساخ تدفق الحزمة",
4733
+ cloneBody: "تحتفظ النسخة بالتعريف كاملاً وتتطلب اسم آلة وتسمية جديدين. حرّر النسخة في Studio.",
4734
+ cloneName: "اسم آلة جديد",
4735
+ cloneLabel: "تسمية جديدة",
4736
+ cancel: "إلغاء",
4737
+ cloneConfirm: "إنشاء نسخة",
4738
+ cloneCreated: "تم إنشاء التدفق «{{name}}».",
4739
+ cloneSwitchSourceOff: "إيقاف «{{label}}»",
4740
+ cloneSourceOff: "التدفق المضمّن «{{label}}» متوقف.",
4741
+ cloneOpen: "فتح النسخة في Studio",
4742
+ emptyTitle: "لا توجد تدفقات من الحزم",
4743
+ emptyBody: "لا توجد حزمة مثبّتة توفّر تدفق أتمتة في هذا النشر. التدفقات التي تنشئها بنفسك موجودة في Studio.",
4744
+ loadFailed: "تعذّر تحميل أتمتة الحزم.",
4745
+ toggleFailedHttp: "تعذّر تغيير التفعيل (HTTP {{status}}).",
4746
+ toggleFailed: "تعذّر تغيير التفعيل.",
4747
+ cloneFailedHttp: "تعذّر استنساخ هذا التدفق (HTTP {{status}}).",
4748
+ cloneFailed: "تعذّر استنساخ هذا التدفق.",
4749
+ reasonDetails: "التفاصيل",
4750
+ actionsSubtitle: "إجراءات تأتي مع الحزم المثبّتة. أوقف أحدها في هذا النشر فيتوقف عن العمل في كل مكان يُعرض فيه. ويبقى بإمكانك إنشاء إجراء خاص بك إلى جانبه في Studio.",
4751
+ colAction: "الإجراء",
4752
+ colObject: "الكائن",
4753
+ actionToggleLabel: "تفعيل {{label}} على {{object}}",
4754
+ actionsEmptyTitle: "لا توجد إجراءات من الحزم",
4755
+ actionsEmptyBody: "لا توجد حزمة مثبّتة تعلن عن إجراء في هذا النشر. الإجراءات التي تنشئها بنفسك موجودة في Studio.",
4756
+ actionsLoadFailed: "تعذّر تحميل إجراءات الحزم.",
4757
+ },
4758
+ element: {
4759
+ number: {
4760
+ noObject: "لم يُحدَّد أي كائن: عيّن dataSource.object.",
4761
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذا المقياس",
4762
+ },
4763
+ image: {
4764
+ noSource: "لا يوجد مصدر للصورة",
4765
+ },
4766
+ recordPicker: {
4767
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات منتقي السجلات هذا",
4768
+ },
4769
+ calendar: {
4770
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذا التقويم",
4771
+ },
4772
+ chart: {
4773
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذا المخطط",
4774
+ },
4775
+ pivotTable: {
4776
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذا الجدول المحوري",
4777
+ },
4778
+ detailView: {
4779
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات عرض التفاصيل هذا",
4780
+ },
4781
+ relatedList: {
4782
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذه القائمة المرتبطة",
4783
+ parentUnreadable: "تعذّرت قراءة السجل الأصل لهذه القائمة المرتبطة",
4784
+ },
4785
+ form: {
4786
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذا النموذج",
4787
+ },
4788
+ lineItems: {
4789
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات لوحة البنود هذه",
4790
+ },
4791
+ gantt: {
4792
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات مخطط جانت هذا",
4793
+ },
4794
+ grid: {
4795
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذه الشبكة",
4796
+ },
4797
+ board: {
4798
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذه اللوحة",
4799
+ },
4800
+ listView: {
4801
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات عرض القائمة هذا",
4802
+ },
4803
+ map: {
4804
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذه الخريطة",
4805
+ },
4806
+ timeline: {
4807
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذا المخطط الزمني",
4808
+ },
4809
+ component: {
4810
+ sourceUnresolved: "تعذّر تحديد مصدر بيانات هذا المكوّن",
4811
+ noDataSource: "لم يُحدَّد أي مصدر بيانات",
4812
+ apiRefused: "تم رفض مصدر بيانات API لهذا المكوّن",
4813
+ apiUnreadable: "تعذّرت قراءة مصدر بيانات API لهذا المكوّن",
4814
+ },
4815
+ metadataViewer: {
4816
+ missingKey: "{{key}} مفقود لهذا العرض.",
4817
+ loading: "جارٍ تحميل {{name}}…",
4818
+ loadFailed: "تعذّر تحميل {{name}}: {{message}}",
4819
+ notFound: "لم يُعثر على {{name}}.",
4820
+ stateMachine: "آلة الحالات",
4821
+ flow: "التدفق",
4822
+ permission: "الإذن",
4823
+ noStateMachine: "لا توجد آلة حالات على {{object}}.",
4824
+ noStateMachineNamed: "لا توجد آلة حالات باسم «{{name}}» على {{object}}.",
4825
+ lifecycle: "دورة حياة {{object}}",
4826
+ field: "الحقل {{field}}",
4827
+ initial: "البداية",
4828
+ final: "النهاية",
4829
+ steps: "الخطوات: {{count}}",
4830
+ noSteps: "لا توجد خطوات لعرضها.",
4831
+ untitledStep: "(خطوة)",
4832
+ hiddenSteps: "الخطوات التقنية المخفية: {{count}} · عيّن {{setting}} لعرضها كلها",
4833
+ objectAccess: "الوصول إلى الكائنات: {{count}}",
4834
+ noPermissions: "لم تُعلَن أي أذونات للكائنات.",
4835
+ object: "الكائن",
4836
+ unknownType: "نوع عرض بيانات وصفية غير معروف. المتوقع {{a}} أو {{b}} أو {{c}}.",
4837
+ unknownTypeNamed: "نوع عرض بيانات وصفية غير معروف «{{type}}». المتوقع {{a}} أو {{b}} أو {{c}}.",
4838
+ },
4839
+ },
3410
4840
  };
3411
4841
  export default ar;