@object-ui/i18n 17.5.0 → 17.7.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 (58) hide show
  1. package/CHANGELOG.md +4954 -0
  2. package/README.md +234 -13
  3. package/dist/builtinAggregateLabels.d.ts +40 -0
  4. package/dist/builtinAggregateLabels.js +23 -0
  5. package/dist/currency.d.ts +27 -3
  6. package/dist/currency.js +28 -4
  7. package/dist/fallbackInterpolation.d.ts +79 -0
  8. package/dist/fallbackInterpolation.js +124 -0
  9. package/dist/i18n.d.ts +28 -2
  10. package/dist/i18n.js +99 -17
  11. package/dist/index.d.ts +17 -23
  12. package/dist/index.js +51 -27
  13. package/dist/locales/ar.d.ts +1113 -370
  14. package/dist/locales/ar.js +1276 -428
  15. package/dist/locales/de.d.ts +785 -370
  16. package/dist/locales/de.js +896 -401
  17. package/dist/locales/en.d.ts +800 -385
  18. package/dist/locales/en.js +1261 -419
  19. package/dist/locales/es.d.ts +867 -370
  20. package/dist/locales/es.js +976 -398
  21. package/dist/locales/fr.d.ts +867 -370
  22. package/dist/locales/fr.js +976 -399
  23. package/dist/locales/index.d.ts +8682 -3761
  24. package/dist/locales/index.js +68 -29
  25. package/dist/locales/ja.d.ts +785 -370
  26. package/dist/locales/ja.js +891 -395
  27. package/dist/locales/ko.d.ts +785 -370
  28. package/dist/locales/ko.js +893 -399
  29. package/dist/locales/pt.d.ts +867 -370
  30. package/dist/locales/pt.js +975 -397
  31. package/dist/locales/registry.d.ts +102 -0
  32. package/dist/locales/registry.js +220 -0
  33. package/dist/locales/rtl.d.ts +24 -0
  34. package/dist/locales/rtl.js +26 -0
  35. package/dist/locales/ru.d.ts +949 -370
  36. package/dist/locales/ru.js +1093 -419
  37. package/dist/locales/zh.d.ts +803 -388
  38. package/dist/locales/zh.js +899 -388
  39. package/dist/pickLocalized.d.ts +67 -0
  40. package/dist/pickLocalized.js +114 -0
  41. package/dist/provider.d.ts +102 -13
  42. package/dist/provider.js +335 -50
  43. package/dist/translateFn.d.ts +29 -0
  44. package/dist/translateFn.js +8 -0
  45. package/dist/useDisplayLocale.d.ts +11 -0
  46. package/dist/useDisplayLocale.js +13 -2
  47. package/dist/useObjectLabel.d.ts +118 -22
  48. package/dist/useObjectLabel.js +148 -23
  49. package/dist/useSafeTranslation.js +41 -43
  50. package/dist/utils/formatting.d.ts +16 -0
  51. package/dist/utils/formatting.js +23 -3
  52. package/dist/utils/index.d.ts +4 -4
  53. package/dist/utils/index.js +4 -4
  54. package/dist/utils/spec-formatters.d.ts +13 -23
  55. package/dist/utils/spec-formatters.js +41 -2
  56. package/dist/utils/spec-translations.d.ts +16 -3
  57. package/dist/utils/spec-translations.js +52 -13
  58. package/package.json +12 -6
@@ -19,10 +19,12 @@ const ar = {
19
19
  manage_users: "إدارة المستخدمين",
20
20
  manage_org_users: "إدارة مستخدمي المؤسسة",
21
21
  manage_metadata: "إدارة البيانات الوصفية",
22
+ manage_org_presentation: "إدارة عرض المؤسسة",
22
23
  manage_platform_settings: "إدارة إعدادات المنصة",
23
24
  setup_access: "الوصول إلى الإعداد",
24
25
  setup_write: "كتابة الإعدادات",
25
26
  studio_access: "الوصول إلى Studio",
27
+ manage_sharing: "إدارة المشاركة",
26
28
  },
27
29
  group: {
28
30
  platform: 'منصة',
@@ -30,25 +32,47 @@ const ar = {
30
32
  other: 'أخرى',
31
33
  },
32
34
  },
33
- // objectui#3546 slice six — ملخص للقراءة فقط لأوجه التخويل الستة في
34
- // PermissionFacetLink، مع رابط التصميم في Studio.
35
+ // objectui#3546 slice six — the read-only summary of PermissionFacetLink's six
36
+ // authorization facets, plus the Studio link.
35
37
  //
36
- // صيغة العدد تتبع نمط الحزمة نفسه: «{{count}} مفرد(جمع)» كما في
37
- // appDesigner.objectManager.fieldCount و table.modified. المفتاح الأساسي هو
38
- // ما تلجأ إليه فئات two/few/many/zero غير المعرّفة، فيظل النص عربيًا.
39
- // لا نعكس سهم روابط الإجراء: يبقى كما في en، مثل marketplace.browseLink.
38
+ // The four count labels carry one slot per ar CLDR category (objectui#11432):
39
+ // `_zero` and `_other` (100-102…) singular, `_one`, `_two` the dual with the
40
+ // numeral in parentheses, `_few` (3-10) plural, `_many` (11-99) accusative
41
+ // singular. The base key keeps the «{{count}} مفرد(جمع)» marker for a call made
42
+ // without a count. The action-link arrow is not mirrored: it stays as in en,
43
+ // like marketplace.browseLink.
40
44
  perm: {
41
45
  facet: {
42
46
  none: "لا شيء",
43
47
  more: "+{{count}} المزيد",
44
48
  objects: "{{count}} كائن(كائنات)",
49
+ objects_zero: "{{count}} كائن",
45
50
  objects_one: "{{count}} كائن",
51
+ objects_two: "كائنان ({{count}})",
52
+ objects_few: "{{count}} كائنات",
53
+ objects_many: "{{count}} كائنًا",
54
+ objects_other: "{{count}} كائن",
46
55
  fields: "{{count}} قاعدة(قواعد) حقول",
56
+ fields_zero: "{{count}} قاعدة حقول",
47
57
  fields_one: "{{count}} قاعدة حقول",
58
+ fields_two: "قاعدتا حقول ({{count}})",
59
+ fields_few: "{{count}} قواعد حقول",
60
+ fields_many: "{{count}} قاعدة حقول",
61
+ fields_other: "{{count}} قاعدة حقول",
48
62
  rls: "{{count}} سياسة(سياسات) RLS",
63
+ rls_zero: "{{count}} سياسة RLS",
49
64
  rls_one: "{{count}} سياسة RLS",
65
+ rls_two: "سياستا RLS ({{count}})",
66
+ rls_few: "{{count}} سياسات RLS",
67
+ rls_many: "{{count}} سياسة RLS",
68
+ rls_other: "{{count}} سياسة RLS",
50
69
  tabs: "{{count}} قاعدة(قواعد) تبويب",
70
+ tabs_zero: "{{count}} قاعدة تبويب",
51
71
  tabs_one: "{{count}} قاعدة تبويب",
72
+ tabs_two: "قاعدتا تبويب ({{count}})",
73
+ tabs_few: "{{count}} قواعد تبويب",
74
+ tabs_many: "{{count}} قاعدة تبويب",
75
+ tabs_other: "{{count}} قاعدة تبويب",
52
76
  adminScope: "تم تكوين الإدارة المفوَّضة",
53
77
  designInStudio: "التصميم في Studio →",
54
78
  designInStudioHint: "التصميم في Studio",
@@ -66,8 +90,16 @@ const ar = {
66
90
  remove: 'إزالة {{label}}',
67
91
  selectFirst: 'اختر {{fields}} أولاً',
68
92
  selectRecord: 'اختيار سجل',
69
- recordCount: '{{count}} سجل',
70
- recordCountOne: 'سجل واحد',
93
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
94
+ // own noun form. The base key, a count-invariant form, answers a call made
95
+ // without a count.
96
+ recordCount: 'عدد السجلات: {{count}}',
97
+ recordCount_zero: '{{count}} سجل',
98
+ recordCount_one: '{{count}} سجل',
99
+ recordCount_two: 'سجلان ({{count}})',
100
+ recordCount_few: '{{count}} سجلات',
101
+ recordCount_many: '{{count}} سجلًا',
102
+ recordCount_other: '{{count}} سجل',
71
103
  pageOf: 'صفحة {{current}} من {{total}}',
72
104
  filters: 'عوامل التصفية',
73
105
  clear: 'مسح',
@@ -84,8 +116,9 @@ const ar = {
84
116
  common: {
85
117
  addToFavorites: "إضافة إلى المفضلة",
86
118
  removeFromFavorites: "إزالة من المفضلة",
87
- loading: "جاري التحميل…",
119
+ loading: "جارٍ التحميل…",
88
120
  save: "حفظ",
121
+ discard: "تجاهل",
89
122
  cancel: "إلغاء",
90
123
  delete: "حذف",
91
124
  edit: "تعديل",
@@ -118,8 +151,16 @@ const ar = {
118
151
  closeChat: "إغلاق المحادثة",
119
152
  closePanel: "إغلاق اللوحة",
120
153
  resizeDrawer: "تغيير عرض اللوحة",
121
- itemCount: "{{count}} عناصر",
122
- itemCountOne: "{{count}} عنصر",
154
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
155
+ // own noun form. The base key, a count-invariant form, answers a call made
156
+ // without a count.
157
+ itemCount: "عدد العناصر: {{count}}",
158
+ itemCount_zero: "{{count}} عنصر",
159
+ itemCount_one: "{{count}} عنصر",
160
+ itemCount_two: "عنصران ({{count}})",
161
+ itemCount_few: "{{count}} عناصر",
162
+ itemCount_many: "{{count}} عنصرًا",
163
+ itemCount_other: "{{count}} عنصر",
123
164
  toggleSidebar: "تبديل الشريط الجانبي",
124
165
  package: "الحزمة",
125
166
  done: "تم",
@@ -127,6 +168,16 @@ const ar = {
127
168
  record: "سجل",
128
169
  retry: "إعادة المحاولة",
129
170
  printDialogHint: "يفتح مربع حوار الطباعة في المتصفح (ليس تصديرًا إلى PDF)",
171
+ // The non-grid row ceiling's footnote (objectui#7210). Two keys because
172
+ // there are two conditions: a reported `total` states the fact with BOTH
173
+ // numbers, a missing one cannot name how many. Kept terse deliberately —
174
+ // this copy is eagerly loaded, and since objectui#7399 these bytes are
175
+ // budgeted by the `i18n-locales` chunk, not `framework`. ⛔ That ceiling's
176
+ // headroom is deliberately NOT restated here — it moves on every
177
+ // re-baseline, and the figure that was here went stale.
178
+ // `pnpm check:eager-closure` prints it.
179
+ rowCeilingNote: "يتم عرض أول {{shown}} من أصل {{total}} سجل. ضيّق عامل التصفية.",
180
+ rowCeilingNoteUnknownTotal: "يتم عرض أول {{shown}} سجل. ضيّق عامل التصفية.",
130
181
  },
131
182
  actions: {
132
183
  decisionOutput: {
@@ -138,6 +189,14 @@ const ar = {
138
189
  acknowledge: 'لقد حفظتها',
139
190
  copyAll: 'نسخ الكل',
140
191
  },
192
+ notAvailableHere: '"{{action}}" غير متاح في الصفحة الحالية.',
193
+ completedSuccessfully: 'اكتمل الإجراء بنجاح',
194
+ failed: 'فشل الإجراء',
195
+ parallelFailed: 'فشل إجراء متوازٍ واحد أو أكثر',
196
+ undo: 'تراجع',
197
+ undone: 'تم التراجع عن التغيير',
198
+ undoneOperation: 'تراجع: {{description}}',
199
+ redoneOperation: 'إعادة: {{description}}',
141
200
  },
142
201
  validation: {
143
202
  required: "{{field}} مطلوب",
@@ -155,19 +214,45 @@ const ar = {
155
214
  },
156
215
  form: {
157
216
  noPermissionToSave: "ليس لديك إذن لحفظ هذا السجل.",
217
+ noPermissionToCreate: "ليس لديك إذن لإنشاء سجلات {{object}}. الحقول للقراءة فقط.",
218
+ noPermissionToEdit: "ليس لديك إذن لتعديل سجلات {{object}}. الحقول للقراءة فقط.",
158
219
  submitFailed: "تعذّر الحفظ. يرجى المحاولة مرة أخرى.",
220
+ uploadInFlight: "انتظر حتى ينتهي الرفع قبل الحفظ.",
221
+ clearedOnHide: "تم مسح ما لم يعد ينطبق على القيم الحالية: {{fields}}",
222
+ visibleWhenFaulted: "تعذّر الإرسال: تعذّر تقييم قاعدة visibleWhen لـ {{fields}}. يجب إصلاح القاعدة قبل أن يصبح إرسال هذا النموذج ممكنًا.",
159
223
  discardTitle: "تجاهل التغييرات؟",
160
224
  discardMessage: "لديك تغييرات غير محفوظة. إذا أغلقت هذا النموذج الآن، ستفقد تعديلاتك.",
161
225
  // objectui#4024 — the create/edit dialog's `sr-only` accessible
162
226
  // description, used when the form declares no `description` of its own.
163
227
  dialogDescriptionFallback: "املأ حقول النموذج ثم أرسل أو ألغِ.",
228
+ deniedDescription: "ليس لديك إذن لتعديل هذا الحقل.",
229
+ masterDetail: {
230
+ loadingColumns: "جارٍ تحميل الأعمدة…",
231
+ subtotal: "المجموع الفرعي",
232
+ tax: "الضريبة ({{rate}}%)",
233
+ total: "الإجمالي",
234
+ lineItem: "بند",
235
+ rowTitle: "{{title}} — الصف {{row}}",
236
+ applyRow: "تطبيق",
237
+ editorDescription: "أدخل السجل وبنوده ثم احفظ.",
238
+ noChildObject: "لم يُكوَّن كائن فرعي لهذه المجموعة: عيّن {{property}} إلى الكائن الذي تسرد صفوفه.",
239
+ schemaUnavailable: "تعذّر تحميل مخطط {{object}}، لذا لا توجد أعمدة لعرضها في هذه المجموعة. تحقّق من أن الكائن موجود وقابل للقراءة، ثم أعد التحميل.",
240
+ noRelationshipField: "تعذّر تحديد كيفية ارتباط {{object}} بـ {{parent}}: لا يوجد فيه حقل lookup أو master_detail يشير إلى الكائن الأصل. عيّن {{property}} في هذه المجموعة إلى الحقل الذي يحمل السجل الأصل.",
241
+ },
242
+ lineItems: {
243
+ title: "البنود",
244
+ saveRecordFirst: "احفظ السجل أولًا لإضافة البنود.",
245
+ notLoaded: "لم يتم تحميل بنود هذا السجل.",
246
+ loadFailed: "تعذّر تحميل البنود",
247
+ saveFailed: "تعذّر حفظ البنود",
248
+ noChildObject: "لم يُكوَّن كائن فرعي لهذه اللوحة: عيّن {{property}} إلى الكائن الذي تسرد صفوفه.",
249
+ },
164
250
  keepEditing: "متابعة التحرير",
165
251
  discard: "تجاهل",
166
252
  conflictTitle: "تعارض في الحفظ",
167
253
  conflictMessage: "قام شخص آخر بتغيير هذا السجل أثناء تحريرك. الكتابة فوقه ستستبدل تغييراته بتغييراتك.",
168
254
  conflictLatestVersion: "وقت حفظه: {{time}}",
169
255
  conflictOverwrite: "الكتابة فوقه",
170
- addItem: "إضافة عنصر",
171
256
  removeItem: "إزالة عنصر",
172
257
  fieldRequired: "هذا الحقل مطلوب",
173
258
  invalidFormat: "صيغة غير صالحة",
@@ -185,6 +270,12 @@ const ar = {
185
270
  createSuccess: "تم إنشاء {{object}}",
186
271
  updateSuccess: "تم تحديث {{object}}",
187
272
  deleteSuccess: "تم حذف {{object}}",
273
+ created: "تم الإنشاء",
274
+ saved: "تم الحفظ",
275
+ savedNamed: "تم حفظ {{title}}",
276
+ submitted: "تم الإرسال",
277
+ errorLoading: "خطأ في تحميل النموذج",
278
+ navigateRefused: "تم رفض وجهة `navigateOnSuccess` المعلنة لهذا النموذج، لذلك لم يتم الانتقال.",
188
279
  fullscreen: {
189
280
  title: "تحرير النص",
190
281
  description: "حرّر قيمة النص الكاملة، ثم احفظ التغييرات أو ألغِها.",
@@ -209,6 +300,12 @@ const ar = {
209
300
  },
210
301
  relativeDate: {
211
302
  overdue: "متأخر {{count}} يوم",
303
+ overdue_zero: "متأخر {{count}} يوم",
304
+ overdue_one: "متأخر {{count}} يوم",
305
+ overdue_two: "متأخر يومين ({{count}})",
306
+ overdue_few: "متأخر {{count}} أيام",
307
+ overdue_many: "متأخر {{count}} يومًا",
308
+ overdue_other: "متأخر {{count}} يوم",
212
309
  },
213
310
  file: {
214
311
  dragDropHere: 'اسحب الملفات وأفلتها هنا',
@@ -225,6 +322,7 @@ const ar = {
225
322
  remove: 'إزالة {{name}}',
226
323
  exceedsMaxSize: '"{{name}}" يتجاوز الحجم الأقصى ({{max}} ميغابايت)',
227
324
  uploadFailed: 'فشل رفع "{{name}}": {{error}}',
325
+ uploadIncomplete: 'لم يكتمل رفع "{{name}}": لم يتم إرجاع معرّف الملف، ولم يُحفظ شيء',
228
326
  },
229
327
  richText: {
230
328
  format: "التنسيق: {{format}}",
@@ -252,6 +350,9 @@ const ar = {
252
350
  selectBusinessUnit: "اختر وحدة عمل",
253
351
  selectPosition: "اختر منصباً",
254
352
  selectUnitAndSubordinates: "اختر وحدة عمل",
353
+ selectField: "اختر حقل مستخدم",
354
+ noUserFields: "لا توجد حقول مستخدم في هذا الكائن",
355
+ fieldNotUserTyped: "{{name}} — ليس حقل مستخدم",
255
356
  },
256
357
  filterCondition: {
257
358
  selectObjectFirst: "اختر كائناً أولاً.",
@@ -262,13 +363,51 @@ const ar = {
262
363
  editAsJson: "التحرير بصيغة JSON",
263
364
  useVisualBuilder: "استخدام المُنشئ المرئي",
264
365
  },
366
+ object: {
367
+ invalidJson: "JSON غير صالح",
368
+ },
369
+ location: {
370
+ refusedFormat: "لم يتم الحفظ: أدخل زوجًا من خط العرض وخط الطول (مثال: 30.2741, 120.1551).",
371
+ refusedRange: "لم يتم الحفظ: {{detail}}",
372
+ latitude: "خط العرض",
373
+ longitude: "خط الطول",
374
+ refusedResidueOne: "لم يتم الحفظ: {{name}} «{{text}}» ليس رقمًا. أدخل أرقامًا عشرية عادية (مثال: 30.2741, 120.1551).",
375
+ refusedResidue: "لم يتم الحفظ: {{name}} «{{text}}» و{{otherName}} «{{otherText}}» ليسا رقمين. أدخل أرقامًا عشرية عادية (مثال: 30.2741, 120.1551).",
376
+ },
377
+ date: {
378
+ impossibleDay: "القيمة المحفوظة «{{value}}» ليست تاريخًا حقيقيًا. اختر تاريخًا لاستبدالها.",
379
+ },
380
+ dateTime: {
381
+ impossibleDay: "القيمة المحفوظة «{{value}}» ليست تاريخًا حقيقيًا. اختر تاريخًا ووقتًا لاستبدالها.",
382
+ },
383
+ number: {
384
+ badInput: "لم يتم الحفظ: النص في هذا المربع ليس رقمًا. أدخل رقمًا عشريًا عاديًا (مثال: {{example}}).",
385
+ },
265
386
  tags: {
266
387
  placeholder: "اكتب واضغط Enter للإضافة…",
267
388
  },
389
+ // objectui#4028 — `AddressField`'s five sub-labels.
390
+ address: {
391
+ street: "عنوان الشارع",
392
+ city: "المدينة",
393
+ state: "الولاية / المحافظة",
394
+ postalCode: "الرمز البريدي",
395
+ country: "الدولة",
396
+ },
268
397
  textarea: {
269
398
  characterCount: "عدد الأحرف: {{count}} من {{max}}",
270
399
  charactersRemaining: "الأحرف المتبقية: {{count}}",
271
400
  },
401
+ grid: {
402
+ addLine: "إضافة سطر",
403
+ noItems: "لا توجد عناصر",
404
+ noItemsAddHint: "لا توجد عناصر بعد — انقر على «{{label}}» للبدء.",
405
+ optionalColumns: "أعمدة اختيارية",
406
+ computed: "محسوب",
407
+ openRow: "فتح الصف",
408
+ duplicateRow: "تكرار الصف",
409
+ removeRow: "إزالة الصف",
410
+ },
272
411
  },
273
412
  table: {
274
413
  rowsPerPage: "صفوف في الصفحة",
@@ -297,23 +436,59 @@ const ar = {
297
436
  open: "فتح",
298
437
  search: "بحث…",
299
438
  modified: "{{count}} صف(صفوف) معدّل(ة)",
439
+ modified_zero: "{{count}} صف معدّل",
440
+ modified_one: "{{count}} صف معدّل",
441
+ modified_two: "صفان معدّلان ({{count}})",
442
+ modified_few: "{{count}} صفوف معدّلة",
443
+ modified_many: "{{count}} صفًا معدّلًا",
444
+ modified_other: "{{count}} صف معدّل",
300
445
  saveFailed: 'فشل الحفظ',
301
446
  selected: "{{count}} محدد(ة)",
447
+ selected_zero: "تم تحديد {{count}}",
448
+ selected_one: "تم تحديد {{count}}",
449
+ selected_two: "تم تحديد {{count}}",
450
+ selected_few: "تم تحديد {{count}}",
451
+ selected_many: "تم تحديد {{count}}",
452
+ selected_other: "تم تحديد {{count}}",
302
453
  edit: "تعديل",
303
454
  delete: "حذف",
304
455
  },
305
456
  grid: {
306
457
  bulkSelected: "تم تحديد {{count}}",
458
+ bulkSelected_zero: "تم تحديد {{count}}",
459
+ bulkSelected_one: "تم تحديد {{count}}",
460
+ bulkSelected_two: "تم تحديد {{count}}",
461
+ bulkSelected_few: "تم تحديد {{count}}",
462
+ bulkSelected_many: "تم تحديد {{count}}",
463
+ bulkSelected_other: "تم تحديد {{count}}",
307
464
  bulkSelectedAllMatches: "تم تحديد {{count}} (كل النتائج المطابقة)",
308
465
  bulkClear: "إلغاء التحديد",
309
466
  bulkAllOnPage: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
467
+ bulkAllOnPage_zero: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
468
+ bulkAllOnPage_one: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
469
+ bulkAllOnPage_two: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
470
+ bulkAllOnPage_few: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
471
+ bulkAllOnPage_many: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
472
+ bulkAllOnPage_other: "تم تحديد جميع العناصر ({{count}}) في هذه الصفحة.",
310
473
  bulkSelectAllMatching: "تحديد كل النتائج المطابقة ({{count}})",
311
474
  bulkAllMatchingSelected: "تم تحديد جميع السجلات المطابقة ({{count}}).",
312
475
  bulk: {
313
476
  confirmDefault: "سيُطبَّق هذا على {{count}} من السجلات.",
477
+ confirmDefault_zero: "سيُطبَّق هذا على {{count}} من السجلات.",
478
+ confirmDefault_one: "سيُطبَّق هذا على {{count}} من السجلات.",
479
+ confirmDefault_two: "سيُطبَّق هذا على {{count}} من السجلات.",
480
+ confirmDefault_few: "سيُطبَّق هذا على {{count}} من السجلات.",
481
+ confirmDefault_many: "سيُطبَّق هذا على {{count}} من السجلات.",
482
+ confirmDefault_other: "سيُطبَّق هذا على {{count}} من السجلات.",
314
483
  overLimit: "التحديد ({{count}}) يتجاوز حد الإجراء ({{limit}}). قلّل التحديد للمتابعة.",
315
484
  affectedRecords: "السجلات المتأثرة ({{count}}):",
316
485
  skippedIneligible: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
486
+ skippedIneligible_zero: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
487
+ skippedIneligible_one: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
488
+ skippedIneligible_two: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
489
+ skippedIneligible_few: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
490
+ skippedIneligible_many: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
491
+ skippedIneligible_other: '{{count}} من السجلات المحددة غير مؤهلة لهذا الإجراء وسيتم تخطيها.',
317
492
  rowFallback: "الصف {{index}}",
318
493
  andMore: "… و{{count}} أخرى",
319
494
  processed: "تمت معالجة {{count}} / {{total}}",
@@ -331,7 +506,6 @@ const ar = {
331
506
  undo: "تراجع",
332
507
  undoing: "جارٍ التراجع…",
333
508
  done: "تم",
334
- selectPlaceholder: "اختر…",
335
509
  loading: "جارٍ التحميل…",
336
510
  },
337
511
  actions: "إجراءات",
@@ -339,10 +513,10 @@ const ar = {
339
513
  delete: "حذف",
340
514
  export: "تصدير",
341
515
  exportAs: "تصدير كـ {{format}}",
342
- loading: "جاري تحميل الشبكة…",
516
+ loading: "جارٍ تحميل الشبكة…",
343
517
  errorLoading: "خطأ في تحميل الشبكة",
344
518
  pullToRefresh: "اسحب للتحديث",
345
- refreshing: "جاري التحديث…",
519
+ refreshing: "جارٍ التحديث…",
346
520
  openRecord: "فتح السجل",
347
521
  rowHeight: "ارتفاع الصف: {{mode}}",
348
522
  openMenu: "فتح القائمة",
@@ -350,6 +524,14 @@ const ar = {
350
524
  yes: "نعم",
351
525
  no: "لا",
352
526
  systemFields: "النظام",
527
+ // objectui#10881 — the grouped grid's two refusals: over a data source
528
+ // that cannot answer the group header query, and over rows a host
529
+ // handed in while declaring them one page of more. `queryGroupHeaders`
530
+ // is the member's name and stays untranslated.
531
+ grouping: {
532
+ needsHeaderQuery: "هذا العرض مُجمَّع، لكن مصدر بياناته لا يطبّق queryGroupHeaders، لذا لا يمكن عدّ المجموعات. أزِل التجميع لعرض السجلات.",
533
+ needsWholeRows: "يتطلب التجميع جميع السجلات، لكن هذه الشبكة تلقّت صفحة واحدة منها فقط، لذا لا يمكن عدّ المجموعات. مرّر جميع السجلات، أو دع الشبكة تجلبها من مصدر بيانات يطبّق queryGroupHeaders.",
534
+ },
353
535
  // objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
354
536
  // `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
355
537
  // pack controls its own separator and word order.
@@ -376,10 +558,18 @@ const ar = {
376
558
  },
377
559
  import: {
378
560
  downloadTemplate: "تنزيل القالب",
379
- downloadTemplateHint: "احصل على ملف CSV بالأعمدة الصحيحة (الحقول المطلوبة معلَّمة بـ *).",
561
+ downloadTemplateHint: "احصل على ملف Excel بالأعمدة التي يمكنك استيرادها (الحقول المطلوبة معلَّمة بـ *) مع تعليمات التعبئة.",
380
562
  templateFileName: "{{object}}-import-template",
563
+ templateDownloadFailed: "تعذّر تنزيل القالب. يرجى المحاولة مرة أخرى.",
564
+ templateNotPermitted: "ليست لديك صلاحية إنشاء سجلات لهذا الكائن، لذا فإن قالب الاستيراد غير متاح.",
381
565
  autoMatched: "تمت المطابقة تلقائيًا",
382
566
  autoMatchedSummary: "تمت مطابقة {{count}} عمودًا تلقائيًا — راجعها وعدّلها أدناه.",
567
+ autoMatchedSummary_zero: "تمت مطابقة {{count}} عمود تلقائيًا — راجِع وعدِّل أدناه.",
568
+ autoMatchedSummary_one: "تمت مطابقة {{count}} عمود تلقائيًا — راجِع وعدِّل أدناه.",
569
+ autoMatchedSummary_two: "تمت مطابقة عمودين ({{count}}) تلقائيًا — راجِع وعدِّل أدناه.",
570
+ autoMatchedSummary_few: "تمت مطابقة {{count}} أعمدة تلقائيًا — راجِع وعدِّل أدناه.",
571
+ autoMatchedSummary_many: "تمت مطابقة {{count}} عمودًا تلقائيًا — راجِع وعدِّل أدناه.",
572
+ autoMatchedSummary_other: "تمت مطابقة {{count}} عمود تلقائيًا — راجِع وعدِّل أدناه.",
383
573
  confidence: {
384
574
  high: "ثقة عالية",
385
575
  medium: "ثقة متوسطة",
@@ -392,8 +582,26 @@ const ar = {
392
582
  cancelImport: "إلغاء الاستيراد",
393
583
  importCancelled: "تم إلغاء الاستيراد",
394
584
  resultsTruncated: "عرض نتائج أول {{count}} صفًا (من أصل {{total}}).",
585
+ resultsTruncated_zero: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
586
+ resultsTruncated_one: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
587
+ resultsTruncated_two: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
588
+ resultsTruncated_few: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
589
+ resultsTruncated_many: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
590
+ resultsTruncated_other: "عرض نتائج الصفوف الأولى: {{count}} (من أصل {{total}}).",
395
591
  createdCount: "تم إنشاء {{count}}",
592
+ createdCount_zero: "تم إنشاء {{count}}",
593
+ createdCount_one: "تم إنشاء {{count}}",
594
+ createdCount_two: "تم إنشاء {{count}}",
595
+ createdCount_few: "تم إنشاء {{count}}",
596
+ createdCount_many: "تم إنشاء {{count}}",
597
+ createdCount_other: "تم إنشاء {{count}}",
396
598
  updatedCount: "تم تحديث {{count}}",
599
+ updatedCount_zero: "تم تحديث {{count}}",
600
+ updatedCount_one: "تم تحديث {{count}}",
601
+ updatedCount_two: "تم تحديث {{count}}",
602
+ updatedCount_few: "تم تحديث {{count}}",
603
+ updatedCount_many: "تم تحديث {{count}}",
604
+ updatedCount_other: "تم تحديث {{count}}",
397
605
  downloadFailed: "تنزيل الصفوف الفاشلة",
398
606
  options: "خيارات الاستيراد",
399
607
  writeMode: "عند تطابق صف مع سجل موجود",
@@ -441,6 +649,12 @@ const ar = {
441
649
  historyColResult: "النتيجة",
442
650
  historyColTime: "الوقت",
443
651
  errorCount: "{{count}} من الأخطاء",
652
+ errorCount_zero: "{{count}} من الأخطاء",
653
+ errorCount_one: "{{count}} من الأخطاء",
654
+ errorCount_two: "{{count}} من الأخطاء",
655
+ errorCount_few: "{{count}} من الأخطاء",
656
+ errorCount_many: "{{count}} من الأخطاء",
657
+ errorCount_other: "{{count}} من الأخطاء",
444
658
  undoImport: "التراجع عن الاستيراد",
445
659
  undoing: "جارٍ التراجع…",
446
660
  undoConfirm: "هل تريد التراجع عن هذا الاستيراد؟ ستُحذف السجلات التي أنشأها وتُستعاد السجلات التي حدّثها إلى قيمها السابقة.",
@@ -501,7 +715,19 @@ const ar = {
501
715
  mapped: "مُعيَّن",
502
716
  skipped: "مُتخطَّى",
503
717
  rowsWithErrors: "{{count}} صف(صفوف) بها أخطاء",
718
+ rowsWithErrors_zero: "{{count}} صف بها أخطاء",
719
+ rowsWithErrors_one: "{{count}} صف به أخطاء",
720
+ rowsWithErrors_two: "صفان بهما أخطاء ({{count}})",
721
+ rowsWithErrors_few: "{{count}} صفوف بها أخطاء",
722
+ rowsWithErrors_many: "{{count}} صفًا بها أخطاء",
723
+ rowsWithErrors_other: "{{count}} صف بها أخطاء",
504
724
  rowsCorrected: "{{count}} صف(صفوف) تم تصحيحها",
725
+ rowsCorrected_zero: "تم تصحيح {{count}} صف",
726
+ rowsCorrected_one: "تم تصحيح {{count}} صف",
727
+ rowsCorrected_two: "تم تصحيح صفين ({{count}})",
728
+ rowsCorrected_few: "تم تصحيح {{count}} صفوف",
729
+ rowsCorrected_many: "تم تصحيح {{count}} صفًا",
730
+ rowsCorrected_other: "تم تصحيح {{count}} صف",
505
731
  clickToFix: "— انقر على خلية مميزة للتعديل.",
506
732
  showingRows: "عرض {{shown}} من {{total}} صف",
507
733
  importing: "جارٍ الاستيراد… {{progress}}%",
@@ -509,11 +735,23 @@ const ar = {
509
735
  imported: "{{count}} مُستورَد(ة)",
510
736
  skippedCount: "{{count}} مُتخطَّى(ة)",
511
737
  moreErrors: "…و{{count}} خطأ(أخطاء) أخرى",
738
+ moreErrors_zero: "…و{{count}} خطأ آخر",
739
+ moreErrors_one: "…و{{count}} خطأ آخر",
740
+ moreErrors_two: "…وخطآن آخران ({{count}})",
741
+ moreErrors_few: "…و{{count}} أخطاء أخرى",
742
+ moreErrors_many: "…و{{count}} خطأً آخر",
743
+ moreErrors_other: "…و{{count}} خطأ آخر",
512
744
  cancel: "إلغاء",
513
745
  back: "رجوع",
514
746
  next: "التالي",
515
747
  close: "إغلاق",
516
748
  importNRows: "استيراد {{count}} صف",
749
+ importNRows_zero: "استيراد {{count}} صف",
750
+ importNRows_one: "استيراد {{count}} صف",
751
+ importNRows_two: "استيراد صفين ({{count}})",
752
+ importNRows_few: "استيراد {{count}} صفوف",
753
+ importNRows_many: "استيراد {{count}} صفًا",
754
+ importNRows_other: "استيراد {{count}} صف",
517
755
  importingProgress: "جارٍ الاستيراد…",
518
756
  requiredMark: "*",
519
757
  required: "مطلوب",
@@ -525,11 +763,41 @@ const ar = {
525
763
  month: "شهر",
526
764
  week: "أسبوع",
527
765
  day: "يوم",
528
- agenda: "جدول أعمال",
529
766
  allDay: "طوال اليوم",
530
- noEvents: "لا توجد أحداث",
531
767
  newEvent: "حدث جديد",
532
768
  moreEvents: "+{{count}} المزيد",
769
+ unscheduled: "غير مجدولة ({{count}})",
770
+ loading: "جارٍ تحميل التقويم…",
771
+ loadError: "خطأ: {{message}}",
772
+ configRequired: "إعداد التقويم مطلوب. يُرجى تحديد startDateField، وهو المفتاح المطلوب الوحيد للتقويم؛ ويُحلّ عنوان الحدث دون titleField.",
773
+ configRequiredHint: "هو ينتمي إلى كتلة calendar في العرض. صفحة الواجهة ليس لها فتحة تقويم خاصة بها: وجّه sourceView الخاص بها إلى عرض يعلن واحدة.",
774
+ eventDetails: "تفاصيل الحدث",
775
+ pullToRefresh: "اسحب للتحديث",
776
+ refreshing: "جارٍ التحديث…",
777
+ onDate: "في {{date}}",
778
+ eventTitle: "العنوان",
779
+ eventTitlePlaceholder: "ما موضوع هذا الحدث؟",
780
+ creating: "جارٍ الإنشاء…",
781
+ titleRequired: "العنوان مطلوب",
782
+ a11y: {
783
+ region: "التقويم",
784
+ grid: "شبكة التقويم",
785
+ goToToday: "الانتقال إلى اليوم",
786
+ previousPeriod: "الفترة السابقة",
787
+ nextPeriod: "الفترة التالية",
788
+ currentDate: "التاريخ الحالي: {{date}}",
789
+ dayCell: "{{date}}، عدد الأحداث: {{count}}",
790
+ dayCell_zero: "{{date}}، {{count}} حدث",
791
+ dayCell_one: "{{date}}، {{count}} حدث",
792
+ dayCell_two: "{{date}}، حدثان ({{count}})",
793
+ dayCell_few: "{{date}}، {{count}} أحداث",
794
+ dayCell_many: "{{date}}، {{count}} حدثًا",
795
+ dayCell_other: "{{date}}، عدد الأحداث: {{count}}",
796
+ resizeEventEnd: "تغيير نهاية الحدث",
797
+ resizeEventEndHint: "اسحب لتغيير تاريخ الانتهاء",
798
+ resizeStart: "تغيير وقت البدء",
799
+ resizeEnd: "تغيير وقت الانتهاء",
800
+ },
533
801
  },
534
802
  list: {
535
803
  firstRunTitle: "لا يوجد شيء هنا بعد",
@@ -571,8 +839,16 @@ const ar = {
571
839
  },
572
840
  refresh: "تحديث",
573
841
  loading: "جارٍ تحميل السجلات…",
574
- recordCount: "{{count}} سجلات",
575
- recordCountOne: "{{count}} سجل",
842
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
843
+ // own noun form. The base key, a count-invariant form, answers a call made
844
+ // without a count.
845
+ recordCount: "عدد السجلات: {{count}}",
846
+ recordCount_zero: "{{count}} سجل",
847
+ recordCount_one: "{{count}} سجل",
848
+ recordCount_two: "سجلان ({{count}})",
849
+ recordCount_few: "{{count}} سجلات",
850
+ recordCount_many: "{{count}} سجلًا",
851
+ recordCount_other: "{{count}} سجل",
576
852
  addRecord: "إضافة سجل",
577
853
  tabs: "علامات التبويب",
578
854
  allRecords: "جميع السجلات",
@@ -604,7 +880,7 @@ const ar = {
604
880
  hideFieldsTitle: "إخفاء الحقول",
605
881
  dataLimitReached: "يتم عرض أول {{limit}} سجل. قد تتوفر بيانات إضافية.",
606
882
  viewSettings: "إعدادات العرض",
607
- viewSettingsHint: "التجميع واللون والكثافة والحقول المرئية.",
883
+ viewSettingsHint: "التجميع واللون والكثافة والحقول المرئية. ينطبق على جميع المستخدمين الذين يستخدمون هذا العرض.",
608
884
  addGroup: "إضافة حقل مجموعة",
609
885
  collapsedByDefault: "مطوي افتراضياً",
610
886
  removeGroup: "إزالة",
@@ -669,6 +945,17 @@ const ar = {
669
945
  },
670
946
  gantt: {
671
947
  rowLabel: "العناصر",
948
+ unusableRange: {
949
+ malformedDate: "نطاق تواريخ جانت غير صالح للاستخدام — {{path}} يساوي {{value}}، وهو ليس تاريخًا صالحًا. يجب أن تكون كل تواريخ جانت قابلة للتحليل: startDate و endDate لكل عنصر صف، بالإضافة إلى أي minDate / maxDate مثبّت في المخطط.",
950
+ malformedRow: "صفوف جانت غير صالحة للاستخدام — {{path}} يساوي {{value}}، وهو ليس على شكل صف. يقرأ جانت items كقائمة من الصفوف، وكل صف ككائن يحمل label و items خاصة به، و items كل صف كقائمة من الأشرطة؛ لا يمكن رسم null أو رقم أو سلسلة نصية أو كائن عادي في أي من هذه المواضع.",
951
+ inverted: "نطاق تواريخ جانت غير صالح للاستخدام — minDate {{minDate}} يقع بعد maxDate {{maxDate}}. يتجاوز minDate / maxDate المثبّت النطاق المحسوب من الصفوف، لذلك لا يحتوي هذا المحور على أي أعمدة ولا يمكن وضع أي شريط عليه؛ بدّل القيمتين.",
952
+ },
953
+ },
954
+ unsupported: {
955
+ objectBoundGantt: "النوع \"gantt\" غير مدعوم — المخطط الزمني المرتبط بكائن يعرض أنواع التغذية ({{variants}}). يحتاج مخطط جانت إلى صفوف صريحة، لكل منها عناصر items متداخلة خاصة به، لذلك لا يؤثر محور جانت (scale) هنا.",
956
+ },
957
+ unconfigured: {
958
+ noDateAxis: "محور تواريخ المخطط الزمني مطلوب — هذا العرض لا يعلن أي حقل تاريخ، والمخطط الزمني المرتبط بكائن لا يخترع حقلاً. أعلن أحد الحقول التالية: {{fields}}. الأول هو صيغة المواصفة، والبقية أسماء مستعارة قديمة.",
672
959
  },
673
960
  },
674
961
  gantt: {
@@ -686,6 +973,7 @@ const ar = {
686
973
  },
687
974
  aria: {
688
975
  taskList: "قائمة المهام",
976
+ refreshing: "جارٍ التحديث…",
689
977
  },
690
978
  tooltip: {
691
979
  days: "ي",
@@ -731,13 +1019,31 @@ const ar = {
731
1019
  conflict: {
732
1020
  title: "تعارض في الجدولة",
733
1021
  body: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1022
+ body_zero: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1023
+ body_one: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1024
+ body_two: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1025
+ body_few: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1026
+ body_many: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
1027
+ body_other: "يتعارض هذا النقل مع قيود التبعية. هل تريد إعادة جدولة {{count}} من المهام المتأثرة تلقائيًا؟",
734
1028
  confirm: "إعادة الجدولة تلقائيًا",
735
1029
  cancel: "الإبقاء كما هو",
736
1030
  },
737
1031
  autoScheduleDlg: {
738
1032
  title: "الجدولة التلقائية",
739
1033
  body: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1034
+ body_zero: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1035
+ body_one: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1036
+ body_two: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1037
+ body_few: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1038
+ body_many: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
1039
+ body_other: "هل تريد تأخير {{count}} من المهام لتلبية روابط التبعية؟",
740
1040
  skipped: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1041
+ skipped_zero: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1042
+ skipped_one: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1043
+ skipped_two: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1044
+ skipped_few: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1045
+ skipped_many: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
1046
+ skipped_other: "{{count}} من المهام المقفلة تخالف الروابط أيضًا وقد تم تخطيها.",
741
1047
  confirm: "تطبيق",
742
1048
  cancel: "إلغاء",
743
1049
  none: "جميع التبعيات مستوفاة — لا شيء لإعادة جدولته.",
@@ -816,6 +1122,7 @@ const ar = {
816
1122
  tabActionsFor: "إجراءات العرض لـ {{name}}",
817
1123
  readonlyAriaLabel: "عرض للقراءة فقط",
818
1124
  readonlyTooltip: "عرض النظام — معرَّف في الكود، للقراءة فقط.",
1125
+ malformedFilter: "عامل تصفية طريقة العرض هذه غير صالح، لذا لا تُعرض أي سجلات: يتعذّر تطبيق الشرط {{subject}}.",
819
1126
  },
820
1127
  designer: {
821
1128
  undo: "تراجع",
@@ -842,8 +1149,16 @@ const ar = {
842
1149
  addReaction: "إضافة تفاعل",
843
1150
  pageHeaderActions: "إجراءات رأس الصفحة",
844
1151
  emojiPicker: "منتقي الرموز التعبيرية",
845
- reactionCount: "{{emoji}} {{count}} تفاعلات",
846
- reactionCountOne: "{{emoji}} {{count}} تفاعل",
1152
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
1153
+ // own noun form. The base key, a count-invariant form, answers a call made
1154
+ // without a count.
1155
+ reactionCount: "{{emoji}} عدد التفاعلات: {{count}}",
1156
+ reactionCount_zero: "{{emoji}} {{count}} تفاعل",
1157
+ reactionCount_one: "{{emoji}} {{count}} تفاعل",
1158
+ reactionCount_two: "{{emoji}} تفاعلان ({{count}})",
1159
+ reactionCount_few: "{{emoji}} {{count}} تفاعلات",
1160
+ reactionCount_many: "{{emoji}} {{count}} تفاعلًا",
1161
+ reactionCount_other: "{{emoji}} {{count}} تفاعل",
847
1162
  recordDetail: "تفاصيل السجل",
848
1163
  recordDetailWithLabel: "تفاصيل {{label}}",
849
1164
  openAsFullPage: "فتح كصفحة كاملة",
@@ -861,7 +1176,7 @@ const ar = {
861
1176
  relatedRecords: "{{count}} سجلات",
862
1177
  relatedRecordOne: "{{count}} سجل",
863
1178
  noRelatedRecords: "لا توجد سجلات ذات صلة",
864
- loading: "جاري التحميل…",
1179
+ loading: "جارٍ التحميل…",
865
1180
  copyToClipboard: "نسخ إلى الحافظة",
866
1181
  copied: "تم النسخ!",
867
1182
  deleteConfirmation: "هل أنت متأكد أنك تريد حذف هذا السجل؟",
@@ -870,7 +1185,6 @@ const ar = {
870
1185
  viewAll: "عرض الكل",
871
1186
  new: "جديد",
872
1187
  add: "إضافة",
873
- emptyValue: "—",
874
1188
  comments: "التعليقات",
875
1189
  searchComments: "البحث في التعليقات…",
876
1190
  addCommentPlaceholder: "أضف تعليقاً… (Ctrl+Enter للإرسال)",
@@ -881,11 +1195,34 @@ const ar = {
881
1195
  unpin: "إلغاء التثبيت",
882
1196
  justNow: "الآن",
883
1197
  minutesAgo: "منذ {{count}} دقيقة",
1198
+ minutesAgo_zero: "منذ {{count}} دقيقة",
1199
+ minutesAgo_one: "منذ {{count}} دقيقة",
1200
+ minutesAgo_two: "منذ دقيقتين ({{count}})",
1201
+ minutesAgo_few: "منذ {{count}} دقائق",
1202
+ minutesAgo_many: "منذ {{count}} دقيقة",
1203
+ minutesAgo_other: "منذ {{count}} دقيقة",
884
1204
  hoursAgo: "منذ {{count}} ساعة",
1205
+ hoursAgo_zero: "منذ {{count}} ساعة",
1206
+ hoursAgo_one: "منذ {{count}} ساعة",
1207
+ hoursAgo_two: "منذ ساعتين ({{count}})",
1208
+ hoursAgo_few: "منذ {{count}} ساعات",
1209
+ hoursAgo_many: "منذ {{count}} ساعة",
1210
+ hoursAgo_other: "منذ {{count}} ساعة",
885
1211
  daysAgo: "منذ {{count}} يوم",
1212
+ daysAgo_zero: "منذ {{count}} يوم",
1213
+ daysAgo_one: "منذ {{count}} يوم",
1214
+ daysAgo_two: "منذ يومين ({{count}})",
1215
+ daysAgo_few: "منذ {{count}} أيام",
1216
+ daysAgo_many: "منذ {{count}} يومًا",
1217
+ daysAgo_other: "منذ {{count}} يوم",
886
1218
  dropFilesToUpload: "اسحب الملفات هنا أو انقر للرفع",
887
1219
  attachmentCount: "{{count}} مرفق",
888
- attachmentCountPlural: "{{count}} مرفقات",
1220
+ attachmentCount_zero: "{{count}} مرفق",
1221
+ attachmentCount_one: "{{count}} مرفق",
1222
+ attachmentCount_two: "مرفقان ({{count}})",
1223
+ attachmentCount_few: "{{count}} مرفقات",
1224
+ attachmentCount_many: "{{count}} مرفقًا",
1225
+ attachmentCount_other: "{{count}} مرفق",
889
1226
  removeAttachment: "إزالة المرفق",
890
1227
  // Record Attachments panel (enable.files, objectstack#4358)
891
1228
  attachments: "المرفقات",
@@ -899,11 +1236,10 @@ const ar = {
899
1236
  attachmentDownloadDenied: "ليس لديك صلاحية تنزيل هذا المرفق.",
900
1237
  attachmentAuthRequired: "يرجى تسجيل الدخول لتنزيل هذا المرفق.",
901
1238
  attachmentPermissionDenied: "ليس لديك إذن للقيام بذلك.",
902
- unifiedDiff: "عرض موحد",
903
- sideBySideDiff: "عرض جنباً إلى جنب",
904
- noChanges: "لا توجد تغييرات",
905
- previousVersion: "السابق",
906
- currentVersion: "الحالي",
1239
+ attachmentsAccessDenied: "ليس لديك حق الوصول إلى هذه المرفقات.",
1240
+ attachmentsLoadFailed: "تعذر تحميل مرفقات هذا السجل.",
1241
+ attachmentsApiUnavailable: "قائمة المرفقات غير متاحة على هذا الكائن.",
1242
+ retryLoadAttachments: "إعادة المحاولة",
907
1243
  discussion: "المناقشة",
908
1244
  showDiscussion: "إظهار المناقشة ({{count}})",
909
1245
  hideDiscussion: "إخفاء المناقشة",
@@ -918,25 +1254,39 @@ const ar = {
918
1254
  writeComment: "اكتب تعليقاً…",
919
1255
  subscribedTooltip: "مشترك — انقر لإلغاء الاشتراك",
920
1256
  unsubscribedTooltip: "الاشتراك في الإشعارات",
921
- firstRecord: "السجل الأول (Home)",
922
- previousRecordKey: "السجل السابق (←)",
923
- nextRecordKey: "السجل التالي (→)",
924
- lastRecord: "السجل الأخير (End)",
925
1257
  noRecords: "لا توجد سجلات",
926
- searchWhileNavigating: "البحث أثناء التصفح",
927
- searchRecords: "البحث في السجلات…",
928
1258
  allActivity: "كل النشاط",
929
1259
  commentsOnly: "التعليقات فقط",
930
1260
  fieldChangesFilter: "تغييرات الحقول",
931
1261
  tasksOnly: "المهام فقط",
932
1262
  leaveCommentPlaceholder: "اترك تعليقاً… (Ctrl+Enter للإرسال)",
933
1263
  noActivity: "لا يوجد نشاط مسجل",
1264
+ activityAccessDenied: "ليس لديك صلاحية عرض نشاط هذا السجل.",
1265
+ commentsAccessDenied: "ليس لديك صلاحية عرض التعليقات على هذا السجل.",
1266
+ // objectui#7149 — the rest of `ActivityTimeline`. The four chip labels the
1267
+ // `detail.*` pack did not already name, and the `formatFieldChange`
1268
+ // sentences, which are assembled in code and so need interpolation holes.
1269
+ allFilter: 'الكل',
1270
+ createsFilter: 'عمليات الإنشاء',
1271
+ deletesFilter: 'عمليات الحذف',
1272
+ statusChangesFilter: 'تغييرات الحالة',
1273
+ activityEmptyValue: '(فارغ)',
1274
+ activityFieldChanged: 'غيّر {{field}} من "{{old}}" إلى "{{new}}"',
1275
+ activityCreated: 'أنشأ هذا السجل',
1276
+ activityDeleted: 'حذف هذا السجل',
1277
+ activityStatusChanged: 'غيّر الحالة إلى "{{value}}"',
1278
+ activityUpdated: 'حدّث السجل',
934
1279
  loadMore: "تحميل المزيد",
935
1280
  edited: "(معدل)",
936
1281
  via: "عبر {{source}}",
937
1282
  viewSource: "عرض المصدر",
938
1283
  replyCount: "{{count}} رد",
939
- replyCountPlural: "{{count}} ردود",
1284
+ replyCount_zero: "{{count}} رد",
1285
+ replyCount_one: "{{count}} رد",
1286
+ replyCount_two: "ردّان ({{count}})",
1287
+ replyCount_few: "{{count}} ردود",
1288
+ replyCount_many: "{{count}} ردًّا",
1289
+ replyCount_other: "{{count}} رد",
940
1290
  replyPlaceholder: "رد…",
941
1291
  filterActivity: "تصفية النشاط",
942
1292
  openDiscussion: "فتح لوحة المناقشة",
@@ -950,6 +1300,9 @@ const ar = {
950
1300
  writeStrippedTitle: "تم الحفظ، لكن بعض الحقول لم تُطبَّق",
951
1301
  writeStrippedReadonly: "للقراءة فقط، لذلك لم تُطبَّق: {{fields}}",
952
1302
  writeStrippedByState: "غير قابلة للتعديل في الحالة الحالية لهذا السجل، لذلك لم تُطبَّق: {{fields}}",
1303
+ writeStrippedPrimaryKey: "معرّف السجل لا يمكن تغييره عند الحفظ، لذلك لم تُطبَّق: {{fields}}",
1304
+ writeStrippedComputed: "يحسبها الخادم بواسطة صيغة، لذلك لم تُطبَّق القيمة المُرسَلة: {{fields}}",
1305
+ writeStrippedUnknownReason: "لم تُطبَّق من قِبل الخادم: {{fields}}",
953
1306
  approvalPendingEditable: "قيد الموافقة · قابل للتعديل",
954
1307
  approvalPendingTooltip: "يحتوي هذا السجل على طلب موافقة معلق، لكن هذه الخطوة لا تزال تسمح بالتعديل",
955
1308
  approvalProgress: "الموافقات — {{got}} من {{need}}",
@@ -962,7 +1315,16 @@ const ar = {
962
1315
  cancelApprovalTooltipUnlocked: "إلغاء طلب الموافقة المعلق",
963
1316
  cancelApprovalFailed: "فشل إلغاء الموافقة",
964
1317
  cancelApprovalUnavailable: "إلغاء الموافقات غير مدعوم من مصدر البيانات هذا",
1318
+ pathLabel: 'مسار السجل',
1319
+ pathStageCompleted: '{{stage}}، مكتملة',
1320
+ pathStageCurrent: '{{stage}}، المرحلة الحالية',
1321
+ pathStageUpcoming: '{{stage}}، قادمة',
1322
+ pathStageLostCurrent: '{{stage}}، خاسرة، المرحلة الحالية',
1323
+ pathStageLostUpcoming: '{{stage}}، خاسرة، لم يتم الوصول إليها',
1324
+ pathStageWonUpcoming: '{{stage}}، المرحلة الهدف، لم يتم الوصول إليها',
965
1325
  linkCopied: "تم نسخ الرابط إلى الحافظة",
1326
+ commentFailed: "لم يُنشر تعليقك. لم يُحفظ أي شيء — يُرجى المحاولة مرة أخرى.",
1327
+ reactionFailed: "لم يُحفظ تفاعلك. يُرجى المحاولة مرة أخرى.",
966
1328
  linkCopyFailed: "فشل نسخ الرابط",
967
1329
  cancel: "إلغاء",
968
1330
  cancelEdit: "تجاهل التغييرات",
@@ -992,100 +1354,81 @@ const ar = {
992
1354
  sortBy: "ترتيب حسب",
993
1355
  filterPlaceholder: "تصفية…",
994
1356
  highlightFields: "الحقول الرئيسية",
1357
+ highlightsLabel: "الحقول الرئيسية للسجل",
995
1358
  createdBy: "أنشأه",
996
1359
  updatedBy: "حدّثه",
997
- // objectui#3863 — base key, and in ar this is the slot users actually hit: `zero`,
998
- // `two` (2), `few` (3-10) and `many` (11-99) are unenumerated, so before this key
999
- // those counts rendered ENGLISH. It uses the «{{count}} مفرد(جمع)» marker this
1000
- // pack writes throughout (perm.facet.objects, and the sibling toggle
1001
- // showEmptyFields below), which reads correctly for every count.
1360
+ // objectui#3863 — base key, answering only a call made without a count: since
1361
+ // objectui#11432 every ar category has its own slot — `_zero` and `_other`
1362
+ // (100+) singular, `_two` dual with the numeral in parentheses, `_few` (3-10)
1363
+ // the plural agreement, `_many` (11-99) accusative singular. The adjective
1364
+ // agrees with the masculine noun it stands for, as `_one` does.
1002
1365
  showEmptyRelated: "+ {{count}} فارغ(فارغة)",
1366
+ showEmptyRelated_zero: "+ {{count}} فارغ",
1003
1367
  showEmptyRelated_one: "+ {{count}} فارغ",
1004
- showEmptyRelated_other: "+ {{count}} فارغة",
1368
+ showEmptyRelated_two: "+ فارغان ({{count}})",
1369
+ showEmptyRelated_few: "+ {{count}} فارغة",
1370
+ showEmptyRelated_many: "+ {{count}} فارغًا",
1371
+ showEmptyRelated_other: "+ {{count}} فارغ",
1005
1372
  copyEmail: "نسخ البريد الإلكتروني",
1006
1373
  copyPhone: "نسخ الهاتف",
1007
1374
  copyRecordId: "نسخ معرف السجل",
1008
1375
  showEmptyFields: "إظهار {{count}} حقل(حقول) فارغة",
1376
+ showEmptyFields_zero: "إظهار {{count}} حقل فارغ",
1377
+ showEmptyFields_one: "إظهار {{count}} حقل فارغ",
1378
+ showEmptyFields_two: "إظهار حقلين فارغين ({{count}})",
1379
+ showEmptyFields_few: "إظهار {{count}} حقول فارغة",
1380
+ showEmptyFields_many: "إظهار {{count}} حقلًا فارغًا",
1381
+ showEmptyFields_other: "إظهار {{count}} حقل فارغ",
1009
1382
  hideEmptyFields: "إخفاء الحقول الفارغة",
1010
1383
  noValue: "لا قيمة",
1384
+ unresolvedReference: "مرجع غير مُحلّل: لم يتم تحويل {{value}} إلى مستخدم",
1385
+ unresolvedLookupReference: "مرجع غير مُحلّل: لم يتم تحويل {{value}} إلى سجل في هذه الشاشة",
1386
+ repeaterItemCount: "{{count}} عنصر (عناصر)",
1387
+ repeaterItemCount_zero: "{{count}} عنصر",
1388
+ repeaterItemCount_one: "{{count}} عنصر",
1389
+ repeaterItemCount_two: "عنصران ({{count}})",
1390
+ repeaterItemCount_few: "{{count}} عناصر",
1391
+ repeaterItemCount_many: "{{count}} عنصرًا",
1392
+ repeaterItemCount_other: "{{count}} عنصر",
1393
+ fileCount: "{{count}} ملف (ملفات)",
1394
+ fileCount_zero: "{{count}} ملف",
1395
+ fileCount_one: "{{count}} ملف",
1396
+ fileCount_two: "ملفان ({{count}})",
1397
+ fileCount_few: "{{count}} ملفات",
1398
+ fileCount_many: "{{count}} ملفًا",
1399
+ fileCount_other: "{{count}} ملف",
1011
1400
  },
1012
1401
  chart: {
1013
- noData: "لا تتوفر بيانات للرسم البياني",
1014
- loading: "جاري تحميل الرسم البياني…",
1402
+ loading: "جارٍ تحميل الرسم البياني…",
1403
+ refreshing: "جارٍ التحديث…",
1015
1404
  nullCategory: "(غير محدد)",
1016
- },
1017
- map: {
1018
- searchLocations: "البحث عن المواقع…",
1019
- locationDetails: "تفاصيل الموقع",
1020
- markersCount: "{{count}} علامة",
1021
- invalidCoordinates: "{{count}} سجل بإحداثيات مفقودة أو غير صالحة مستبعد من الخريطة.",
1022
- invalidCoordinatesPlural: "{{count}} سجلات بإحداثيات مفقودة أو غير صالحة مستبعدة من الخريطة.",
1023
- },
1024
- workflow: {
1025
- draft: "مسودة",
1026
- active: "نشط",
1027
- paused: "متوقف مؤقتاً",
1028
- completed: "مكتمل",
1029
- cancelled: "ملغي",
1030
- save: "حفظ",
1031
- publish: "نشر",
1032
- addNode: "إضافة عقدة",
1033
- workflowFlow: "سير العمل",
1034
- properties: "الخصائص",
1035
- connections: "الاتصالات",
1036
- quickConnect: "اتصال سريع",
1037
- fromPlaceholder: "من…",
1038
- toPlaceholder: "إلى…",
1039
- connect: "ربط",
1040
- label: "التسمية",
1041
- type: "النوع",
1042
- description: "الوصف",
1043
- assignee: "المسؤول",
1044
- assigneeType: "نوع المسؤول",
1045
- user: "مستخدم",
1046
- role: "دور",
1047
- group: "مجموعة",
1048
- expression: "تعبير",
1049
- timeoutMinutes: "المهلة (دقائق)",
1050
- selectNodeToEdit: "حدد عقدة لتعديل خصائصها",
1051
- workflowTitle: "عنوان سير العمل",
1052
- newWorkflow: "سير عمل جديد",
1053
- outConnections: "{{count}} مخرج",
1054
- start: "بداية",
1055
- end: "نهاية",
1056
- task: "مهمة",
1057
- userTask: "مهمة مستخدم",
1058
- serviceTask: "مهمة خدمة",
1059
- scriptTask: "مهمة نصية",
1060
- approval: "موافقة",
1061
- condition: "شرط",
1062
- parallelGateway: "بوابة متوازية",
1063
- joinGateway: "بوابة دمج",
1064
- boundaryEvent: "حدث حدودي",
1065
- delay: "تأخير",
1066
- notification: "إشعار",
1067
- webhook: "Webhook",
1068
- allowConcurrency: "السماح (تنفيذ متزامن)",
1069
- forbidConcurrency: "منع (تخطي الجديد)",
1070
- replaceConcurrency: "استبدال (إلغاء الحالي)",
1071
- queueConcurrency: "طابور (تنفيذ بعد الحالي)",
1072
- conditionEvent: "شرط",
1073
- manualEvent: "يدوي",
1074
- webhookEvent: "Webhook",
1075
- timerEvent: "مؤقت",
1076
- signalEvent: "إشارة",
1077
- versionHistory: "تاريخ الإصدارات",
1078
- importBpmn: "استيراد BPMN",
1079
- exportBpmn: "تصدير BPMN",
1080
- undo: "تراجع",
1081
- redo: "إعادة",
1082
- resetZoom: "إعادة تعيين التكبير",
1405
+ scatterOneMeasure: "المخطط المبعثر يرسم مقياسًا واحدًا فقط. أبقِ سلسلة واحدة:",
1406
+ unconfigured: {
1407
+ noCategoryAxis: "محور فئات الرسم البياني مطلوب — الرسم البياني المرتبط بكائن لا يخترع محورًا. أعلن أحد التالي:",
1408
+ },
1083
1409
  },
1084
1410
  dashboard: {
1085
- noRows: "لا توجد صفوف",
1411
+ // objectui#7063 — the DEFAULT empty state every dashboard widget renders
1412
+ // when its query SUCCEEDED and returned nothing. It replaced the terse
1413
+ // per-widget `noRows` / `noDataAvailable` fragments at the render site;
1414
+ // objectui#7125 deleted those two keys from all ten packs once nothing
1415
+ // read them. The copy here has to read as a state rather than a failure,
1416
+ // which is why it says the widget loaded. `sourceLabel` carries its own
1417
+ // punctuation so the call site concatenates no separator (see
1418
+ // `WidgetEmptyState`).
1419
+ empty: {
1420
+ title: "لا توجد بيانات بعد",
1421
+ message: "تم تحميل هذه الأداة بنجاح، لكن الاستعلام لم يُرجع أي سجلات بعد.",
1422
+ sourceLabel: "مصدر البيانات:",
1423
+ },
1086
1424
  loading: "جارٍ التحميل…",
1425
+ refreshing: "جارٍ التحديث…",
1426
+ refreshAll: "تحديث الكل",
1427
+ refreshDashboard: "تحديث لوحة القيادة",
1087
1428
  pickMeasures: "اختر المقاييس (القيم) لأداة مجموعة البيانات هذه.",
1088
1429
  datasetUnsupported: "مصدر البيانات هذا لا يدعم استعلامات مجموعات البيانات.",
1430
+ widgetForbiddenTitle: "لا تملك صلاحية الوصول",
1431
+ widgetForbiddenMessage: "ليست لديك صلاحية لعرض البيانات الخاصة بهذه الأداة.",
1089
1432
  details: "التفاصيل",
1090
1433
  exportCsv: "تصدير CSV",
1091
1434
  openInList: "فتح في القائمة",
@@ -1113,13 +1456,110 @@ const ar = {
1113
1456
  },
1114
1457
  },
1115
1458
  addWidget: "إضافة أداة",
1116
- removeWidget: "إزالة أداة",
1117
1459
  editLayout: "تعديل التخطيط",
1118
1460
  saveLayout: "حفظ التخطيط",
1119
1461
  resetLayout: "إعادة تعيين التخطيط",
1120
1462
  total: "الإجمالي",
1121
- noDataAvailable: "لا بيانات متاحة",
1122
1463
  noDataSourceFor: "لا مصدر بيانات لـ",
1464
+ config: {
1465
+ breadcrumb: {
1466
+ dashboard: "لوحة القيادة",
1467
+ configuration: "الإعداد",
1468
+ widget: "عنصر",
1469
+ chart: "مخطط",
1470
+ table: "جدول",
1471
+ pivotTable: "جدول محوري",
1472
+ },
1473
+ section: {
1474
+ general: "عام",
1475
+ layout: "التخطيط",
1476
+ data: "البيانات",
1477
+ dataBinding: "ربط البيانات",
1478
+ appearance: "المظهر",
1479
+ },
1480
+ field: {
1481
+ title: "العنوان",
1482
+ description: "الوصف",
1483
+ columns: "الأعمدة",
1484
+ gap: "المسافة",
1485
+ rowHeight: "ارتفاع الصف (بكسل)",
1486
+ autoRefresh: "تحديث تلقائي",
1487
+ showDescription: "إظهار الوصف",
1488
+ theme: "السمة",
1489
+ widgetType: "نوع العنصر",
1490
+ colorVariant: "متغير اللون",
1491
+ dataset: "مجموعة البيانات",
1492
+ dimensions: "الأبعاد",
1493
+ values: "القيم",
1494
+ width: "العرض (أعمدة)",
1495
+ height: "الارتفاع (صفوف)",
1496
+ },
1497
+ placeholder: {
1498
+ dashboardTitle: "عنوان لوحة القيادة",
1499
+ dashboardDescription: "ملخص قصير يظهر أسفل العنوان",
1500
+ widgetTitle: "عنوان العنصر",
1501
+ widgetDescription: "وصف العنصر",
1502
+ datasetName: "اسم مجموعة البيانات",
1503
+ selectDataset: "اختر مجموعة بيانات…",
1504
+ searchDatasets: "البحث في مجموعات البيانات…",
1505
+ addDimension: "إضافة بُعد…",
1506
+ addMeasure: "إضافة مقياس…",
1507
+ searchMembers: "بحث…",
1508
+ },
1509
+ empty: {
1510
+ datasets: "لم يتم العثور على مجموعات بيانات.",
1511
+ dimensions: "لم يتم اختيار أبعاد.",
1512
+ measures: "لم يتم اختيار مقاييس.",
1513
+ nothingToAdd: "لا يوجد المزيد للإضافة.",
1514
+ },
1515
+ help: {
1516
+ dataset: "مجموعة بيانات الطبقة الدلالية التي يرتبط بها هذا العنصر (ADR-0021).",
1517
+ dimensions: "تجميع/تقسيم القيم حسب أبعاد مجموعة البيانات هذه.",
1518
+ dimensionsPivot: "حقول التجميع/التقسيم. يمتد البُعد الأخير أفقيًا كأعمدة.",
1519
+ values: "المقاييس المراد عرضها من مجموعة البيانات (واحد على الأقل).",
1520
+ },
1521
+ action: {
1522
+ add: "إضافة",
1523
+ remove: "إزالة {{name}}",
1524
+ },
1525
+ refresh: {
1526
+ off: "إيقاف",
1527
+ every30s: "كل 30 ثانية",
1528
+ every1m: "كل دقيقة",
1529
+ every5m: "كل 5 دقائق",
1530
+ every15m: "كل 15 دقيقة",
1531
+ every30m: "كل 30 دقيقة",
1532
+ every1h: "كل ساعة",
1533
+ },
1534
+ themeOption: {
1535
+ light: "فاتح",
1536
+ dark: "داكن",
1537
+ auto: "تلقائي",
1538
+ },
1539
+ widgetType: {
1540
+ metric: "مقياس",
1541
+ bar: "مخطط شريطي",
1542
+ horizontalBar: "شريطي أفقي",
1543
+ line: "مخطط خطي",
1544
+ pie: "مخطط دائري",
1545
+ donut: "مخطط حلقي",
1546
+ area: "مخطط مساحة",
1547
+ scatter: "مخطط نقطي",
1548
+ funnel: "قمع",
1549
+ table: "جدول",
1550
+ pivot: "جدول محوري",
1551
+ },
1552
+ color: {
1553
+ default: "افتراضي",
1554
+ blue: "أزرق",
1555
+ teal: "أزرق مخضر",
1556
+ orange: "برتقالي",
1557
+ purple: "بنفسجي",
1558
+ success: "نجاح",
1559
+ warning: "تحذير",
1560
+ danger: "خطر",
1561
+ },
1562
+ },
1123
1563
  trend: {
1124
1564
  vsLastQuarter: "مقابل الربع الماضي",
1125
1565
  vsLastMonth: "مقابل الشهر الماضي",
@@ -1129,24 +1569,6 @@ const ar = {
1129
1569
  vsPreviousPeriod: "مقابل الفترة السابقة",
1130
1570
  },
1131
1571
  },
1132
- configPanel: {
1133
- save: "حفظ",
1134
- discard: "تجاهل",
1135
- close: "إغلاق",
1136
- layout: "التخطيط",
1137
- columns: "الأعمدة",
1138
- gap: "المسافة",
1139
- rowHeight: "ارتفاع الصف",
1140
- data: "البيانات",
1141
- refreshInterval: "فترة التحديث",
1142
- appearance: "المظهر",
1143
- title: "العنوان",
1144
- showDescription: "إظهار الوصف",
1145
- theme: "السمة",
1146
- configuration: "الإعداد",
1147
- general: "عام",
1148
- advanced: "متقدم",
1149
- },
1150
1572
  appDesigner: {
1151
1573
  createApp: "إنشاء تطبيق",
1152
1574
  editApp: "تعديل التطبيق",
@@ -1159,10 +1581,6 @@ const ar = {
1159
1581
  appDescription: "الوصف",
1160
1582
  appIcon: "الأيقونة",
1161
1583
  template: "القالب",
1162
- layout: "التخطيط",
1163
- layoutSidebar: "الشريط الجانبي",
1164
- layoutHeader: "الرأس",
1165
- layoutEmpty: "فارغ",
1166
1584
  selectObjects: "تحديد الكائنات",
1167
1585
  searchObjects: "البحث في الكائنات…",
1168
1586
  selectAll: "تحديد الكل",
@@ -1171,7 +1589,6 @@ const ar = {
1171
1589
  addGroup: "إضافة مجموعة",
1172
1590
  addUrl: "إضافة URL",
1173
1591
  addSeparator: "إضافة فاصل",
1174
- noNavItems: "لا توجد عناصر تنقل بعد.",
1175
1592
  logoUrl: "Logo URL",
1176
1593
  primaryColor: "اللون الأساسي",
1177
1594
  faviconUrl: "Favicon URL",
@@ -1197,16 +1614,13 @@ const ar = {
1197
1614
  showSort: "إظهار الترتيب",
1198
1615
  appearance: "المظهر",
1199
1616
  rowHeight: "ارتفاع الصف",
1200
- stripedRows: "صفوف متناوبة",
1201
- bordered: "محاط بإطار",
1202
1617
  livePreview: "معاينة مباشرة",
1203
- stepBasicDesc: "الاسم والعنوان والتخطيط",
1618
+ stepBasicDesc: "الاسم والعنوان والأيقونة",
1204
1619
  stepObjectsDesc: "اختيار كائنات الأعمال",
1205
1620
  stepNavigationDesc: "بناء شجرة التنقل",
1206
1621
  stepBrandingDesc: "الشعار والألوان والأيقونة",
1207
1622
  noObjectsFound: "لم يتم العثور على كائنات.",
1208
1623
  noNavItemsHint: "لا توجد عناصر تنقل بعد. حدد كائنات في الخطوة السابقة أو أضف عناصر يدويًا.",
1209
- separator: "فاصل",
1210
1624
  separatorLabel: "— فاصل —",
1211
1625
  newGroup: "مجموعة جديدة",
1212
1626
  newLink: "رابط جديد",
@@ -1240,6 +1654,7 @@ const ar = {
1240
1654
  navTypeSeparator: "فاصل",
1241
1655
  navTypeAction: "إجراء",
1242
1656
  navTypeComponent: "مكوّن",
1657
+ navTypeDoc: "مستند",
1243
1658
  navEditIcon: "تعديل الأيقونة",
1244
1659
  navToggleVisible: "تبديل الرؤية",
1245
1660
  navHidden: "مخفي",
@@ -1312,17 +1727,13 @@ const ar = {
1312
1727
  unique: "فريد",
1313
1728
  readOnly: "للقراءة فقط",
1314
1729
  hidden: "مخفي",
1315
- indexed: "مفهرس",
1316
1730
  externalId: "معرف خارجي",
1317
1731
  trackHistory: "تتبع السجل",
1318
1732
  defaultValue: "القيمة الافتراضية",
1319
1733
  placeholder: "نص تلميحي",
1320
1734
  referenceTo: "مرجع إلى",
1321
- formula: "صيغة",
1322
1735
  options: "خيارات",
1323
1736
  addOption: "إضافة خيار",
1324
- validationRules: "قواعد التحقق",
1325
- addRule: "إضافة قاعدة",
1326
1737
  systemBadge: "النظام",
1327
1738
  ungrouped: "عام",
1328
1739
  deleteConfirmTitle: "حذف الحقل؟",
@@ -1341,7 +1752,29 @@ const ar = {
1341
1752
  },
1342
1753
  },
1343
1754
  console: {
1755
+ studio: {
1756
+ backToHome: "العودة إلى الرئيسية",
1757
+ },
1344
1758
  saveAdvisoryTitle: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1759
+ saveAdvisoryTitle_zero: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1760
+ saveAdvisoryTitle_one: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1761
+ saveAdvisoryTitle_two: "تم الحفظ — أنتج فحص التأليف ملاحظتين إرشاديتين ({{count}})",
1762
+ saveAdvisoryTitle_few: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظات إرشادية",
1763
+ saveAdvisoryTitle_many: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1764
+ saveAdvisoryTitle_other: "تم الحفظ — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1765
+ publishAdvisoryTitle: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1766
+ publishAdvisoryTitle_zero: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1767
+ publishAdvisoryTitle_one: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1768
+ publishAdvisoryTitle_two: "تم النشر — أنتج فحص التأليف ملاحظتين إرشاديتين ({{count}})",
1769
+ publishAdvisoryTitle_few: "تم النشر — أنتج فحص التأليف {{count}} ملاحظات إرشادية",
1770
+ publishAdvisoryTitle_many: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1771
+ publishAdvisoryTitle_other: "تم النشر — أنتج فحص التأليف {{count}} ملاحظة إرشادية",
1772
+ importMappingsUnavailable: "تعذّر تحميل تعيينات الاستيراد المحفوظة لـ {{object}}",
1773
+ importMappingsRefused: "رفض الخادم هذا الطلب، لذلك فإن هذه القائمة فارغة لأنه تعذّرت قراءتها، لا لأنه لا يوجد شيء مسجَّل. سجّل الدخول مرة أخرى أو اطلب صلاحية الوصول من المسؤول.",
1774
+ importMappingsUnreadable: "هذه القائمة فارغة لأنه تعذّرت قراءتها، لا لأنه لا يوجد شيء مسجَّل. أعد المحاولة، وأبلغ عن المشكلة إذا استمرت.",
1775
+ savedViewsUnavailable: "تعذّر تحميل العروض المحفوظة لـ {{object}}",
1776
+ savedViewsRefused: "رفض الخادم هذا الطلب، لذلك فإن هذه القائمة فارغة لأنه تعذّرت قراءتها، لا لأن هذا الكائن ليس لديه عروض محفوظة. سجّل الدخول مرة أخرى أو اطلب صلاحية الوصول من المسؤول.",
1777
+ savedViewsUnreadable: "هذه القائمة فارغة لأنه تعذّرت قراءتها، لا لأن هذا الكائن ليس لديه عروض محفوظة. أعد المحاولة، وأبلغ عن المشكلة إذا استمرت.",
1345
1778
  settingsHub: {
1346
1779
  title: "الإعدادات",
1347
1780
  subtitle: "اضبط مساحة العمل والتكاملات وأعلام الميزات.",
@@ -1386,6 +1819,13 @@ const ar = {
1386
1819
  passwordsDownload: "تنزيل ملف CSV",
1387
1820
  },
1388
1821
  ai: {
1822
+ pendingDrafts: {
1823
+ count: "هناك {{count}} من التغييرات لم تُنشر بعد — لا يمكن للمستخدمين رؤيتها.",
1824
+ publish: "نشر",
1825
+ published: "جميع التغييرات المعلّقة فعّالة الآن.",
1826
+ failed: "فشل النشر.",
1827
+ publishedWithFindings: "تم النشر، لكن مجسّات وقت التشغيل أبلغت عن مشكلات: {{detail}}",
1828
+ },
1389
1829
  usage: {
1390
1830
  title: "استخدام الذكاء الاصطناعي",
1391
1831
  meterBuild: "الإنشاء",
@@ -1395,9 +1835,24 @@ const ar = {
1395
1835
  statusFull: "تم بلوغ الحد",
1396
1836
  resetsDaily: "تُعاد التهيئة الليلة",
1397
1837
  resetsMonthly: "تُعاد التهيئة في الدورة القادمة",
1838
+ resetsWeeklyDays: "{{count}} يوم(أيام) حتى إعادة التعيين",
1839
+ resetsWeeklyDays_zero: "{{count}} يوم حتى إعادة التعيين",
1840
+ resetsWeeklyDays_one: "{{count}} يوم حتى إعادة التعيين",
1841
+ resetsWeeklyDays_two: "يومان ({{count}}) حتى إعادة التعيين",
1842
+ resetsWeeklyDays_few: "{{count}} أيام حتى إعادة التعيين",
1843
+ resetsWeeklyDays_many: "{{count}} يومًا حتى إعادة التعيين",
1844
+ resetsWeeklyDays_other: "{{count}} يوم حتى إعادة التعيين",
1845
+ resetsWeeklyHours: "{{count}} ساعة(ساعات) حتى إعادة التعيين",
1846
+ resetsWeeklyHours_zero: "{{count}} ساعة حتى إعادة التعيين",
1847
+ resetsWeeklyHours_one: "{{count}} ساعة حتى إعادة التعيين",
1848
+ resetsWeeklyHours_two: "ساعتان ({{count}}) حتى إعادة التعيين",
1849
+ resetsWeeklyHours_few: "{{count}} ساعات حتى إعادة التعيين",
1850
+ resetsWeeklyHours_many: "{{count}} ساعة حتى إعادة التعيين",
1851
+ resetsWeeklyHours_other: "{{count}} ساعة حتى إعادة التعيين",
1398
1852
  ctaUpgrade: "قم بالترقية للمتابعة",
1399
1853
  ctaTopUp: "أضف أرصدة للمتابعة",
1400
1854
  ariaLabel: "استخدام الذكاء الاصطناعي: {{status}}",
1855
+ breakdownTitle: "المستخدَم حتى الآن",
1401
1856
  },
1402
1857
  workspaceTitle: "مساحة عمل الذكاء الاصطناعي",
1403
1858
  workspaceSubtitle: "اسأل وافحص واستأنف المحادثات",
@@ -1407,6 +1862,31 @@ const ar = {
1407
1862
  share: "مشاركة",
1408
1863
  shareTitle: "مشاركة هذه المحادثة",
1409
1864
  shareDisabledTitle: "ابدأ المحادثة لتفعيل المشاركة",
1865
+ buildDoctor: "تشخيص البناء",
1866
+ buildDoctorTitle: "تشخيص البناء — ما الذي طُبِّق فعلًا؟",
1867
+ buildDoctorDisabledTitle: "أرسل رسالة أولًا",
1868
+ buildDoctorDrawer: {
1869
+ description: 'ما ادّعاه الوكيل مقابل ما هو فعّال فعلًا. تشخيص للقراءة فقط.',
1870
+ reconciling: 'جارٍ المطابقة…',
1871
+ notAvailable: 'غير متاح — لم يتم العثور على المحادثة أو ليست لديك صلاحية.',
1872
+ untitled: '(بدون عنوان)',
1873
+ summary: 'الجولات: {{turns}} · الرسائل: {{messages}} · الرموز: {{tokens}} · LLM: {{seconds}} ث',
1874
+ allLive: 'جميع التغييرات التي جرت محاولتها ({{count}}) فعّالة — لم يُفقد شيء.',
1875
+ discrepancies: 'عدد التناقضات: {{count}} — ما قالته المحادثة لا يطابق ما هو فعّال.',
1876
+ orphanedTitle: 'مقترح ولكن لم يُطبَّق أبدًا',
1877
+ orphanedHint: 'بطاقة تأكيد اقترحها الوكيل ولكن لم تطبّقها أي جولة لاحقة — فُقد التغيير بصمت.',
1878
+ missingTitle: 'مُدّعى ولكنه مفقود',
1879
+ missingHint: 'ذكرت نتيجة أداة أنه تم التطبيق، لكن العنصر غير فعّال في sys_metadata.',
1880
+ toolErrorsTitle: 'أخطاء الأدوات',
1881
+ toolErrorsHint: 'استدعاءات الأدوات التي أعادت خطأً أثناء البناء.',
1882
+ verifyTitle: 'فحص البناء (verify_build)',
1883
+ yourApp: 'تطبيقك:',
1884
+ noIssues: 'عدد المشكلات: 0',
1885
+ issueCount: 'عدد المشكلات: {{count}}',
1886
+ platformNoise: 'تم إخفاء {{count}} من نتائج المنصة sys_*',
1887
+ pendingActions: 'الإجراءات المعلّقة',
1888
+ timeline: 'المخطط الزمني ({{count}})',
1889
+ },
1410
1890
  newChat: "جديدة",
1411
1891
  searchChats: "البحث في المحادثات…",
1412
1892
  noChatsYet: "لا توجد محادثات بعد",
@@ -1436,7 +1916,7 @@ const ar = {
1436
1916
  empty: {
1437
1917
  build: {
1438
1918
  title: "الإنشاء بالذكاء الاصطناعي",
1439
- description: "صف تطبيقًا أو سير عمل بلغة بسيطة — سأعدّ مسودة الكائنات والشاشات والأتمتة، ثم تراجعها وتنشرها.",
1919
+ description: "صف تطبيقًا بلغة بسيطة — سأعدّ مسودة الكائنات والشاشات والبيانات النموذجية، ثم تراجعها وتنشرها.",
1440
1920
  },
1441
1921
  ask: {
1442
1922
  title: "اسأل بياناتك",
@@ -1445,7 +1925,7 @@ const ar = {
1445
1925
  editApp: {
1446
1926
  title: "تحرير «{{app}}»",
1447
1927
  titleGeneric: "تحرير هذا التطبيق",
1448
- description: "ما الذي تريد تغييره؟ سأعدّل هذا التطبيق في مكانه — إضافة حقل أو كائن أو عرض أو أتمتة، أو تعديل ما هو موجود.",
1928
+ description: "ما الذي تريد تغييره؟ سأعدّل هذا التطبيق في مكانه — إضافة حقل أو كائن أو عرض أو لوحة معلومات، أو تعديل ما هو موجود.",
1449
1929
  },
1450
1930
  },
1451
1931
  clearConversation: "مسح",
@@ -1498,29 +1978,52 @@ const ar = {
1498
1978
  recentRecords: "اذكر أحدث 5 سجلات تم إنشاؤها.",
1499
1979
  recordCounts: "احسب عدد السجلات لكل كائن.",
1500
1980
  },
1981
+ // cloud#1984 — these five chips are the maker's own recommendations, so
1982
+ // they may only ask for what ADR-0112 v1 BUILDS: objects, fields, views
1983
+ // (grid/kanban/calendar/gallery), pages, dashboards and sample data. No
1984
+ // wording that promises autonomous behaviour (alert / remind / notify /
1985
+ // automate / status workflow) — v1 has no flows, actions or schedules, and
1986
+ // the model silently degrades such a request into a board or a filtered
1987
+ // view, so the chip would promise an alert and deliver a page. REVERT to
1988
+ // the automation wording when ADR-0112 v2 re-adds flows and actions.
1501
1989
  metadataAssistant: {
1502
- buildCrm: "أنشئ نظام إدارة علاقات عملاء للمبيعات — عملاء وجهات اتصال ومسار صفقات يمكنني تجميعه حسب المرحلة.",
1503
- buildApp: "أنشئ متتبّع مشاريع — مشاريع ومهام بمسؤولين وتواريخ استحقاق ولوحة حسب الحالة.",
1504
- buildFlow: "صمّم مكتب دعم — تذاكر بأولوية وسير عمل للحالات وروابط بالعملاء.",
1505
- buildInventory: "أنشئ تطبيق مخزون — منتجات ومستويات مخزون وموردين وتنبيه لانخفاض المخزون.",
1506
- buildRecruiting: "أنشئ متتبّع متقدمين — مرشحون ووظائف شاغرة ومراحل مقابلات وملاحظات.",
1990
+ buildCrm: "أنشئ نظام إدارة علاقات عملاء للمبيعات — عملاء وجهات اتصال وصفقات بحقل للمرحلة، ولوحة معلومات تجمع قيمة الصفقات حسب المرحلة.",
1991
+ buildApp: "أنشئ متتبّع مشاريع — مشاريع ومهام بمسؤولين وتواريخ استحقاق، ولوحة حسب الحالة، وتقويم لتواريخ الاستحقاق.",
1992
+ buildFlow: "صمّم مكتب دعم — تذاكر بحقلي الأولوية والحالة، ولوحة حسب الحالة، وروابط بالعملاء.",
1993
+ buildInventory: "أنشئ تطبيق مخزون — منتجات ومستويات مخزون وموردين، وعرض يصفّي الأصناف دون حد إعادة الطلب.",
1994
+ buildRecruiting: "أنشئ متتبّع متقدمين — مرشحون ووظائف شاغرة وحقل لمرحلة المقابلة، ولوحة حسب المرحلة.",
1507
1995
  },
1508
1996
  generic: {
1509
1997
  help: "بماذا يمكنك مساعدتي؟",
1510
1998
  availableObjects: "اذكر كائنات البيانات المتاحة.",
1511
1999
  recentActivity: "لخّص نشاطي الأخير.",
1512
2000
  },
2001
+ // objectui#7709 — the edit-mode starters, shown when the maker is bound
2002
+ // to an EXISTING app (`?package=`). Same rule as the five above: they
2003
+ // may only ask for what ADR-0112 v1 BUILDS. The fourth chip used to be
2004
+ // `addAutomation` ("an approval, a status flow, or a notification") and
2005
+ // every capability it named is refused by v1 (cloud#1956 / PR #1970), so
2006
+ // it now asks for sample data — `seed` IS on v1's whitelist, and having
2007
+ // no data is what an existing app most often lacks. REVERT: when
2008
+ // ADR-0112 v2 re-adds flows and actions, THIS chip's automation wording
2009
+ // comes back as `addAutomation`; the retired string is pinned for every
2010
+ // pack in `packages/i18n/src/__tests__/makerEditChips-v1-scope-7709.test.ts`.
1513
2011
  editApp: {
1514
2012
  addField: "أضف حقلًا إلى أحد الكائنات.",
1515
2013
  addObject: "أضف كائنًا جديدًا واربطه بكائن موجود.",
1516
2014
  addDashboard: "أضف لوحة معلومات للمؤشرات الرئيسية.",
1517
- addAutomation: "أضف أتمتة — موافقة أو سير حالات أو إشعارًا.",
2015
+ addSampleData: "املأ الكائنات الحالية ببيانات نموذجية واقعية تصلح للعرض التوضيحي.",
1518
2016
  },
1519
2017
  },
1520
2018
  changesTitle: "تأكيد التغييرات",
1521
2019
  changesConfirmed: "تم التأكيد",
1522
2020
  changesConfirm: "تأكيد",
1523
2021
  changesConfirmHint: "أجب لتأكيد هذا التغيير أو تعديله.",
2022
+ changesApplying: "جارٍ التطبيق…",
2023
+ changesApplied: "تم التطبيق",
2024
+ changesDrafted: "حُفظ كمسودة",
2025
+ changesFailed: "لم يُطبَّق",
2026
+ discussing: "قيد المناقشة: {{target}}",
1524
2027
  changeVerb: {
1525
2028
  createObject: "إنشاء كائن",
1526
2029
  addField: "إضافة حقل",
@@ -1584,13 +2087,20 @@ const ar = {
1584
2087
  },
1585
2088
  },
1586
2089
  title: "وحدة تحكم ObjectStack",
1587
- initializing: "جاري تهيئة التطبيق…",
2090
+ initializing: "جارٍ تهيئة التطبيق…",
1588
2091
  loadingHint: "قد يستغرق إعداد بيئة جديدة بعض الوقت.",
1589
2092
  breadcrumb: {
1590
2093
  dashboards: "لوحات المعلومات",
1591
2094
  pages: "الصفحات",
1592
2095
  reports: "التقارير",
1593
2096
  system: "النظام",
2097
+ marketplace: "السوق",
2098
+ settings: 'الإعدادات',
2099
+ apps: 'التطبيقات',
2100
+ profile: 'الملف الشخصي',
2101
+ approvals: 'الموافقات',
2102
+ aiApprovals: 'موافقات الذكاء الاصطناعي',
2103
+ auditLog: 'سجل التدقيق',
1594
2104
  },
1595
2105
  // objectui#4024 — the single-namespace settings screen. Its sibling
1596
2106
  // `settingsHub` above already resolved through this pack; the view was the
@@ -1609,8 +2119,12 @@ const ar = {
1609
2119
  discard: "تجاهل",
1610
2120
  saveChanges: "حفظ التغييرات",
1611
2121
  unsavedCount: "{{count}} تغيير(تغييرات) غير محفوظ",
2122
+ unsavedCount_zero: "{{count}} تغيير غير محفوظ",
1612
2123
  unsavedCount_one: "{{count}} تغيير غير محفوظ",
1613
- unsavedCount_other: "{{count}} تغييرات غير محفوظة",
2124
+ unsavedCount_two: "تغييران غير محفوظين ({{count}})",
2125
+ unsavedCount_few: "{{count}} تغييرات غير محفوظة",
2126
+ unsavedCount_many: "{{count}} تغييرًا غير محفوظ",
2127
+ unsavedCount_other: "{{count}} تغيير غير محفوظ",
1614
2128
  cryptoRefusalTitle: "لا يمكن لهذا النشر تشفير الأسرار",
1615
2129
  cryptoRefusalSubjectSuffix: "معلن كمشفَّر، لذلك لم تتم كتابة أي شيء.",
1616
2130
  cryptoRefusalNoSubject: "تم رفض القيمة المعلنة كمشفَّرة، لذلك لم تتم كتابة أي شيء.",
@@ -1618,9 +2132,9 @@ const ar = {
1618
2132
  cryptoRefusalToastNoSubject: "تعذّر تشفير الأسرار",
1619
2133
  },
1620
2134
  loadingSteps: {
1621
- connecting: "جاري الاتصال بمصدر البيانات",
1622
- loadingConfig: "جاري تحميل الإعدادات",
1623
- preparingWorkspace: "جاري تجهيز مساحة العمل",
2135
+ connecting: "جارٍ الاتصال بمصدر البيانات",
2136
+ loadingConfig: "جارٍ تحميل الإعدادات",
2137
+ preparingWorkspace: "جارٍ تجهيز مساحة العمل",
1624
2138
  },
1625
2139
  error: {
1626
2140
  connectionFailed: "تعذّر الاتصال بالخادم",
@@ -1630,7 +2144,7 @@ const ar = {
1630
2144
  },
1631
2145
  actions: {
1632
2146
  retry: "إعادة المحاولة",
1633
- retrying: "جاري إعادة المحاولة…",
2147
+ retrying: "جارٍ إعادة المحاولة…",
1634
2148
  },
1635
2149
  serverAction: {
1636
2150
  openingTitle: "جارٍ الفتح…",
@@ -1682,6 +2196,21 @@ const ar = {
1682
2196
  records: "السجلات",
1683
2197
  recentRecords: "شوهد مؤخراً",
1684
2198
  },
2199
+ // objectui#9954 — see the `en` pack for what raises each case.
2200
+ readRate: {
2201
+ ratioTitle: 'حجم قراءة غير معتاد في هذه البيئة',
2202
+ ratio: 'تتم قراءة {{ratio}} صف مقابل كل صف مكتوب. تُعلِّم المنصة كل ما يتجاوز {{threshold}}. لا يتم تقييد أو حظر أي شيء؛ هذا تقرير لمراجعة نمط القراءة.',
2203
+ noWritesTitle: 'قراءات بدون أي كتابة في هذه البيئة',
2204
+ noWrites: 'تتم قراءة صفوف دون كتابة أي صف على الإطلاق، لذا لا يوجد حد أعلى لمعدل القراءة. هذه هي أخطر قراءة. تُعلِّم المنصة كل ما يتجاوز {{threshold}}. لا يتم تقييد أو حظر أي شيء؛ هذا تقرير لمراجعة نمط القراءة.',
2205
+ },
2206
+ // objectui#10439 — see the `en` pack for what raises each case.
2207
+ storageUsage: {
2208
+ warningTitle: 'مساحة التخزين توشك على الامتلاء',
2209
+ warning: 'تم استخدام {{used}} ميغابايت من {{limit}} ميغابايت. يتوقف الرفع والاستيراد مؤقتًا عند امتلاء مساحة التخزين.',
2210
+ blockedTitle: 'مساحة التخزين ممتلئة: الرفع والاستيراد متوقفان مؤقتًا',
2211
+ blocked: 'تم استخدام {{used}} ميغابايت من {{limit}} ميغابايت. البيانات الحالية لم تُمس، ولا تزال القراءة والتصدير وتعديل السجلات الفردية تعمل.',
2212
+ upgrade: 'قم بالترقية للمتابعة',
2213
+ },
1685
2214
  errors: {
1686
2215
  somethingWentWrong: "حدث خطأ ما",
1687
2216
  unexpectedError: "حدث خطأ غير متوقع أثناء عرض هذا المحتوى.",
@@ -1712,6 +2241,7 @@ const ar = {
1712
2241
  viewNameInvalid: "استخدم أحرفًا إنجليزية صغيرة وأرقامًا وشرطات سفلية؛ وابدأ بحرف أو شرطة سفلية.",
1713
2242
  systemViewReadonly: "عرض النظام معرَّف في الكود — للقراءة فقط.",
1714
2243
  cannotEditMetaView: "هذا عرض مدمج معرَّف في الكود — لا يمكن تعديله.",
2244
+ viewConfigPermissionDenied: "تنطبق إعدادات العرض على جميع المستخدمين الذين يستخدمون هذا العرض، لذا يتطلب تغييرها إذن «إدارة البيانات الوصفية». اطلب من المسؤول إجراء هذا التغيير.",
1715
2245
  cannotDeleteMetaView: "هذا عرض مدمج معرَّف في الكود — لا يمكن حذفه.",
1716
2246
  expandToPage: "فتح كصفحة كاملة",
1717
2247
  objectNotFound: "الكائن غير موجود",
@@ -1720,101 +2250,44 @@ const ar = {
1720
2250
  filterOrNotSavable: "يستخدم هذا الفلتر «أو» بين الشروط، وهو ما لا يمكن للعرض المحفوظ تخزينه بعد. لا يزال مطبقًا على هذه القائمة — أزل تجميع «أو» لحفظه في العرض.",
1721
2251
  filterNestedNotSavable: "يستخدم هذا الفلتر مجموعات شروط متداخلة لا يمكن للعرض المحفوظ تخزينها. حوّله إلى قائمة شروط واحدة لحفظه في العرض.",
1722
2252
  allRecords: "جميع السجلات",
1723
- exitDesignMode: "الخروج من وضع التصميم",
1724
- enterDesignMode: "الدخول إلى وضع التصميم",
1725
- metadataInspector: "مفتش البيانات الوصفية",
1726
- editView: "تعديل العرض",
1727
- addView: "إضافة عرض",
1728
- designTools: "أدوات التصميم",
1729
2253
  new: "جديد",
1730
2254
  configureView: "تكوين العرض",
1731
- closePanel: "إغلاق اللوحة",
1732
- page: "الصفحة",
1733
- pageConfigHint: "شريط الأدوات والتنقل وإعدادات غلاف العرض",
1734
- listConfigHint: "عرض البيانات والأعمدة والمظهر لهذا النوع من القائمة",
1735
- general: "عام",
1736
- generalHint: "عنوان العرض والوصف والنوع",
1737
- toolbar: "شريط الأدوات",
1738
- toolbarHint: "البحث والتصفية والفرز والتجميع ومفاتيح الكثافة",
1739
2255
  toolbarEnabledCount: "{{count}} من {{total}} مفعّل",
1740
- navigationSection: "التنقل",
1741
- navigationHint: "سلوك النقر على الصف وإعدادات العرض التفصيلي",
1742
- records: "السجلات",
1743
- recordsHint: "وضع التحديد وإضافة سجل والتحرير المباشر",
1744
- exportPrint: "التصدير والطباعة",
1745
- exportPrintHint: "صيغ التصدير والطباعة وعرض عدد السجلات",
1746
- showAllFields: "إظهار الكل",
1747
- hideAllFields: "إخفاء الكل",
1748
2256
  searchFields: "البحث في الحقول…",
1749
2257
  title: "العنوان",
1750
- description: "الوصف",
1751
- data: "البيانات",
1752
- source: "المصدر",
1753
- columns: "الأعمدة",
1754
- filterBy: "تصفية حسب",
1755
- sortBy: "ترتيب حسب",
1756
- appearance: "المظهر",
1757
- showDescription: "عرض الوصف",
1758
2258
  viewType: "نوع العرض",
1759
- userFilters: "مرشحات المستخدم",
1760
- enableSearch: "تفعيل البحث",
1761
- enableFilter: "تفعيل التصفية",
1762
- enableSort: "تفعيل الترتيب",
1763
- enableHideFields: "تفعيل إخفاء الحقول",
1764
- enableGroup: "تفعيل التجميع",
1765
- enableColor: "تفعيل اللون",
1766
- enableDensity: "تفعيل الكثافة",
1767
- userActions: "إجراءات المستخدم",
1768
- addRecordViaForm: "إضافة سجلات عبر النموذج",
1769
- advanced: "متقدم",
1770
- allowExport: "السماح بالتصدير",
1771
- recordCount: "{{count}} سجل",
1772
- noDescription: "لا يوجد وصف",
1773
- none: "لا شيء",
1774
- columnsConfigured: "{{count}} أعمدة",
2259
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
2260
+ // own noun form. The base key, a count-invariant form, answers a call made
2261
+ // without a count.
2262
+ recordCount: "عدد السجلات: {{count}}",
2263
+ recordCount_zero: "{{count}} سجل",
2264
+ recordCount_one: "{{count}} سجل",
2265
+ recordCount_two: "سجلان ({{count}})",
2266
+ recordCount_few: "{{count}} سجلات",
2267
+ recordCount_many: "{{count}} سجلًا",
2268
+ recordCount_other: "{{count}} سجل",
1775
2269
  save: "حفظ",
1776
2270
  discard: "تجاهل",
1777
2271
  createView: "إنشاء عرض",
1778
2272
  newView: "عرض جديد",
1779
- typeOptions: "خيارات النوع",
1780
2273
  groupByField: "حقل التجميع",
1781
2274
  startDateField: "حقل تاريخ البدء",
1782
2275
  titleField: "حقل العنوان",
1783
2276
  latitudeField: "حقل خط العرض",
1784
2277
  longitudeField: "حقل خط الطول",
1785
2278
  imageField: "حقل الصورة",
1786
- dateField: "حقل التاريخ",
1787
2279
  selectField: "اختر حقلاً…",
1788
- gridOptionsHint: "يستخدم عرض الشبكة الأعمدة المكونة أعلاه.",
1789
- groupBy: "تجميع حسب",
1790
- prefixField: "حقل البادئة",
1791
- fields: "الحقول",
1792
- fieldsVisible: "{{count}} مرئي",
1793
- sortsCount: "{{count}} ترتيبات",
1794
- filtersCount: "{{count}} مرشحات",
1795
2280
  endDateField: "حقل تاريخ الانتهاء",
1796
- color: "اللون",
1797
- fieldTextColor: "لون نص الحقل",
1798
- rowHeight: "ارتفاع الصف",
1799
- wrapHeaders: "التفاف العناوين",
1800
- showFieldDescriptions: "إظهار أوصاف الحقول",
1801
- collapseAllByDefault: "طي الكل افتراضياً",
1802
- striped: "صفوف مخططة",
1803
- bordered: "خلايا محاطة بحدود",
1804
- inlineEdit: "تحرير السجلات مباشرة",
1805
- addDeleteRecordsInline: "إضافة/حذف السجلات مباشرة",
1806
- clickIntoRecordDetails: "انقر لعرض تفاصيل السجل",
1807
- navigationMode: "وضع التنقل",
1808
- navigationWidth: "عرض التنقل",
1809
- navigationWidthHint: "متاح لأوضاع التنقل: الدرج والنافذة المنبثقة والعرض المقسم",
1810
- openNewTab: "فتح في علامة تبويب جديدة",
1811
- openNewTabHint: "متاح لأوضاع التنقل: الصفحة والنافذة الجديدة",
1812
2281
  import: "استيراد",
1813
2282
  importTitle: "استيراد من CSV",
1814
2283
  importedToast: "تم استيراد {{count}} صف(صفوف).",
2284
+ importedToast_zero: "تم استيراد {{count}} صف.",
2285
+ importedToast_one: "تم استيراد {{count}} صف.",
2286
+ importedToast_two: "تم استيراد صفين ({{count}}).",
2287
+ importedToast_few: "تم استيراد {{count}} صفوف.",
2288
+ importedToast_many: "تم استيراد {{count}} صفًا.",
2289
+ importedToast_other: "تم استيراد {{count}} صف.",
1815
2290
  importedWithSkipped: "تم استيراد {{ok}} صف(صفوف)؛ تم تخطي {{skipped}}.",
1816
- showAdvancedSettings: "إظهار الإعدادات المتقدمة",
1817
- showFewerSettings: "إظهار إعدادات أقل",
1818
2291
  createViewDesc: "اختر نوع العرض وأعطه اسماً. يمكن تغيير جميع الإعدادات لاحقاً.",
1819
2292
  cancel: "إلغاء",
1820
2293
  create: "إنشاء",
@@ -1822,6 +2295,12 @@ const ar = {
1822
2295
  deleteViewTitle: "حذف العرض",
1823
2296
  deleteViewConfirm: "حذف العرض \"{{name}}\"؟ لا يمكن التراجع عن ذلك.",
1824
2297
  bulkDeleteConfirm: "حذف {{count}} سجل(ات) محدد(ة)؟ لا يمكن التراجع عن ذلك.",
2298
+ bulkDeleteConfirm_zero: "حذف {{count}} سجل محدد؟ لا يمكن التراجع عن ذلك.",
2299
+ bulkDeleteConfirm_one: "حذف {{count}} سجل محدد؟ لا يمكن التراجع عن ذلك.",
2300
+ bulkDeleteConfirm_two: "حذف سجلين محددين ({{count}})؟ لا يمكن التراجع عن ذلك.",
2301
+ bulkDeleteConfirm_few: "حذف {{count}} سجلات محددة؟ لا يمكن التراجع عن ذلك.",
2302
+ bulkDeleteConfirm_many: "حذف {{count}} سجلًا محددًا؟ لا يمكن التراجع عن ذلك.",
2303
+ bulkDeleteConfirm_other: "حذف {{count}} سجل محدد؟ لا يمكن التراجع عن ذلك.",
1825
2304
  duplicateViewName: "يوجد عرض بهذا الاسم بالفعل.",
1826
2305
  viewTypeGrid: "شبكة",
1827
2306
  viewTypeGridDesc: "جدول سجلات بأسلوب جدول البيانات.",
@@ -1858,62 +2337,17 @@ const ar = {
1858
2337
  chartTypePie: "مخطط دائري",
1859
2338
  chartTypeArea: "مخطط مساحة",
1860
2339
  chartTypeScatter: "مخطط نقطي",
1861
- xAxisField: "حقل المحور X",
1862
- xAxisFieldHelp: "البُعد الفئوي أو الزمني.",
1863
- yAxisField: "حقل المحور Y",
1864
- yAxisFieldHelp: "الحقل الرقمي للتجميع.",
1865
- selectionMode: "وضع التحديد",
1866
- selectionNone: "لا شيء",
1867
- selectionSingle: "فردي",
1868
- selectionMultiple: "متعدد",
1869
- pageSize: "حجم الصفحة",
1870
- pageSizeOptions: "خيارات حجم الصفحة",
1871
- exportFormats: "تنسيقات التصدير",
1872
- exportMaxRecords: "الحد الأقصى للسجلات",
1873
- exportIncludeHeaders: "تضمين الرؤوس",
1874
- exportFileNamePrefix: "بادئة اسم الملف",
1875
- searchableFields: "الحقول القابلة للبحث",
1876
- filterableFields: "الحقول القابلة للتصفية",
1877
- resizableColumns: "أعمدة قابلة لتغيير الحجم",
1878
- densityCompact: "مضغوط",
1879
- densityComfortable: "عادي",
1880
- densitySpacious: "فسيح",
1881
- densityMode: "وضع الكثافة",
1882
- hiddenFields: "الحقول المخفية",
1883
- rowActions: "إجراءات الصف",
1884
- bulkActions: "إجراءات جماعية",
1885
- sharing: "مشاركة",
1886
- sharingEnabled: "المشاركة مفعلة",
1887
- sharingVisibility: "الرؤية",
1888
- addRecordEnabled: "إضافة سجل مفعلة",
1889
- addRecordPosition: "الموضع",
1890
- addRecordMode: "الوضع",
1891
- addRecordFormView: "عرض النموذج",
1892
- conditionalFormatting: "التنسيق الشرطي",
1893
- addRule: "إضافة قاعدة",
1894
- quickFilters: "فلاتر سريعة",
1895
- addQuickFilter: "إضافة فلتر سريع",
1896
- ufElements: "العناصر",
1897
- ufDropdown: "قائمة منسدلة",
2340
+ dataset: "مجموعة البيانات",
2341
+ datasetHelp: "يقرأ المخطط أرقامه من مجموعة البيانات هذه الخاصة بالكائن.",
2342
+ chartMeasure: "المقياس",
2343
+ chartMeasureHelp: "مقياس مجموعة البيانات المعروض على محور القيم.",
2344
+ chartDimension: "البُعد",
2345
+ chartDimensionHelp: "بُعد مجموعة البيانات الذي تُجمَّع القيم حسبه (اختياري).",
2346
+ viewTypeUnavailableDataset: "لا يوفّر هذا الكائن أي مجموعة بيانات للمخطط.",
2347
+ noDatasetMeasure: "لا تعلن مجموعة البيانات هذه عن أي مقياس للمخطط.",
1898
2348
  ufTabs: "علامات تبويب",
1899
- ufToggle: "تبديل",
1900
2349
  ufAddField: "+ إضافة حقل فلتر…",
1901
- ufNoFields: "لا حقول متاحة",
1902
- ufAddTab: "+ إضافة علامة تبويب",
1903
- ufTabLabel: "التسمية",
1904
2350
  ufShowAllRecords: "إظهار علامة \"جميع السجلات\"",
1905
- ufAllowAddTab: "السماح بإضافة علامات تبويب",
1906
- showRecordCount: "إظهار عدد السجلات",
1907
- allowPrinting: "السماح بالطباعة",
1908
- virtualScroll: "التمرير الافتراضي",
1909
- emptyStateTitle: "عنوان الحالة الفارغة",
1910
- emptyStateMessage: "رسالة الحالة الفارغة",
1911
- emptyStateIcon: "رمز الحالة الفارغة",
1912
- ariaLabel: "تسمية ARIA",
1913
- ariaDescribedBy: "موصوف بـ ARIA",
1914
- ariaLive: "ARIA Live",
1915
- accessibility: "إمكانية الوصول",
1916
- viewTabs: "علامات تبويب العرض",
1917
2351
  },
1918
2352
  localeSwitcher: {
1919
2353
  label: "اللغة",
@@ -1924,6 +2358,9 @@ const ar = {
1924
2358
  unpinItem: "إلغاء تثبيت {{name}}",
1925
2359
  dragToReorder: "اسحب لإعادة الترتيب",
1926
2360
  favorites: "المفضلة",
2361
+ launcherLabel: "مشغّل التطبيقات",
2362
+ menuLabel: "تنقّل التطبيق",
2363
+ menuEmpty: "لا توجد في هذا التطبيق عناصر تنقّل يمكنك فتحها.",
1927
2364
  },
1928
2365
  },
1929
2366
  auth: {
@@ -1977,6 +2414,8 @@ const ar = {
1977
2414
  resendOtpCountdownText: "إعادة الإرسال بعد {seconds} ثانية",
1978
2415
  usePhoneOtpText: "تسجيل الدخول برمز التحقق",
1979
2416
  usePasswordSignInText: "تسجيل الدخول بكلمة المرور بدلاً من ذلك",
2417
+ socialButton: "المتابعة باستخدام {provider}",
2418
+ orText: "أو تابع باستخدام البريد الإلكتروني",
1980
2419
  },
1981
2420
  register: {
1982
2421
  title: "إنشاء حساب",
@@ -1995,8 +2434,12 @@ const ar = {
1995
2434
  submittingButton: "جارٍ إنشاء الحساب…",
1996
2435
  hasAccountText: "لديك حساب بالفعل؟",
1997
2436
  signInText: "تسجيل الدخول",
2437
+ socialButton: "التسجيل باستخدام {provider}",
2438
+ orText: "أو تابع باستخدام البريد الإلكتروني",
1998
2439
  errors: {
1999
2440
  userExists: "يوجد حساب بهذا البريد الإلكتروني بالفعل. حاول تسجيل الدخول.",
2441
+ selfRegistrationClosed: "التسجيل الذاتي غير متاح في هذه البيئة. اطلب دعوة من المسؤول.",
2442
+ emailDomainNotAllowed: "نطاق هذا البريد الإلكتروني غير مسموح له بالتسجيل هنا. استخدم البريد الإلكتروني لمؤسستك أو اطلب دعوة من المسؤول.",
2000
2443
  },
2001
2444
  verifyInbox: {
2002
2445
  title: "تحقق من صندوق الوارد",
@@ -2015,7 +2458,7 @@ const ar = {
2015
2458
  submitButton: "إرسال رابط إعادة التعيين",
2016
2459
  submittingButton: "جارٍ الإرسال…",
2017
2460
  successTitle: "تحقق من بريدك الإلكتروني",
2018
- successDescription: "لقد أرسلنا رابط إعادة تعيين كلمة المرور إلى {{email}}. يرجى التحقق من بريدك الوارد.",
2461
+ successDescription: "لقد أرسلنا رابط إعادة تعيين كلمة المرور إلى {email}. يرجى التحقق من بريدك الوارد.",
2019
2462
  backToSignInText: "العودة إلى تسجيل الدخول",
2020
2463
  rememberPasswordText: "تتذكر كلمة المرور؟",
2021
2464
  signInText: "تسجيل الدخول",
@@ -2195,6 +2638,15 @@ const ar = {
2195
2638
  role: "الدور",
2196
2639
  save: "حفظ التغييرات",
2197
2640
  },
2641
+ language: {
2642
+ title: "اللغة",
2643
+ description: "اللغة المستخدمة في الإشعارات والرسائل المرسلة إليك. أما لغة الواجهة فتُختار بشكل منفصل من قائمة الكرة الأرضية.",
2644
+ label: "اللغة المفضلة",
2645
+ systemDefault: "استخدام الإعداد الافتراضي للنشر",
2646
+ save: "حفظ",
2647
+ saved: "تم تحديث تفضيل اللغة.",
2648
+ readOnly: "يدير المسؤول لغة حسابك.",
2649
+ },
2198
2650
  password: {
2199
2651
  changeTitle: "تغيير كلمة المرور",
2200
2652
  setTitle: "تعيين كلمة مرور محلية",
@@ -2226,7 +2678,6 @@ const ar = {
2226
2678
  label: "مساحات العمل",
2227
2679
  default: "مساحة العمل الخاصة بي",
2228
2680
  switch: "تبديل مساحة العمل",
2229
- create: "إنشاء مساحة عمل",
2230
2681
  createTitle: "إنشاء مساحة عمل",
2231
2682
  createDescription: "مساحة العمل هي مساحة مشتركة لفريقك للتعاون.",
2232
2683
  createButton: "إنشاء مساحة عمل",
@@ -2251,7 +2702,6 @@ const ar = {
2251
2702
  packageManagement: "إدارة الحزم",
2252
2703
  searchNavigation: "البحث في التنقل…",
2253
2704
  settings: "الإعدادات",
2254
- help: "المساعدة",
2255
2705
  helpTooltip: "المساعدة والوثائق",
2256
2706
  activityFeed: "موجز النشاط",
2257
2707
  notifications: "الإشعارات",
@@ -2290,10 +2740,12 @@ const ar = {
2290
2740
  build: {
2291
2741
  title: "إنشاء تطبيق",
2292
2742
  subtitle: "ابدأ من الصفر — صمّم الكائنات والنماذج والأتمتة والواجهات.",
2743
+ noCapability: "إنشاء التطبيقات غير متاح في مساحة العمل هذه — فهو يتطلب إذن «إدارة البيانات الوصفية» الذي لا يملكه حسابك.",
2293
2744
  },
2294
2745
  template: {
2295
2746
  title: "ابدأ من قالب",
2296
2747
  subtitle: "ثبّت تطبيق قالب من السوق وخصّصه.",
2748
+ marketplaceDisabled: "لا يوجد سوق تطبيقات مُهيّأ لوقت التشغيل هذا، لذا لا توجد قوالب لتثبيتها هنا.",
2297
2749
  },
2298
2750
  welcomeAdminDescription: "صف نشاطك التجاري في جملة واحدة — وسيولّد الذكاء الاصطناعي الكائنات والشاشات وواجهات البرمجة وأدوات الوكيل. أو أعدّها بنفسك من القائمة على اليسار.",
2299
2751
  welcomeAdminDescriptionNoBuild: "أعدّ تطبيقك الأول من قائمة الإدارة على اليسار. وبمجرد توفر البيانات، يمكن لمساعد الذكاء الاصطناعي مساعدتك في استكشافها.",
@@ -2309,6 +2761,12 @@ const ar = {
2309
2761
  },
2310
2762
  pendingDrafts: {
2311
2763
  message: "لديك {{count}} من التغييرات غير المنشورة — انشرها لتصبح فعّالة.",
2764
+ message_zero: "لديك {{count}} من التغييرات غير المنشورة — انشرها لتصبح فعّالة.",
2765
+ message_one: "لديك {{count}} من التغييرات غير المنشورة — انشرها لتصبح فعّالة.",
2766
+ message_two: "لديك {{count}} من التغييرات غير المنشورة — انشرها لتصبح فعّالة.",
2767
+ message_few: "لديك {{count}} من التغييرات غير المنشورة — انشرها لتصبح فعّالة.",
2768
+ message_many: "لديك {{count}} من التغييرات غير المنشورة — انشرها لتصبح فعّالة.",
2769
+ message_other: "لديك {{count}} من التغييرات غير المنشورة — انشرها لتصبح فعّالة.",
2312
2770
  cta: "نشر",
2313
2771
  publishing: "جارٍ النشر…",
2314
2772
  published: "تم النشر! تغييراتك فعّالة الآن.",
@@ -2323,7 +2781,6 @@ const ar = {
2323
2781
  capabilityWarn: "فحص التأليف: {{count}} مرجع(مراجع) قدرات لا تشير إلى شيء.",
2324
2782
  },
2325
2783
  title: "الرئيسية",
2326
- subtitle: "لوحة تحكم مساحة العمل",
2327
2784
  nav: "الرئيسية",
2328
2785
  allApps: "جميع التطبيقات",
2329
2786
  yourApps: "تطبيقاتك",
@@ -2335,8 +2792,6 @@ const ar = {
2335
2792
  empty: "لقد أنجزت كل شيء",
2336
2793
  },
2337
2794
  loading: "جارٍ تحميل مساحة العمل…",
2338
- recent: "الأخيرة",
2339
- starred: "المميزة بنجمة",
2340
2795
  welcome: "مرحباً بك في ObjectUI",
2341
2796
  welcomeDescription: "ابدأ بإنشاء تطبيقك الأول أو تكوين إعدادات النظام.",
2342
2797
  createFirstApp: "أنشئ أول تطبيق لك",
@@ -2344,8 +2799,6 @@ const ar = {
2344
2799
  browseMarketplace: "تصفح متجر التطبيقات",
2345
2800
  quickActions: {
2346
2801
  title: "إجراءات سريعة",
2347
- createApp: "إنشاء تطبيق",
2348
- createAppDesc: "ابدأ بتطبيق جديد",
2349
2802
  manageObjects: "إدارة الكائنات",
2350
2803
  manageObjectsDesc: "تكوين نماذج البيانات",
2351
2804
  systemSettings: "إعدادات النظام",
@@ -2361,18 +2814,15 @@ const ar = {
2361
2814
  greetingNight: "وردية الليل",
2362
2815
  heroTagline: "استمر من حيث توقفت أو اكتشف شيئاً جديداً.",
2363
2816
  open: "فتح",
2364
- stats: {
2365
- apps: "التطبيقات",
2366
- starred: "المميزة",
2367
- recent: "الأخيرة",
2368
- },
2369
2817
  recentApps: {
2370
2818
  title: "فُتح مؤخراً",
2371
2819
  itemType: {
2372
2820
  object: "كائن",
2373
2821
  dashboard: "لوحة تحكم",
2374
2822
  page: "صفحة",
2823
+ report: "تقرير",
2375
2824
  record: "سجل",
2825
+ metadata: "البيانات الوصفية",
2376
2826
  },
2377
2827
  },
2378
2828
  starredApps: {
@@ -2394,7 +2844,6 @@ const ar = {
2394
2844
  organizations: "المؤسسات",
2395
2845
  roles: "الأدوار",
2396
2846
  configuration: "التهيئة",
2397
- createApp: "إنشاء تطبيق",
2398
2847
  administration: "الإدارة",
2399
2848
  datasources: "مصادر البيانات",
2400
2849
  documentation: "الوثائق",
@@ -2419,6 +2868,7 @@ const ar = {
2419
2868
  typeUpdate: "تحديث",
2420
2869
  typeDelete: "حذف",
2421
2870
  typeComment: "تعليق",
2871
+ typeSystem: "النظام",
2422
2872
  relativeJustNow: "الآن",
2423
2873
  relativeSecondsAgo: "منذ {{count}} ث",
2424
2874
  relativeMinutesAgo: "منذ {{count}} د",
@@ -2440,8 +2890,22 @@ const ar = {
2440
2890
  placeholder: "ابحث في الكائنات، لوحات التحكم، الصفحات، التقارير…",
2441
2891
  inputAriaLabel: "ابحث في الكائنات، لوحات التحكم، الصفحات، التقارير",
2442
2892
  resultsCount: "{{count}} نتيجة لـ \"{{query}}\"",
2443
- resultsCountPlural: "{{count}} نتيجة لـ \"{{query}}\"",
2444
- itemsAvailable: "{{count}} عنصر(عناصر) متاح(ة)",
2893
+ resultsCount_zero: "{{count}} نتيجة لـ \"{{query}}\"",
2894
+ resultsCount_one: "{{count}} نتيجة لـ \"{{query}}\"",
2895
+ resultsCount_two: "نتيجتان لـ \"{{query}}\" ({{count}})",
2896
+ resultsCount_few: "{{count}} نتائج لـ \"{{query}}\"",
2897
+ resultsCount_many: "{{count}} نتيجة لـ \"{{query}}\"",
2898
+ resultsCount_other: "{{count}} نتيجة لـ \"{{query}}\"",
2899
+ // objectui#11445 — a count family: each of the six CLDR slots carries its
2900
+ // own noun form. The base key, a count-invariant form, answers a call made
2901
+ // without a count.
2902
+ itemsAvailable: "عدد العناصر المتاحة: {{count}}",
2903
+ itemsAvailable_zero: "{{count}} عنصر متاح",
2904
+ itemsAvailable_one: "{{count}} عنصر متاح",
2905
+ itemsAvailable_two: "عنصران متاحان ({{count}})",
2906
+ itemsAvailable_few: "{{count}} عناصر متاحة",
2907
+ itemsAvailable_many: "{{count}} عنصرًا متاحًا",
2908
+ itemsAvailable_other: "{{count}} عنصر متاح",
2445
2909
  noResults: "لم يتم العثور على نتائج",
2446
2910
  noResultsHint: "جرب تعديل مصطلحات البحث",
2447
2911
  typeObjects: "الكائنات",
@@ -2466,7 +2930,11 @@ const ar = {
2466
2930
  noAppsConfigured: "لا تطبيقات مُهيأة",
2467
2931
  noAppsConfiguredDescription: "لا تطبيقات مسجلة. أنشئ تطبيقك الأول أو زر إعدادات النظام.",
2468
2932
  appNotAvailable: "التطبيق غير متاح",
2469
- appNotAvailableDescription: "هذا التطبيق غير متاح بعد — قد يكون النشر ما زال جارياً. أعد المحاولة بعد لحظات.",
2933
+ appNotAvailableDescription: "هذا التطبيق غير متاح — أعد المحاولة بعد لحظات.",
2934
+ appNotFound: "تعذّر فتح هذا التطبيق",
2935
+ appNotFoundDescription: "لم يُرجع الخادم هذا التطبيق لحسابك.",
2936
+ appUnreachable: "تعذّر الوصول إلى الخادم",
2937
+ appUnreachableDescription: "تعذّر التحقق من هذا التطبيق. أعد المحاولة بعد لحظات.",
2470
2938
  appAccessDenied: "ليس لديك حق الوصول إلى هذا التطبيق",
2471
2939
  appAccessDeniedDescription: "هذا التطبيق موجود، لكن حسابك غير مخوَّل بفتحه. اطلب من المسؤول منحك حق الوصول.",
2472
2940
  appAccessDeniedHome: "العودة إلى الرئيسية",
@@ -2476,31 +2944,16 @@ const ar = {
2476
2944
  recordNotFound: "السجل غير موجود",
2477
2945
  recordNotFoundDescription: "السجل الذي تبحث عنه غير موجود أو ربما تم حذفه.",
2478
2946
  },
2479
- renderer: {
2480
- noPageSchema: "لم يتم توفير مخطط الصفحة",
2481
- noFormSchema: "لم يتم توفير مخطط النموذج",
2482
- noDashboardSchema: "لم يتم توفير مخطط لوحة التحكم",
2483
- pageRendering: "تصيير الصفحة: {{name}}",
2484
- dashboardRendering: "تصيير لوحة التحكم: {{name}}",
2485
- formRenderingMode: "تصيير النموذج في وضع {{mode}}",
2486
- formRenderingFor: "للسجل {{id}}",
2487
- createRecord: "إنشاء سجل",
2488
- editRecord: "تعديل السجل",
2489
- page: "صفحة",
2490
- dashboard: "لوحة تحكم",
2491
- save: "حفظ",
2492
- cancel: "إلغاء",
2493
- },
2494
2947
  actionDialog: {
2495
2948
  title: "معامِلات الإجراء",
2496
2949
  description: "يرجى إدخال المعلومات المطلوبة للمتابعة.",
2497
2950
  selectPlaceholder: "تحديد {{label}}",
2498
2951
  requiredError: "{{label}} مطلوب",
2952
+ unresolvedParam: 'تعذّر عرض هذه المَعلمة: الحقل الذي تستند إليه غير موجود في بيانات تعريف الكائن، لذا يتعذّر إنشاء عنصر التحكم المطلوب. اطلب من المسؤول تصحيح تعريف الإجراء.',
2953
+ carryOverHint: 'يُنقل دون تغيير (للقراءة فقط)',
2499
2954
  cancel: "إلغاء",
2500
2955
  confirm: "تأكيد",
2501
2956
  uploading: "جارٍ الرفع…",
2502
- defaultActionTitle: "إجراء",
2503
- ok: "موافق",
2504
2957
  lookupPlaceholder: "معرف السجل لـ {{label}}",
2505
2958
  lookupHelpText: "لم يتم تكوين كائن مرجعي لهذه المعلمة، لذا فإن أداة اختيار السجلات غير متاحة. أدخل معرف السجل، أو اطلب من المسؤول تصحيح معلمة الإجراء.",
2506
2959
  },
@@ -2509,11 +2962,6 @@ const ar = {
2509
2962
  confirm: "متابعة",
2510
2963
  cancel: "إلغاء",
2511
2964
  },
2512
- rowAction: {
2513
- openMenu: "فتح القائمة",
2514
- edit: "تعديل",
2515
- delete: "حذف",
2516
- },
2517
2965
  navigationSync: {
2518
2966
  addedPage: "تم تحديث التنقل: تمت إضافة الصفحة \"{{name}}\"",
2519
2967
  addedDashboard: "تم تحديث التنقل: تمت إضافة لوحة التحكم \"{{name}}\"",
@@ -2534,6 +2982,12 @@ const ar = {
2534
2982
  noRecordId: "لم يتم توفير معرف سجل",
2535
2983
  deleteConfirm: "حذف هذا السجل؟",
2536
2984
  bulkDeleteSuccess: "تم حذف {{count}} سجل(ات) {{label}}",
2985
+ bulkDeleteSuccess_zero: "تم حذف {{count}} من سجلات {{label}}",
2986
+ bulkDeleteSuccess_one: "تم حذف {{count}} من سجلات {{label}}",
2987
+ bulkDeleteSuccess_two: "تم حذف {{count}} من سجلات {{label}}",
2988
+ bulkDeleteSuccess_few: "تم حذف {{count}} من سجلات {{label}}",
2989
+ bulkDeleteSuccess_many: "تم حذف {{count}} من سجلات {{label}}",
2990
+ bulkDeleteSuccess_other: "تم حذف {{count}} من سجلات {{label}}",
2537
2991
  bulkDeletePartial: "تم حذف {{succeeded}}، فشل {{failed}}",
2538
2992
  },
2539
2993
  objectViewActions: {
@@ -2545,15 +2999,6 @@ const ar = {
2545
2999
  exportFailed: "فشل التصدير: {{message}}",
2546
3000
  forecastSoon: "عرض التوقعات قادم قريباً",
2547
3001
  },
2548
- recordDetail: {
2549
- viewersTooltip: "المستخدمون يشاهدون هذا السجل الآن",
2550
- },
2551
- cellRender: {
2552
- empty: "فارغ",
2553
- yes: "نعم",
2554
- no: "لا",
2555
- systemFields: "النظام",
2556
- },
2557
3002
  user: {
2558
3003
  profile: "الملف الشخصي",
2559
3004
  settings: "الإعدادات",
@@ -2590,17 +3035,17 @@ const ar = {
2590
3035
  },
2591
3036
  organizations: {
2592
3037
  create: "إنشاء مساحة عمل",
2593
- mine: "مؤسساتي",
2594
- title: "المؤسسات",
2595
- heading: "مؤسساتك",
2596
- subtitle: "اختر مؤسسة للمتابعة، أو أنشئ مؤسسة جديدة.",
2597
- searchPlaceholder: "ابحث عن مؤسسة",
2598
- new: "مؤسسة جديدة",
2599
- current: "المؤسسة الحالية",
3038
+ mine: "مساحات عملي",
3039
+ title: "مساحات العمل",
3040
+ heading: "مساحات عملك",
3041
+ subtitle: "اختر مساحة عمل للمتابعة، أو أنشئ مساحة عمل جديدة.",
3042
+ searchPlaceholder: "ابحث عن مساحة عمل",
3043
+ new: "مساحة عمل جديدة",
3044
+ current: "مساحة العمل الحالية",
2600
3045
  manage: "إدارة",
2601
- emptyTitle: "لا توجد مؤسسات بعد",
2602
- emptyDescription: "أنشئ مؤسستك الأولى للبدء.",
2603
- noMatches: "لا توجد مؤسسات تطابق بحثك.",
3046
+ emptyTitle: "لا توجد مساحات عمل بعد",
3047
+ emptyDescription: "أنشئ مساحة عملك الأولى للبدء.",
3048
+ noMatches: "لا توجد مساحات عمل تطابق بحثك.",
2604
3049
  },
2605
3050
  organization: {
2606
3051
  roles: {
@@ -2729,6 +3174,9 @@ const ar = {
2729
3174
  declined: "تم رفض الدعوة",
2730
3175
  declineFailed: "فشل رفض الدعوة",
2731
3176
  },
3177
+ current: {
3178
+ label: "المؤسسة الحالية",
3179
+ },
2732
3180
  switcher: {
2733
3181
  label: "تبديل المؤسسة",
2734
3182
  groupLabel: "مؤسسة العمل",
@@ -2740,18 +3188,49 @@ const ar = {
2740
3188
  regionLabel: "الإشعارات",
2741
3189
  groupCount: "{{count}} من الإشعارات",
2742
3190
  groupUnread: "{{count}} غير مقروء",
3191
+ groupUnread_zero: "غير المقروءة: {{count}}",
3192
+ groupUnread_one: "غير المقروءة: {{count}}",
3193
+ groupUnread_two: "غير المقروءة: {{count}}",
3194
+ groupUnread_few: "غير المقروءة: {{count}}",
3195
+ groupUnread_many: "غير المقروءة: {{count}}",
3196
+ groupUnread_other: "غير المقروءة: {{count}}",
2743
3197
  groupMarkRead: "تعليم كمقروء",
2744
3198
  groupMarkReadTitle: "تعليم كل هذا النوع كمقروء",
2745
3199
  empty: "لا توجد إشعارات",
2746
3200
  markAllRead: "تعليم الكل كمقروء",
2747
3201
  viewAll: "عرض جميع الإشعارات",
2748
3202
  approvalsPending: "{{count}} موافقات معلقة",
3203
+ approvalsPending_zero: "{{count}} موافقة معلقة",
3204
+ approvalsPending_one: "{{count}} موافقة معلقة",
3205
+ approvalsPending_two: "موافقتان معلقتان ({{count}})",
3206
+ approvalsPending_few: "{{count}} موافقات معلقة",
3207
+ approvalsPending_many: "{{count}} موافقة معلقة",
3208
+ approvalsPending_other: "{{count}} موافقة معلقة",
2749
3209
  viewApprovals: "عرض الموافقات",
2750
3210
  noPendingApprovals: "لا توجد موافقات معلقة",
2751
3211
  openApprovalsInbox: "فتح صندوق الموافقات",
2752
3212
  badgeTotal: "{{total}} إجمالاً",
2753
3213
  badgeNotifications: "{{unread}} إشعارات",
2754
3214
  badgeApprovals: "{{approvals}} موافقات معلقة",
3215
+ arrivalMany: "{{count}} رسائل جديدة",
3216
+ arrivalMany_zero: "{{count}} رسالة جديدة",
3217
+ arrivalMany_one: "{{count}} رسالة جديدة",
3218
+ arrivalMany_two: "رسالتان جديدتان ({{count}})",
3219
+ arrivalMany_few: "{{count}} رسائل جديدة",
3220
+ arrivalMany_many: "{{count}} رسالة جديدة",
3221
+ arrivalMany_other: "{{count}} رسالة جديدة",
3222
+ arrivalRepeats: "{{count}} رسائل جديدة في هذا الموضوع",
3223
+ arrivalRepeats_zero: "{{count}} رسالة جديدة في هذا الموضوع",
3224
+ arrivalRepeats_one: "{{count}} رسالة جديدة في هذا الموضوع",
3225
+ arrivalRepeats_two: "رسالتان جديدتان ({{count}}) في هذا الموضوع",
3226
+ arrivalRepeats_few: "{{count}} رسائل جديدة في هذا الموضوع",
3227
+ arrivalRepeats_many: "{{count}} رسالة جديدة في هذا الموضوع",
3228
+ arrivalRepeats_other: "{{count}} رسالة جديدة في هذا الموضوع",
3229
+ arrivalOpen: "عرض",
3230
+ toastEnabled: "تنبيهات داخل التطبيق",
3231
+ desktopEnabled: "إشعارات سطح المكتب",
3232
+ desktopBlocked: "محظور. اسمح بالإشعارات لهذا الموقع من إعدادات المتصفح.",
3233
+ desktopUnsupported: "هذا المتصفح لا يدعم إشعارات سطح المكتب.",
2755
3234
  emptyUnread: "كل شيء مقروء",
2756
3235
  filterUnread: "غير مقروء",
2757
3236
  filterAll: "الكل",
@@ -2765,63 +3244,19 @@ const ar = {
2765
3244
  thankYouTitle: "شكراً!",
2766
3245
  thankYouMessage: "تم استلام إرسالك بنجاح.",
2767
3246
  redirecting: "إعادة توجيه خلال {{seconds}} ثانية(ثوانٍ)…",
3247
+ redirectPending: "جارٍ إعادة التوجيه…",
2768
3248
  unavailableTitle: "النموذج غير متاح",
2769
3249
  unavailableDescription: "لا يوجد نموذج عام متاح على هذا الرابط. تأكد من تمكين المشاركة المجهولة للعرض الأساسي.",
2770
3250
  tryDemo: "تجربة العرض التوضيحي",
2771
3251
  retry: "إعادة المحاولة",
2772
3252
  loading: "جارٍ تحميل النموذج…",
2773
3253
  requiredHint: "* حقل مطلوب",
3254
+ requiredFields: "الحقول المطلوبة: {{fields}}",
2774
3255
  consentLabelDefault: "أوافق على سياسة الخصوصية وأعطي موافقتي على معالجة بياناتي لهذا الطلب.",
2775
3256
  consentLink: "سياسة الخصوصية",
2776
3257
  consentRequired: "يرجى قبول سياسة الخصوصية للمتابعة.",
2777
3258
  rateLimited: "خذ لحظة لمراجعة إجاباتك قبل الإرسال.",
2778
3259
  redirectBlocked: "تم قبول الإرسال، لكن رابط إعادة التوجيه تم حظره لأسباب أمنية.",
2779
- demo: {
2780
- contactTitle: "تواصل معنا",
2781
- contactDescription: "أخبرنا عن مشروعك وسيتواصل معك أحد ممثلي المبيعات خلال يوم عمل.",
2782
- supportTitle: "إرسال طلب دعم",
2783
- supportDescription: "صف لنا المشكلة وسيرد فريقنا خلال يوم عمل.",
2784
- thankYouSalesTitle: "شكراً — لقد استلمنا رسالتك!",
2785
- thankYouSalesMessage: "سيتواصل معك أحد ممثلي المبيعات خلال يوم عمل.",
2786
- thankYouSupportTitle: "تم — طلبك في قائمة الانتظار.",
2787
- thankYouSupportMessage: "سيتابع معك مهندس الدعم قريباً. احفظ هذه الصفحة إذا كان لديك لقطات شاشة إضافية.",
2788
- field: {
2789
- firstName: "الاسم الأول",
2790
- lastName: "اسم العائلة",
2791
- email: "البريد الإلكتروني للعمل",
2792
- phone: "الهاتف",
2793
- jobTitle: "المسمى الوظيفي",
2794
- company: "الشركة",
2795
- website: "الموقع الإلكتروني",
2796
- industry: "القطاع",
2797
- companySize: "حجم الشركة",
2798
- howCanWeHelp: "كيف يمكننا مساعدتك؟",
2799
- subject: "الموضوع",
2800
- description: "الوصف",
2801
- issueType: "نوع المشكلة",
2802
- priority: "الأولوية",
2803
- },
2804
- industry: {
2805
- technology: "التكنولوجيا",
2806
- software: "البرمجيات / SaaS",
2807
- finance: "المالية",
2808
- healthcare: "الرعاية الصحية",
2809
- retail: "التجزئة",
2810
- other: "أخرى",
2811
- },
2812
- issueType: {
2813
- question: "سؤال",
2814
- problem: "مشكلة",
2815
- bug: "خطأ برمجي",
2816
- feature_request: "طلب ميزة",
2817
- },
2818
- priority: {
2819
- low: "منخفضة",
2820
- medium: "متوسطة",
2821
- high: "عالية",
2822
- critical: "حرجة",
2823
- },
2824
- },
2825
3260
  },
2826
3261
  connectAgent: {
2827
3262
  disabled: {
@@ -2867,6 +3302,12 @@ const ar = {
2867
3302
  noImportableFields: "لا تحتوي هذه الكائن على حقول قابلة للاستيراد.",
2868
3303
  schemaReadFailed: "تعذّرت قراءة مخطط الكائن.",
2869
3304
  imported: "تم استيراد {{count}} صف إلى {{object}}.",
3305
+ imported_zero: "تم استيراد {{count}} صف إلى {{object}}.",
3306
+ imported_one: "تم استيراد {{count}} صف إلى {{object}}.",
3307
+ imported_two: "تم استيراد صفين ({{count}}) إلى {{object}}.",
3308
+ imported_few: "تم استيراد {{count}} صفوف إلى {{object}}.",
3309
+ imported_many: "تم استيراد {{count}} صفًا إلى {{object}}.",
3310
+ imported_other: "تم استيراد {{count}} صف إلى {{object}}.",
2870
3311
  importFrom: "استيراد الصفوف الفعلية من",
2871
3312
  into: "إلى",
2872
3313
  opening: "جارٍ الفتح…",
@@ -2880,6 +3321,84 @@ const ar = {
2880
3321
  openProduction: "فتح بيئة الإنتاج",
2881
3322
  manageEnvironments: "إدارة البيئات",
2882
3323
  },
3324
+ cloudPlanStatus: {
3325
+ current: "الخطة الحالية",
3326
+ },
3327
+ ai: {
3328
+ nlQuery: {
3329
+ placeholder: "اطرح سؤالًا حول بياناتك…",
3330
+ ask: "اسأل",
3331
+ results: "النتائج",
3332
+ match: "نسبة التطابق: {{percent}}",
3333
+ simulatedSummary: "نتائج: {{query}}",
3334
+ noResults: "لم يتم العثور على سجلات مطابقة",
3335
+ recentQueries: "الاستعلامات الأخيرة",
3336
+ },
3337
+ formAssist: {
3338
+ title: "اقتراحات الذكاء الاصطناعي",
3339
+ suggestionCount: "عدد الاقتراحات: {{count}}",
3340
+ suggestionCount_zero: "{{count}} اقتراح",
3341
+ suggestionCount_one: "{{count}} اقتراح",
3342
+ suggestionCount_two: "اقتراحان ({{count}})",
3343
+ suggestionCount_few: "{{count}} اقتراحات",
3344
+ suggestionCount_many: "{{count}} اقتراحًا",
3345
+ suggestionCount_other: "{{count}} اقتراح",
3346
+ applyAll: "تطبيق الكل",
3347
+ confidence: "الثقة: {{percent}}",
3348
+ appliedCount: "عدد الاقتراحات المطبّقة: {{count}}",
3349
+ appliedCount_zero: "تم تطبيق {{count}} اقتراح",
3350
+ appliedCount_one: "تم تطبيق {{count}} اقتراح",
3351
+ appliedCount_two: "تم تطبيق اقتراحين ({{count}})",
3352
+ appliedCount_few: "تم تطبيق {{count}} اقتراحات",
3353
+ appliedCount_many: "تم تطبيق {{count}} اقتراحًا",
3354
+ appliedCount_other: "تم تطبيق {{count}} اقتراح",
3355
+ },
3356
+ recommendations: {
3357
+ title: "التوصيات",
3358
+ generating: "جارٍ إنشاء التوصيات…",
3359
+ empty: "لا توجد توصيات متاحة",
3360
+ },
3361
+ },
3362
+ aiApprovals: {
3363
+ title: "موافقات الذكاء الاصطناعي",
3364
+ description: "إجراءات اقترحها وكيل ذكاء اصطناعي وتحتاج إلى مراجعة بشرية قبل تنفيذها.",
3365
+ tabPending: "قيد الانتظار",
3366
+ tabDecided: "تم البت فيها",
3367
+ tabAll: "الكل",
3368
+ statusPending: "قيد الانتظار",
3369
+ statusApproved: "تمت الموافقة",
3370
+ statusExecuted: "تم التنفيذ",
3371
+ statusFailed: "فشل",
3372
+ statusRejected: "مرفوض",
3373
+ colTool: "الأداة",
3374
+ colAction: "الإجراء",
3375
+ colObject: "الكائن",
3376
+ colStatus: "الحالة",
3377
+ colProposed: "وقت الاقتراح",
3378
+ colDecision: "القرار",
3379
+ emptyTitle: "لا توجد إجراءات في الانتظار",
3380
+ emptyDescription: "عندما يقترح الذكاء الاصطناعي إجراءً حساسًا سيظهر هنا للمراجعة.",
3381
+ view: "عرض",
3382
+ approve: "موافقة",
3383
+ reject: "رفض",
3384
+ working: "جارٍ التنفيذ…",
3385
+ approveAndExecute: "الموافقة والتنفيذ",
3386
+ outcomeApprove: "موافقة على {{id}}: {{message}}",
3387
+ outcomeReject: "رفض {{id}}: {{message}}",
3388
+ outcomeExecuteFailed: "فشل الإجراء أثناء التنفيذ",
3389
+ drawerFallbackTitle: "إجراء قيد الانتظار",
3390
+ drawerSubtitle: "الأداة {{tool}} على {{object}}",
3391
+ fieldProposedBy: "اقترحه",
3392
+ fieldDecidedBy: "قرّره",
3393
+ fieldConversation: "المحادثة",
3394
+ fieldToolInput: "مدخلات الأداة",
3395
+ fieldResult: "النتيجة",
3396
+ fieldError: "خطأ",
3397
+ fieldRejectionReason: "سبب الرفض",
3398
+ rejectTitle: "هل تريد رفض هذا الإجراء؟",
3399
+ rejectBody: "يُعاد السبب إلى الذكاء الاصطناعي ليعدّل ردّه التالي.",
3400
+ rejectPlaceholder: "سبب اختياري (مثال: «معرّف السجل غير صحيح — يرجى التأكيد مع المستخدم أولاً.»)",
3401
+ },
2883
3402
  aiModelStatus: {
2884
3403
  summary: "يستخدم الإنشاء / السؤال {{conversational}} ({{conversationalSource}})؛ ويستخدم الإخراج المهيكل {{structured}} ({{structuredSource}}).",
2885
3404
  summaryRouting: "سياسة التوجيه: الخطط المجانية ← {{free}}، الخطط المدفوعة ← {{paid}}.",
@@ -2897,6 +3416,123 @@ const ar = {
2897
3416
  sourceInherits: "مثل build/ask",
2898
3417
  sourcePinned: "مثبّت بواسطة {{source}}",
2899
3418
  },
3419
+ // objectui#7254 — the AI copilot's tool cards. Three families, all of them
3420
+ // English-only until this landed while every other string on the same screen
3421
+ // was translated:
3422
+ //
3423
+ // `tool.*` — one entry per PLATFORM-PROVIDED tool name
3424
+ // (@objectstack/spec `PLATFORM_TOOLS_BY_PACKAGE`, the
3425
+ // closed registry those runtimes are conformance-tested
3426
+ // against). `humanizeToolName` looks each up as
3427
+ // `chatbot.tool.<tool_name>` and falls back to its English
3428
+ // title-caser for a custom / third-party tool, so a name
3429
+ // missing here is degraded, never broken. The `en` values
3430
+ // are deliberately EQUAL to what that title-caser produces:
3431
+ // adding the key must not silently reword the English UI.
3432
+ // `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
3433
+ // set for both surfaces (they used to carry separate
3434
+ // tables and disagreed on casing).
3435
+ // `plan.*` — the "N objects · N views · N dashboards" strip. Plural
3436
+ // FAMILIES: one slot per CLDR category the pack's language
3437
+ // selects (objectui#11432), plus the base key for a call
3438
+ // made without a count. `all-locales-key-parity.test.ts`
3439
+ // derives the required slots from `Intl.PluralRules`.
3440
+ //
3441
+ // objectui#7481 — five `tool.*` entries are NEWER than the registry above:
3442
+ // `get_authoring_rules` (cloud#1837), `load_tools`, `open_record`, `test_flow`
3443
+ // and `toggle_flow` are registered by cloud `service-ai-studio` but the pinned
3444
+ // `@objectstack/spec` snapshot does not list them yet. They are kept here on
3445
+ // purpose: a step label the user reads must not wait on a pin bump. When the
3446
+ // pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
3447
+ // against the registry instead of against its own hand-held list.
3448
+ chatbot: {
3449
+ tool: {
3450
+ aggregate_data: "تجميع البيانات",
3451
+ get_record: "جلب السجل",
3452
+ query_data: "الاستعلام عن البيانات",
3453
+ query_records: "الاستعلام عن السجلات",
3454
+ search_knowledge: "البحث في قاعدة المعرفة",
3455
+ visualize_data: "إنشاء رسم بياني",
3456
+ add_field: "إضافة حقل",
3457
+ apply_blueprint: "بناء التطبيق",
3458
+ apply_edit: "تطبيق التغييرات",
3459
+ create_metadata: "إنشاء بيانات وصفية",
3460
+ create_object: "إنشاء كائن",
3461
+ create_package: "إنشاء حزمة",
3462
+ create_seed: "توليد بيانات تجريبية",
3463
+ delete_field: "حذف حقل",
3464
+ describe_metadata: "عرض البيانات الوصفية",
3465
+ describe_object: "عرض بنية الكائن",
3466
+ get_active_package: "جلب الحزمة النشطة",
3467
+ get_authoring_rules: "قراءة قواعد التأليف",
3468
+ get_metadata_schema: "جلب مخطط البيانات الوصفية",
3469
+ get_package: "جلب الحزمة",
3470
+ list_metadata: "سرد البيانات الوصفية",
3471
+ list_objects: "سرد الكائنات",
3472
+ list_packages: "سرد الحزم",
3473
+ load_tools: "تحميل الأدوات",
3474
+ modify_field: "تعديل حقل",
3475
+ open_record: "فتح السجل",
3476
+ propose_blueprint: "تصميم خطة التطبيق",
3477
+ set_active_package: "تبديل الحزمة النشطة",
3478
+ suggest_builder: "اقتراح طريقة البناء",
3479
+ test_flow: "اختبار التدفق",
3480
+ todo_write: "تدوين المهام",
3481
+ toggle_flow: "تفعيل أو تعطيل التدفق",
3482
+ update_metadata: "تحديث البيانات الوصفية",
3483
+ validate_expression: "التحقق من التعبير",
3484
+ verify_build: "التحقق من البناء",
3485
+ },
3486
+ toolState: {
3487
+ agentActivity: "نشاط الوكيل",
3488
+ pending: "قيد الانتظار",
3489
+ running: "قيد التنفيذ",
3490
+ awaitingApproval: "بانتظار الموافقة",
3491
+ responded: "تمت الاستجابة",
3492
+ completed: "مكتمل",
3493
+ error: "خطأ",
3494
+ denied: "مرفوض",
3495
+ failed: "فشل",
3496
+ },
3497
+ plan: {
3498
+ countObjects: "{{count}} كائنات",
3499
+ countObjects_zero: "{{count}} كائن",
3500
+ countObjects_one: "{{count}} كائن",
3501
+ countObjects_two: "كائنان ({{count}})",
3502
+ countObjects_few: "{{count}} كائنات",
3503
+ countObjects_many: "{{count}} كائنًا",
3504
+ countObjects_other: "{{count}} كائن",
3505
+ countViews: "{{count}} طرق عرض",
3506
+ countViews_zero: "{{count}} طريقة عرض",
3507
+ countViews_one: "{{count}} طريقة عرض",
3508
+ countViews_two: "طريقتا عرض ({{count}})",
3509
+ countViews_few: "{{count}} طرق عرض",
3510
+ countViews_many: "{{count}} طريقة عرض",
3511
+ countViews_other: "{{count}} طريقة عرض",
3512
+ countDashboards: "{{count}} لوحات معلومات",
3513
+ countDashboards_zero: "{{count}} لوحة معلومات",
3514
+ countDashboards_one: "{{count}} لوحة معلومات",
3515
+ countDashboards_two: "لوحتا معلومات ({{count}})",
3516
+ countDashboards_few: "{{count}} لوحات معلومات",
3517
+ countDashboards_many: "{{count}} لوحة معلومات",
3518
+ countDashboards_other: "{{count}} لوحة معلومات",
3519
+ countSeedData: "بيانات تجريبية",
3520
+ },
3521
+ build: {
3522
+ building: "جارٍ إنشاء {{app}}…",
3523
+ built: "تم إنشاء {{app}}",
3524
+ appFallback: "تطبيقك",
3525
+ addingSampleData: "جارٍ إضافة بيانات تجريبية",
3526
+ group: {
3527
+ object: "الكائنات",
3528
+ view: "طرق العرض",
3529
+ dashboard: "لوحات المعلومات",
3530
+ app: "التطبيق",
3531
+ seed: "بيانات تجريبية",
3532
+ },
3533
+ moreArtifacts: "+{{n}} أخرى",
3534
+ },
3535
+ },
2900
3536
  chatbotError: {
2901
3537
  title: "فشل الرد",
2902
3538
  fallbackDetail: "حدث خطأ ما. يرجى المحاولة مرة أخرى.",
@@ -2934,6 +3570,7 @@ const ar = {
2934
3570
  retry: "إعادة المحاولة",
2935
3571
  errors: {
2936
3572
  expired: "انتهت صلاحية الطلب قبل الموافقة عليه. ابدأ من جديد.",
3573
+ accessDenied: "تم رفض طلب الاتصال. ابدأ من جديد.",
2937
3574
  bindFailed: "فشل الربط.",
2938
3575
  deviceCodeFailed: "فشل طلب رمز الجهاز.",
2939
3576
  },
@@ -2976,7 +3613,7 @@ const ar = {
2976
3613
  },
2977
3614
  title: "سوق التطبيقات",
2978
3615
  subtitle: "استعرض التطبيقات المعتمدة المنشورة في كتالوج ObjectStack. انقر على تطبيق لرؤية التفاصيل وتثبيته في أحد بيئاتك.",
2979
- searchPlaceholder: "ابحث عن التطبيقات بالاسم أو معرف المانيفست…",
3616
+ searchPlaceholder: 'ابحث عن التطبيقات بالاسم أو معرف التطبيق…',
2980
3617
  searchAria: "البحث في تطبيقات السوق",
2981
3618
  installed: "مثبت",
2982
3619
  installedCount: "مثبت ({{count}})",
@@ -2999,10 +3636,16 @@ const ar = {
2999
3636
  installedBadge: "مثبت v{{version}}",
3000
3637
  load: {
3001
3638
  failed: "تعذر تحميل السوق",
3002
- failedHint: "بشكل افتراضي، يشير هذا الوقت التشغيل إلى سحابة ObjectStack العامة. تأكد من أن الوقت التشغيل متصل بالإنترنت.",
3639
+ failedHintConfigured: "يصل وقت التشغيل هذا إلى السوق عبر مستوى التحكم على {{url}}. تحقق من أنه متصل بالإنترنت ويمكن الوصول إليه من هنا.",
3640
+ failedHintSameOrigin: "يقدّم وقت التشغيل هذا كتالوج السوق بنفسه. تأكد من أن وقت التشغيل متصل بالإنترنت.",
3003
3641
  packageFailed: "تعذر تحميل الحزمة",
3004
3642
  notFound: "غير موجود.",
3005
3643
  },
3644
+ disabled: {
3645
+ title: "سوق التطبيقات معطّل",
3646
+ description: "لا يوجد سوق مُهيّأ لوقت التشغيل هذا، لذا لا يوجد ما يمكن تصفحه أو تثبيته من هنا.",
3647
+ hint: "هذه هي الحالة المتوقعة عند تشغيل وقت التشغيل باستخدام <code>OS_CLOUD_URL=off</code> (أو <code>none</code> أو <code>local</code> أو <code>disabled</code>). لتفعيل السوق، وجّه <code>OS_CLOUD_URL</code> إلى مستوى تحكم وأعد تشغيل وقت التشغيل.",
3648
+ },
3006
3649
  detail: {
3007
3650
  homepage: "الصفحة الرئيسية",
3008
3651
  installedV: "مثبت · v{{version}}",
@@ -3018,10 +3661,23 @@ const ar = {
3018
3661
  purgeSampleData: 'حذف البيانات التجريبية',
3019
3662
  purgeConfirm: 'حذف جميع السجلات التجريبية التي أنشأتها هذه الحزمة؟ لن تتأثر السجلات التي أضافها المستخدم.',
3020
3663
  purgeSuccess: 'تم حذف {{count}} سجل تجريبي.',
3664
+ purgeSuccess_zero: 'تم حذف {{count}} سجل تجريبي.',
3665
+ purgeSuccess_one: 'تم حذف {{count}} سجل تجريبي.',
3666
+ purgeSuccess_two: 'تم حذف سجلين تجريبيين ({{count}}).',
3667
+ purgeSuccess_few: 'تم حذف {{count}} سجلات تجريبية.',
3668
+ purgeSuccess_many: 'تم حذف {{count}} سجلًا تجريبيًا.',
3669
+ purgeSuccess_other: 'تم حذف {{count}} سجل تجريبي.',
3021
3670
  purgeNoData: 'لا توجد سجلات تجريبية للحذف.',
3022
3671
  reseedQueued: 'ستتم إعادة تحميل البيانات التجريبية عند الوصول التالي إلى البيئة.',
3023
3672
  reseedLocalSuccess: 'تمت إعادة تحميل البيانات التجريبية: {{inserted}} مضافة، {{updated}} محدثة.',
3024
3673
  reseedPartialErrors: '(فشل في كتابة {{count}} سجل)',
3674
+ reseedPartialErrors_zero: '(فشل في كتابة {{count}} سجل)',
3675
+ reseedPartialErrors_one: '(فشل في كتابة {{count}} سجل)',
3676
+ reseedPartialErrors_two: '(فشل في كتابة سجلين: {{count}})',
3677
+ reseedPartialErrors_few: '(فشل في كتابة {{count}} سجلات)',
3678
+ reseedPartialErrors_many: '(فشل في كتابة {{count}} سجلًا)',
3679
+ reseedPartialErrors_other: '(فشل في كتابة {{count}} سجل)',
3680
+ sampleDataKernelUnavailable: 'لا يحتوي مستوى التحكم هذا على نواة بيئة، لذا لا يمكن إعادة تحميل البيانات التجريبية أو حذفها من هنا. نفّذ ذلك من وقت التشغيل الخاص بالبيئة نفسها.',
3025
3681
  updateAvailable: 'يتوفر تحديث',
3026
3682
  },
3027
3683
  action: {
@@ -3074,7 +3730,8 @@ const ar = {
3074
3730
  reviewed: "تمت المراجعة والموافقة",
3075
3731
  unreviewed: "لم تتم المراجعة بعد",
3076
3732
  signed: "موقَّع",
3077
- grantsIntro: "عند التثبيت، ستُمنح هذه الحزمة:",
3733
+ grantsIntro: "تطلب هذه الحزمة:",
3734
+ notEnforced: "تُسجَّل هذه القائمة عند التثبيت ويُعاد تأكيدها إذا طلب إصدار لاحق المزيد، لكن بيئة التشغيل لا تقصر الحزمة على هذه القائمة بعد.",
3078
3735
  services: "خدمات المنصة",
3079
3736
  hooks: "خطافات دورة الحياة",
3080
3737
  network: "الوصول إلى الشبكة",
@@ -3113,30 +3770,27 @@ const ar = {
3113
3770
  storage: "التخزين",
3114
3771
  other: "أخرى",
3115
3772
  },
3116
- pricing: {
3117
- free: "مجاني",
3118
- freemium: "مجاني جزئياً",
3119
- paid: "مدفوع",
3120
- subscription: "اشتراك",
3121
- "usage-based": "حسب الاستخدام",
3122
- "contact-sales": "تواصل مع المبيعات",
3123
- },
3124
3773
  relativeTime: {
3125
3774
  today: "اليوم",
3126
3775
  daysAgo: "منذ {{count}} ي",
3127
3776
  monthsAgo: "منذ {{count}} شهر(أشهر)",
3777
+ monthsAgo_zero: "منذ {{count}} شهر",
3778
+ monthsAgo_one: "منذ {{count}} شهر",
3779
+ monthsAgo_two: "منذ شهرين ({{count}})",
3780
+ monthsAgo_few: "منذ {{count}} أشهر",
3781
+ monthsAgo_many: "منذ {{count}} شهرًا",
3782
+ monthsAgo_other: "منذ {{count}} شهر",
3128
3783
  yearsAgo: "منذ {{count}} سنة(سنوات)",
3784
+ yearsAgo_zero: "منذ {{count}} سنة",
3785
+ yearsAgo_one: "منذ {{count}} سنة",
3786
+ yearsAgo_two: "منذ سنتين ({{count}})",
3787
+ yearsAgo_few: "منذ {{count}} سنوات",
3788
+ yearsAgo_many: "منذ {{count}} سنة",
3789
+ yearsAgo_other: "منذ {{count}} سنة",
3129
3790
  },
3130
3791
  },
3131
- approvals: {
3132
- approve: 'الموافقة',
3133
- reject: 'رفض',
3134
- comment: 'تعليق (اختياري)',
3135
- approveSuccess: 'تمت الموافقة',
3136
- rejectSuccess: 'تم الرفض',
3137
- rejectConfirm: 'هل تريد رفض طلب الموافقة هذا؟',
3138
- },
3139
3792
  approvalsInbox: {
3793
+ recordUnresolvable: 'لا يمكن فتح هذا السجل',
3140
3794
  loadMore: 'تحميل المزيد',
3141
3795
  loadingMore: 'جارٍ التحميل…',
3142
3796
  loadedOf: 'تم تحميل {{loaded}} من {{total}}',
@@ -3155,6 +3809,12 @@ const ar = {
3155
3809
  requestInfoSent: 'أُعيد إلى مقدم الطلب لاستكمال المعلومات',
3156
3810
  remindBtn: 'تذكير',
3157
3811
  remindSuccess: 'أُرسل تذكير إلى {{count}} موافق',
3812
+ remindSuccess_zero: 'أُرسل تذكير إلى {{count}} موافق',
3813
+ remindSuccess_one: 'أُرسل تذكير إلى {{count}} موافق',
3814
+ remindSuccess_two: 'أُرسل تذكير إلى موافقَين ({{count}})',
3815
+ remindSuccess_few: 'أُرسل تذكير إلى {{count}} موافقين',
3816
+ remindSuccess_many: 'أُرسل تذكير إلى {{count}} موافقًا',
3817
+ remindSuccess_other: 'أُرسل تذكير إلى {{count}} موافق',
3158
3818
  remindThrottled: 'أُرسل تذكير مؤخرًا — حاول لاحقًا.',
3159
3819
  replyPlaceholder: 'الرد على هذا الطلب…',
3160
3820
  slaRemaining: 'SLA المتبقي {{dur}}',
@@ -3171,6 +3831,12 @@ const ar = {
3171
3831
  progressApprovals: 'الموافقات — {{got}} من {{need}}',
3172
3832
  progressGroups: 'تقدم التوقيعات — {{got}} من {{need}} مجموعات',
3173
3833
  progressEligible: '{{count}} معتمِد مؤهل',
3834
+ progressEligible_zero: '{{count}} معتمِد مؤهل',
3835
+ progressEligible_one: '{{count}} معتمِد مؤهل',
3836
+ progressEligible_two: 'معتمِدان مؤهلان ({{count}})',
3837
+ progressEligible_few: '{{count}} معتمِدين مؤهلين',
3838
+ progressEligible_many: '{{count}} معتمِدًا مؤهلًا',
3839
+ progressEligible_other: '{{count}} معتمِد مؤهل',
3174
3840
  progressBar: 'تقدم القرار',
3175
3841
  declaredActions: 'الإجراءات',
3176
3842
  attachmentChip: 'مرفق',
@@ -3202,6 +3868,12 @@ const ar = {
3202
3868
  filterCount: '{{shown}} من {{total}}',
3203
3869
  selected: 'محدد',
3204
3870
  actionableCount: '({{count}} قابلة للتنفيذ)',
3871
+ actionableCount_zero: '({{count}} قابلة للتنفيذ)',
3872
+ actionableCount_one: '({{count}} قابلة للتنفيذ)',
3873
+ actionableCount_two: '({{count}} قابلة للتنفيذ)',
3874
+ actionableCount_few: '({{count}} قابلة للتنفيذ)',
3875
+ actionableCount_many: '({{count}} قابلة للتنفيذ)',
3876
+ actionableCount_other: '({{count}} قابلة للتنفيذ)',
3205
3877
  selectAll: 'تحديد الكل',
3206
3878
  selectRow: 'تحديد الطلب',
3207
3879
  colRequest: 'الطلب',
@@ -3242,12 +3914,19 @@ const ar = {
3242
3914
  submittedAgo: 'قُدِّم {{when}}',
3243
3915
  completedAt: 'اكتمل {{when}}',
3244
3916
  waitingOn: 'بانتظار',
3917
+ approverNameSeparator: '، ',
3918
+ approverUnstaffed: '{{seat}} (لا يشغلها أحد حاليًا)',
3245
3919
  history: 'النشاط',
3246
3920
  noActions: 'لا إجراءات بعد.',
3247
3921
  actSubmit: 'تقديم',
3248
3922
  actApprove: 'موافقة',
3249
3923
  actReject: 'رفض',
3250
3924
  actRecall: 'سحب',
3925
+ overrideActionLabel: '{{action}} (تجاوز إداري)',
3926
+ overrideNotice: 'لا تشغل أي موقع موافِق في هذه الخطوة. المتابعة تستخدم تجاوزك الإداري: تُنهى الخطوة فورًا ويُتخطّى كل موافِق لم يتصرف بعد. يُسجَّل القرار بوصفه تجاوزًا إداريًا.',
3927
+ overrideNoticeWho: 'لا تشغل أي موقع موافِق في هذه الخطوة. المتابعة تستخدم تجاوزك الإداري: تُنهى الخطوة فورًا ويُتخطّى الموافقون الذين لم يتصرفوا بعد — {{who}}. يُسجَّل القرار بوصفه تجاوزًا إداريًا.',
3928
+ viaOverrideChip: 'تجاوز إداري',
3929
+ viaOverrideHint: 'لم يكن للمنفِّذ موقع موافِق في هذه الخطوة — سُمح له عبر مسار التجاوز الإداري.',
3251
3930
  rawData: 'البيانات الخام (JSON)',
3252
3931
  copy: 'نسخ',
3253
3932
  copied: 'تم النسخ',
@@ -3268,11 +3947,35 @@ const ar = {
3268
3947
  approveN: 'الموافقة على {{count}}',
3269
3948
  rejectN: 'رفض {{count}}',
3270
3949
  bulkApproveTitle: 'الموافقة على {{count}} طلبات؟',
3950
+ bulkApproveTitle_zero: 'الموافقة على {{count}} طلب؟',
3951
+ bulkApproveTitle_one: 'الموافقة على {{count}} طلب؟',
3952
+ bulkApproveTitle_two: 'الموافقة على طلبين ({{count}})؟',
3953
+ bulkApproveTitle_few: 'الموافقة على {{count}} طلبات؟',
3954
+ bulkApproveTitle_many: 'الموافقة على {{count}} طلبًا؟',
3955
+ bulkApproveTitle_other: 'الموافقة على {{count}} طلب؟',
3271
3956
  bulkApproveBody: 'ستتم الموافقة على كل طلب بهويتك ويتابع التدفق عبر فرع الموافقة.',
3272
3957
  bulkRejectTitle: 'رفض {{count}} طلبات؟',
3958
+ bulkRejectTitle_zero: 'رفض {{count}} طلب؟',
3959
+ bulkRejectTitle_one: 'رفض {{count}} طلب؟',
3960
+ bulkRejectTitle_two: 'رفض طلبين ({{count}})؟',
3961
+ bulkRejectTitle_few: 'رفض {{count}} طلبات؟',
3962
+ bulkRejectTitle_many: 'رفض {{count}} طلبًا؟',
3963
+ bulkRejectTitle_other: 'رفض {{count}} طلب؟',
3273
3964
  bulkRejectBody: 'سيتم رفض الطلبات المحددة وإخطار مقدميها.',
3274
3965
  bulkApproved: 'تمت الموافقة على {{count}} طلبات',
3966
+ bulkApproved_zero: 'تمت الموافقة على {{count}} طلب',
3967
+ bulkApproved_one: 'تمت الموافقة على {{count}} طلب',
3968
+ bulkApproved_two: 'تمت الموافقة على طلبين ({{count}})',
3969
+ bulkApproved_few: 'تمت الموافقة على {{count}} طلبات',
3970
+ bulkApproved_many: 'تمت الموافقة على {{count}} طلبًا',
3971
+ bulkApproved_other: 'تمت الموافقة على {{count}} طلب',
3275
3972
  bulkRejected: 'تم رفض {{count}} طلبات',
3973
+ bulkRejected_zero: 'تم رفض {{count}} طلب',
3974
+ bulkRejected_one: 'تم رفض {{count}} طلب',
3975
+ bulkRejected_two: 'تم رفض طلبين ({{count}})',
3976
+ bulkRejected_few: 'تم رفض {{count}} طلبات',
3977
+ bulkRejected_many: 'تم رفض {{count}} طلبًا',
3978
+ bulkRejected_other: 'تم رفض {{count}} طلب',
3276
3979
  bulkPartial: 'نجح {{ok}}، فشل {{fail}}: {{which}}',
3277
3980
  rejectOneTitle: 'رفض "{{title}}"؟',
3278
3981
  rejectOneBody: 'سيتم رفض الطلب وإخطار مقدمه.',
@@ -3297,8 +4000,26 @@ const ar = {
3297
4000
  alreadyDecided: 'تم البت في هذا الطلب بالفعل. حدّث القائمة.',
3298
4001
  justNow: 'الآن',
3299
4002
  minutesAgo: 'قبل {{count}} دقيقة',
4003
+ minutesAgo_zero: 'قبل {{count}} دقيقة',
4004
+ minutesAgo_one: 'قبل {{count}} دقيقة',
4005
+ minutesAgo_two: 'قبل دقيقتين ({{count}})',
4006
+ minutesAgo_few: 'قبل {{count}} دقائق',
4007
+ minutesAgo_many: 'قبل {{count}} دقيقة',
4008
+ minutesAgo_other: 'قبل {{count}} دقيقة',
3300
4009
  hoursAgo: 'قبل {{count}} ساعة',
4010
+ hoursAgo_zero: 'قبل {{count}} ساعة',
4011
+ hoursAgo_one: 'قبل {{count}} ساعة',
4012
+ hoursAgo_two: 'قبل ساعتين ({{count}})',
4013
+ hoursAgo_few: 'قبل {{count}} ساعات',
4014
+ hoursAgo_many: 'قبل {{count}} ساعة',
4015
+ hoursAgo_other: 'قبل {{count}} ساعة',
3301
4016
  daysAgo: 'قبل {{count}} يوم',
4017
+ daysAgo_zero: 'قبل {{count}} يوم',
4018
+ daysAgo_one: 'قبل {{count}} يوم',
4019
+ daysAgo_two: 'قبل يومين ({{count}})',
4020
+ daysAgo_few: 'قبل {{count}} أيام',
4021
+ daysAgo_many: 'قبل {{count}} يومًا',
4022
+ daysAgo_other: 'قبل {{count}} يوم',
3302
4023
  },
3303
4024
  preview: {
3304
4025
  empty: {
@@ -3333,7 +4054,24 @@ const ar = {
3333
4054
  detailNone: 'لم يتم اكتشاف اختلافات — المسودة مطابقة للنسخة المنشورة.',
3334
4055
  detailChangedKeys: 'تغييرات أخرى:',
3335
4056
  confirmNote: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4057
+ confirmNote_zero: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4058
+ confirmNote_one: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4059
+ confirmNote_two: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4060
+ confirmNote_few: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4061
+ confirmNote_many: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
4062
+ confirmNote_other: 'النشر يُصدر كل المسودات المعلقة ({{count}}) لهذه الحزمة دفعة واحدة.',
3336
4063
  publishConfirm: 'نشر الكل',
4064
+ // [`7a90afdf9`] Pre-publish security-posture findings, shown next to
4065
+ // the confirm button so a refusal the door would issue is read BEFORE
4066
+ // the click rather than as a toast after the batch rolled back.
4067
+ securityBlockTitle: 'سيتم رفض النشر — {{count}} عنصر (عناصر) بحاجة إلى قرار أولاً',
4068
+ securityBlockTitle_zero: 'سيتم رفض النشر — {{count}} عنصر بحاجة إلى قرار أولاً',
4069
+ securityBlockTitle_one: 'سيتم رفض النشر — {{count}} عنصر بحاجة إلى قرار أولاً',
4070
+ securityBlockTitle_two: 'سيتم رفض النشر — عنصران ({{count}}) بحاجة إلى قرار أولاً',
4071
+ securityBlockTitle_few: 'سيتم رفض النشر — {{count}} عناصر بحاجة إلى قرار أولاً',
4072
+ securityBlockTitle_many: 'سيتم رفض النشر — {{count}} عنصرًا بحاجة إلى قرار أولاً',
4073
+ securityBlockTitle_other: 'سيتم رفض النشر — {{count}} عنصر بحاجة إلى قرار أولاً',
4074
+ securityBlockWhere: 'أصلحه في الكائن ضمن الإعدادات ← مشاركة السجلات، ثم انشر مرة أخرى.',
3337
4075
  },
3338
4076
  // ADR-0045 — the materialized-but-unlisted app banner
3339
4077
  // (UnpublishedAppBar.tsx), sibling of draftBar above.
@@ -3357,7 +4095,7 @@ const ar = {
3357
4095
  revertLabel: 'تم التراجع عن تغيير',
3358
4096
  applyLabel: 'تغيير من البناء',
3359
4097
  revert: 'تراجع',
3360
- items: 'عناصر',
4098
+ items: 'العناصر: {{count}}',
3361
4099
  revertAction: 'تراجع',
3362
4100
  reverted: 'تم التراجع — أُلغي التغيير.',
3363
4101
  revertFailed: 'فشل التراجع',
@@ -3380,22 +4118,33 @@ const ar = {
3380
4118
  noResults: "لا توجد نتائج",
3381
4119
  searchField: "بحث {{label}}…",
3382
4120
  enterId: "أدخل معرّف {{label}}",
4121
+ addValue: "أدخل قيمة ثم اضغط Enter",
4122
+ removeValue: "إزالة {{value}}",
4123
+ rangeStart: "من",
4124
+ rangeEnd: "إلى",
3383
4125
  operators: {
3384
4126
  equals: "يساوي",
3385
- notEquals: "لا يساوي",
4127
+ not_equals: "لا يساوي",
3386
4128
  contains: "يحتوي",
3387
- notContains: "لا يحتوي",
3388
- isEmpty: "فارغ",
3389
- isNotEmpty: "غير فارغ",
3390
- greaterThan: "أكبر من",
3391
- lessThan: "أصغر من",
3392
- greaterOrEqual: "أكبر من أو يساوي",
3393
- lessOrEqual: "أصغر من أو يساوي",
4129
+ icontains: "يحتوي (مع تجاهل حالة الأحرف)",
4130
+ not_contains: "لا يحتوي",
4131
+ is_empty: "فارغ",
4132
+ is_not_empty: "غير فارغ",
4133
+ greater_than: "أكبر من",
4134
+ less_than: "أصغر من",
4135
+ greater_than_or_equal: "أكبر من أو يساوي",
4136
+ less_than_or_equal: "أصغر من أو يساوي",
3394
4137
  before: "قبل",
3395
4138
  after: "بعد",
3396
4139
  between: "بين",
3397
4140
  in: "ضمن",
3398
- notIn: "ليس ضمن",
4141
+ not_in: "ليس ضمن",
4142
+ starts_with: "يبدأ بـ",
4143
+ ends_with: "ينتهي بـ",
4144
+ is_null: "يساوي null",
4145
+ is_not_null: "لا يساوي null",
4146
+ exists: "محدد",
4147
+ notExists: "غير محدد",
3399
4148
  },
3400
4149
  },
3401
4150
  sortBuilder: {
@@ -3408,8 +4157,16 @@ const ar = {
3408
4157
  removeSort: "إزالة الترتيب",
3409
4158
  },
3410
4159
  collaboration: {
3411
- commentCount: "{{count}} تعليقات",
3412
- commentCountOne: "{{count}} تعليق",
4160
+ // objectui#11445 — `commentCount` and `reactionCount` below are count
4161
+ // families: each of the six CLDR slots carries its own noun form, and the
4162
+ // base key, a count label, answers a call made without a count.
4163
+ commentCount: "عدد التعليقات: {{count}}",
4164
+ commentCount_zero: "{{count}} تعليق",
4165
+ commentCount_one: "{{count}} تعليق",
4166
+ commentCount_two: "تعليقان ({{count}})",
4167
+ commentCount_few: "{{count}} تعليقات",
4168
+ commentCount_many: "{{count}} تعليقًا",
4169
+ commentCount_other: "{{count}} تعليق",
3413
4170
  resolvedSuffix: " · تم الحل",
3414
4171
  sortComments: "ترتيب التعليقات",
3415
4172
  sortOldest: "الأقدم أولاً",
@@ -3418,11 +4175,34 @@ const ar = {
3418
4175
  reopen: "إعادة الفتح",
3419
4176
  justNow: "الآن",
3420
4177
  minutesAgo: "قبل {{count}} دقيقة",
4178
+ minutesAgo_zero: "قبل {{count}} دقيقة",
4179
+ minutesAgo_one: "قبل {{count}} دقيقة",
4180
+ minutesAgo_two: "قبل دقيقتين ({{count}})",
4181
+ minutesAgo_few: "قبل {{count}} دقائق",
4182
+ minutesAgo_many: "قبل {{count}} دقيقة",
4183
+ minutesAgo_other: "قبل {{count}} دقيقة",
3421
4184
  hoursAgo: "قبل {{count}} ساعة",
4185
+ hoursAgo_zero: "قبل {{count}} ساعة",
4186
+ hoursAgo_one: "قبل {{count}} ساعة",
4187
+ hoursAgo_two: "قبل ساعتين ({{count}})",
4188
+ hoursAgo_few: "قبل {{count}} ساعات",
4189
+ hoursAgo_many: "قبل {{count}} ساعة",
4190
+ hoursAgo_other: "قبل {{count}} ساعة",
3422
4191
  daysAgo: "قبل {{count}} يوم",
4192
+ daysAgo_zero: "قبل {{count}} يوم",
4193
+ daysAgo_one: "قبل {{count}} يوم",
4194
+ daysAgo_two: "قبل يومين ({{count}})",
4195
+ daysAgo_few: "قبل {{count}} أيام",
4196
+ daysAgo_many: "قبل {{count}} يومًا",
4197
+ daysAgo_other: "قبل {{count}} يوم",
3423
4198
  edited: "(تم التعديل)",
3424
- reactionCount: "{{count}} تفاعلات",
3425
- reactionCountOne: "{{count}} تفاعل",
4199
+ reactionCount: "عدد التفاعلات: {{count}}",
4200
+ reactionCount_zero: "{{count}} تفاعل",
4201
+ reactionCount_one: "{{count}} تفاعل",
4202
+ reactionCount_two: "تفاعلان ({{count}})",
4203
+ reactionCount_few: "{{count}} تفاعلات",
4204
+ reactionCount_many: "{{count}} تفاعلًا",
4205
+ reactionCount_other: "{{count}} تفاعل",
3426
4206
  addThumbsUp: "إضافة إعجاب",
3427
4207
  reply: "رد",
3428
4208
  reactThumbsUp: "التفاعل بإعجاب",
@@ -3432,10 +4212,22 @@ const ar = {
3432
4212
  replyingToComment: "الرد على التعليق…",
3433
4213
  commentPlaceholder: "أضف تعليقًا… (استخدم @ للإشارة)",
3434
4214
  send: "إرسال",
3435
- presentUserCount: "{{count}} مستخدمين متواجدين",
3436
- presentUserCountOne: "{{count}} مستخدم متواجد",
3437
- moreUserCount: "{{count}} مستخدمين آخرين",
3438
- moreUserCountOne: "{{count}} مستخدم آخر",
4215
+ // objectui#11445 — the presence stack's name and its overflow badge are
4216
+ // count families too.
4217
+ presentUserCount: "عدد المستخدمين المتواجدين: {{count}}",
4218
+ presentUserCount_zero: "{{count}} مستخدم متواجد",
4219
+ presentUserCount_one: "{{count}} مستخدم متواجد",
4220
+ presentUserCount_two: "مستخدمان متواجدان ({{count}})",
4221
+ presentUserCount_few: "{{count}} مستخدمين متواجدين",
4222
+ presentUserCount_many: "{{count}} مستخدمًا متواجدًا",
4223
+ presentUserCount_other: "{{count}} مستخدم متواجد",
4224
+ moreUserCount: "عدد المستخدمين الآخرين: {{count}}",
4225
+ moreUserCount_zero: "{{count}} مستخدم آخر",
4226
+ moreUserCount_one: "{{count}} مستخدم آخر",
4227
+ moreUserCount_two: "مستخدمان آخران ({{count}})",
4228
+ moreUserCount_few: "{{count}} مستخدمين آخرين",
4229
+ moreUserCount_many: "{{count}} مستخدمًا آخر",
4230
+ moreUserCount_other: "{{count}} مستخدم آخر",
3439
4231
  userStatusTitle: "{{name}} ({{status}})",
3440
4232
  statusActive: "نشط",
3441
4233
  statusIdle: "خامل",
@@ -3443,6 +4235,18 @@ const ar = {
3443
4235
  },
3444
4236
  wizard: {
3445
4237
  missingRequired: "يرجى إكمال الحقول المطلوبة: {{fields}}",
4238
+ back: "رجوع",
4239
+ submitting: "جارٍ الإرسال…",
4240
+ stepFallback: "الخطوة {{n}}",
4241
+ progressLabel: "التقدم",
4242
+ emptyStep: "لا توجد حقول مهيأة لهذه الخطوة",
4243
+ },
4244
+ flowRunner: {
4245
+ title: 'إدخال',
4246
+ submitting: 'جارٍ الإرسال…',
4247
+ saveAndContinue: 'حفظ ومتابعة',
4248
+ nextStep: 'تم الحفظ — الخطوة التالية',
4249
+ completed: 'اكتمل التدفق «{{flow}}»',
3446
4250
  },
3447
4251
  appManagement: {
3448
4252
  title: "التطبيقات",
@@ -3493,5 +4297,49 @@ const ar = {
3493
4297
  bulkOperationFailed: "فشلت العملية الجماعية: {{reason}}",
3494
4298
  },
3495
4299
  },
4300
+ // objectui#6301 — الإعداد › أتمتة الحزم (ADR-0126 §7.4). المصطلحات كما في
4301
+ // بقية الحزمة: ‏`common.package` = الحزمة، و`flowRunner.completed` = التدفق،
4302
+ // وعلامات الاقتباس «…». ⛔ لا توجد صياغة عن الأصل أو الانحراف في هذه
4303
+ // المجموعة (§9).
4304
+ packagedAutomation: {
4305
+ title: "أتمتة الحزم",
4306
+ subtitle: "تدفقات وإجراءات تأتي مع الحزم المثبّتة. يمكنك إيقاف أي منها في هذا النشر، أو استنساخ تدفق باسم جديد لتخصيصه. التحرير يتم في Studio.",
4307
+ refresh: "تحديث",
4308
+ flowsHeading: "تدفقات الحزم",
4309
+ actionsHeading: "إجراءات الحزم",
4310
+ colFlow: "التدفق",
4311
+ colActivation: "التفعيل",
4312
+ colActions: "إجراءات",
4313
+ toggleLabel: "تفعيل {{label}}",
4314
+ on: "مفعل",
4315
+ off: "إيقاف",
4316
+ clone: "استنساخ",
4317
+ cloneTitle: "استنساخ تدفق الحزمة",
4318
+ cloneBody: "تحتفظ النسخة بالتعريف كاملاً وتتطلب اسم آلة وتسمية جديدين. حرّر النسخة في Studio.",
4319
+ cloneName: "اسم آلة جديد",
4320
+ cloneLabel: "تسمية جديدة",
4321
+ cancel: "إلغاء",
4322
+ cloneConfirm: "إنشاء نسخة",
4323
+ cloneCreated: "تم إنشاء التدفق «{{name}}».",
4324
+ emptyTitle: "لا توجد تدفقات من الحزم",
4325
+ emptyBody: "لا توجد حزمة مثبّتة توفّر تدفق أتمتة في هذا النشر. التدفقات التي تنشئها بنفسك موجودة في Studio.",
4326
+ loadFailed: "تعذّر تحميل أتمتة الحزم.",
4327
+ toggleFailedHttp: "تعذّر تغيير التفعيل (HTTP {{status}}).",
4328
+ toggleFailed: "تعذّر تغيير التفعيل.",
4329
+ cloneFailedHttp: "تعذّر استنساخ هذا التدفق (HTTP {{status}}).",
4330
+ cloneFailed: "تعذّر استنساخ هذا التدفق.",
4331
+ actionsSubtitle: "إجراءات تأتي مع الحزم المثبّتة. أوقف أحدها في هذا النشر فيتوقف عن العمل في كل مكان يُعرض فيه. ويبقى بإمكانك إنشاء إجراء خاص بك إلى جانبه في Studio.",
4332
+ colAction: "الإجراء",
4333
+ colObject: "الكائن",
4334
+ actionToggleLabel: "تفعيل {{label}} على {{object}}",
4335
+ actionsEmptyTitle: "لا توجد إجراءات من الحزم",
4336
+ actionsEmptyBody: "لا توجد حزمة مثبّتة تعلن عن إجراء في هذا النشر. الإجراءات التي تنشئها بنفسك موجودة في Studio.",
4337
+ actionsLoadFailed: "تعذّر تحميل إجراءات الحزم.",
4338
+ },
4339
+ element: {
4340
+ number: {
4341
+ noObject: "لم يُحدَّد أي كائن: عيّن object أو dataSource.object.",
4342
+ },
4343
+ },
3496
4344
  };
3497
4345
  export default ar;