@kinetis/vector-ui 0.0.0-stage → 0.9.1

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 (282) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/LICENSE +18 -0
  3. package/README.md +72 -2
  4. package/app/app.config.ts +63 -0
  5. package/app/app.vue +11 -0
  6. package/app/components/Vx/Action/Dialog.vue +107 -0
  7. package/app/components/Vx/Cell/Boolean.vue +10 -0
  8. package/app/components/Vx/Cell/Color.vue +12 -0
  9. package/app/components/Vx/Cell/Count.vue +12 -0
  10. package/app/components/Vx/Cell/Date.vue +10 -0
  11. package/app/components/Vx/Cell/DateTime.vue +10 -0
  12. package/app/components/Vx/Cell/Email.vue +9 -0
  13. package/app/components/Vx/Cell/Enum.vue +14 -0
  14. package/app/components/Vx/Cell/File.vue +30 -0
  15. package/app/components/Vx/Cell/Image.vue +38 -0
  16. package/app/components/Vx/Cell/Json.vue +18 -0
  17. package/app/components/Vx/Cell/KeyValue.vue +25 -0
  18. package/app/components/Vx/Cell/Markdown.vue +18 -0
  19. package/app/components/Vx/Cell/Money.vue +16 -0
  20. package/app/components/Vx/Cell/Number.vue +16 -0
  21. package/app/components/Vx/Cell/Relation.vue +16 -0
  22. package/app/components/Vx/Cell/RichText.vue +41 -0
  23. package/app/components/Vx/Cell/Text.vue +13 -0
  24. package/app/components/Vx/Cell/Url.vue +11 -0
  25. package/app/components/Vx/Cell.vue +25 -0
  26. package/app/components/Vx/CommandPalette.vue +118 -0
  27. package/app/components/Vx/Confirm.vue +19 -0
  28. package/app/components/Vx/Dashboard.vue +27 -0
  29. package/app/components/Vx/FieldsForm.vue +46 -0
  30. package/app/components/Vx/Import/Dialog.vue +131 -0
  31. package/app/components/Vx/Inbox.vue +49 -0
  32. package/app/components/Vx/Input/Boolean.vue +10 -0
  33. package/app/components/Vx/Input/Currency.vue +25 -0
  34. package/app/components/Vx/Input/DateTime.vue +38 -0
  35. package/app/components/Vx/Input/Enum.vue +21 -0
  36. package/app/components/Vx/Input/KeyValue.vue +78 -0
  37. package/app/components/Vx/Input/Markdown.vue +120 -0
  38. package/app/components/Vx/Input/Money.vue +47 -0
  39. package/app/components/Vx/Input/Number.vue +24 -0
  40. package/app/components/Vx/Input/Relation.vue +127 -0
  41. package/app/components/Vx/Input/Repeater.vue +134 -0
  42. package/app/components/Vx/Input/RichText.vue +182 -0
  43. package/app/components/Vx/Input/Text.vue +21 -0
  44. package/app/components/Vx/Input/Textarea.vue +20 -0
  45. package/app/components/Vx/Input/Upload.vue +89 -0
  46. package/app/components/Vx/Layout.vue +111 -0
  47. package/app/components/Vx/List/BulkBar.vue +44 -0
  48. package/app/components/Vx/List/BulkEdit.vue +91 -0
  49. package/app/components/Vx/List/ColumnManager.vue +74 -0
  50. package/app/components/Vx/List/FilterBar.vue +224 -0
  51. package/app/components/Vx/List/ViewMenu.vue +115 -0
  52. package/app/components/Vx/Notifications.vue +9 -0
  53. package/app/components/Vx/Resource/Audit.vue +82 -0
  54. package/app/components/Vx/Resource/Form.vue +351 -0
  55. package/app/components/Vx/Resource/RelationPanel.vue +217 -0
  56. package/app/components/Vx/Resource/Show.vue +35 -0
  57. package/app/components/Vx/Resource/Table.vue +513 -0
  58. package/app/components/Vx/Widget/Card.vue +80 -0
  59. package/app/components/Vx/Widget/Partition.vue +21 -0
  60. package/app/components/Vx/Widget/Progress.vue +22 -0
  61. package/app/components/Vx/Widget/Stat.vue +22 -0
  62. package/app/components/Vx/Widget/Table.vue +31 -0
  63. package/app/components/Vx/Widget/Trend.vue +37 -0
  64. package/app/composables/useConfirm.ts +34 -0
  65. package/app/composables/useLeaveGuard.ts +21 -0
  66. package/app/composables/useVectorApi.ts +74 -0
  67. package/app/composables/useVectorAuthStore.ts +252 -0
  68. package/app/composables/useVectorBranding.ts +45 -0
  69. package/app/composables/useVectorDashboards.ts +15 -0
  70. package/app/composables/useVectorExtensions.ts +44 -0
  71. package/app/composables/useVectorFields.ts +68 -0
  72. package/app/composables/useVectorForm.ts +36 -0
  73. package/app/composables/useVectorIdle.ts +39 -0
  74. package/app/composables/useVectorImpersonation.ts +78 -0
  75. package/app/composables/useVectorInputs.ts +61 -0
  76. package/app/composables/useVectorJobs.ts +62 -0
  77. package/app/composables/useVectorLocale.ts +70 -0
  78. package/app/composables/useVectorNotifications.ts +24 -0
  79. package/app/composables/useVectorNotificationsInbox.ts +26 -0
  80. package/app/composables/useVectorPreferences.ts +30 -0
  81. package/app/composables/useVectorResource.ts +305 -0
  82. package/app/composables/useVectorRuntime.ts +42 -0
  83. package/app/composables/useVectorSchema.ts +56 -0
  84. package/app/composables/useVectorT.ts +9 -0
  85. package/app/composables/useVectorViews.ts +25 -0
  86. package/app/i18n/ar/actions.ts +11 -0
  87. package/app/i18n/ar/common.ts +23 -0
  88. package/app/i18n/ar/dashboard.ts +28 -0
  89. package/app/i18n/ar/fields.ts +77 -0
  90. package/app/i18n/ar/index.ts +12 -0
  91. package/app/i18n/ar/jobs.ts +36 -0
  92. package/app/i18n/ar/list.ts +160 -0
  93. package/app/i18n/ar/record.ts +62 -0
  94. package/app/i18n/ar/settings.ts +10 -0
  95. package/app/i18n/ar/shell.ts +54 -0
  96. package/app/i18n/de/actions.ts +11 -0
  97. package/app/i18n/de/common.ts +23 -0
  98. package/app/i18n/de/dashboard.ts +28 -0
  99. package/app/i18n/de/fields.ts +77 -0
  100. package/app/i18n/de/index.ts +12 -0
  101. package/app/i18n/de/jobs.ts +36 -0
  102. package/app/i18n/de/list.ts +160 -0
  103. package/app/i18n/de/record.ts +62 -0
  104. package/app/i18n/de/settings.ts +10 -0
  105. package/app/i18n/de/shell.ts +54 -0
  106. package/app/i18n/en/actions.ts +11 -0
  107. package/app/i18n/en/common.ts +23 -0
  108. package/app/i18n/en/dashboard.ts +28 -0
  109. package/app/i18n/en/fields.ts +77 -0
  110. package/app/i18n/en/index.ts +12 -0
  111. package/app/i18n/en/jobs.ts +36 -0
  112. package/app/i18n/en/list.ts +160 -0
  113. package/app/i18n/en/record.ts +62 -0
  114. package/app/i18n/en/settings.ts +10 -0
  115. package/app/i18n/en/shell.ts +54 -0
  116. package/app/i18n/es/actions.ts +11 -0
  117. package/app/i18n/es/common.ts +23 -0
  118. package/app/i18n/es/dashboard.ts +28 -0
  119. package/app/i18n/es/fields.ts +77 -0
  120. package/app/i18n/es/index.ts +12 -0
  121. package/app/i18n/es/jobs.ts +36 -0
  122. package/app/i18n/es/list.ts +160 -0
  123. package/app/i18n/es/record.ts +62 -0
  124. package/app/i18n/es/settings.ts +10 -0
  125. package/app/i18n/es/shell.ts +54 -0
  126. package/app/i18n/fr/actions.ts +11 -0
  127. package/app/i18n/fr/common.ts +23 -0
  128. package/app/i18n/fr/dashboard.ts +28 -0
  129. package/app/i18n/fr/fields.ts +77 -0
  130. package/app/i18n/fr/index.ts +12 -0
  131. package/app/i18n/fr/jobs.ts +36 -0
  132. package/app/i18n/fr/list.ts +160 -0
  133. package/app/i18n/fr/record.ts +62 -0
  134. package/app/i18n/fr/settings.ts +10 -0
  135. package/app/i18n/fr/shell.ts +54 -0
  136. package/app/i18n/he/actions.ts +11 -0
  137. package/app/i18n/he/common.ts +23 -0
  138. package/app/i18n/he/dashboard.ts +28 -0
  139. package/app/i18n/he/fields.ts +77 -0
  140. package/app/i18n/he/index.ts +12 -0
  141. package/app/i18n/he/jobs.ts +36 -0
  142. package/app/i18n/he/list.ts +160 -0
  143. package/app/i18n/he/record.ts +62 -0
  144. package/app/i18n/he/settings.ts +10 -0
  145. package/app/i18n/he/shell.ts +54 -0
  146. package/app/i18n/index.ts +111 -0
  147. package/app/i18n/it/actions.ts +11 -0
  148. package/app/i18n/it/common.ts +23 -0
  149. package/app/i18n/it/dashboard.ts +28 -0
  150. package/app/i18n/it/fields.ts +77 -0
  151. package/app/i18n/it/index.ts +12 -0
  152. package/app/i18n/it/jobs.ts +36 -0
  153. package/app/i18n/it/list.ts +160 -0
  154. package/app/i18n/it/record.ts +62 -0
  155. package/app/i18n/it/settings.ts +10 -0
  156. package/app/i18n/it/shell.ts +54 -0
  157. package/app/i18n/ja/actions.ts +11 -0
  158. package/app/i18n/ja/common.ts +23 -0
  159. package/app/i18n/ja/dashboard.ts +28 -0
  160. package/app/i18n/ja/fields.ts +77 -0
  161. package/app/i18n/ja/index.ts +12 -0
  162. package/app/i18n/ja/jobs.ts +36 -0
  163. package/app/i18n/ja/list.ts +160 -0
  164. package/app/i18n/ja/record.ts +62 -0
  165. package/app/i18n/ja/settings.ts +10 -0
  166. package/app/i18n/ja/shell.ts +54 -0
  167. package/app/i18n/ko/actions.ts +11 -0
  168. package/app/i18n/ko/common.ts +23 -0
  169. package/app/i18n/ko/dashboard.ts +28 -0
  170. package/app/i18n/ko/fields.ts +77 -0
  171. package/app/i18n/ko/index.ts +12 -0
  172. package/app/i18n/ko/jobs.ts +36 -0
  173. package/app/i18n/ko/list.ts +160 -0
  174. package/app/i18n/ko/record.ts +62 -0
  175. package/app/i18n/ko/settings.ts +10 -0
  176. package/app/i18n/ko/shell.ts +54 -0
  177. package/app/i18n/nl/actions.ts +11 -0
  178. package/app/i18n/nl/common.ts +23 -0
  179. package/app/i18n/nl/dashboard.ts +28 -0
  180. package/app/i18n/nl/fields.ts +77 -0
  181. package/app/i18n/nl/index.ts +12 -0
  182. package/app/i18n/nl/jobs.ts +36 -0
  183. package/app/i18n/nl/list.ts +160 -0
  184. package/app/i18n/nl/record.ts +62 -0
  185. package/app/i18n/nl/settings.ts +10 -0
  186. package/app/i18n/nl/shell.ts +54 -0
  187. package/app/i18n/pl/actions.ts +11 -0
  188. package/app/i18n/pl/common.ts +23 -0
  189. package/app/i18n/pl/dashboard.ts +28 -0
  190. package/app/i18n/pl/fields.ts +77 -0
  191. package/app/i18n/pl/index.ts +12 -0
  192. package/app/i18n/pl/jobs.ts +36 -0
  193. package/app/i18n/pl/list.ts +160 -0
  194. package/app/i18n/pl/record.ts +62 -0
  195. package/app/i18n/pl/settings.ts +10 -0
  196. package/app/i18n/pl/shell.ts +54 -0
  197. package/app/i18n/pt/actions.ts +11 -0
  198. package/app/i18n/pt/common.ts +23 -0
  199. package/app/i18n/pt/dashboard.ts +28 -0
  200. package/app/i18n/pt/fields.ts +77 -0
  201. package/app/i18n/pt/index.ts +12 -0
  202. package/app/i18n/pt/jobs.ts +36 -0
  203. package/app/i18n/pt/list.ts +160 -0
  204. package/app/i18n/pt/record.ts +62 -0
  205. package/app/i18n/pt/settings.ts +10 -0
  206. package/app/i18n/pt/shell.ts +54 -0
  207. package/app/i18n/pt-BR/actions.ts +11 -0
  208. package/app/i18n/pt-BR/common.ts +23 -0
  209. package/app/i18n/pt-BR/dashboard.ts +28 -0
  210. package/app/i18n/pt-BR/fields.ts +77 -0
  211. package/app/i18n/pt-BR/index.ts +12 -0
  212. package/app/i18n/pt-BR/jobs.ts +36 -0
  213. package/app/i18n/pt-BR/list.ts +160 -0
  214. package/app/i18n/pt-BR/record.ts +62 -0
  215. package/app/i18n/pt-BR/settings.ts +10 -0
  216. package/app/i18n/pt-BR/shell.ts +54 -0
  217. package/app/i18n/ru/actions.ts +11 -0
  218. package/app/i18n/ru/common.ts +23 -0
  219. package/app/i18n/ru/dashboard.ts +28 -0
  220. package/app/i18n/ru/fields.ts +77 -0
  221. package/app/i18n/ru/index.ts +12 -0
  222. package/app/i18n/ru/jobs.ts +36 -0
  223. package/app/i18n/ru/list.ts +160 -0
  224. package/app/i18n/ru/record.ts +62 -0
  225. package/app/i18n/ru/settings.ts +10 -0
  226. package/app/i18n/ru/shell.ts +54 -0
  227. package/app/i18n/tr/actions.ts +11 -0
  228. package/app/i18n/tr/common.ts +23 -0
  229. package/app/i18n/tr/dashboard.ts +28 -0
  230. package/app/i18n/tr/fields.ts +77 -0
  231. package/app/i18n/tr/index.ts +12 -0
  232. package/app/i18n/tr/jobs.ts +36 -0
  233. package/app/i18n/tr/list.ts +160 -0
  234. package/app/i18n/tr/record.ts +62 -0
  235. package/app/i18n/tr/settings.ts +10 -0
  236. package/app/i18n/tr/shell.ts +54 -0
  237. package/app/i18n/uk/actions.ts +11 -0
  238. package/app/i18n/uk/common.ts +23 -0
  239. package/app/i18n/uk/dashboard.ts +28 -0
  240. package/app/i18n/uk/fields.ts +77 -0
  241. package/app/i18n/uk/index.ts +12 -0
  242. package/app/i18n/uk/jobs.ts +36 -0
  243. package/app/i18n/uk/list.ts +160 -0
  244. package/app/i18n/uk/record.ts +62 -0
  245. package/app/i18n/uk/settings.ts +10 -0
  246. package/app/i18n/uk/shell.ts +54 -0
  247. package/app/i18n/zh-Hans/actions.ts +11 -0
  248. package/app/i18n/zh-Hans/common.ts +23 -0
  249. package/app/i18n/zh-Hans/dashboard.ts +28 -0
  250. package/app/i18n/zh-Hans/fields.ts +77 -0
  251. package/app/i18n/zh-Hans/index.ts +12 -0
  252. package/app/i18n/zh-Hans/jobs.ts +36 -0
  253. package/app/i18n/zh-Hans/list.ts +160 -0
  254. package/app/i18n/zh-Hans/record.ts +62 -0
  255. package/app/i18n/zh-Hans/settings.ts +10 -0
  256. package/app/i18n/zh-Hans/shell.ts +54 -0
  257. package/app/layouts/default.vue +8 -0
  258. package/app/layouts/vector.vue +238 -0
  259. package/app/middleware/vector-auth.ts +16 -0
  260. package/app/pages/d/[name].vue +12 -0
  261. package/app/pages/index.vue +22 -0
  262. package/app/pages/jobs/[id].vue +52 -0
  263. package/app/pages/jobs/index.vue +42 -0
  264. package/app/pages/login.vue +109 -0
  265. package/app/pages/p/[name].vue +37 -0
  266. package/app/pages/r/[resource]/[id]/edit.vue +54 -0
  267. package/app/pages/r/[resource]/[id]/index.vue +143 -0
  268. package/app/pages/r/[resource]/create.vue +53 -0
  269. package/app/pages/r/[resource]/index.vue +29 -0
  270. package/app/pages/settings.vue +104 -0
  271. package/app/plugins/vector-csp.client.ts +14 -0
  272. package/app/plugins/vector-extensions.client.ts +84 -0
  273. package/app/plugins/vector-i18n.ts +76 -0
  274. package/app/types/vector.ts +438 -0
  275. package/app/utils/files.ts +14 -0
  276. package/app/utils/format.ts +100 -0
  277. package/app/utils/richtext.ts +305 -0
  278. package/app/utils/rules.ts +113 -0
  279. package/app/utils/translate.ts +45 -0
  280. package/app/utils/widgets.ts +11 -0
  281. package/nuxt.config.ts +83 -0
  282. package/package.json +83 -5
@@ -0,0 +1,62 @@
1
+ // The record area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ unknownResource: 'משאב לא מוכר',
4
+ new: 'חדש',
5
+ newTitle: 'יצירת {label}',
6
+ editTitle: 'עריכת {title}',
7
+ createNotAllowed: 'משאב זה אינו מאפשר ליצור כאן רשומות.',
8
+ editNotAllowed: 'אין לך הרשאה לערוך רשומה זו.',
9
+ saved: 'הרשומה מסוג {label} נשמרה.',
10
+ duplicate: 'שכפול',
11
+ copyOf: 'עותק של "{title}". ערכים שחייבים להיות ייחודיים, וכן קבצים, מתחילים ריקים.',
12
+ variants: {
13
+ menu: 'אפשרויות שמירה נוספות',
14
+ saveContinue: 'שמירה והמשך עריכה',
15
+ createContinue: 'יצירה והמשך עריכה',
16
+ createAnother: 'יצירה והוספת רשומה נוספת',
17
+ },
18
+ leave: {
19
+ title: 'לבטל את השינויים?',
20
+ text: 'יציאה מדף זה תבטל את השינויים שלא נשמרו.',
21
+ discard: 'ביטול השינויים',
22
+ },
23
+ inTrash: 'בסל המחזור',
24
+ deleteTitle: 'למחוק את "{title}" ({noun})?',
25
+ deleteForeverTitle: 'למחוק לצמיתות את "{title}" ({noun})?',
26
+ deleteSoftText: 'הרשומה תועבר לסל המחזור וניתן יהיה לשחזר אותה.',
27
+ deleteHardText: 'לא ניתן לבטל פעולה זו.',
28
+ trashed: 'הרשומה מסוג {label} הועברה לסל המחזור.',
29
+ deleted: 'הרשומה מסוג {label} נמחקה.',
30
+ restored: 'הרשומה מסוג {label} שוחזרה.',
31
+ impersonate: {
32
+ action: 'התחזות',
33
+ title: 'לפעול בשם "{title}"?',
34
+ text: 'ניתן לראות ולעשות כל מה שמשתמש זה יכול, וכל שינוי יתועד בשמו, בציון שמך כמתחזה.',
35
+ started: 'הפעולות שלך מתבצעות כעת בשם {title}.',
36
+ },
37
+ audit: {
38
+ title: 'היסטוריה',
39
+ byUser: 'על ידי המשתמש {actor}',
40
+ impersonatedBy: '(בהתחזות על ידי {impersonator})',
41
+ empty: 'אין שינויים מתועדים.',
42
+ revert: 'החזרה',
43
+ revertLabel: 'החזרת שינוי זה',
44
+ revertTitle: 'להחזיר את השינוי?',
45
+ revertText: 'מחזיר את הערך הקודם של {fields}. גם ההחזרה מתועדת בהיסטוריה.',
46
+ reverted: 'השינוי הוחזר.',
47
+ },
48
+ panel: {
49
+ attach: 'צירוף',
50
+ attachTitle: 'צירוף {label}',
51
+ attachCount: 'צירוף {count}',
52
+ attached: 'צורפו: {count} {label}.',
53
+ records: 'רשומות',
54
+ record: 'רשומה',
55
+ empty: 'אין עדיין {label}.',
56
+ detach: 'ניתוק',
57
+ detachLabel: 'ניתוק {title}',
58
+ detachTitle: 'לנתק את "{title}"?',
59
+ detachText: 'הרשומה ({target}) נשארת; מוסר רק הקישור שלה לרשומה הנוכחית מסוג {owner}.',
60
+ detached: 'הקישור אל {title} הוסר.',
61
+ },
62
+ }
@@ -0,0 +1,10 @@
1
+ // The settings area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ pageTitle: 'הגדרות',
4
+ heading: 'הגדרות',
5
+ empty: {
6
+ title: 'אין הגדרות',
7
+ text: 'לא רשומות הגדרות שחשבון זה יכול לנהל.',
8
+ },
9
+ saved: 'הגדרות {label} נשמרו.',
10
+ }
@@ -0,0 +1,54 @@
1
+ // The shell area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ titleTemplate: '{title} · {brand}',
4
+ brandSubtitle: 'ניהול',
5
+ account: 'חשבון',
6
+ signOut: 'התנתקות',
7
+ toggleNavigation: 'הצגה או הסתרה של הניווט',
8
+ toggleTheme: 'החלפת ערכת נושא',
9
+ language: 'שפה: {name}',
10
+ languageFailed: 'לא ניתן לשמור את השפה: {error}',
11
+ nav: {
12
+ main: 'ראשי',
13
+ dashboard: 'לוח בקרה',
14
+ jobs: 'משימות',
15
+ settings: 'הגדרות',
16
+ pages: 'דפים',
17
+ badge: '{count} {label}',
18
+ },
19
+ page: {
20
+ unknown: 'דף לא מוכר',
21
+ loading: 'טוען את הדף',
22
+ },
23
+ impersonation: {
24
+ actingAs: 'הפעולות שלך מתבצעות כעת בשם {name}.',
25
+ anotherUser: 'משתמש אחר',
26
+ stop: 'הפסקת ההתחזות',
27
+ noAccess: 'ל־{name} אין גישה לממשק הניהול, כך שאין מה להציג בשם משתמש זה. ההתחזות הופסקה.',
28
+ noToken: 'האפליקציה השיבה בלי אסימון ובלי טעינה מחדש, ולכן דבר לא השתנה.',
29
+ },
30
+ palette: {
31
+ placeholder: 'חיפוש רשומות ומשאבים…',
32
+ records: 'רשומות',
33
+ resources: 'משאבים',
34
+ noMatch: 'אין רשומות תואמות',
35
+ },
36
+ inbox: {
37
+ title: 'התראות',
38
+ markAllRead: 'סימון הכול כנקרא',
39
+ empty: 'אין עדיין התראות',
40
+ },
41
+ login: {
42
+ pageTitle: 'התחברות · {brand}',
43
+ subtitle: 'התחברות לממשק הניהול',
44
+ email: 'דוא״ל',
45
+ password: 'סיסמה',
46
+ submit: 'התחברות',
47
+ invalidEmail: 'יש להזין כתובת דוא״ל תקינה',
48
+ welcome: 'שמחים לראות אותך שוב, {name}.',
49
+ signedOutIdle: 'יצאת מהמערכת לאחר {minutes} דקות ללא פעילות. יש להיכנס שוב כדי להמשיך מאותו מקום.',
50
+ },
51
+ home: {
52
+ title: 'לוח בקרה',
53
+ },
54
+ }
@@ -0,0 +1,111 @@
1
+ import ar from './ar'
2
+ import de from './de'
3
+ import en from './en'
4
+ import es from './es'
5
+ import fr from './fr'
6
+ import he from './he'
7
+ import it from './it'
8
+ import ja from './ja'
9
+ import ko from './ko'
10
+ import nl from './nl'
11
+ import pl from './pl'
12
+ import pt from './pt'
13
+ import ptBR from './pt-BR'
14
+ import ru from './ru'
15
+ import tr from './tr'
16
+ import uk from './uk'
17
+ import zhHans from './zh-Hans'
18
+
19
+ /**
20
+ * Every language the UI ships. English is the base: each other locale
21
+ * mirrors its keys (a test holds them to it), and a key a locale lacks
22
+ * falls back to English. All but English are machine translations.
23
+ */
24
+ export const bundledMessages: Record<string, typeof en> = {
25
+ en, de, fr, nl, it, es, pt, 'pt-BR': ptBR, pl, tr, ru, uk, he, ar, ko, ja, 'zh-Hans': zhHans,
26
+ }
27
+
28
+ /** Languages written right to left: the page's direction follows the language. */
29
+ export const rtlLanguages = ['ar', 'fa', 'he', 'ur', 'yi']
30
+
31
+ /** Whether a language tag is written right to left. */
32
+ export function isRtl(tag: string): boolean {
33
+ return rtlLanguages.includes(tag.split('-')[0]!.toLowerCase())
34
+ }
35
+
36
+ /** Vuetify's name for a locale: `pt-BR` is `ptBR`. */
37
+ export function vuetifyLocale(tag: string): string {
38
+ return tag.replace(/-([a-z])/gi, (_, c: string) => c.toUpperCase())
39
+ }
40
+
41
+ /**
42
+ * A language's name in the viewer's language (`de` shown in English is
43
+ * "German", in Hebrew "גרמנית"), from the browser's own CLDR data: a
44
+ * subtitle under the language's name in itself, so a script the viewer
45
+ * cannot read is still recognisable. Null when the browser has no name
46
+ * for it, or when it would repeat `name`.
47
+ */
48
+ export function languageName(code: string, inLanguage: string, name?: string): string | null {
49
+ try {
50
+ const shown = new Intl.DisplayNames([inLanguage], { type: 'language' }).of(code)
51
+ return shown && shown !== code && shown.toLocaleLowerCase(inLanguage) !== name?.toLocaleLowerCase(inLanguage) ? shown : null
52
+ } catch {
53
+ return null
54
+ }
55
+ }
56
+
57
+ /** CLDR's plural categories, in the order a message lists its forms. */
58
+ const pluralOrder = ['zero', 'one', 'two', 'few', 'many', 'other'] as const
59
+
60
+ /** Whole counts the admin shows: every category they reach decides a form. */
61
+ const pluralSample = [...Array.from({ length: 1001 }, (_, n) => n), 10_000, 100_000]
62
+ const categoriesOf = new Map<string, string[]>()
63
+
64
+ /**
65
+ * The plural forms a message has in `locale`, in order: the CLDR categories
66
+ * whole counts reach there. English and German: one, other. Hebrew: one,
67
+ * two, other. Russian, Polish, Ukrainian: one, few, many. Arabic: zero,
68
+ * one, two, few, many, other. Chinese, Japanese, Korean: other — a single
69
+ * form. A category only fractions or exact millions reach (French `many`
70
+ * at 1 000 000) is not a form of its own; such a count takes `other`.
71
+ */
72
+ export function pluralCategories(locale: string): string[] {
73
+ let categories = categoriesOf.get(locale)
74
+ if (!categories) {
75
+ let rules: Intl.PluralRules
76
+ try {
77
+ rules = new Intl.PluralRules(locale)
78
+ } catch {
79
+ rules = new Intl.PluralRules('en')
80
+ }
81
+ const reached = new Set(pluralSample.map(n => rules.select(n)))
82
+ categories = pluralOrder.filter(c => reached.has(c))
83
+ categoriesOf.set(locale, categories)
84
+ }
85
+ return categories
86
+ }
87
+
88
+ /**
89
+ * vue-i18n's plural rule for `locale`: which of a message's `a | b | …`
90
+ * forms a count takes. A message with the locale's own forms is chosen by
91
+ * the count's CLDR category; one with two forms, as an application's own
92
+ * English-style message may have, is singular for 1 and plural otherwise;
93
+ * one with a single form always takes it.
94
+ */
95
+ export function pluralRule(locale: string): (choice: number, choicesLength: number) => number {
96
+ return (choice, choicesLength) => {
97
+ const forms = pluralCategories(locale)
98
+ if (choicesLength === forms.length) {
99
+ let category: string
100
+ try {
101
+ category = new Intl.PluralRules(locale).select(choice)
102
+ } catch {
103
+ category = 'other'
104
+ }
105
+ const index = forms.indexOf(category)
106
+ return index >= 0 ? index : forms.includes('other') ? forms.indexOf('other') : choicesLength - 1
107
+ }
108
+ if (choicesLength === 2) return Math.abs(choice) === 1 ? 0 : 1
109
+ return Math.min(Math.max(choicesLength - 1, 0), Math.abs(choice) === 1 ? 0 : choicesLength - 1)
110
+ }
111
+ }
@@ -0,0 +1,11 @@
1
+ // The actions area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ // "Run {action} on {subject}?", with the action's label in bold.
4
+ runOn: 'Eseguire {action} su {subject}?',
5
+ subjectAll: 'tutti i {label} corrispondenti ({count})',
6
+ subjectCount: '{count} {label}',
7
+ done: '{label} completato.',
8
+ declined: 'L’azione è stata rifiutata.',
9
+ downloadStarted: 'Download avviato.',
10
+ queued: '{label} è stato messo in coda.',
11
+ }
@@ -0,0 +1,23 @@
1
+ // Words every area shares. Keep a key here only when two areas or more use it.
2
+ export default {
3
+ save: 'Salva',
4
+ cancel: 'Annulla',
5
+ create: 'Crea',
6
+ edit: 'Modifica',
7
+ delete: 'Elimina',
8
+ deleteForever: 'Elimina definitivamente',
9
+ restore: 'Ripristina',
10
+ close: 'Chiudi',
11
+ apply: 'Applica',
12
+ remove: 'Rimuovi',
13
+ search: 'Cerca',
14
+ loading: 'Caricamento…',
15
+ required: 'Obbligatorio',
16
+ none: '—',
17
+ yes: 'Sì',
18
+ no: 'No',
19
+ download: 'Scarica',
20
+ actions: 'Azioni',
21
+ confirm: 'Conferma',
22
+ serverRejected: 'Il server ha rifiutato la richiesta.',
23
+ }
@@ -0,0 +1,28 @@
1
+ // The dashboard area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ title: 'Dashboard',
4
+ range: 'Intervallo',
5
+ loading: 'Caricamento',
6
+ percent: '{value}%',
7
+ duration: {
8
+ minutes: '{value} min',
9
+ hours: '{value} h',
10
+ },
11
+ partition: {
12
+ empty: 'Nessun dato in questo intervallo.',
13
+ },
14
+ progress: {
15
+ of: 'di {target}',
16
+ label: 'Avanzamento',
17
+ },
18
+ stat: {
19
+ previous: 'rispetto a {value} prima',
20
+ },
21
+ table: {
22
+ empty: 'Niente da mostrare.',
23
+ seeAll: 'Vedi tutto',
24
+ },
25
+ trend: {
26
+ total: 'Totale {value}',
27
+ },
28
+ }
@@ -0,0 +1,77 @@
1
+ // The fields area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ cell: {
4
+ loading: 'Caricamento di {label}',
5
+ },
6
+ keyValue: {
7
+ key: 'Chiave',
8
+ value: 'Valore',
9
+ entry: 'Voce {n}',
10
+ add: 'Aggiungi voce',
11
+ remove: 'Rimuovi voce {n}',
12
+ more: '+{count} altri',
13
+ repeated: 'Usate più di una volta: {keys}. Viene mantenuta l’ultima.',
14
+ },
15
+ repeater: {
16
+ add: 'Aggiungi {label}',
17
+ remove: 'Rimuovi {label} {n}',
18
+ row: '{label} {n}',
19
+ count: '{count} su un massimo di {max}',
20
+ unavailable: 'Non puoi vedere queste righe.',
21
+ },
22
+ relation: {
23
+ placeholder: 'Digita per cercare',
24
+ dependsFirst: 'Scegli prima {label}',
25
+ },
26
+ upload: {
27
+ storageKey: 'La chiave di archiviazione del file.',
28
+ tooLarge: 'Il file supera {size} MB.',
29
+ rejected: 'Il file {message}',
30
+ uploaded: 'Caricato {name} ({size} KB)',
31
+ theFile: 'il file',
32
+ upTo: 'fino a {size} MB',
33
+ preview: 'Anteprima di {label}',
34
+ remove: 'Rimuovi {label}',
35
+ },
36
+ richtext: {
37
+ toolbar: 'Formattazione di {label}',
38
+ bold: 'Grassetto',
39
+ italic: 'Corsivo',
40
+ underline: 'Sottolineato',
41
+ strike: 'Barrato',
42
+ code: 'Codice',
43
+ heading: 'Titolo {level}',
44
+ bulletList: 'Elenco puntato',
45
+ orderedList: 'Elenco numerato',
46
+ blockquote: 'Citazione',
47
+ codeBlock: 'Blocco di codice',
48
+ horizontalRule: 'Separatore',
49
+ link: 'Link',
50
+ linkUrl: 'Indirizzo del link',
51
+ linkRefused: 'Usa un link http(s), mailto o relativo',
52
+ insertTable: 'Inserisci tabella',
53
+ addRow: 'Aggiungi riga',
54
+ addColumn: 'Aggiungi colonna',
55
+ deleteRow: 'Elimina riga',
56
+ deleteColumn: 'Elimina colonna',
57
+ deleteTable: 'Elimina tabella',
58
+ image: 'Inserisci immagine',
59
+ undo: 'Annulla',
60
+ redo: 'Ripeti',
61
+ source: 'Sorgente',
62
+ visual: 'Visuale',
63
+ sourceOf: 'Sorgente di {label}',
64
+ },
65
+ rules: {
66
+ maxLength: 'Al massimo {max} caratteri',
67
+ minLength: 'Almeno {min} caratteri',
68
+ email: 'Inserisci un indirizzo e-mail valido',
69
+ url: 'Inserisci un URL valido',
70
+ greaterThan: 'Deve essere maggiore di {limit}',
71
+ greaterThanOrEqual: 'Deve essere almeno {limit}',
72
+ lessThan: 'Deve essere minore di {limit}',
73
+ lessThanOrEqual: 'Deve essere al massimo {limit}',
74
+ invalidFormat: 'Formato non valido',
75
+ notAllowed: 'Valore non consentito',
76
+ },
77
+ }
@@ -0,0 +1,12 @@
1
+ import actions from './actions'
2
+ import common from './common'
3
+ import dashboard from './dashboard'
4
+ import fields from './fields'
5
+ import jobs from './jobs'
6
+ import list from './list'
7
+ import record from './record'
8
+ import settings from './settings'
9
+ import shell from './shell'
10
+
11
+ /** Italian (machine translation): one object per area of the UI, mirroring en. */
12
+ export default { common, shell, list, record, actions, dashboard, jobs, settings, fields }
@@ -0,0 +1,36 @@
1
+ // The jobs area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ title: 'Job',
4
+ heading: 'Job in background',
5
+ columns: {
6
+ job: 'Job',
7
+ resource: 'Risorsa',
8
+ status: 'Stato',
9
+ progress: 'Avanzamento',
10
+ started: 'Avviato',
11
+ },
12
+ empty: 'Ancora nessun job. Qui compaiono le esportazioni e importazioni di grandi dimensioni e le azioni in coda.',
13
+ kind: {
14
+ action: 'azione',
15
+ export: 'esportazione',
16
+ import: 'importazione',
17
+ },
18
+ status: {
19
+ queued: 'in coda',
20
+ running: 'in esecuzione',
21
+ done: 'completato',
22
+ failed: 'non riuscito',
23
+ stalled: 'bloccata',
24
+ },
25
+ detail: {
26
+ pageTitle: 'Job #{id}',
27
+ fallbackTitle: 'Job',
28
+ started: 'avviato {date}',
29
+ finished: 'terminato {date}',
30
+ progress: 'Avanzamento del job',
31
+ processed: '{processed} elaborati',
32
+ processedOfTotal: '{processed} di {total} elaborati',
33
+ download: 'Scarica {file}',
34
+ file: 'file',
35
+ },
36
+ }
@@ -0,0 +1,160 @@
1
+ // The list area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ field: 'Campo',
4
+ search: 'Cerca {label}…',
5
+ noSearch: 'Nessun campo ricercabile',
6
+ noGrouping: 'Nessun raggruppamento',
7
+ groupBy: 'Raggruppa per',
8
+ groupHeader: '{label}:',
9
+ expandGroup: 'Espandi gruppo',
10
+ collapseGroup: 'Comprimi gruppo',
11
+ trash: {
12
+ label: 'Cestino',
13
+ active: 'Attivi',
14
+ only: 'Cestino',
15
+ with: 'Attivi e cestino',
16
+ },
17
+ exportCsv: 'Esporta CSV',
18
+ importCsv: 'Importa CSV',
19
+ exportQueued: 'L’esportazione è di grandi dimensioni ed è stata messa in coda; riceverai una notifica quando sarà pronta.',
20
+ exportPrepared: 'L’esportazione è in preparazione; riceverai una notifica quando sarà pronta.',
21
+ export: 'Esporta',
22
+ exportFormats: {
23
+ csv: 'CSV',
24
+ xlsx: 'Excel (XLSX)',
25
+ },
26
+ nothingMatches: 'Nessun risultato',
27
+ empty: 'Ancora nessun {label}',
28
+ summary: {
29
+ sum: 'Somma',
30
+ avg: 'Media',
31
+ min: 'Min',
32
+ max: 'Max',
33
+ count: 'Conteggio',
34
+ },
35
+ operation: {
36
+ deleteTitle: 'Eliminare {count} {noun}?',
37
+ restoreTitle: 'Ripristinare {count} {noun}?',
38
+ forceDeleteTitle: 'Eliminare definitivamente {count} {noun}?',
39
+ toTrash: 'Vengono spostati nel cestino e possono essere ripristinati.',
40
+ irreversible: 'L’operazione non può essere annullata.',
41
+ restored: '{count} {noun} ripristinati.',
42
+ deleted: '{count} {noun} eliminati.',
43
+ },
44
+ bulk: {
45
+ allMatching: 'Tutti i {total} corrispondenti',
46
+ selected: '{count} selezionati',
47
+ selectAllMatching: 'Seleziona tutti i {total} corrispondenti',
48
+ onlyChecked: 'Solo le righe selezionate',
49
+ clearSelection: 'Annulla selezione',
50
+ },
51
+ bulkEdit: {
52
+ everyMatching: 'tutti i {noun} corrispondenti ({count})',
53
+ some: '{count} {noun}',
54
+ title: 'Modifica {subject}',
55
+ fieldsToChange: 'Campi da modificare',
56
+ fieldsHint: 'Vengono scritti solo i campi scelti; tutti gli altri valori restano invariati.',
57
+ applyTo: 'Applica a {count}',
58
+ updated: '{count} {noun} aggiornati.',
59
+ },
60
+ columns: {
61
+ title: 'Colonne',
62
+ moveUp: 'Sposta su',
63
+ moveDown: 'Sposta giù',
64
+ reset: 'Ripristina',
65
+ },
66
+ filter: {
67
+ add: 'Aggiungi filtro',
68
+ condition: 'Condizione',
69
+ value: 'Valore',
70
+ from: 'Da',
71
+ to: 'A',
72
+ commaSeparated: 'Separati da virgola',
73
+ clear: 'Cancella',
74
+ yes: 'sì',
75
+ no: 'no',
76
+ and: 'e',
77
+ chip: '{field} {operator} {value}',
78
+ chipNoValue: '{field} {operator}',
79
+ anyOf: 'Uno qualsiasi di',
80
+ anyOfGroup: 'Uno qualsiasi di, gruppo {n}',
81
+ alternative: 'Alternativa {n}',
82
+ or: 'o',
83
+ orCondition: 'o…',
84
+ addAnyOf: 'Aggiungi “uno qualsiasi di”',
85
+ addToAlternative: 'Aggiungi una condizione all’alternativa {n}',
86
+ removeGroup: 'Rimuovi gruppo {n}',
87
+ advanced: 'Condizione avanzata',
88
+ operators: {
89
+ eq: 'è',
90
+ ne: 'non è',
91
+ lt: '<',
92
+ lte: '≤',
93
+ gt: '>',
94
+ gte: '≥',
95
+ in: 'è uno di',
96
+ nin: 'non è nessuno di',
97
+ like: 'contiene',
98
+ nlike: 'non contiene',
99
+ between: 'è compreso tra',
100
+ null: 'è vuoto',
101
+ nnull: 'non è vuoto',
102
+ },
103
+ },
104
+ views: {
105
+ menu: 'Viste',
106
+ allRecords: 'Tutti i record',
107
+ default: 'Predefinita',
108
+ updateWithCurrent: 'Aggiorna la vista con l’elenco corrente',
109
+ delete: 'Elimina vista',
110
+ deleteTitle: 'Eliminare la vista “{name}”?',
111
+ saveCurrent: 'Salva come vista…',
112
+ saveTitle: 'Salva vista',
113
+ updateTitle: 'Aggiorna “{name}”',
114
+ name: 'Nome',
115
+ share: 'Condividi con tutti gli amministratori',
116
+ openWith: 'Apri questa risorsa con questa vista',
117
+ openWithForEveryone: 'Aprila così per chiunque non abbia una vista predefinita propria',
118
+ shareFirst: 'Condividi la vista per renderla predefinita per tutti.',
119
+ everyoneDefault: 'Predefinita per tutti',
120
+ saved: 'Vista “{name}” salvata.',
121
+ },
122
+ import: {
123
+ title: 'Importa {label}',
124
+ file: 'File CSV',
125
+ analyse: 'Analizza',
126
+ instructions: '{rows} righe. Associa ogni colonna a un campo, oppure lasciala non associata per ignorarla. Una colonna `manyToMany` accetta identificatori separati da `{pipe}`.',
127
+ csvColumn: 'Colonna CSV',
128
+ sample: 'Esempio',
129
+ skip: '— ignora —',
130
+ start: 'Importa {rows} righe',
131
+ queued: 'Importazione di {rows} righe in coda.',
132
+ mode: 'Righe',
133
+ modes: {
134
+ create: 'Crea nuovi record',
135
+ update: 'Aggiorna record esistenti',
136
+ upsert: 'Aggiorna o crea',
137
+ },
138
+ key: 'Associa le righe per',
139
+ noKey: 'Associa prima una colonna alla chiave o a un campo univoco.',
140
+ modeHelp: {
141
+ update: 'Ogni riga aggiorna il record con il valore corrispondente; una riga senza corrispondenze finisce nel file delle righe non riuscite.',
142
+ upsert: 'Ogni riga aggiorna il record con il valore corrispondente, oppure ne crea uno se non ce ne sono.',
143
+ },
144
+ },
145
+ page: {
146
+ create: 'Nuovo {noun}',
147
+ unknown: 'Risorsa sconosciuta',
148
+ unknownText: 'Nulla è registrato come “{slug}”.',
149
+ },
150
+ inline: {
151
+ editLabel: 'Modifica {label}',
152
+ pending: '{count} modifica non salvata | {count} modifiche non salvate',
153
+ save: 'Salva modifiche',
154
+ discard: 'Scarta',
155
+ saved: 'Un record salvato. | {count} record salvati.',
156
+ conflict: 'Un record è cambiato dopo il caricamento dell’elenco. Ricaricalo e modificalo di nuovo.',
157
+ leaveTitle: 'Scartare {count} modifica non salvata? | Scartare {count} modifiche non salvate?',
158
+ leaveText: 'Uscendo dall’elenco perderai le modifiche non salvate.',
159
+ },
160
+ }
@@ -0,0 +1,62 @@
1
+ // The record area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ unknownResource: 'Risorsa sconosciuta',
4
+ new: 'Nuovo',
5
+ newTitle: 'Nuovo {label}',
6
+ editTitle: 'Modifica {title}',
7
+ createNotAllowed: 'Questa risorsa non consente di creare record qui.',
8
+ editNotAllowed: 'Non puoi modificare questo record.',
9
+ saved: '{label} salvato.',
10
+ duplicate: 'Duplica',
11
+ copyOf: 'Una copia di “{title}”. I valori che devono essere univoci e i file partono vuoti.',
12
+ variants: {
13
+ menu: 'Altri modi di salvare',
14
+ saveContinue: 'Salva e continua a modificare',
15
+ createContinue: 'Crea e continua a modificare',
16
+ createAnother: 'Crea e aggiungine un altro',
17
+ },
18
+ leave: {
19
+ title: 'Scartare le modifiche?',
20
+ text: 'Uscendo da questa pagina perderai le modifiche non salvate.',
21
+ discard: 'Scarta',
22
+ },
23
+ inTrash: 'Nel cestino',
24
+ deleteTitle: 'Eliminare {noun} “{title}”?',
25
+ deleteForeverTitle: 'Eliminare definitivamente {noun} “{title}”?',
26
+ deleteSoftText: 'Viene spostato nel cestino e può essere ripristinato.',
27
+ deleteHardText: 'L’operazione non può essere annullata.',
28
+ trashed: '{label} spostato nel cestino.',
29
+ deleted: '{label} eliminato.',
30
+ restored: '{label} ripristinato.',
31
+ impersonate: {
32
+ action: 'Impersona',
33
+ title: 'Agire come “{title}”?',
34
+ text: 'Vedi e fai ciò che può fare questo utente, e ogni modifica viene registrata a suo nome, con te come impersonatore.',
35
+ started: 'Ora stai agendo come {title}.',
36
+ },
37
+ audit: {
38
+ title: 'Cronologia',
39
+ byUser: 'dall’utente {actor}',
40
+ impersonatedBy: '(impersonato da {impersonator})',
41
+ empty: 'Nessuna modifica registrata.',
42
+ revert: 'Ripristina',
43
+ revertLabel: 'Ripristina il valore precedente',
44
+ revertTitle: 'Ripristinare il valore precedente?',
45
+ revertText: 'Ripristina il valore precedente di {fields}. Anche il ripristino viene registrato nella cronologia.',
46
+ reverted: 'Valore precedente ripristinato.',
47
+ },
48
+ panel: {
49
+ attach: 'Collega',
50
+ attachTitle: 'Collega {label}',
51
+ attachCount: 'Collega {count}',
52
+ attached: '{count} {label} collegati.',
53
+ records: 'record',
54
+ record: 'record',
55
+ empty: 'Ancora nessun {label}.',
56
+ detach: 'Scollega',
57
+ detachLabel: 'Scollega {title}',
58
+ detachTitle: 'Scollegare “{title}”?',
59
+ detachText: 'Resta un {target}; viene rimosso solo il suo collegamento a questo {owner}.',
60
+ detached: '{title} scollegato.',
61
+ },
62
+ }
@@ -0,0 +1,10 @@
1
+ // The settings area's strings; see common.ts for words every area shares.
2
+ export default {
3
+ pageTitle: 'Impostazioni',
4
+ heading: 'Impostazioni',
5
+ empty: {
6
+ title: 'Nessuna impostazione',
7
+ text: 'Non c’è nulla di registrato che questo account possa gestire.',
8
+ },
9
+ saved: '{label} salvato.',
10
+ }