@adminiumjs/i18n 0.2.2 → 0.2.4

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 (227) hide show
  1. package/dist/a11y-keys.d.ts +1 -1
  2. package/dist/a11y-keys.d.ts.map +1 -1
  3. package/dist/a11y-keys.js +319 -224
  4. package/dist/a11y-keys.js.map +1 -1
  5. package/dist/create-i18n.d.ts +16 -6
  6. package/dist/create-i18n.d.ts.map +1 -1
  7. package/dist/create-i18n.js +23 -9
  8. package/dist/create-i18n.js.map +1 -1
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +19 -8
  12. package/dist/index.js.map +1 -1
  13. package/dist/keys.d.ts +6 -4
  14. package/dist/keys.d.ts.map +1 -1
  15. package/dist/keys.js +6 -4
  16. package/dist/keys.js.map +1 -1
  17. package/dist/overrides.d.ts +1 -1
  18. package/dist/overrides.d.ts.map +1 -1
  19. package/dist/resources/ar-eg/common.d.ts +31 -1071
  20. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  21. package/dist/resources/ar-eg/common.js +31 -1071
  22. package/dist/resources/ar-eg/common.js.map +1 -1
  23. package/dist/resources/ar-eg/errors.d.ts +3 -2
  24. package/dist/resources/ar-eg/errors.d.ts.map +1 -1
  25. package/dist/resources/ar-eg/errors.js +3 -2
  26. package/dist/resources/ar-eg/errors.js.map +1 -1
  27. package/dist/resources/ar-eg/generated.d.ts +3 -2
  28. package/dist/resources/ar-eg/generated.d.ts.map +1 -1
  29. package/dist/resources/ar-eg/generated.js +3 -2
  30. package/dist/resources/ar-eg/generated.js.map +1 -1
  31. package/dist/resources/ar-eg/studio.d.ts +1282 -2
  32. package/dist/resources/ar-eg/studio.d.ts.map +1 -1
  33. package/dist/resources/ar-eg/studio.js +1282 -2
  34. package/dist/resources/ar-eg/studio.js.map +1 -1
  35. package/dist/resources/ar-eg/ui.d.ts +51 -2
  36. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  37. package/dist/resources/ar-eg/ui.js +55 -6
  38. package/dist/resources/ar-eg/ui.js.map +1 -1
  39. package/dist/resources/cs-cz/common.d.ts +31 -1071
  40. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  41. package/dist/resources/cs-cz/common.js +31 -1071
  42. package/dist/resources/cs-cz/common.js.map +1 -1
  43. package/dist/resources/cs-cz/errors.d.ts +3 -2
  44. package/dist/resources/cs-cz/errors.d.ts.map +1 -1
  45. package/dist/resources/cs-cz/errors.js +3 -2
  46. package/dist/resources/cs-cz/errors.js.map +1 -1
  47. package/dist/resources/cs-cz/generated.d.ts +3 -2
  48. package/dist/resources/cs-cz/generated.d.ts.map +1 -1
  49. package/dist/resources/cs-cz/generated.js +3 -2
  50. package/dist/resources/cs-cz/generated.js.map +1 -1
  51. package/dist/resources/cs-cz/studio.d.ts +1282 -2
  52. package/dist/resources/cs-cz/studio.d.ts.map +1 -1
  53. package/dist/resources/cs-cz/studio.js +1282 -2
  54. package/dist/resources/cs-cz/studio.js.map +1 -1
  55. package/dist/resources/cs-cz/ui.d.ts +51 -2
  56. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  57. package/dist/resources/cs-cz/ui.js +55 -6
  58. package/dist/resources/cs-cz/ui.js.map +1 -1
  59. package/dist/resources/da-dk/common.d.ts +31 -1071
  60. package/dist/resources/da-dk/common.d.ts.map +1 -1
  61. package/dist/resources/da-dk/common.js +31 -1071
  62. package/dist/resources/da-dk/common.js.map +1 -1
  63. package/dist/resources/da-dk/errors.d.ts +3 -2
  64. package/dist/resources/da-dk/errors.d.ts.map +1 -1
  65. package/dist/resources/da-dk/errors.js +3 -2
  66. package/dist/resources/da-dk/errors.js.map +1 -1
  67. package/dist/resources/da-dk/generated.d.ts +3 -2
  68. package/dist/resources/da-dk/generated.d.ts.map +1 -1
  69. package/dist/resources/da-dk/generated.js +3 -2
  70. package/dist/resources/da-dk/generated.js.map +1 -1
  71. package/dist/resources/da-dk/studio.d.ts +1282 -2
  72. package/dist/resources/da-dk/studio.d.ts.map +1 -1
  73. package/dist/resources/da-dk/studio.js +1282 -2
  74. package/dist/resources/da-dk/studio.js.map +1 -1
  75. package/dist/resources/da-dk/ui.d.ts +51 -2
  76. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  77. package/dist/resources/da-dk/ui.js +55 -6
  78. package/dist/resources/da-dk/ui.js.map +1 -1
  79. package/dist/resources/de-de/common.d.ts +31 -1071
  80. package/dist/resources/de-de/common.d.ts.map +1 -1
  81. package/dist/resources/de-de/common.js +31 -1071
  82. package/dist/resources/de-de/common.js.map +1 -1
  83. package/dist/resources/de-de/errors.d.ts +3 -2
  84. package/dist/resources/de-de/errors.d.ts.map +1 -1
  85. package/dist/resources/de-de/errors.js +3 -2
  86. package/dist/resources/de-de/errors.js.map +1 -1
  87. package/dist/resources/de-de/generated.d.ts +3 -2
  88. package/dist/resources/de-de/generated.d.ts.map +1 -1
  89. package/dist/resources/de-de/generated.js +3 -2
  90. package/dist/resources/de-de/generated.js.map +1 -1
  91. package/dist/resources/de-de/studio.d.ts +1282 -2
  92. package/dist/resources/de-de/studio.d.ts.map +1 -1
  93. package/dist/resources/de-de/studio.js +1282 -2
  94. package/dist/resources/de-de/studio.js.map +1 -1
  95. package/dist/resources/de-de/ui.d.ts +51 -2
  96. package/dist/resources/de-de/ui.d.ts.map +1 -1
  97. package/dist/resources/de-de/ui.js +55 -6
  98. package/dist/resources/de-de/ui.js.map +1 -1
  99. package/dist/resources/eager.d.ts +3 -0
  100. package/dist/resources/eager.d.ts.map +1 -0
  101. package/dist/resources/eager.js +25 -0
  102. package/dist/resources/eager.js.map +1 -0
  103. package/dist/resources/en-us/common.d.ts +31 -1071
  104. package/dist/resources/en-us/common.d.ts.map +1 -1
  105. package/dist/resources/en-us/common.js +31 -1071
  106. package/dist/resources/en-us/common.js.map +1 -1
  107. package/dist/resources/en-us/errors.d.ts +3 -2
  108. package/dist/resources/en-us/errors.d.ts.map +1 -1
  109. package/dist/resources/en-us/errors.js +3 -2
  110. package/dist/resources/en-us/errors.js.map +1 -1
  111. package/dist/resources/en-us/generated.d.ts +3 -2
  112. package/dist/resources/en-us/generated.d.ts.map +1 -1
  113. package/dist/resources/en-us/generated.js +3 -2
  114. package/dist/resources/en-us/generated.js.map +1 -1
  115. package/dist/resources/en-us/studio.d.ts +1282 -2
  116. package/dist/resources/en-us/studio.d.ts.map +1 -1
  117. package/dist/resources/en-us/studio.js +1282 -2
  118. package/dist/resources/en-us/studio.js.map +1 -1
  119. package/dist/resources/en-us/ui.d.ts +51 -2
  120. package/dist/resources/en-us/ui.d.ts.map +1 -1
  121. package/dist/resources/en-us/ui.js +55 -6
  122. package/dist/resources/en-us/ui.js.map +1 -1
  123. package/dist/resources/fr-fr/common.d.ts +31 -1071
  124. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  125. package/dist/resources/fr-fr/common.js +31 -1071
  126. package/dist/resources/fr-fr/common.js.map +1 -1
  127. package/dist/resources/fr-fr/errors.d.ts +3 -2
  128. package/dist/resources/fr-fr/errors.d.ts.map +1 -1
  129. package/dist/resources/fr-fr/errors.js +3 -2
  130. package/dist/resources/fr-fr/errors.js.map +1 -1
  131. package/dist/resources/fr-fr/generated.d.ts +3 -2
  132. package/dist/resources/fr-fr/generated.d.ts.map +1 -1
  133. package/dist/resources/fr-fr/generated.js +3 -2
  134. package/dist/resources/fr-fr/generated.js.map +1 -1
  135. package/dist/resources/fr-fr/studio.d.ts +1282 -2
  136. package/dist/resources/fr-fr/studio.d.ts.map +1 -1
  137. package/dist/resources/fr-fr/studio.js +1282 -2
  138. package/dist/resources/fr-fr/studio.js.map +1 -1
  139. package/dist/resources/fr-fr/ui.d.ts +51 -2
  140. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  141. package/dist/resources/fr-fr/ui.js +55 -6
  142. package/dist/resources/fr-fr/ui.js.map +1 -1
  143. package/dist/resources/index.d.ts +3 -6
  144. package/dist/resources/index.d.ts.map +1 -1
  145. package/dist/resources/index.js +15 -14
  146. package/dist/resources/index.js.map +1 -1
  147. package/dist/resources/lazy.d.ts +19 -9
  148. package/dist/resources/lazy.d.ts.map +1 -1
  149. package/dist/resources/lazy.js +4 -2
  150. package/dist/resources/lazy.js.map +1 -1
  151. package/dist/resources/namespaces.d.ts +43 -0
  152. package/dist/resources/namespaces.d.ts.map +1 -0
  153. package/dist/resources/namespaces.js +37 -0
  154. package/dist/resources/namespaces.js.map +1 -0
  155. package/dist/resources/zh-cn/common.d.ts +31 -1071
  156. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  157. package/dist/resources/zh-cn/common.js +31 -1071
  158. package/dist/resources/zh-cn/common.js.map +1 -1
  159. package/dist/resources/zh-cn/errors.d.ts +3 -2
  160. package/dist/resources/zh-cn/errors.d.ts.map +1 -1
  161. package/dist/resources/zh-cn/errors.js +3 -2
  162. package/dist/resources/zh-cn/errors.js.map +1 -1
  163. package/dist/resources/zh-cn/generated.d.ts +3 -2
  164. package/dist/resources/zh-cn/generated.d.ts.map +1 -1
  165. package/dist/resources/zh-cn/generated.js +3 -2
  166. package/dist/resources/zh-cn/generated.js.map +1 -1
  167. package/dist/resources/zh-cn/studio.d.ts +1282 -2
  168. package/dist/resources/zh-cn/studio.d.ts.map +1 -1
  169. package/dist/resources/zh-cn/studio.js +1282 -2
  170. package/dist/resources/zh-cn/studio.js.map +1 -1
  171. package/dist/resources/zh-cn/ui.d.ts +51 -2
  172. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  173. package/dist/resources/zh-cn/ui.js +55 -6
  174. package/dist/resources/zh-cn/ui.js.map +1 -1
  175. package/dist/resources/zh-tw/common.d.ts +31 -1071
  176. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  177. package/dist/resources/zh-tw/common.js +31 -1071
  178. package/dist/resources/zh-tw/common.js.map +1 -1
  179. package/dist/resources/zh-tw/errors.d.ts +3 -2
  180. package/dist/resources/zh-tw/errors.d.ts.map +1 -1
  181. package/dist/resources/zh-tw/errors.js +3 -2
  182. package/dist/resources/zh-tw/errors.js.map +1 -1
  183. package/dist/resources/zh-tw/generated.d.ts +3 -2
  184. package/dist/resources/zh-tw/generated.d.ts.map +1 -1
  185. package/dist/resources/zh-tw/generated.js +3 -2
  186. package/dist/resources/zh-tw/generated.js.map +1 -1
  187. package/dist/resources/zh-tw/studio.d.ts +1282 -2
  188. package/dist/resources/zh-tw/studio.d.ts.map +1 -1
  189. package/dist/resources/zh-tw/studio.js +1282 -2
  190. package/dist/resources/zh-tw/studio.js.map +1 -1
  191. package/dist/resources/zh-tw/ui.d.ts +51 -2
  192. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  193. package/dist/resources/zh-tw/ui.js +55 -6
  194. package/dist/resources/zh-tw/ui.js.map +1 -1
  195. package/dist/review-status.js +7 -7
  196. package/locales/ar-EG/.meta.json +3187 -2267
  197. package/locales/ar-EG/common.json +28 -1069
  198. package/locales/ar-EG/studio.json +1279 -0
  199. package/locales/ar-EG/ui.json +52 -4
  200. package/locales/cs-CZ/.meta.json +3203 -2283
  201. package/locales/cs-CZ/common.json +28 -1069
  202. package/locales/cs-CZ/studio.json +1279 -0
  203. package/locales/cs-CZ/ui.json +52 -4
  204. package/locales/da-DK/.meta.json +3208 -2288
  205. package/locales/da-DK/common.json +28 -1069
  206. package/locales/da-DK/studio.json +1279 -0
  207. package/locales/da-DK/ui.json +52 -4
  208. package/locales/de-DE/.meta.json +3201 -2281
  209. package/locales/de-DE/common.json +28 -1069
  210. package/locales/de-DE/studio.json +1279 -0
  211. package/locales/de-DE/ui.json +52 -4
  212. package/locales/en-US/common.json +28 -1069
  213. package/locales/en-US/studio.json +1279 -0
  214. package/locales/en-US/ui.json +52 -4
  215. package/locales/fr-FR/.meta.json +3205 -2285
  216. package/locales/fr-FR/common.json +28 -1069
  217. package/locales/fr-FR/studio.json +1279 -0
  218. package/locales/fr-FR/ui.json +52 -4
  219. package/locales/zh-CN/.meta.json +3185 -2265
  220. package/locales/zh-CN/common.json +28 -1069
  221. package/locales/zh-CN/studio.json +1279 -0
  222. package/locales/zh-CN/ui.json +52 -4
  223. package/locales/zh-TW/.meta.json +3188 -2268
  224. package/locales/zh-TW/common.json +28 -1069
  225. package/locales/zh-TW/studio.json +1279 -0
  226. package/locales/zh-TW/ui.json +52 -4
  227. package/package.json +1 -1
@@ -2,8 +2,9 @@
2
2
  /**
3
3
  * GENERATED MIRROR of ../../../locales/ar-EG/common.json — do not edit by hand.
4
4
  * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);
5
- * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits
6
- * the other locales) without JSON import attributes (browser + NodeNext safe).
5
+ * this TS mirror exists so the runtime can bundle a namespace (en-US's eager
6
+ * ones) or chunk-split it (every other locale, and en-US's deferred `studio`)
7
+ * without JSON import attributes (browser + NodeNext safe).
7
8
  * Parity is enforced by src/resources/parity.test.ts. Regenerate with
8
9
  * scripts/gen-resources.mjs.
9
10
  */
@@ -114,6 +115,11 @@ export default {
114
115
  "audit": "سجل التدقيق",
115
116
  "security": "كلمة المرور والجلسات"
116
117
  },
118
+ "apps": {
119
+ "frame": {
120
+ "noFrames": "يحتاج هذا التطبيق إلى متصفح يدعم الإطارات."
121
+ }
122
+ },
117
123
  "topbar": {
118
124
  "search": "بحث…",
119
125
  "notifications": "الإشعارات",
@@ -125,6 +131,8 @@ export default {
125
131
  "profile": "الملف الشخصي",
126
132
  "preferences": "التفضيلات",
127
133
  "studio": "Studio",
134
+ "dataConnections": "اتصالات البيانات",
135
+ "workspaceSettings": "إعدادات مساحة العمل",
128
136
  "signOut": "تسجيل الخروج"
129
137
  },
130
138
  "palette": {
@@ -241,6 +249,11 @@ export default {
241
249
  "body": "أوقف أحد المسؤولين مساحة العمل هذه. بياناتك محفوظة — تواصل مع مالك مساحة العمل لاستعادة الوصول.",
242
250
  "primary": "التواصل مع المالك",
243
251
  "secondary": "رجوع"
252
+ },
253
+ "connectionPaused": {
254
+ "title": "هذا الاتصال متوقّف مؤقتًا",
255
+ "body": "أوقف أحد المسؤولين قاعدة البيانات التي تعتمد عليها هذه الصفحة مؤقتًا، لذا لا يجري تحميل أي بيانات الآن. لم يُحذف أي شيء — وسيعود كل شيء بمجرد استئناف الاتصال من Studio ← اتصالات البيانات.",
256
+ "secondary": "رجوع"
244
257
  }
245
258
  },
246
259
  "notFound": {
@@ -320,6 +333,20 @@ export default {
320
333
  "twoFactor": "المصادقة الثنائية",
321
334
  "on": "مفعَّلة",
322
335
  "off": "متوقفة",
336
+ "nameRequired": "أدخل اسمك.",
337
+ "emailHelper": "يُستخدم لتسجيل الدخول. تغييره يتطلّب كلمة المرور.",
338
+ "confirmPassword": "كلمة المرور الحالية",
339
+ "confirmPasswordHelper": "أكِّد هويتك قبل تغيير عنوان تسجيل الدخول.",
340
+ "save": "حفظ التغييرات",
341
+ "saveFailed": "تعذَّر حفظ ملفك الشخصي",
342
+ "saved": "تم تحديث الملف الشخصي",
343
+ "savedBody": "بياناتك الجديدة سارية في مساحة العمل بالكامل. وإذا غيَّرت بريدك الإلكتروني، فسجِّل الدخول بالعنوان الجديد من الآن فصاعدًا.",
344
+ "accessTitle": "الوصول",
345
+ "accessSubtitle": "ما يُسمح لهذا الحساب بفعله، وكيف يُثبت هويته.",
346
+ "rolesHelper": "تُمنح الأدوار من قِبل مسؤول ولا يمكن تغييرها من حسابك الشخصي.",
347
+ "manageTwoFactor": "إدارة",
348
+ "setUpTwoFactor": "إعداد",
349
+ "securityLink": "كلمة المرور والجلسات",
323
350
  "preferences": {
324
351
  "title": "التفضيلات",
325
352
  "subtitle": "كيف يبدو Adminium ويُقرأ بالنسبة لك — على هذا الجهاز وكل جهاز تسجّل الدخول منه.",
@@ -423,914 +450,6 @@ export default {
423
450
  }
424
451
  }
425
452
  },
426
- "studio": {
427
- "source": {
428
- "engine": {
429
- "label": "محرّك قاعدة البيانات",
430
- "postgres": "PostgreSQL",
431
- "mysql": "MySQL / MariaDB",
432
- "sqlite": "SQLite"
433
- },
434
- "format": {
435
- "label": "تنسيق المخطط",
436
- "helper": "اترك الاكتشاف التلقائي مفعّلًا ما لم يخطئ في التعرّف.",
437
- "auto": "اكتشاف تلقائي",
438
- "sql": "SQL DDL / pg_dump",
439
- "prisma": "مخطط Prisma",
440
- "drizzle": "Drizzle ORM",
441
- "typeorm": "كيانات TypeORM",
442
- "sequelize": "نماذج Sequelize",
443
- "rails": "Rails schema.rb",
444
- "django": "Django models.py",
445
- "json": "Adminium JSON"
446
- },
447
- "sqlite": {
448
- "file": "مسار ملف قاعدة البيانات",
449
- "helper": "SQLite ملف وليس خادمًا — أدخل المسار المطلق على الجهاز الذي يشغّل Adminium."
450
- },
451
- "file": {
452
- "detectedAs": "تم اكتشاف: {format}",
453
- "moreWarnings": "+{count} تحذيرات إضافية — تظهر القائمة الكاملة في خطوة التحليل.",
454
- "dropTitle": "أسقط ملف المخطط هنا، أو تصفّح",
455
- "dropHint": "SQL DDL / pg_dump وPrisma وDrizzle وTypeORM وSequelize وRails schema.rb ونماذج Django وAdminium JSON",
456
- "pitch": "لا حاجة إلى اتصال بقاعدة البيانات — نحلّل ملف المخطط ونبني اللوحات نفسها.",
457
- "parsing": "جارٍ قراءة ملف المخطط المرفوع…",
458
- "tables": "جداول",
459
- "columns": "أعمدة",
460
- "warnings": "تحذيرات",
461
- "errorTitle": "تعذّر تحليل الملف",
462
- "parseFailed": "تعذّر تحليل هذا الملف. إذا أخطأ الاكتشاف التلقائي، فاختر التنسيق صراحةً وأعد المحاولة.",
463
- "unsupported": "تنسيق غير معروف — المدعوم: SQL DDL وPrisma وDrizzle وTypeORM وSequelize وRails schema.rb ونماذج Django وAdminium JSON. اختر واحدًا صراحةً وأعد المحاولة.",
464
- "requestFailed": "فشل الرفع — تحقّق من اتصالك وأعد المحاولة."
465
- },
466
- "title": "اربط قاعدة بياناتك",
467
- "subtitle": "وجّه Adminium إلى قاعدة بيانات وسننشئ لوحة إدارة من مخططها.",
468
- "name": "اسم الاتصال",
469
- "namePlaceholder": "Postgres للإنتاج",
470
- "modeLabel": "وضع إدخال المصدر",
471
- "mode": {
472
- "dsn": "سلسلة الاتصال",
473
- "fields": "حقول منفصلة",
474
- "file": "ملف المخطط"
475
- },
476
- "dsn": {
477
- "label": "سلسلة الاتصال",
478
- "helper": "postgres://user:password@host:5432/database — يعمل أيضًا mysql:// وsqlite:.",
479
- "incomplete": "أضف المضيف وقاعدة البيانات، مثل postgres://user@host:5432/db",
480
- "invalidScheme": "مخطط غير معروف — المتوقع postgres:// أو mysql:// أو mariadb:// أو sqlite:",
481
- "quickFill": "تعبئة سريعة:"
482
- },
483
- "fields": {
484
- "host": "المضيف",
485
- "port": "المنفذ",
486
- "database": "قاعدة البيانات",
487
- "user": "المستخدم",
488
- "password": "كلمة المرور",
489
- "ssl": "وضع SSL",
490
- "preview": "معاينة سلسلة الاتصال:"
491
- },
492
- "readOnlyRole": {
493
- "title": "استخدم دورًا للقراءة فقط",
494
- "body": "لا يكتب Adminium أبدًا في قاعدة بياناتك — يستخدم الإعداد بيانات المخطط الوصفية فقط. نوصي بمستخدم مخصّص بصلاحيات SELECT فقط؛ ويمكنك تحديد مكان جداول Adminium الخاصة في خطوة تخزين البيانات الوصفية."
495
- }
496
- },
497
- "capability": {
498
- "mysqlApproxRows": "أعداد الصفوف في MySQL تقديرات من محرّك التخزين (قد تنحرف حتى ±40%) — تُعرض مع ≈.",
499
- "mysqlFkEnum": "البيانات الوصفية للمفاتيح الخارجية والتعدادات في MySQL أضعف: جداول MyISAM لا تعلن مفاتيح خارجية، والتعدادات أنواع enum(…) على مستوى العمود، وقيود CHECK تتطلب MySQL 8.0.16+ / MariaDB 10.2+.",
500
- "sqliteCheckEnums": "لا يملك SQLite نوع تعداد أصليًا — تُركَّب التعدادات من قيود CHECK (col IN (…)).",
501
- "sqliteNoComments": "لا يدعم SQLite تعليقات الأعمدة — استخدم محرّر إعادة تعيين المخطط لإضافة التسميات.",
502
- "importNoRowCounts": "ملفات المخطط لا تحمل أعداد صفوف — تعرض قائمة الجداول — بدلًا من أرقام مختلَقة.",
503
- "importNoLiveHealth": "لا يوجد اتصال مباشر بقاعدة بيانات — فحوصات الصحة واكتشاف انحراف المخطط غير متاحة لهذا المصدر.",
504
- "rowsUnavailable": "ملفات المخطط بلا قاعدة بيانات مباشرة — تظل أعداد الصفوف مجهولة حتى توصيل واحدة.",
505
- "rowsRunAnalyze": "لا يوجد تقدير بعد — شغّل ANALYZE على قاعدة البيانات للحصول على أعداد الصفوف.",
506
- "rowsNoEstimate": "لم يبلّغ المحرّك عن أي تقدير لهذا الجدول.",
507
- "rowsApproximate": "تقدير من محرّك التخزين — قد ينحرف حتى ±40% على InnoDB."
508
- },
509
- "test": {
510
- "log": {
511
- "moreWarnings": "+{count} تحذيرات إضافية من المحلّل",
512
- "connecting": "جارٍ إنشاء اتصال آمن…",
513
- "connected": "متصل ({latency} م.ث) · استبطان للقراءة فقط",
514
- "connectFailed": "فشل الاتصال.",
515
- "readingSchema": "جارٍ قراءة المخطط: public",
516
- "readingFile": "جارٍ قراءة ملف المخطط المرفوع…",
517
- "parsingFile": "جارٍ تحليل {file}…",
518
- "detected": "تم اكتشاف {tables} جدولًا · {columns} عمودًا",
519
- "found": "تم العثور على {tables} جدولًا · {columns} عمودًا",
520
- "mapping": "جارٍ ربط أنواع الأعمدة ← عناصر الإدخال",
521
- "relations": "جارٍ اكتشاف العلاقات…",
522
- "piiScan": "جارٍ البحث عن أعمدة البيانات الشخصية…",
523
- "piiDone": "اكتمل فحص البيانات الشخصية — تم إخفاء {count} عمودًا افتراضيًا",
524
- "piiDoneUnknown": "اكتمل فحص البيانات الشخصية",
525
- "jobFailed": "فشل الاستبطان.",
526
- "networkFailed": "فشل الطلب — تحقّق من اتصالك وأعد المحاولة.",
527
- "ready": "جاهز"
528
- },
529
- "title": "جارٍ تحليل مخططك",
530
- "subtitle": "جارٍ استبطان الجداول والأعمدة والعلاقات. يستغرق ذلك بضع ثوانٍ.",
531
- "trust": "نقرأ مخططك وبياناتك فقط. لا يتم تعديل أي شيء.",
532
- "errorTitle": "فشل الاتصال",
533
- "retry": "إعادة المحاولة",
534
- "logLabel": "سجل الاستبطان",
535
- "hint": {
536
- "auth": "فشلت المصادقة — تحقّق من اسم المستخدم وكلمة المرور في DSN.",
537
- "hostUnreachable": "تعذّر الوصول إلى المضيف — تحقّق من اسم المضيف والمنفذ، ومن أن قاعدة البيانات تقبل الاتصالات من هذا الجهاز (أضف عناوين IP الخاصة بنا إلى قائمة السماح).",
538
- "metaPlacement": "لا يمكن لهذا المصدر استضافة جداول Adminium الوصفية — تابع بقاعدة بيانات وصفية منفصلة.",
539
- "permission": "اتصل الدور لكنه يفتقر إلى صلاحيات قراءة المخطط — امنح دور الاستبطان صلاحية USAGE على المخطط.",
540
- "timeout": "لم تُجب قاعدة البيانات في الوقت المناسب — تحقّق من مسار الشبكة والحمل ثم أعد المحاولة.",
541
- "tls": "فشل تفاوض TLS — جرّب sslmode=require، أو ارفع شهادة CA التي يتوقعها خادمك.",
542
- "unknown": "فشل الاتصال — تحقّق من DSN وأعد المحاولة."
543
- }
544
- },
545
- "tables": {
546
- "importNoCounts": "ملفات المخطط لا تحمل أعداد صفوف — يعرض العمود — حتى يتم توصيل قاعدة بيانات مباشرة.",
547
- "title": "اختر جداولك",
548
- "subtitle": "اختر ما تريد تضمينه. يمكنك تغيير ذلك في أي وقت.",
549
- "search": "تصفية الجداول…",
550
- "listLabel": "الجداول القابلة للتضمين",
551
- "emptyFilter": "لا توجد جداول مطابقة لعامل التصفية.",
552
- "pii": "PII",
553
- "highVolume": "حجم كبير",
554
- "highVolumeNote": "الجداول التي تتجاوز 100,000 صف تبدأ غير محددة — نادرًا ما تنتمي جداول التشغيل إلى لوحة معلومات.",
555
- "joinHidden": "تم إخفاء {count} من جداول الربط/النظام مسبقًا — لكنها لا تزال تشغّل علاقات متعدد-إلى-متعدد."
556
- },
557
- "hub": {
558
- "title": "اتصالات البيانات",
559
- "subtitle": "{healthy, number} من {total, plural, one {اتصال واحد} two {اتصالين} few {# اتصالات} many {# اتصالًا} other {# اتصال}} بحالة سليمة",
560
- "connectNew": "اتصال جديد",
561
- "stats": {
562
- "connections": "الاتصالات",
563
- "healthy": "سليمة",
564
- "tables": "الجداول المضمّنة",
565
- "pages": "الصفحات المولّدة"
566
- },
567
- "status": {
568
- "connected": "متصل",
569
- "error": "خطأ",
570
- "unconfigured": "مسودة",
571
- "testing": "جارٍ الاختبار…"
572
- },
573
- "card": {
574
- "readOnly": "للقراءة فقط",
575
- "tables": "الجداول",
576
- "pages": "الصفحات",
577
- "latency": "زمن الاستجابة",
578
- "latencyMs": "{latency, number} م.ث",
579
- "lastIntrospected": "آخر فحص للمخطط",
580
- "never": "أبدًا"
581
- },
582
- "action": {
583
- "test": "اختبار",
584
- "reintrospect": "إعادة فحص المخطط",
585
- "reintrospectFile": "مصادر ملفات المخطط لا تملك قاعدة بيانات حيّة — أعد رفع الملف بدلًا من ذلك.",
586
- "remap": "إعادة تعيين المخطط",
587
- "delete": "حذف"
588
- },
589
- "test": {
590
- "ok": "الاتصال سليم · {latency, number} م.ث",
591
- "failed": "فشل اختبار الاتصال"
592
- },
593
- "introspect": {
594
- "noChanges": "المخطط دون تغيير — لا لقطة جديدة.",
595
- "updated": "أُعيد فحص المخطط",
596
- "masksProposed": "{count, plural, one {عمود واحد مقترح} two {عمودان مقترحان} few {# أعمدة مقترحة} many {# عمودًا مقترحًا} other {# عمود مقترح}} للإخفاء — راجعها في محرر إعادة التعيين.",
597
- "failed": "فشل فحص المخطط. حاول مرة أخرى."
598
- },
599
- "delete": {
600
- "title": "حذف الاتصال",
601
- "body": "سيؤدي هذا إلى حذف «{name}» وصفحاته المولّدة. لن تُمسّ قاعدة بياناتك نفسها أبدًا.",
602
- "prompt": "اكتب {name} للتأكيد",
603
- "confirm": "حذف الاتصال",
604
- "cancel": "إلغاء",
605
- "close": "إغلاق",
606
- "success": "حُذف الاتصال «{name}»",
607
- "failed": "تعذّر حذف الاتصال. حاول مرة أخرى."
608
- },
609
- "empty": {
610
- "title": "لا مصادر بيانات بعد",
611
- "body": "اربط قاعدة بيانات وسيولّد Adminium لوحة الإدارة من مخططها.",
612
- "cta": "ربط قاعدة بيانات"
613
- }
614
- },
615
- "settingsHub": {
616
- "title": "إعدادات مساحة العمل",
617
- "subtitle": "الهوية والأمان والإجراءات الخطرة لمساحة العمل هذه.",
618
- "save": "حفظ التغييرات",
619
- "saved": "تم تحديث إعدادات مساحة العمل",
620
- "saveFailed": "تعذّر حفظ إعدادات مساحة العمل. حاول مرة أخرى.",
621
- "superAdminOnlyTitle": "يتطلب مشرفًا أعلى",
622
- "superAdminOnly": "لا يمكن تغيير هوية مساحة العمل وإعدادات الأمان إلا لمشرف أعلى.",
623
- "identity": {
624
- "heading": "هوية مساحة العمل",
625
- "appName": {
626
- "label": "اسم التطبيق",
627
- "helper": "يظهر في الشريط الجانبي وعنوان المتصفح ورسائل البريد الإلكتروني.",
628
- "error": "أدخل اسمًا لا يتجاوز 60 حرفًا."
629
- },
630
- "logo": {
631
- "label": "الشعار",
632
- "drop": "أفلِت صورة هنا",
633
- "helper": "PNG أو JPEG أو WebP أو GIF أو SVG بحجم أقصاه 1 ميغابايت. يحل محل العلامة المدمجة في كل مكان.",
634
- "upload": "رفع شعار",
635
- "replace": "استبدال الشعار",
636
- "remove": "إزالة",
637
- "uploaded": "تم تحديث الشعار",
638
- "removed": "تمت إزالة الشعار",
639
- "tooLarge": "حجم الصورة أكبر من 1 ميغابايت.",
640
- "badType": "اختر صورة PNG أو JPEG أو WebP أو GIF أو SVG.",
641
- "undo": "تراجع"
642
- },
643
- "showVersion": {
644
- "label": "الإصدار في الشريط الجانبي",
645
- "helper": "رقم الإصدار بجوار الشعار. إيقافه يخفي الإصدار الذي تشغّله."
646
- }
647
- },
648
- "security": {
649
- "heading": "الأمان",
650
- "require2fa": {
651
- "label": "فرض المصادقة الثنائية",
652
- "desc": "يجب على كل عضو تفعيل المصادقة الثنائية لتسجيل الدخول.",
653
- "note": "إرشادي وليس مانعًا: يُوجَّه الأعضاء بلا مصادقة ثنائية إلى إعدادها ولا يمكنهم إيقافها بعد ذلك، لكن تسجيل دخولهم لا يُمنع أبدًا، ومفاتيح API غير متأثرة."
654
- },
655
- "allowSignup": {
656
- "label": "السماح بالتسجيل الذاتي",
657
- "desc": "يمكن لأي شخص إنشاء حساب — عند الإيقاف تبقى مساحة العمل بالدعوة فقط."
658
- },
659
- "sessionTtl": {
660
- "label": "مدة الجلسة (بالساعات)",
661
- "error": "بين {min, number} و{max, number} ساعة."
662
- },
663
- "passwordMin": {
664
- "label": "الحد الأدنى لطول كلمة المرور",
665
- "error": "بين {min, number} و{max, number} حرفًا."
666
- }
667
- },
668
- "email": {
669
- "heading": "البريد الإلكتروني (SMTP)",
670
- "unconfigured": "لا يوجد خادم بريد مُعدّ، لذلك لا يستطيع Adminium إرسال إعادة تعيين كلمات المرور أو دعوات المستخدمين أو التقارير المجدولة.",
671
- "host": {
672
- "label": "مضيف SMTP",
673
- "error": "اسم مضيف أو عنوان IP فقط — بدون بروتوكول أو منفذ أو بيانات اعتماد."
674
- },
675
- "port": {
676
- "label": "المنفذ",
677
- "error": "بين {min, number} و{max, number}."
678
- },
679
- "user": {
680
- "label": "اسم المستخدم",
681
- "helper": "اتركه فارغًا إذا كان المُرحِّل لا يطلب مصادقة."
682
- },
683
- "pass": {
684
- "label": "كلمة المرور",
685
- "helper": "تُخزَّن مشفَّرة ولا تُعرض مرة أخرى. اتركها فارغة للإبقاء على الحالية.",
686
- "error": "اسم المستخدم هذا يحتاج إلى كلمة مرور."
687
- },
688
- "from": {
689
- "label": "عنوان المُرسِل",
690
- "helper": "العنوان وحده، أو اسم معروض قبله.",
691
- "error": "أدخل عنوان بريد إلكتروني."
692
- },
693
- "secure": {
694
- "label": "TLS ضمني",
695
- "helper": "مُفعَّل للمنفذ 465. عند الإيقاف يبدأ الاتصال بنص واضح ثم يُرقَّى عبر STARTTLS، وهو ما يتوقعه المنفذ 587."
696
- },
697
- "remove": "إزالة خادم البريد",
698
- "review": {
699
- "removed": "أُزيل",
700
- "password": "استُبدلت"
701
- }
702
- },
703
- "review": {
704
- "title": "حفظ إعدادات مساحة العمل",
705
- "subtitle": "راجع تغييراتك قبل الحفظ.",
706
- "confirm": "حفظ التغييرات",
707
- "cancel": "إلغاء",
708
- "close": "إغلاق",
709
- "on": "مفعّل",
710
- "off": "متوقف",
711
- "shown": "ظاهر",
712
- "hidden": "مخفي",
713
- "change": "{before} → {after}"
714
- },
715
- "defaultsCard": {
716
- "heading": "الإعدادات الافتراضية للمظهر واللغة",
717
- "body": "إعدادات السمة ولون التمييز والكثافة واللغة على مستوى مساحة العمل موجودة ضمن الإعدادات الافتراضية العامة.",
718
- "cta": "فتح الإعدادات الافتراضية العامة"
719
- },
720
- "danger": {
721
- "heading": "منطقة الخطر",
722
- "subtitle": "إجراءات لا يمكن التراجع عنها.",
723
- "empty": "لا شيء للحذف — لا اتصالات بعد.",
724
- "deleteDesc": "يحذف الاتصال والصفحات المولّدة منه. لن تُمسّ قاعدة بياناتك. لا يمكن التراجع عن هذا الإجراء.",
725
- "deleteCta": "حذف الاتصال"
726
- },
727
- "aiCard": {
728
- "heading": "الإثراء بالذكاء الاصطناعي",
729
- "body": "هيّئ مزوّد ذكاء اصطناعي (أو رحلة النسخ واللصق) لإثراء التسميات والمجموعات والعلاقات.",
730
- "cta": "فتح إعدادات الذكاء الاصطناعي"
731
- },
732
- "pagesCard": {
733
- "heading": "الصفحات",
734
- "body": "أضف الصفحات وحرّرها واحذفها، وغيّر ما تعرضه كل صفحة، وأعد ترتيب الشريط الجانبي.",
735
- "cta": "إدارة الصفحات"
736
- },
737
- "translationsCard": {
738
- "heading": "اللغات والترجمات",
739
- "body": "أعد صياغة أي نص في Adminium، واختر اللغات المتاحة للناس، وأضف لغاتك الخاصة.",
740
- "cta": "فتح الترجمات"
741
- }
742
- },
743
- "settingsAi": {
744
- "title": "الإثراء بالذكاء الاصطناعي",
745
- "subtitle": "اربط نموذجًا ليقترح Adminium التسميات والمجموعات والعلاقات والمزيد — تُراجَع دائمًا كفرق قبل تطبيق أي شيء.",
746
- "saved": "تم حفظ مزوّد الذكاء الاصطناعي",
747
- "saveFailed": "تعذّر حفظ مزوّد الذكاء الاصطناعي. حاول مرة أخرى.",
748
- "save": "حفظ المزوّد",
749
- "test": "اختبار الاتصال",
750
- "testHintDirty": "احفظ تغييراتك قبل الاختبار.",
751
- "testing": "جارٍ التواصل مع المزوّد…",
752
- "testError": "فشل الاختبار",
753
- "testErrorBody": "تعذّر الوصول إلى المزوّد. تحقق من المفتاح وعنوان URL الأساسي.",
754
- "testOk": "تم الاتصال بـ {model} خلال {latency} مللي ثانية",
755
- "testUnknownModel": "المزوّد",
756
- "provider": {
757
- "heading": "مزوّد الذكاء الاصطناعي",
758
- "subtitle": "اختر كيف يصل Adminium إلى نموذج لإثراء مخططك. تُخزَّن المفاتيح مشفّرة ولا تُعرض مرة أخرى أبدًا.",
759
- "active": "نشط",
760
- "anthropic": {
761
- "label": "Anthropic",
762
- "desc": "نماذج Claude عبر واجهة Anthropic البرمجية."
763
- },
764
- "openai": {
765
- "label": "OpenAI",
766
- "desc": "نماذج GPT عبر واجهة OpenAI البرمجية."
767
- },
768
- "openaiCompatible": {
769
- "label": "متوافق مع OpenAI",
770
- "desc": "أي نقطة نهاية تتحدث بتنسيق OpenAI — Groq وTogether وvLLM وLM Studio."
771
- },
772
- "ollama": {
773
- "label": "Ollama (محلي)",
774
- "desc": "نماذج تعمل محليًا عبر Ollama — بدون مفتاح وبدون سحابة."
775
- },
776
- "requiresNetwork": "يتطلب اتصالاً بالإنترنت ومفتاح API",
777
- "networkDisabledTitle": "مزوّدو الذكاء الاصطناعي المباشرون معطَّلون في هذا التثبيت",
778
- "networkDisabledBody": "تم إعداد نسخة Adminium هذه دون وصول صادر إلى الإنترنت، لذا لا يمكنها الوصول إلى واجهة أي مزوّد. استخدم دورة النسخ واللصق أدناه — لا تحتاج إلى مفتاح ولا إلى شبكة."
779
- },
780
- "configure": {
781
- "heading": "تهيئة {provider}"
782
- },
783
- "field": {
784
- "baseUrl": "عنوان URL الأساسي",
785
- "baseUrlOptional": "اتركه كما هو ما لم يكن Ollama يعمل على مضيف آخر.",
786
- "baseUrlHelper": "جذر نقطة النهاية الذي يخدم ‎/chat/completions.",
787
- "model": "النموذج",
788
- "modelFreeText": "أدخل معرّف النموذج الدقيق الذي تخدمه نقطة النهاية لديك.",
789
- "modelLive": "تم التحميل مباشرة من المزوّد.",
790
- "modelStatic": "قائمة موثوقة؛ اكتب معرّفًا مخصصًا بعد الحفظ لتحديثها.",
791
- "modelLoading": "جارٍ التحميل…",
792
- "modelPlaceholder": "اختر نموذجًا…",
793
- "key": "مفتاح API",
794
- "keyStored": "مخزَّن مشفّرًا. استبدله لاستخدام مفتاح مختلف.",
795
- "keyMask": "sk-…{last4}",
796
- "keyReplace": "استبدال المفتاح",
797
- "keyOptional": "اختياري — بعض نقاط النهاية لا تحتاج إلى مفتاح.",
798
- "keyWriteOnly": "للكتابة فقط: بمجرد حفظه لا يُعرض مرة أخرى أبدًا.",
799
- "noKeyTitle": "لا حاجة إلى مفتاح API",
800
- "noKeyBody": "يعمل Ollama محليًا، لذا لا يغادر أي شيء هذا الجهاز."
801
- },
802
- "runStatus": {
803
- "draft": "مسودة",
804
- "running": "قيد التشغيل",
805
- "awaitingResponse": "في انتظار الرد",
806
- "validated": "تم التحقق",
807
- "applied": "مطبَّق",
808
- "partiallyApplied": "مطبَّق جزئيًا",
809
- "failed": "فشل",
810
- "discarded": "مُهمَل"
811
- },
812
- "byo": {
813
- "heading": "لا مفتاح؟ استخدم أداة الذكاء الاصطناعي الخاصة بك",
814
- "subtitle": "رحلة النسخ واللصق — لا يغادر أي شيء هذا الجهاز.",
815
- "body": "يستطيع Studio توليد مطالبة مكتفية ذاتيًا من مخططك. شغّلها في Claude Code أو ChatGPT أو أي أداة تفضّلها، ثم الصق JSON الذي تعيده في معالج الاتصال. نفس التحقق ونفس المراجعة ونفس النتيجة كالمسار المباشر.",
816
- "guaranteeTitle": "ضمان الخلو من القياس عن بُعد",
817
- "guarantee1": "تحمل المطالبة مخططك والإحصاءات المجمّعة فقط — ولا تحمل بيانات الصفوف افتراضيًا أبدًا.",
818
- "guarantee2": "لا تُضمَّن أي بيانات اعتماد أو عنوان URL للنسخة أو معرّفات.",
819
- "guarantee3": "عمليات BYO لا تُجري أي اتصالات شبكية.",
820
- "promptVersion": "المطالبة {version}",
821
- "schemaVersion": "المخطط {version}",
822
- "headingRecommended": "استخدم أداة الذكاء الاصطناعي الخاصة بك — دون الحاجة إلى مفتاح",
823
- "recommended": "موصى به"
824
- },
825
- "history": {
826
- "heading": "سجل العمليات",
827
- "subtitle": "عمليات الإثراء السابقة. افتح إحداها لمراجعة اقتراحاتها.",
828
- "tableLabel": "عمليات الإثراء",
829
- "colDate": "التاريخ",
830
- "colSource": "المصدر",
831
- "colStatus": "الحالة",
832
- "colChunks": "الأجزاء",
833
- "openReview": "افتح مراجعة العملية بتاريخ {date}",
834
- "connection": "الاتصال",
835
- "empty": "لا توجد عمليات إثراء بعد. أثرِ مخططًا من معالج الاتصال لعرض السجل هنا.",
836
- "errorTitle": "تعذّر تحميل العمليات",
837
- "errorBody": "أعد تحميل الصفحة للمحاولة مرة أخرى.",
838
- "noConnections": "اربط قاعدة بيانات أولًا — تُسجَّل عمليات الإثراء لكل اتصال على حدة.",
839
- "byo": "BYO",
840
- "directPath": "مباشر"
841
- }
842
- },
843
- "enrich": {
844
- "title": "الإثراء بالذكاء الاصطناعي",
845
- "subtitle": "يمكنك اختياريًا تحسين التسميات والمجموعات والتعدادات ولوحات المعلومات المُولّدة باستخدام نموذج لغوي كبير. يعمل الأساس الاستدلالي بدونه — وهذا يضيف فقط اقتراحات تراجعها قبل تطبيق أي شيء.",
846
- "intentLabel": "كيف تريد الإثراء؟",
847
- "sectionsLegend": "ما الذي ينبغي للذكاء الاصطناعي أن يقرره؟",
848
- "localesLegend": "ترجمة التسميات إلى",
849
- "localeLocked": "(مطلوب)",
850
- "samplingTitle": "تضمين قيم عينة",
851
- "samplingHint": "يضمّن ما يصل إلى 20 قيمة حقيقية لكل عمود غير حاوٍ على بيانات شخصية في المُوجّه.",
852
- "samplingPreviewTitle": "ما الذي يغادر هذا الجهاز",
853
- "samplingPreviewBody": "ما يصل إلى 20 قيمة من الأكثر شيوعًا لكل عمود غير حاوٍ على بيانات شخصية، إضافةً إلى الحد الأدنى/الأقصى للأعمدة الرقمية والتاريخية. لا تُؤخذ عينات من الأعمدة المُعلَّمة كبيانات شخصية أبدًا. يبقى كل ما عداها مُجمَّعًا فقط. راجع المُوجّه الدقيق قبل النسخ (BYO) — لا يُرسَل أي شيء دون إجراء منك.",
854
- "noSections": "اختر مجموعة قرار واحدة على الأقل للإثراء.",
855
- "generatePrompt": "إنشاء المُوجّه",
856
- "startProvider": "بدء الإثراء",
857
- "startOver": "البدء من جديد",
858
- "copied": "تم النسخ",
859
- "createFailed": "تعذّر إنشاء مُوجّه الإثراء — أعد المحاولة.",
860
- "createFailedTitle": "تعذّر البدء",
861
- "providerFallback": "مزوّد الذكاء الاصطناعي الخاص بك",
862
- "fileTitle": "يتطلّب الإثراء بالذكاء الاصطناعي قاعدة بيانات حيّة",
863
- "fileBody": "لا تملك مصادر ملفات المخطط لقطة للإثراء بعد. اتصل بقاعدة بيانات حيّة لاستخدام الإثراء بالذكاء الاصطناعي، أو تابع — فالأساس الاستدلالي يُولّد تطبيقًا كاملًا رغم ذلك.",
864
- "section": {
865
- "labels": "التسميات والأوصاف",
866
- "groups": "مجموعات التنقّل",
867
- "enums": "دلالات التعداد",
868
- "relations": "العلاقات",
869
- "keys": "الأعمدة المفتاحية",
870
- "templates": "قوالب الصفحات",
871
- "widgets": "أدوات لوحة المعلومات",
872
- "pii": "البيانات الشخصية والإخفاء",
873
- "icons": "الأيقونات",
874
- "microcopy": "النصوص الدقيقة"
875
- },
876
- "provider": {
877
- "title": "استخدام مزوّد الذكاء الاصطناعي الخاص بي",
878
- "description": "شغّل الإثراء الآن باستخدام مزوّدك المُهيّأ. تراجع كل اقتراح على هيئة فرق.",
879
- "unconfigured": "لم يُهيّأ أي مزوّد ذكاء اصطناعي بعد — انسخ مُوجّهًا إلى أداتك الخاصة أدناه، أو هيّئ مزوّدًا أولًا.",
880
- "settingsHint": "هل تريد تشغيله مباشرةً؟",
881
- "settingsLink": "هيّئ مزوّدًا في الإعدادات ← الذكاء الاصطناعي",
882
- "networkDisabled": "لا تملك نسخة Adminium هذه وصولاً صادرًا إلى الإنترنت، لذا لا يمكنها الوصول إلى واجهة أي مزوّد. استخدم بدلاً من ذلك دورة النسخ واللصق — الموجّه نفسه والمراجعة نفسها."
883
- },
884
- "byo": {
885
- "cardTitle": "نسخ مُوجّه إلى أداة الذكاء الاصطناعي الخاصة بي",
886
- "cardDescription": "انسخ مُوجّهًا مكتفيًا بذاته إلى Claude Code أو ChatGPT أو أي أداة — ثم الصق JSON مرة أخرى. لا حاجة إلى مفتاح، ولا يغادر أي شيء هذا الجهاز تلقائيًا.",
887
- "guidance": "شغّل هذا في أي أداة ذكاء اصطناعي — Claude Code أو ChatGPT أو غيرها. الصق JSON الذي تُعيده أدناه.",
888
- "promptLabel": "مُوجّه الإثراء",
889
- "promptLabelN": "مُوجّه الإثراء {index} من {total}",
890
- "tokenChip": "≈ {tokens} رمزًا",
891
- "copyPrompt": "نسخ المُوجّه",
892
- "copyPromptDone": "تم نسخ المُوجّه",
893
- "download": "تنزيل .md",
894
- "chunkTabs": "أجزاء المُوجّه",
895
- "chunkTab": "المُوجّه {index}",
896
- "chunkValid": "تم التحقّق من الجزء {index}",
897
- "pasteLabel": "الصق استجابة JSON",
898
- "pastePlaceholder": "الصق استجابة JSON هنا…",
899
- "validate": "تحقّق",
900
- "valid": "تم التحقّق من الاستجابة",
901
- "mergedTitle": "تم التحقّق من كل الأجزاء البالغة {count} ودمجها",
902
- "mergedTitleSingle": "تم التحقّق من الاستجابة",
903
- "mergedBody": "الاقتراحات جاهزة للمراجعة مقابل الأساس الاستدلالي.",
904
- "errorsTitle": "عثر التحقّق على {count} مشكلة",
905
- "copyErrors": "نسخ الأخطاء لأداة الذكاء الاصطناعي",
906
- "copyErrorsDone": "تم نسخ الأخطاء",
907
- "copyErrorsHint": "الصق هذا مجددًا في أداة الذكاء الاصطناعي للحصول على استجابة مُصحّحة.",
908
- "droppedItems": "أُسقِط {count} اقتراح أثناء التحقّق — تعرض المراجعة البقية.",
909
- "pendingTitle": "تحقّق من كل مُوجّه للمتابعة",
910
- "pendingBody": "الصق استجابة JSON أعلاه وتحقّق منها للمتابعة إلى المراجعة.",
911
- "pendingBodyChunked": "يجب التحقّق من كل جزء قبل دمج الاقتراحات. الصق كل مُوجّه أعلاه وتحقّق منه.",
912
- "requestFailed": "تعذّر الوصول إلى الخادم للتحقّق — أعد المحاولة.",
913
- "continueReview": "المتابعة إلى المراجعة",
914
- "wholeDocument": "المستند بأكمله",
915
- "cardTitleRecommended": "انسخ موجّهًا إلى أداة الذكاء الاصطناعي الخاصة بي — موصى به"
916
- },
917
- "direct": {
918
- "title": "الإثراء بالذكاء الاصطناعي",
919
- "subtitle": "يجري إرسال مخططك إلى",
920
- "building": "يجري إنشاء المُوجّه…",
921
- "logLabel": "سجلّ الإثراء",
922
- "cancel": "إلغاء",
923
- "back": "العودة إلى الخيارات",
924
- "retry": "إعادة المحاولة",
925
- "done": "اكتمل الإثراء — راجع الاقتراحات.",
926
- "continueReview": "المتابعة إلى المراجعة",
927
- "failed": "فشل تشغيل المزوّد. تحقّق من إعدادات الذكاء الاصطناعي وأعد المحاولة.",
928
- "jobFailed": "لم يكتمل تشغيل الإثراء.",
929
- "startFailed": "تعذّر بدء التشغيل — أعد المحاولة.",
930
- "errorTitle": "فشل الإثراء"
931
- },
932
- "skip": {
933
- "title": "تخطٍّ — استخدام الاستدلال فقط",
934
- "description": "التوليد من الأساس الاستدلالي. يمكنك الإثراء لاحقًا من الإعدادات ← الذكاء الاصطناعي — لا يُعاقَب التخطّي أبدًا.",
935
- "confirmTitle": "المتابعة بالاستدلال",
936
- "confirmBody": "سيستخدم التطبيق المُولّد التسميات والمجموعات ولوحات المعلومات الاستدلالية. تابع للتوليد — يمكنك تشغيل الإثراء بالذكاء الاصطناعي في أي وقت من الإعدادات ← الذكاء الاصطناعي."
937
- }
938
- },
939
- "review": {
940
- "unavailableTitle": "شاشة المراجعة غير متوفرة",
941
- "unavailableBody": "لا يتضمّن هذا الإصدار شاشة مراجعة الإثراء بعد (06-T14). ستصل مع تدفق الفرق والتطبيق."
942
- },
943
- "llmRuns": {
944
- "review": {
945
- "header": {
946
- "title": "مراجعة اقتراحات الذكاء الاصطناعي",
947
- "model": "النموذج",
948
- "snapshot": "لقطة",
949
- "byo": "مفتاحك الخاص",
950
- "pathDirect": "واجهة مباشرة",
951
- "pathByo": "نسخ ولصق",
952
- "agree": "{n} متوافقة",
953
- "conflict": "{n} متعارضة",
954
- "new": "{n} جديدة",
955
- "rejects": "{n} مرفوضة",
956
- "countsAria": "أعداد الاقتراحات"
957
- },
958
- "bulk": {
959
- "thresholdLabel": "حد الثقة",
960
- "thresholdAria": "حد الثقة لخيار «قبول الكل»",
961
- "acceptAll": "قبول الكل ≥ {pct}%",
962
- "clear": "مسح التحديد"
963
- },
964
- "section": {
965
- "selectAllAria": "تحديد الكل في {group}",
966
- "acceptedCount": "{n} مقبولة"
967
- },
968
- "group": {
969
- "labels": "التسميات والترجمات",
970
- "navigation": "التنقل والمجالات",
971
- "enums": "دلالات التعدادات",
972
- "relations": "العلاقات",
973
- "keys": "الأعمدة المفتاحية",
974
- "templates": "قوالب الصفحات",
975
- "dashboards": "لوحات المعلومات والأدوات",
976
- "pii": "البيانات الشخصية والإخفاء",
977
- "icons": "الأيقونات",
978
- "microcopy": "النصوص المصغّرة"
979
- },
980
- "status": {
981
- "agree": "متوافق",
982
- "conflict": "تعارض",
983
- "new": "جديد",
984
- "heuristicOnly": "إرشادي فقط",
985
- "rejects": "يرفض الإرشادي",
986
- "locked": "مقفل"
987
- },
988
- "row": {
989
- "acceptAria": "قبول اقتراح {noun} لـ {target}",
990
- "keptEdited": "محتفَظ به — عدّلته بنفسك",
991
- "rejectsCallout": "يرفض الذكاء الاصطناعي قرارًا إرشاديًا — أكِّد قبل القبول.",
992
- "showTranslations": "عرض الترجمات",
993
- "hideTranslations": "إخفاء الترجمات",
994
- "confidenceAria": "الثقة {pct}%",
995
- "noAi": "لا يوجد اقتراح من الذكاء الاصطناعي"
996
- },
997
- "value": {
998
- "none": "لا قيمة",
999
- "absent": "لا شيء",
1000
- "dash": "—",
1001
- "display": "العرض",
1002
- "key": "المفتاح",
1003
- "rank": "الترتيب {n}",
1004
- "span": "العرض {n}",
1005
- "tableCount": "{n} جداول",
1006
- "widgetCount": "{n} أدوات",
1007
- "enumWorkflow": "سير عمل",
1008
- "enumCategory": "فئة",
1009
- "notPii": "ليست بيانات شخصية",
1010
- "label": "التسمية",
1011
- "description": "الوصف",
1012
- "subtitle": "العنوان الفرعي للصفحة",
1013
- "headline": "عنوان الحالة الفارغة",
1014
- "guidance": "إرشاد الحالة الفارغة"
1015
- },
1016
- "apply": {
1017
- "title": "تطبيق {n} اقتراحات",
1018
- "subtitle": "تُكتب هذه التغييرات في معاملة واحدة ويمكن التراجع عنها.",
1019
- "empty": "لم يتم تحديد شيء للتطبيق.",
1020
- "confirm": "تطبيق التغييرات"
1021
- },
1022
- "footer": {
1023
- "count": "تم تحديد {n} اقتراحات",
1024
- "apply": "تطبيق {n} اقتراحات مقبولة",
1025
- "failed": "فشل التطبيق"
1026
- },
1027
- "toast": {
1028
- "applied": "تم تطبيق {n} اقتراحات",
1029
- "appliedPartial": "تم تطبيق {n} اقتراحات (تم تخطي بعضها)",
1030
- "applyFailed": "تعذّر تطبيق الاقتراحات",
1031
- "undoFailed": "تعذّر التراجع عن هذا التغيير"
1032
- },
1033
- "error": {
1034
- "title": "تعذّر تحميل هذا التشغيل"
1035
- },
1036
- "notReady": {
1037
- "title": "لا يحتوي هذا التشغيل على اقتراحات للمراجعة بعد",
1038
- "body": "يجب التحقق من التشغيل قبل إمكانية مراجعة اقتراحاته. أنشئ استجابة أو الصقها أولًا."
1039
- },
1040
- "applied": {
1041
- "title": "تم تطبيق هذا التشغيل",
1042
- "body": "الاقتراحات المقبولة أدناه للقراءة فقط."
1043
- },
1044
- "empty": {
1045
- "title": "لا اقتراحات",
1046
- "body": "لم يُنتج هذا التشغيل أي اقتراحات للمراجعة."
1047
- },
1048
- "cat": {
1049
- "label": "تسمية",
1050
- "key": "أعمدة مفتاحية",
1051
- "enum": "تعداد",
1052
- "relation": "علاقة",
1053
- "pii": "بيانات شخصية",
1054
- "template": "قالب صفحة",
1055
- "group": "مجموعة تنقل",
1056
- "dashboard": "لوحة معلومات",
1057
- "widget": "أداة",
1058
- "copy": "نص مصغّر"
1059
- }
1060
- }
1061
- },
1062
- "wizard": {
1063
- "title": "اتصال جديد",
1064
- "back": "رجوع",
1065
- "continue": "متابعة",
1066
- "progress": "تقدّم الإعداد",
1067
- "persistFailed": "تعذّر حفظ اختيار الجداول — أعد المحاولة.",
1068
- "persistFailedTitle": "فشل الحفظ",
1069
- "bridgeAppliedTitle": "تم استلام سلسلة الاتصال",
1070
- "bridgeAppliedBody": "سلّمها متصفحك من adminium.dev — وصلت مباشرةً إلى هذا الجهاز ولم تُرفع إلى أي خادم. راجعها بالأسفل ثم تابع.",
1071
- "bridgeFailedTitle": "تعذّر استخدام عملية التسليم هذه",
1072
- "bridgeFailedBody": "إمّا أنها استُخدمت من قبل أو انتهت صلاحيتها. الصق سلسلة الاتصال بالأسفل بدلاً من ذلك.",
1073
- "step": {
1074
- "source": "المصدر",
1075
- "test": "تحليل",
1076
- "tables": "الجداول",
1077
- "meta": "تخزين البيانات الوصفية",
1078
- "intent": "الغرض",
1079
- "enrich": "إثراء",
1080
- "generate": "توليد"
1081
- }
1082
- },
1083
- "meta": {
1084
- "title": "أين يجب أن يحتفظ Adminium بجداوله الخاصة؟",
1085
- "subtitle": "تُخزَّن الصفحات والأدوار وسجل التدقيق والإعدادات في جداول تبدأ بـ adminium_ — ولا تُخلط أبدًا ببياناتك.",
1086
- "sameDb": {
1087
- "title": "قاعدة البيانات نفسها",
1088
- "description": "تُنشأ جداول adminium_* بجانب جداول المصدر. أبسط إعداد — يتطلب دورًا بصلاحيات الكتابة وCREATE TABLE.",
1089
- "disabledReadOnly": "دورك للقراءة فقط — لا يكتب Adminium أبدًا في هذه القاعدة. اختر قاعدة بيانات منفصلة لجداول Adminium الخاصة.",
1090
- "disabledNoDdl": "لا يمكن لهذا الدور تنفيذ DDL — تحتاج ترحيلات Adminium إلى CREATE TABLE. اختر قاعدة بيانات منفصلة لجداول Adminium الخاصة.",
1091
- "disabledFile": "ملف المخطط ليس له قاعدة بيانات حيّة — اختر قاعدة بيانات منفصلة لجداول Adminium الخاصة."
1092
- },
1093
- "separate": {
1094
- "title": "قاعدة بيانات منفصلة",
1095
- "description": "يحتفظ Adminium بجداوله في قاعدة بيانات مختلفة. يبقى مصدرك كما هو — وهذا مطلوب للمصادر ذات القراءة فقط.",
1096
- "dsn": "سلسلة اتصال قاعدة البيانات الوصفية",
1097
- "helper": "يتطلب صلاحيات الكتابة وDDL — يشغّل Adminium ترحيلاته الخاصة هناك.",
1098
- "test": "اختبار الاتصال",
1099
- "ok": "متوافق — كتابة ✓ · DDL ✓",
1100
- "insufficient": "لا يمكن لهذا الدور استضافة المخزن الوصفي — يحتاج Adminium هناك إلى صلاحيات الكتابة وCREATE TABLE.",
1101
- "errorTitle": "مخزن البيانات الوصفية غير متوافق"
1102
- },
1103
- "testFailed": "فشل الاتصال.",
1104
- "v1Note": {
1105
- "title": "حول هذا التثبيت",
1106
- "body": "يحتفظ هذا الخادم بجداوله الخاصة في قاعدة بيانات مُعدّة مسبقًا، وهذه الخطوة لا تنقلها. إنها تتحقق من توافق اختيارك مع هذا الاتصال — ويطبّق الخادم القاعدة نفسها بشكل مستقل (409 META_PLACEMENT_INVALID)."
1107
- },
1108
- "move": {
1109
- "title": "جارٍ نقل جداول Adminium",
1110
- "copying": "جارٍ نقل جداول Adminium…",
1111
- "restarting": "جارٍ إعادة التشغيل…",
1112
- "copyingBody": "يجري نسخ كل جدول adminium_ إلى قاعدة البيانات الجديدة. لا تُمس بياناتك المصدرية، ولا يتم التبديل قبل التحقق من النسخة.",
1113
- "restartingBody": "اكتمل النسخ. يعيد Adminium التشغيل على قاعدة البيانات الجديدة — ستتابع هذه الصفحة تلقائيًا خلال ثوانٍ.",
1114
- "failed": "تعذّر نقل جداول Adminium — أعد المحاولة.",
1115
- "timeout": "نقل Adminium جداوله لكنه لم يعد بعد. بياناتك آمنة في قاعدة البيانات الجديدة — أعد تحميل هذه الصفحة بعد قليل."
1116
- },
1117
- "willMove": {
1118
- "title": "سيؤدي هذا إلى نقل جداول Adminium",
1119
- "body": "يستخدم Adminium حاليًا مخزن SQLite المدمج. يؤدي «متابعة» إلى نسخ هذا المخزن إلى قاعدة البيانات التي اخترتها وإعادة التشغيل عليها — تنتقل معه الحسابات والصفحات والإعدادات، فتظل مسجّل الدخول."
1120
- }
1121
- },
1122
- "intent": {
1123
- "title": "ما الذي تحتاجه؟",
1124
- "subtitle": "يحدد الغرض الصفحات التي سيتم توليدها. يمكنك تغييره لاحقًا — تغييره يقترح إعادة توليد، ولا يعيد الكتابة بصمت أبدًا.",
1125
- "trust": "نقرأ مخططك فقط — ولا نقرأ بيانات صفوفك أبدًا أثناء الإعداد.",
1126
- "fullAdmin": {
1127
- "title": "لوحة إدارة كاملة",
1128
- "description": "لوحات معلومات وصفحات CRUD وبحث واستيراد وتصدير — كل ما يدعمه مخططك."
1129
- },
1130
- "analytics": {
1131
- "title": "تحليلات للقراءة فقط",
1132
- "description": "لوحات معلومات ورسوم بيانية وجداول للقراءة فقط. لا نماذج ولا كتابة — كل دور محدود بمشاهد."
1133
- },
1134
- "crud": {
1135
- "title": "جداول CRUD",
1136
- "description": "صفحة تحرير واحدة لكل جدول مع البحث والاستيراد/التصدير — صفحة رئيسية بسيطة، دون لوحات معلومات."
1137
- },
1138
- "support": {
1139
- "title": "وحدة تحكم الدعم",
1140
- "description": "قوائم الانتظار وصفحات التذاكر وتفاصيل العملاء أولًا. الحذف معطّل افتراضيًا. (تصل قوالب قوائم الانتظار في M7 — مجموعة صفحات v1 تطابق لوحة الإدارة الكاملة.)"
1141
- }
1142
- },
1143
- "generate": {
1144
- "title": "ولّد تطبيقك",
1145
- "subtitle": "صفحة لكل جدول مضمّن مع لوحات معلومات لكل مجال — الغرض:",
1146
- "run": "توليد لوحة المعلومات",
1147
- "openApp": "افتح تطبيقك",
1148
- "logLabel": "سجل التوليد",
1149
- "log": {
1150
- "classifying": "جارٍ تصنيف المخطط…",
1151
- "composing": "جارٍ تركيب القوالب…",
1152
- "writing": "جارٍ كتابة الصفحات…",
1153
- "done": "تم توليد {pages} صفحة عبر {groups} مجموعات تنقّل"
1154
- },
1155
- "successTitle": "لوحة معلوماتك جاهزة",
1156
- "successBody": "{pages} صفحة عبر {groups} مجموعات تنقّل — وُلّدت من مخططك، وقابلة للتحرير في الاستوديو.",
1157
- "errorTitle": "فشل التوليد",
1158
- "failed": "فشل التوليد — أعد المحاولة، أو أعد تشغيل الاستبطان أولًا.",
1159
- "fileTitle": "تم تحليل ملف المخطط — يحتاج التوليد إلى قاعدة بيانات حيّة",
1160
- "fileBody": "تم تحليل مخططك بنجاح والمعاينة أعلاه حقيقية. توليد تطبيق يعمل مباشرةً من ملف مخطط (بصفوف بديلة) غير متاح بعد — اربط قاعدة بيانات حيّة للتوليد اليوم."
1161
- },
1162
- "remap": {
1163
- "column": {
1164
- "nullable": "يقبل NULL",
1165
- "labelOverride": "تسمية العرض",
1166
- "labelHelper": "المستنتج: {name}",
1167
- "logicalType": "النوع المنطقي",
1168
- "logicalTypeHelper": "المستنتج: {type} (من {dbType}) — يربطه المهايئ؛ ولا يمكن تجاوزه في v1.",
1169
- "semantic": "النوع الدلالي",
1170
- "unclassified": "لم يُصنَّف بعد.",
1171
- "semanticHelper": "المصنِّف: {tag} · الثقة {confidence}% · المصدر: {source}",
1172
- "semanticInferred": "المستنتج: {tag}",
1173
- "currency": "العملة",
1174
- "currencyHelper": "رمز ISO 4217 المطبَّق على تنسيق المبالغ المالية.",
1175
- "pii": "الإخفاء افتراضيًا",
1176
- "piiHelper": "تُعرض القيم المخفية محجوبة؛ ويتطلب كشفها صلاحية data.unmask_pii ويُسجَّل في سجل التدقيق.",
1177
- "enum": "دلالات التعداد",
1178
- "enumKind": "نوع التعداد",
1179
- "enumWorkflow": "سير عمل",
1180
- "enumCategory": "فئة",
1181
- "enumLabelFor": "تسمية {value}",
1182
- "enumToneFor": "درجة لون {value}",
1183
- "enumToneAuto": "تلقائي",
1184
- "enumHelper": "تعدادات سير العمل تُشغّل شارات الحالة وأعمدة اللوحات؛ وتربط درجات الألوان القيم بمقياس التظليل الدلالي."
1185
- },
1186
- "diff": {
1187
- "one": "تغيير واحد",
1188
- "count": "{count} تغييرات",
1189
- "saved": "تم حفظ التجاوزات.",
1190
- "revertOne": "التراجع عن {change}",
1191
- "regenerate": "إعادة توليد الصفحات",
1192
- "revertAll": "التراجع عن الكل",
1193
- "save": "حفظ التجاوزات"
1194
- },
1195
- "table": {
1196
- "iconPicker": "أيقونة الجدول",
1197
- "system": "نظام",
1198
- "labelOverride": "تسمية العرض",
1199
- "labelHelper": "المستنتج: {name}",
1200
- "icon": "الأيقونة",
1201
- "navGroup": "مجموعة التنقل",
1202
- "navGroupHelper": "يقرر المولِّد موضع التنقل — تجاوز table.navGroup ليس ضمن مفردات v1.",
1203
- "include": "التضمين في التطبيق المولَّد",
1204
- "includeHelper": "الجداول المستبعدة لا تحصل على صفحات وتختفي من التنقل.",
1205
- "shape": "شكل الجدول (مصنَّف)",
1206
- "role": "الدور",
1207
- "unclassified": "غير مصنَّف",
1208
- "kind": "النوع",
1209
- "hierarchy": "التسلسل الهرمي",
1210
- "selfFk": "مرجع ذاتي عبر {column}",
1211
- "polymorphic": "أزواج متعددة الأشكال",
1212
- "rows": "تقدير عدد الصفوف",
1213
- "shapeHelper": "يُعاد حساب التصنيف مع كل استبطان؛ وتُطبَّق التجاوزات فوقه وتبقى بعد إعادة التوليد."
1214
- },
1215
- "relations": {
1216
- "declared": "المفاتيح الخارجية المعلنة",
1217
- "noneDeclared": "لا توجد مفاتيح خارجية معلنة تمسّ هذا الجدول.",
1218
- "inferred": "العلاقات المستنتجة",
1219
- "noneInferred": "لا شيء مستنتج لهذا الجدول.",
1220
- "confidence": "مستنتجة · {pct}%",
1221
- "accepted": "مقبولة",
1222
- "suppressed": "مستبعدة",
1223
- "accept": "قبول",
1224
- "suppress": "استبعاد",
1225
- "overrides": "علاقات التجاوز (المطبَّقة)",
1226
- "overrideBadge": "تجاوز",
1227
- "add": "إضافة علاقة افتراضية",
1228
- "fromColumn": "من العمود",
1229
- "noColumns": "لا يوجد عمود مطابق",
1230
- "fromPlaceholder": "customer_id",
1231
- "toTable": "إلى الجدول",
1232
- "noTables": "لا يوجد جدول مطابق",
1233
- "toColumn": "إلى العمود",
1234
- "cardinality": "التعددية",
1235
- "addButton": "إضافة علاقة"
1236
- },
1237
- "toast": {
1238
- "saved": "تم حفظ تجاوزات المخطط",
1239
- "savedDetail": "يعكس المخطط المطبَّق أدناه تغييراتك.",
1240
- "regenerated": "{created} أُنشئت · {updated} حُدّثت · {unchanged} لم تتغير",
1241
- "regeneratedDetail": "تُحفظ الصفحات التي حرّرتها يدويًا — لم يُعَد التوليد في مكانه إلا للصفحات التي بقي generated_hash الخاص بها دون تعديل.",
1242
- "regenerateFailed": "فشلت إعادة التوليد"
1243
- },
1244
- "title": "إعادة تعيين المخطط",
1245
- "subtitle": "{tables} جدولًا · {applied} تجاوزًا مطبَّقًا",
1246
- "saveFailed": "فشل الحفظ: {message}",
1247
- "loadFailed": "تعذّر تحميل المخطط لهذا الاتصال.",
1248
- "inspector": "الفاحص",
1249
- "empty": {
1250
- "title": "اختر جدولًا أو عمودًا",
1251
- "description": "حدد عنصرًا في شجرة المخطط لإعادة تعيين تسميته أو نوعه أو علاقاته أو إخفائه."
1252
- },
1253
- "tabs": {
1254
- "details": "التفاصيل",
1255
- "relations": "العلاقات"
1256
- },
1257
- "tree": {
1258
- "label": "المخطط",
1259
- "search": "البحث في الجداول والأعمدة",
1260
- "searchPlaceholder": "ابحث في الجداول…",
1261
- "noMatches": "لا توجد جداول تطابق بحثك.",
1262
- "collapse": "طي الجدول",
1263
- "expand": "توسيع الجدول",
1264
- "unsaved": "تغيير غير محفوظ",
1265
- "excluded": "مستبعد"
1266
- },
1267
- "badge": {
1268
- "pk": "PK",
1269
- "fk": "FK",
1270
- "unique": "UNIQUE",
1271
- "pii": "بيانات شخصية",
1272
- "masked": "مخفي"
1273
- },
1274
- "unavailableTitle": "محرّر إعادة تعيين المخطط غير متوفر",
1275
- "unavailableBody": "لا يتضمّن هذا الإصدار محرّر إعادة التعيين بعد (09-T12). أعد تشغيل التوليد بعد وصوله لإعادة تعيين التسميات والأنواع والعلاقات."
1276
- },
1277
- "publicApi": {
1278
- "error": "Something went wrong",
1279
- "scopes": {
1280
- "deleteTitle": "Delete this scope",
1281
- "deleteBody": "Any page using a key bound to this scope stops loading data. Keys are not deleted — revoke them first if that is what you meant.",
1282
- "deletePrompt": "Type the scope name to confirm",
1283
- "deleteConfirm": "Delete scope",
1284
- "issuesTitle": "This scope did not compile",
1285
- "title": "Scopes",
1286
- "subtitle": "A scope is the whole of what a key may reach — the tables, the exact columns, and a filter the caller can narrow but never remove.",
1287
- "emptyTitle": "No scopes yet",
1288
- "emptyBody": "Create one below. It is checked against your live schema before it is saved.",
1289
- "keyCount": "{count, plural, =0 {no keys} one {# key} other {# keys}}",
1290
- "delete": "Delete",
1291
- "nameLabel": "Name",
1292
- "connectionLabel": "Connection ID",
1293
- "documentLabel": "Scope document",
1294
- "documentHint": "Compiled against your schema when you save. Every column a caller can reach is listed here and nowhere else.",
1295
- "create": "Create scope",
1296
- "formLabel": "Create a scope"
1297
- },
1298
- "cancel": "Cancel",
1299
- "close": "Close",
1300
- "title": "Public API",
1301
- "subtitle": "Let your own customer- or staff-facing pages read this database, through a scope you define.",
1302
- "notRegistered": {
1303
- "title": "Not enabled on this server",
1304
- "body": "Set ADMINIUM_PUBLIC_API_ORIGINS to the exact origins allowed to call it, then restart. Until then these routes are not served at all."
1305
- },
1306
- "toggle": {
1307
- "label": "Serve the public API",
1308
- "hint": "Turning this off stops every public request immediately. Nothing is deleted — keys, scopes and data all survive."
1309
- },
1310
- "origins": {
1311
- "label": "Origins allowed to call it"
1312
- },
1313
- "keys": {
1314
- "title": "Keys",
1315
- "subtitle": "These go in your page’s JavaScript, so anyone can read them. That is expected — a key can only ever do what its scope allows.",
1316
- "emptyTitle": "No keys yet",
1317
- "emptyBody": "Create a scope first, then mint a key for it.",
1318
- "reveal": "Show key",
1319
- "rotate": "Rotate",
1320
- "revoke": "Revoke",
1321
- "nameLabel": "Name",
1322
- "scopeLabel": "Scope",
1323
- "scopePlaceholder": "Choose a scope",
1324
- "create": "Create key",
1325
- "formLabel": "Create a key",
1326
- "scopeIsAuthTitle": "The scope is the only permission",
1327
- "scopeIsAuthBody": "A key can reach exactly what its scope lists and nothing else. It does not use roles or table permissions, and it cannot read anything through the rest of the API."
1328
- },
1329
- "status": {
1330
- "heading": "Status"
1331
- }
1332
- }
1333
- },
1334
453
  "onboarding": {
1335
454
  "title": "البدء",
1336
455
  "subtitle": "بضع خطوات لتجهيز مساحة العمل الخاصة بك.",
@@ -2428,166 +1547,6 @@ export default {
2428
1547
  "toLight": "الوضع الفاتح",
2429
1548
  "toDark": "الوضع الداكن"
2430
1549
  },
2431
- "studioPages": {
2432
- "title": "الصفحات",
2433
- "subtitle": "أضف صفحات تطبيقك وحرّرها ونظّمها، وكذلك ترتيب ظهورها في الشريط الجانبي.",
2434
- "createButton": "صفحة جديدة",
2435
- "loadFailed": {
2436
- "title": "تعذّر تحميل الصفحات",
2437
- "body": "تتطلب إدارة الصفحات صلاحية «إدارة الصفحات». اطلب من أحد المسؤولين منحها لأحد أدوارك."
2438
- },
2439
- "tab": {
2440
- "pages": "كل الصفحات",
2441
- "sidebar": "ترتيب الشريط الجانبي"
2442
- },
2443
- "list": {
2444
- "title": "الصفحات",
2445
- "count": "{count, plural, zero {لا صفحات} one {صفحة واحدة} two {صفحتان} few {# صفحات} many {# صفحة} other {# صفحة}}"
2446
- },
2447
- "empty": {
2448
- "title": "لا توجد صفحات بعد",
2449
- "body": "اربط قاعدة بيانات لتوليد الصفحات تلقائيًا، أو أنشئ صفحة يدويًا."
2450
- },
2451
- "status": {
2452
- "live": "مفعّلة",
2453
- "hidden": "مخفية"
2454
- },
2455
- "origin": {
2456
- "generated": "مولّدة",
2457
- "manifest": "إضافة",
2458
- "llm": "المساعد",
2459
- "system": "النظام",
2460
- "user": "مخصّصة"
2461
- },
2462
- "row": {
2463
- "menu": "إجراءات {title}"
2464
- },
2465
- "action": {
2466
- "edit": "تحرير الصفحة",
2467
- "duplicate": "تكرار",
2468
- "hide": "إخفاء من الشريط الجانبي",
2469
- "show": "إظهار في الشريط الجانبي",
2470
- "delete": "حذف الصفحة"
2471
- },
2472
- "create": {
2473
- "title": "صفحة جديدة",
2474
- "failed": "تعذّر إنشاء الصفحة",
2475
- "submit": "إنشاء الصفحة",
2476
- "subtitle": "اختر ما تعرضه هذه الصفحة وكيف تبدو. المعاينة تتبع اختياراتك."
2477
- },
2478
- "duplicate": {
2479
- "title": "تكرار الصفحة",
2480
- "failed": "تعذّر تكرار الصفحة",
2481
- "submit": "تكرار"
2482
- },
2483
- "delete": {
2484
- "title": "هل تريد حذف هذه الصفحة؟",
2485
- "body": "لا يمكن التراجع عن ذلك. ستُحذف العروض المحفوظة والتخطيطات الشخصية لهذه الصفحة لدى الجميع.",
2486
- "bodyGenerated": "أُنشئت هذه الصفحة عبر توليد المخطّط، لذا ستعود في المرة التالية التي تعيد فيها التوليد. وستُحذف العروض المحفوظة والتخطيطات الشخصية لدى الجميع.",
2487
- "prompt": "اكتب {slug} للتأكيد",
2488
- "confirm": "حذف الصفحة"
2489
- },
2490
- "field": {
2491
- "title": "العنوان",
2492
- "titleHint": "يظهر في الشريط الجانبي وفي ترويسة الصفحة.",
2493
- "slug": "مسار الصفحة",
2494
- "slugHint": "أحرف إنجليزية صغيرة وأرقام وشرطات. الجزء الأخير من المسار فقط — يُضاف الباقي تلقائيًا.",
2495
- "slugTaken": "يستخدم هذا المسار صفحة أخرى بالفعل.",
2496
- "slugWarning": "تغيير المسار يُبطل الروابط والإشارات المرجعية الحالية إلى هذه الصفحة.",
2497
- "template": "القالب",
2498
- "templateHint": "يحدّد ما يمكن أن تحتويه الصفحة. يمكنك تغييره لاحقًا.",
2499
- "group": "مجموعة الشريط الجانبي",
2500
- "groupHint": "القسم الذي تظهر فيه ضمن الشريط الجانبي.",
2501
- "icon": "الأيقونة",
2502
- "iconHint": "تظهر بجوار اسم الصفحة في الشريط الجانبي.",
2503
- "visible": "إظهار في الشريط الجانبي",
2504
- "visibleHint": "تبقى الصفحة المخفية متاحة عبر رابطها لكل من يملك الرابط.",
2505
- "table": "الجدول",
2506
- "tableCreateHint": "الجدول الذي تقرأ منه هذه الصفحة. اختر واحدًا الآن لتصبح الصفحة جاهزة للاستخدام، أو اتركه فارغًا لربطه لاحقًا.",
2507
- "tableNone": "غير مرتبط",
2508
- "tableNeedsConnection": "اختر مصدر بيانات أولًا.",
2509
- "connection": "مصدر البيانات",
2510
- "connectionNone": "بدون",
2511
- "iconPick": "اختر أيقونة الصفحة",
2512
- "padding": "حشو الصفحة"
2513
- },
2514
- "editor": {
2515
- "title": "تحرير الصفحة",
2516
- "save": "حفظ التغييرات",
2517
- "saveFailed": "تعذّر حفظ التغييرات",
2518
- "openPage": "فتح الصفحة",
2519
- "generated": {
2520
- "title": "وُلِّدت هذه الصفحة من مخطّط قاعدة بياناتك",
2521
- "body": "تُحفظ تعديلاتك عند إعادة التوليد، إذ تُعلَّم الصفحة بأنها محرَّرة وتُترك كما هي. أما الحذف فلا يدوم إلا حتى تُعيد عملية التوليد التالية إنشاءها."
2522
- },
2523
- "contentUnavailable": "تعذّر تحميل محتوى الصفحة",
2524
- "contentUnavailableBody": "لا يزال بإمكانك حفظ البيانات أعلاه.",
2525
- "contentInvalid": "تعذّرت قراءة إعدادات هذه الصفحة",
2526
- "contentInvalidBody": "كُتبت بإصدار أحدث، أو أنها تالفة. أعد توليد الصفحة أو احذفها.",
2527
- "data": "البيانات",
2528
- "schemaFailed": "تعذّر عرض الجداول",
2529
- "schemaFailedBody": "قد لا يكون هذا الاتصال قد خضع للتحليل بعد. شغّل الفحص من الاستوديو ← اتصالات البيانات.",
2530
- "notBindable": "هذا القالب غير مرتبط بجدول واحد",
2531
- "notBindableBody": "يُبنى محتواه عنصرًا تلو الآخر. افتح الصفحة واستخدم «تحرير» لإضافتها.",
2532
- "recompose": "ستُعاد بناء هذه الصفحة",
2533
- "recomposeBody": "الحفظ يستبدل محتواها بتخطيط جديد للقالب والجدول أعلاه. ستفقد تعديلات الأعمدة وتغييرات العناصر في هذه الصفحة.",
2534
- "missing": "لم تعد هذه الصفحة موجودة",
2535
- "missingBody": "ربما حُذفت، أو أزالتها عملية توليد.",
2536
- "details": "التفاصيل",
2537
- "itemsPending": "احفظ التغيير أعلاه أولًا — سيُعاد بناء محتوى الصفحة من القالب والجدول الجديدين.",
2538
- "columns": "الأعمدة",
2539
- "appearance": "المظهر"
2540
- },
2541
- "sidebar": {
2542
- "help": "أعد ترتيب الصفحات داخل المجموعة، أو انقل إحداها إلى مجموعة أخرى. تسري التغييرات على الجميع.",
2543
- "discard": "تجاهل",
2544
- "save": "حفظ الترتيب",
2545
- "saveFailed": "تعذّر حفظ الترتيب الجديد",
2546
- "emptyGroup": "لا توجد صفحات في هذه المجموعة.",
2547
- "moveUp": "تحريك {title} لأعلى",
2548
- "moveDown": "تحريك {title} لأسفل",
2549
- "moveTo": "نقل {title} إلى مجموعة",
2550
- "ungrouped": {
2551
- "title": "بعض الصفحات لا تنتمي إلى أي مجموعة",
2552
- "body": "تعمل هذه الصفحات عبر روابطها لكنها لا تظهر في الشريط الجانبي. افتح كلًا منها واختر لها مجموعة."
2553
- }
2554
- },
2555
- "columns": {
2556
- "help": "أعد ترتيب الأعمدة، وغيّر أسماء عناوينها، واختر ما يظهر منها في الجدول.",
2557
- "discard": "تجاهل",
2558
- "save": "حفظ الأعمدة",
2559
- "saveFailed": "تعذّر حفظ الأعمدة",
2560
- "pk": "مفتاح",
2561
- "pii": "بيانات شخصية",
2562
- "header": "عنوان العمود {name}",
2563
- "shown": "ظاهر",
2564
- "toggle": "إظهار {name} في الجدول",
2565
- "moveUp": "تحريك {name} لأعلى",
2566
- "moveDown": "تحريك {name} لأسفل",
2567
- "remove": "إزالة {name}",
2568
- "none": {
2569
- "title": "لا تحتوي هذه الصفحة على أعمدة بعد",
2570
- "body": "تُقرأ الأعمدة من الجدول عند توليد الصفحة. اربط هذه الصفحة بجدول ثم أعد التوليد لملئها."
2571
- }
2572
- },
2573
- "icon": {
2574
- "none": "اختر أيقونة",
2575
- "search": "ابحث عن أيقونة",
2576
- "noMatches": "لا توجد أيقونات تطابق هذا البحث."
2577
- },
2578
- "preview": {
2579
- "untitled": "صفحة بلا عنوان",
2580
- "note": "رسم توضيحي للتخطيط، لا لبياناتك. تمتلئ الصفحة الحقيقية بعد الحفظ."
2581
- },
2582
- "padding": {
2583
- "default": "الافتراضي لهذا القالب",
2584
- "none": "بدون",
2585
- "standard": "قياسي (28 × 24)",
2586
- "custom": "مخصص…",
2587
- "x": "الجانبان (بكسل)",
2588
- "y": "أعلى وأسفل (بكسل)"
2589
- }
2590
- },
2591
1550
  "audit": {
2592
1551
  "action": {
2593
1552
  "view": "عرض"
@@ -2719,6 +1678,7 @@ export default {
2719
1678
  "exportsManage": "إدارة عمليات التصدير لدى الجميع",
2720
1679
  "importsManage": "إدارة عمليات الاستيراد لدى الجميع",
2721
1680
  "jobsManage": "بدء المهام الخلفية وإلغاؤها",
1681
+ "manifestsManage": "تثبيت الإضافات وربطها",
2722
1682
  "jobsRead": "الاطلاع على كل المهام الخلفية",
2723
1683
  "llmRun": "تشغيل المساعدة بالذكاء الاصطناعي",
2724
1684
  "pagesManage": "إنشاء الصفحات وتنظيمها",
@@ -2740,7 +1700,7 @@ export default {
2740
1700
  },
2741
1701
  "security": {
2742
1702
  "password": {
2743
- "changedBody": "استخدم كلمة المرور الجديدة في المرة القادمة التي تسجّل فيها الدخول. الجلسات على الأجهزة الأخرى لا تتأثرأبطلها بالأسفل إن أردت تسجيل خروجها.",
1703
+ "changedBody": "استخدم كلمة المرور الجديدة في المرة القادمة التي تسجّل فيها الدخول. الأجهزة الأخرى تبقى مسجَّلة الدخول أنهِ تلك الجلسات إن أردت إخراجها.",
2744
1704
  "changed": "تم تغيير كلمة المرور",
2745
1705
  "confirm": "تأكيد كلمة المرور الجديدة",
2746
1706
  "current": "كلمة المرور الحالية",