@adminiumjs/i18n 0.1.0 → 0.1.2

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 (89) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/locales.d.ts +1 -1
  4. package/dist/locales.js +1 -1
  5. package/dist/react.d.ts +10 -0
  6. package/dist/react.d.ts.map +1 -1
  7. package/dist/react.js +37 -0
  8. package/dist/react.js.map +1 -1
  9. package/dist/resources/ar-eg/common.d.ts +4 -0
  10. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  11. package/dist/resources/ar-eg/common.js +4 -0
  12. package/dist/resources/ar-eg/common.js.map +1 -1
  13. package/dist/resources/ar-eg/ui.d.ts +769 -1
  14. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  15. package/dist/resources/ar-eg/ui.js +823 -55
  16. package/dist/resources/ar-eg/ui.js.map +1 -1
  17. package/dist/resources/cs-cz/common.d.ts +4 -0
  18. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  19. package/dist/resources/cs-cz/common.js +4 -0
  20. package/dist/resources/cs-cz/common.js.map +1 -1
  21. package/dist/resources/cs-cz/ui.d.ts +769 -1
  22. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  23. package/dist/resources/cs-cz/ui.js +823 -55
  24. package/dist/resources/cs-cz/ui.js.map +1 -1
  25. package/dist/resources/da-dk/common.d.ts +4 -0
  26. package/dist/resources/da-dk/common.d.ts.map +1 -1
  27. package/dist/resources/da-dk/common.js +4 -0
  28. package/dist/resources/da-dk/common.js.map +1 -1
  29. package/dist/resources/da-dk/ui.d.ts +769 -1
  30. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  31. package/dist/resources/da-dk/ui.js +823 -55
  32. package/dist/resources/da-dk/ui.js.map +1 -1
  33. package/dist/resources/de-de/common.d.ts +4 -0
  34. package/dist/resources/de-de/common.d.ts.map +1 -1
  35. package/dist/resources/de-de/common.js +4 -0
  36. package/dist/resources/de-de/common.js.map +1 -1
  37. package/dist/resources/de-de/ui.d.ts +769 -1
  38. package/dist/resources/de-de/ui.d.ts.map +1 -1
  39. package/dist/resources/de-de/ui.js +823 -55
  40. package/dist/resources/de-de/ui.js.map +1 -1
  41. package/dist/resources/en-us/common.d.ts +4 -0
  42. package/dist/resources/en-us/common.d.ts.map +1 -1
  43. package/dist/resources/en-us/common.js +4 -0
  44. package/dist/resources/en-us/common.js.map +1 -1
  45. package/dist/resources/en-us/ui.d.ts +809 -41
  46. package/dist/resources/en-us/ui.d.ts.map +1 -1
  47. package/dist/resources/en-us/ui.js +861 -93
  48. package/dist/resources/en-us/ui.js.map +1 -1
  49. package/dist/resources/fr-fr/common.d.ts +4 -0
  50. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  51. package/dist/resources/fr-fr/common.js +4 -0
  52. package/dist/resources/fr-fr/common.js.map +1 -1
  53. package/dist/resources/fr-fr/ui.d.ts +769 -1
  54. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  55. package/dist/resources/fr-fr/ui.js +823 -55
  56. package/dist/resources/fr-fr/ui.js.map +1 -1
  57. package/dist/resources/zh-cn/common.d.ts +4 -0
  58. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  59. package/dist/resources/zh-cn/common.js +4 -0
  60. package/dist/resources/zh-cn/common.js.map +1 -1
  61. package/dist/resources/zh-cn/ui.d.ts +769 -1
  62. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  63. package/dist/resources/zh-cn/ui.js +823 -55
  64. package/dist/resources/zh-cn/ui.js.map +1 -1
  65. package/dist/resources/zh-tw/common.d.ts +4 -0
  66. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  67. package/dist/resources/zh-tw/common.js +4 -0
  68. package/dist/resources/zh-tw/common.js.map +1 -1
  69. package/dist/resources/zh-tw/ui.d.ts +769 -1
  70. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  71. package/dist/resources/zh-tw/ui.js +823 -55
  72. package/dist/resources/zh-tw/ui.js.map +1 -1
  73. package/locales/ar-EG/common.json +4 -0
  74. package/locales/ar-EG/ui.json +823 -55
  75. package/locales/cs-CZ/common.json +4 -0
  76. package/locales/cs-CZ/ui.json +823 -55
  77. package/locales/da-DK/common.json +4 -0
  78. package/locales/da-DK/ui.json +823 -55
  79. package/locales/de-DE/common.json +4 -0
  80. package/locales/de-DE/ui.json +823 -55
  81. package/locales/en-US/common.json +4 -0
  82. package/locales/en-US/ui.json +861 -93
  83. package/locales/fr-FR/common.json +4 -0
  84. package/locales/fr-FR/ui.json +823 -55
  85. package/locales/zh-CN/common.json +4 -0
  86. package/locales/zh-CN/ui.json +823 -55
  87. package/locales/zh-TW/common.json +4 -0
  88. package/locales/zh-TW/ui.json +823 -55
  89. package/package.json +1 -1
@@ -25,7 +25,8 @@ export default {
25
25
  "showPassword": "Afficher le mot de passe",
26
26
  "hidePassword": "Masquer le mot de passe",
27
27
  "reveal": "Révéler",
28
- "hide": "Masquer"
28
+ "hide": "Masquer",
29
+ "clearSearch": "Clear search"
29
30
  },
30
31
  "state": {
31
32
  "loading": "Chargement…",
@@ -67,7 +68,9 @@ export default {
67
68
  "description": "La carte de mesure de référence : un agrégat principal avec pastille de tendance et mini-sparkline en option."
68
69
  },
69
70
  "usageMeter": {
70
- "description": "Consommation du quota par rapport à une limite ; la barre passe à l'orange puis au rouge au-delà de vos seuils."
71
+ "description": "Consommation du quota par rapport à une limite ; la barre passe à l'orange puis au rouge au-delà de vos seuils.",
72
+ "usageLabel": "Usage",
73
+ "ofLabel": "of"
71
74
  },
72
75
  "statTileCompact": {
73
76
  "description": "Une tuile de mesure fine avec micro-libellé, puce de tendance et spark à 6 barres — pour des rangées denses de 4 à 6."
@@ -83,13 +86,17 @@ export default {
83
86
  "description": "Une jauge annulaire pour un score ou un pourcentage, teintée selon la plage où tombe la valeur."
84
87
  },
85
88
  "gaugeArc": {
86
- "description": "Un arc de compteur avec plages qualitatives et aiguille ; affiche aussi une grille de jauges."
89
+ "description": "Un arc de compteur avec plages qualitatives et aiguille ; affiche aussi une grille de jauges.",
90
+ "emptyTitle": "No gauges to show",
91
+ "emptyBody": "Services appear here as gauges once there is a reading for them."
87
92
  },
88
93
  "periodComparison": {
89
94
  "description": "Cette période face à la précédente en deux barres, avec l'écart calculé en dessous.",
90
95
  "higherLabel": "de plus",
91
96
  "lowerLabel": "de moins",
92
- "flatLabel": "stable"
97
+ "flatLabel": "stable",
98
+ "periodALabel": "This period",
99
+ "periodBLabel": "Last period"
93
100
  },
94
101
  "microKpiSubtitle": {
95
102
  "description": "Une statistique d'en-tête sur une ligne, construite à partir d'un modèle et recalculée en direct."
@@ -105,54 +112,250 @@ export default {
105
112
  "boxplot": {
106
113
  "description": "Résumé en boîte à moustaches de la dispersion d'une colonne numérique par catégorie — min, quartiles, médiane et max.",
107
114
  "emptyTitle": "Aucune distribution à tracer",
108
- "emptyBody": "Aucune ligne ne correspond aux filtres pour les boîtes à moustaches."
115
+ "emptyBody": "Aucune ligne ne correspond aux filtres pour les boîtes à moustaches.",
116
+ "chartLabel": "Box plot"
109
117
  },
110
118
  "violin": {
111
119
  "description": "Courbes de densité en miroir comparant la distribution d'une colonne numérique entre les groupes.",
112
120
  "emptyTitle": "Aucune distribution à tracer",
113
- "emptyBody": "Aucune ligne ne correspond aux filtres pour les profils de densité."
121
+ "emptyBody": "Aucune ligne ne correspond aux filtres pour les profils de densité.",
122
+ "chartLabel": "Violin plot"
114
123
  },
115
124
  "ridgeline": {
116
125
  "description": "Crêtes de densité superposées comparant une colonne numérique entre groupes ordonnés.",
117
126
  "emptyTitle": "Aucune crête à tracer",
118
- "emptyBody": "Aucune ligne ne correspond aux filtres pour les profils de densité."
127
+ "emptyBody": "Aucune ligne ne correspond aux filtres pour les profils de densité.",
128
+ "chartLabel": "Ridgeline"
119
129
  },
120
130
  "scatterBubble": {
121
131
  "description": "Deux colonnes numériques en points, avec une taille de bulle et une ligne de tendance en option.",
122
132
  "emptyTitle": "Aucun point à tracer",
123
- "emptyBody": "Aucune ligne ne correspond aux filtres pour les colonnes choisies."
133
+ "emptyBody": "Aucune ligne ne correspond aux filtres pour les colonnes choisies.",
134
+ "chartLabel": "Scatter plot"
124
135
  },
125
136
  "hexbin": {
126
137
  "description": "Densité hexagonale de deux colonnes numériques, teintée selon le nombre de lignes par tuile.",
127
138
  "emptyTitle": "Aucune densité à tracer",
128
- "emptyBody": "Aucune ligne ne correspond aux filtres à regrouper."
139
+ "emptyBody": "Aucune ligne ne correspond aux filtres à regrouper.",
140
+ "chartLabel": "Density hexbin"
129
141
  },
130
142
  "correlationMatrix": {
131
143
  "description": "Corrélation de Pearson entre colonnes numériques choisies, du fortement positif au fortement négatif.",
132
144
  "emptyTitle": "Rien à corréler",
133
- "emptyBody": "Choisissez au moins deux colonnes numériques avec des lignes correspondantes."
145
+ "emptyBody": "Choisissez au moins deux colonnes numériques avec des lignes correspondantes.",
146
+ "chartLabel": "Correlation matrix"
134
147
  },
135
148
  "parallelCoordinates": {
136
149
  "description": "Chaque enregistrement en ligne sur plusieurs axes numériques normalisés, coloré par catégorie.",
137
150
  "emptyTitle": "Aucun enregistrement à tracer",
138
- "emptyBody": "Aucune ligne ne correspond aux filtres sur les axes choisis."
151
+ "emptyBody": "Aucune ligne ne correspond aux filtres sur les axes choisis.",
152
+ "chartLabel": "Parallel coordinates"
153
+ },
154
+ "unexpectedShape": "Unexpected data shape.",
155
+ "lineArea": {
156
+ "chartLabel": "Line chart",
157
+ "description": "A metric over time as a line with a soft area fill, with an optional dashed prior-period comparison."
158
+ },
159
+ "bar": {
160
+ "chartLabel": "Bar chart",
161
+ "description": "Categorical or time-bucketed values as vertical bars, with an optional highlight on the largest or current bar."
162
+ },
163
+ "donut": {
164
+ "chartLabel": "Donut chart",
165
+ "otherLabel": "Other",
166
+ "description": "Category shares as donut slices with a legend and centre total, folding small slices into an Other bucket."
167
+ },
168
+ "bullet": {
169
+ "chartLabel": "Bullet chart",
170
+ "description": "Progress toward a goal as a measure bar over qualitative bands, with a target tick per row.",
171
+ "emptyTitle": "No goals to track",
172
+ "emptyBody": "Add measures with targets to compare against."
173
+ },
174
+ "rankingBars": {
175
+ "chartLabel": "Ranking",
176
+ "description": "A top-N ranking as horizontal bars — the leader at full strength, the rest dimmed — with values alongside.",
177
+ "emptyTitle": "Nothing to rank",
178
+ "emptyBody": "No records matched this breakdown yet."
179
+ },
180
+ "pareto": {
181
+ "chartLabel": "Pareto chart",
182
+ "description": "Sorted category bars under a cumulative-percent line, with an optional 80% cutline.",
183
+ "emptyTitle": "No categories to chart",
184
+ "emptyBody": "No grouped counts were returned for this range."
185
+ },
186
+ "waterfall": {
187
+ "chartLabel": "Waterfall chart",
188
+ "description": "A floating-bar bridge from a start total through positive and negative steps to a net total.",
189
+ "emptyTitle": "No movement to bridge",
190
+ "emptyBody": "No start, change, or total steps were found."
191
+ },
192
+ "marimekko": {
193
+ "chartLabel": "Marimekko chart",
194
+ "description": "A two-level mix as variable-width stacked columns — width for the outer share, segments for the inner split.",
195
+ "emptyTitle": "No mix to break down",
196
+ "emptyBody": "No two-level breakdown was returned for this range."
197
+ },
198
+ "stackedBar100": {
199
+ "chartLabel": "100% stacked bar",
200
+ "description": "One 100% bar split into proportional segments with a legend, comparing shares of a whole.",
201
+ "emptyTitle": "No shares to split",
202
+ "emptyBody": "No parts were returned for this breakdown."
203
+ },
204
+ "slope": {
205
+ "chartLabel": "Slope chart",
206
+ "description": "Two periods joined by one line per record, coloured by whether the value rose or fell.",
207
+ "emptyTitle": "No period shift to show",
208
+ "emptyBody": "No before/after values were returned to compare."
209
+ },
210
+ "multiline": {
211
+ "chartLabel": "Multi-line chart",
212
+ "description": "Several series as overlaid lines with end labels, comparing trends over the same time span.",
213
+ "emptyTitle": "No series to plot",
214
+ "emptyBody": "No time series matched the filters for this range."
215
+ },
216
+ "stream": {
217
+ "chartLabel": "Stream chart",
218
+ "description": "Stacked bands flowing around a centre line, showing how a total's composition shifts over time.",
219
+ "emptyTitle": "No flow to chart",
220
+ "emptyBody": "No stacked series were returned for this range."
221
+ },
222
+ "forecast": {
223
+ "chartLabel": "Forecast chart",
224
+ "nowLabel": "Now",
225
+ "forecastLabel": "Forecast",
226
+ "actualLabel": "Actual",
227
+ "description": "A history line extended by a dashed projection inside a widening confidence band, split at a now divider.",
228
+ "emptyTitle": "No history to project",
229
+ "emptyBody": "No past points were returned to forecast from."
230
+ },
231
+ "anomaly": {
232
+ "chartLabel": "Anomaly chart",
233
+ "description": "A value line over its expected range, flagging points that fall outside it with halo dots.",
234
+ "emptyTitle": "No signal to scan",
235
+ "emptyBody": "No points were returned to check for anomalies."
236
+ },
237
+ "candlestick": {
238
+ "chartLabel": "Candlestick chart",
239
+ "livePillLabel": "Live",
240
+ "description": "Open-high-low-close candles coloured by direction, with a dashed last-price line and an optional live pill.",
241
+ "emptyTitle": "No candles to chart",
242
+ "emptyBody": "No open-high-low-close rows matched this range."
243
+ },
244
+ "bump": {
245
+ "chartLabel": "Bump chart",
246
+ "description": "Rank-over-time lines showing how competitors trade places between periods.",
247
+ "emptyTitle": "No ranks to trace",
248
+ "emptyBody": "No period-over-period rankings were returned."
249
+ },
250
+ "timelineLanes": {
251
+ "chartLabel": "Timeline lanes",
252
+ "laneLabel": "Events",
253
+ "description": "Dated events as pills on horizontal swimlanes sharing one time axis.",
254
+ "emptyTitle": "No events to place",
255
+ "emptyBody": "No events matched the filters for this range."
256
+ },
257
+ "treemap": {
258
+ "chartLabel": "Treemap",
259
+ "otherLabel": "Other",
260
+ "description": "A part-to-whole breakdown as squarified tiles sized by value, folding small slices into an Other tile.",
261
+ "emptyTitle": "No slices to tile",
262
+ "emptyBody": "No categories were returned for this breakdown."
263
+ },
264
+ "sunburst": {
265
+ "chartLabel": "Sunburst",
266
+ "description": "A two-level hierarchy as nested rings — parents inside, their children outside — with a parent legend.",
267
+ "emptyTitle": "No rings to draw",
268
+ "emptyBody": "No grouped categories were returned to nest."
269
+ },
270
+ "funnel": {
271
+ "chartLabel": "Funnel",
272
+ "description": "Ordered shrinking stages with per-step continuation rates and an overall-conversion footer.",
273
+ "emptyTitle": "No stages to funnel",
274
+ "emptyBody": "No step counts were returned for this range."
275
+ },
276
+ "radialBar": {
277
+ "chartLabel": "Radial bar",
278
+ "description": "Up to four percentages as concentric progress rings with a dot legend.",
279
+ "emptyTitle": "No rings to fill",
280
+ "emptyBody": "No categories matched this breakdown yet."
281
+ },
282
+ "radar": {
283
+ "chartLabel": "Radar",
284
+ "description": "Several named axes on a polygon with one filled shape per series, against an optional target overlay.",
285
+ "emptyTitle": "No axes to compare",
286
+ "emptyBody": "No matrix of series and axes was returned."
287
+ },
288
+ "chord": {
289
+ "chartLabel": "Chord",
290
+ "description": "Pairwise flows as ribbons between nodes on a ring, with ribbon opacity weighted by volume.",
291
+ "emptyTitle": "No flows to link",
292
+ "emptyBody": "No connections between groups were returned."
293
+ },
294
+ "wordcloud": {
295
+ "chartLabel": "Word cloud",
296
+ "description": "Terms sized by frequency and flowed into rows, for a glanceable view of what dominates.",
297
+ "emptyTitle": "No terms to cloud",
298
+ "emptyBody": "No weighted terms matched the filters."
299
+ },
300
+ "cohortMatrix": {
301
+ "chartLabel": "Cohort retention",
302
+ "description": "Cohort rows against period columns, each cell shaded by retention or revenue."
303
+ },
304
+ "heatmapCalendar": {
305
+ "chartLabel": "Activity calendar",
306
+ "legendLessLabel": "Less",
307
+ "legendMoreLabel": "More",
308
+ "description": "A year of daily activity as a week-by-day grid shaded by intensity."
309
+ },
310
+ "heatMonth": {
311
+ "chartLabel": "Monthly activity",
312
+ "description": "One calendar month as a day grid shaded by each day's value."
313
+ },
314
+ "choroplethGrid": {
315
+ "chartLabel": "Regional breakdown",
316
+ "legendLowLabel": "Low",
317
+ "legendHighLabel": "High",
318
+ "description": "Regional values as a tinted US tilegram or compact grid, with an optional top-N ranking list."
319
+ },
320
+ "sankey": {
321
+ "chartLabel": "Flow",
322
+ "description": "Layered source-to-target flows as ribbons whose thickness encodes volume."
323
+ },
324
+ "sparkline": {
325
+ "description": "An inline micro-trend of recent values — no axes or labels — for KPI cards, table cells and list rows."
139
326
  }
140
327
  },
141
328
  "feeds": {
142
329
  "activityFeed": {
143
330
  "description": "Un fil continu de qui a fait quoi dans votre espace de travail, du plus récent au plus ancien.",
144
331
  "emptyTitle": "Aucune activité récente",
145
- "emptyBody": "Les actions de votre espace de travail apparaîtront ici."
332
+ "emptyBody": "Les actions de votre espace de travail apparaîtront ici.",
333
+ "viewAllLabel": "View all"
146
334
  },
147
335
  "notificationFeed": {
148
336
  "description": "Notifications groupées avec état non lu, filtres et actions intégrées.",
149
337
  "emptyTitle": "Aucune notification",
150
- "emptyBody": "Les nouvelles notifications apparaîtront ici."
338
+ "emptyBody": "Les nouvelles notifications apparaîtront ici.",
339
+ "allLabel": "All",
340
+ "unreadLabel": "Unread",
341
+ "mentionsLabel": "Mentions",
342
+ "filterLabel": "Notification filter",
343
+ "markAllReadLabel": "Mark all read",
344
+ "todayLabel": "Today",
345
+ "yesterdayLabel": "Yesterday",
346
+ "earlierLabel": "Earlier",
347
+ "dismissLabel": "Dismiss",
348
+ "emptyUnreadTitle": "You're all caught up",
349
+ "emptyMentionsTitle": "No mentions"
151
350
  },
152
351
  "realtimeFeed": {
153
352
  "description": "Un flux d’événements en direct qui ajoute les nouveaux éléments en tête.",
154
353
  "emptyTitle": "En attente d’événements",
155
- "emptyBody": "Les événements en direct s’afficheront au fur et à mesure."
354
+ "emptyBody": "Les événements en direct s’afficheront au fur et à mesure.",
355
+ "liveLabel": "Live",
356
+ "pausedLabel": "Paused",
357
+ "pauseLabel": "Pause",
358
+ "resumeLabel": "Resume"
156
359
  },
157
360
  "timelineVertical": {
158
361
  "description": "Une chronologie verticale d’événements, de versions, d’incidents ou d’étapes d’exécution.",
@@ -181,22 +384,41 @@ export default {
181
384
  "calendarMonth": {
182
385
  "description": "Une grille mensuelle des événements planifiés avec des puces par jour et la navigation entre les mois.",
183
386
  "emptyTitle": "Rien de planifié",
184
- "emptyBody": "Les événements planifiés apparaîtront dans ce calendrier."
387
+ "emptyBody": "Les événements planifiés apparaîtront dans ce calendrier.",
388
+ "previousLabel": "Previous month",
389
+ "nextLabel": "Next month",
390
+ "overflowLabel": "+{count} more"
185
391
  },
186
392
  "dayAgenda": {
187
393
  "description": "Les événements du jour sélectionné sous forme d'agenda chronologique.",
188
394
  "emptyTitle": "Rien de planifié",
189
- "emptyBody": "Les événements du jour sélectionné apparaîtront ici."
395
+ "emptyBody": "Les événements du jour sélectionné apparaîtront ici.",
396
+ "countLabel": "{count, plural, one {{n} event} other {{n} events}}"
190
397
  },
191
398
  "scheduleMatrix": {
192
399
  "description": "Une grille de postes par ressource et par jour avec la couverture quotidienne et une légende.",
193
400
  "emptyTitle": "Aucun poste planifié",
194
- "emptyBody": "Les postes attribués apparaîtront dans ce planning."
401
+ "emptyBody": "Les postes attribués apparaîtront dans ce planning.",
402
+ "resourceLabel": "Resource",
403
+ "coverageLabel": "Coverage",
404
+ "hoursLabel": "{hours}h"
195
405
  },
196
406
  "capacityBoard": {
197
407
  "description": "Des barres d'utilisation par membre avec une répartition par projet et un statut de charge.",
198
408
  "emptyTitle": "Aucune donnée de charge",
199
- "emptyBody": "L'utilisation des membres apparaîtra ici une fois les affectations créées."
409
+ "emptyBody": "L'utilisation des membres apparaîtra ici une fois les affectations créées.",
410
+ "status": {
411
+ "overloaded": "Overloaded",
412
+ "balanced": "Balanced",
413
+ "available": "Available"
414
+ },
415
+ "utilizationLabel": "{name}: {util}%",
416
+ "assignmentLabel": "{project} · {hours}h",
417
+ "periodLabel": "h · {period}",
418
+ "period": {
419
+ "week": "week",
420
+ "month": "month"
421
+ }
200
422
  },
201
423
  "calendarLegendFilter": {
202
424
  "description": "Catégories d'événements avec compteur ; cocher filtre le calendrier voisin.",
@@ -236,12 +458,28 @@ export default {
236
458
  "masterList": {
237
459
  "description": "Une liste sélectionnable d’enregistrements qui pilote un volet de détail.",
238
460
  "emptyTitle": "Aucun élément",
239
- "emptyBody": "Les éléments apparaîtront ici une fois créés."
461
+ "emptyBody": "Les éléments apparaîtront ici une fois créés.",
462
+ "allLabel": "All",
463
+ "toggleLabel": "Toggle {title}",
464
+ "progressLabel": "{title} progress"
240
465
  },
241
466
  "logTable": {
242
467
  "description": "Un journal d’événements avec recherche, filtre d’erreurs et actions par ligne.",
243
468
  "emptyTitle": "Aucune entrée de journal",
244
- "emptyBody": "Les événements seront enregistrés ici au fur et à mesure."
469
+ "emptyBody": "Les événements seront enregistrés ici au fur et à mesure.",
470
+ "liveLabel": "Live",
471
+ "placeholder": "Search logs…",
472
+ "filterLabel": "Log filter",
473
+ "allLabel": "All",
474
+ "errorsLabel": "Errors",
475
+ "noMatchesLabel": "No matching entries",
476
+ "todayLabel": "Today",
477
+ "yesterdayLabel": "Yesterday",
478
+ "action": {
479
+ "retry": "retry",
480
+ "download": "download",
481
+ "inspect": "inspect"
482
+ }
245
483
  },
246
484
  "cardGallery": {
247
485
  "description": "Une galerie responsive de cartes d’entités avec statut et actions rapides.",
@@ -251,17 +489,23 @@ export default {
251
489
  "groupedSummaryTable": {
252
490
  "description": "Lignes groupées avec colonnes d’agrégats, détails dépliables et totaux.",
253
491
  "emptyTitle": "Aucune donnée de synthèse",
254
- "emptyBody": "Les totaux groupés apparaîtront ici dès qu’il y aura des données."
492
+ "emptyBody": "Les totaux groupés apparaîtront ici dès qu’il y aura des données.",
493
+ "groupLabel": "Group",
494
+ "totalsLabel": "Total"
255
495
  },
256
496
  "schemaTree": {
257
497
  "description": "Un explorateur de schémas, tables et colonnes avec badges de type et de clé.",
258
498
  "emptyTitle": "Aucun schéma analysé",
259
- "emptyBody": "Connectez une base de données pour explorer son schéma ici."
499
+ "emptyBody": "Connectez une base de données pour explorer son schéma ici.",
500
+ "treeLabel": "Schema",
501
+ "viewLabel": "view"
260
502
  },
261
503
  "toggleMatrix": {
262
504
  "description": "Une grille interactive de bascules booléennes pour rôles, règles ou canaux.",
263
505
  "emptyTitle": "Aucune matrice configurée",
264
- "emptyBody": "Les lignes et colonnes apparaîtront ici une fois configurées."
506
+ "emptyBody": "Les lignes et colonnes apparaîtront ici une fois configurées.",
507
+ "matrixLabel": "Permissions matrix",
508
+ "rowHeaderLabel": "Permission"
265
509
  },
266
510
  "sparklineTable": {
267
511
  "description": "Lignes de métriques avec micro-courbe, valeur actuelle et pastille d'évolution positive ou négative.",
@@ -294,6 +538,40 @@ export default {
294
538
  "emptyTitle": "Rien de détecté",
295
539
  "emptyBody": "Les tables et variables apparaîtront ici sous forme de puces une fois détectées.",
296
540
  "moreLabel": "+{n} de plus"
541
+ },
542
+ "dataGrid": {
543
+ "selectAllLabel": "Select all rows",
544
+ "selectRowLabel": "Select row",
545
+ "sortByLabel": "Sort by {column}",
546
+ "description": "The canonical CRUD grid with sortable columns, row selection, and type-aware cells."
547
+ },
548
+ "paginationFooter": {
549
+ "emptyLabel": "0 rows",
550
+ "ofLabel": "of",
551
+ "pageSizeLabel": "Rows",
552
+ "a11y": {
553
+ "pageSize": "Rows per page"
554
+ },
555
+ "prevLabel": "Previous page",
556
+ "nextLabel": "Next page",
557
+ "description": "A footer with the visible row range, prev/next paging, and a page-size select."
558
+ },
559
+ "bulkActionToolbar": {
560
+ "selectedLabel": "selected",
561
+ "clearLabel": "Clear selection",
562
+ "toolbarLabel": "Bulk actions",
563
+ "description": "A selection-aware toolbar showing the selected count and bulk actions."
564
+ },
565
+ "miniTable": {
566
+ "viewAllLabel": "View all",
567
+ "description": "A compact dashboard row list with mapped columns and a view-all link."
568
+ },
569
+ "revealLabel": "Reveal value",
570
+ "hideLabel": "Hide value",
571
+ "trueLabel": "true",
572
+ "falseLabel": "false",
573
+ "detailKeyValue": {
574
+ "description": "A record's fields as label/value rows with type-aware values."
297
575
  }
298
576
  },
299
577
  "boards": {
@@ -347,7 +625,8 @@ export default {
347
625
  "composerPlaceholder": "Écrire un message…",
348
626
  "sendLabel": "Envoyer",
349
627
  "attachLabel": "Ajouter une pièce jointe",
350
- "typingLabel": "en train d'écrire…"
628
+ "typingLabel": "en train d'écrire…",
629
+ "composerLabel": "Message"
351
630
  },
352
631
  "aiChatPanel": {
353
632
  "description": "Un panneau d'assistant pour poser des questions sur votre schéma et vos données.",
@@ -358,7 +637,9 @@ export default {
358
637
  "pendingLabel": "Réflexion…",
359
638
  "configureTitle": "Aucun fournisseur d'IA configuré",
360
639
  "configureBody": "Ajoutez une clé Anthropic ou OpenAI — ou pointez Adminium vers votre propre point de terminaison — pour poser des questions sur votre schéma.",
361
- "configureCtaLabel": "Configurer un fournisseur"
640
+ "configureCtaLabel": "Configurer un fournisseur",
641
+ "assistantLabel": "Assistant",
642
+ "composerLabel": "Ask a question"
362
643
  },
363
644
  "typingIndicator": {
364
645
  "description": "Un avatar et une ligne en italique « en train d’écrire… », liée à un booléen actif par conversation.",
@@ -395,7 +676,8 @@ export default {
395
676
  "emptyTitle": "Aucune région",
396
677
  "emptyBody": "Les lignes comportant un code de région et une valeur numérique apparaissent ici sous forme de tuiles teintées.",
397
678
  "legendLowLabel": "Faible",
398
- "legendHighLabel": "Élevé"
679
+ "legendHighLabel": "Élevé",
680
+ "chartLabel": "Regional breakdown"
399
681
  }
400
682
  },
401
683
  "domain": {
@@ -423,7 +705,9 @@ export default {
423
705
  "blockListLabel": "Blocs du document",
424
706
  "billedToLabel": "Facturé à",
425
707
  "issuedLabel": "Émis le",
426
- "dueLabel": "Échéance"
708
+ "dueLabel": "Échéance",
709
+ "noDocumentTitle": "No document yet",
710
+ "noDocumentBody": "Pick a starter template or add a block to begin."
427
711
  },
428
712
  "blockTotalsSummary": {
429
713
  "description": "Les totaux du document — sous-total, remise, taxe et total dû, recalculés à partir des lignes.",
@@ -451,12 +735,14 @@ export default {
451
735
  "blockBarChart": {
452
736
  "description": "Un mini-graphique à barres dans la couleur du document, dimensionné pour un bloc.",
453
737
  "emptyTitle": "Aucune donnée à représenter",
454
- "emptyBody": "Les barres apparaissent dès que le rapport contient une série."
738
+ "emptyBody": "Les barres apparaissent dès que le rapport contient une série.",
739
+ "a11yLabel": "Bar chart"
455
740
  },
456
741
  "blockLineChart": {
457
742
  "description": "Un mini-graphique en courbe avec aire remplie facultative, dimensionné pour un bloc.",
458
743
  "emptyTitle": "Aucune donnée à représenter",
459
- "emptyBody": "La courbe apparaît dès que le rapport contient une série."
744
+ "emptyBody": "La courbe apparaît dès que le rapport contient une série.",
745
+ "a11yLabel": "Line chart"
460
746
  },
461
747
  "blockTwoColTable": {
462
748
  "description": "Un tableau à deux colonnes avec une ligne d'en-tête stylisée et une colonne de valeurs en chasse fixe.",
@@ -514,7 +800,8 @@ export default {
514
800
  "emptyBody": "Les lignes de signature apparaissent dès que le document désigne un signataire.",
515
801
  "namePlaceholder": "Nom complet",
516
802
  "titlePlaceholder": "Fonction",
517
- "dateLabel": "Date"
803
+ "dateLabel": "Date",
804
+ "nameInputLabel": "Signature name"
518
805
  },
519
806
  "blockTermsCheckbox": {
520
807
  "description": "Une case pour les conditions, avec libellé modifiable.",
@@ -559,77 +846,159 @@ export default {
559
846
  "starterTemplatePicker": {
560
847
  "description": "Une grille de modèles prédéfinis avec vignettes générées ; en choisir un initialise un document complet.",
561
848
  "emptyTitle": "Aucun modèle",
562
- "emptyBody": "Définissez des modèles dans la configuration ou liez une table de modèles."
849
+ "emptyBody": "Définissez des modèles dans la configuration ou liez une table de modèles.",
850
+ "blankLabel": "Blank",
851
+ "kicker": {
852
+ "invoice": "Invoice",
853
+ "report": "Report",
854
+ "email": "Email"
855
+ }
563
856
  },
564
857
  "sloMonitorCard": {
565
858
  "description": "Carte SLA par service avec statut, disponibilité par rapport à la cible, bande de disponibilité quotidienne, budget d'erreur et latence p95.",
566
859
  "emptyTitle": "Aucun moniteur",
567
- "emptyBody": "Liez une table de moniteurs avec une colonne de statut et de disponibilité."
860
+ "emptyBody": "Liez une table de moniteurs avec une colonne de statut et de disponibilité.",
861
+ "targetLabel": "Target",
862
+ "budgetLabel": "Error budget",
863
+ "latencyLabel": "p95 latency",
864
+ "status": {
865
+ "operational": "Operational",
866
+ "degraded": "Degraded",
867
+ "down": "Down",
868
+ "unknown": "Unknown"
869
+ }
568
870
  },
569
871
  "uptimeSegmentBar": {
570
872
  "description": "Bandes journalières de type page de statut, colorées selon le statut du jour, avec bascule 30/90 jours.",
571
873
  "emptyTitle": "Aucun historique de disponibilité",
572
- "emptyBody": "Les lignes de statut quotidien apparaissent ici sous forme de bande."
874
+ "emptyBody": "Les lignes de statut quotidien apparaissent ici sous forme de bande.",
875
+ "daysAgoLabel": "{days} days ago",
876
+ "todayLabel": "Today",
877
+ "uptimeLabel": "uptime",
878
+ "period30Label": "30d",
879
+ "period90Label": "90d",
880
+ "status": {
881
+ "operational": "Operational",
882
+ "degraded": "Degraded",
883
+ "down": "Down",
884
+ "unknown": "No data"
885
+ }
573
886
  },
574
887
  "experimentVariantCompare": {
575
888
  "description": "Barres de conversion par variante avec le gain face au témoin et un indicateur de significativité.",
576
889
  "emptyTitle": "Aucune variante",
577
- "emptyBody": "Liez une table de variantes d'expérience avec des chiffres de conversion."
890
+ "emptyBody": "Liez une table de variantes d'expérience avec des chiffres de conversion.",
891
+ "controlLabel": "CONTROL",
892
+ "winnerLabel": "WINNER",
893
+ "significanceLabel": "Confidence",
894
+ "verdictSignificantLabel": "Statistically significant — safe to call.",
895
+ "verdictInconclusiveLabel": "Not yet significant — keep the test running.",
896
+ "countsLabel": "{users} participants · {conversions} conversions"
578
897
  },
579
898
  "creditCardTile": {
580
899
  "description": "Un moyen de paiement enregistré sous forme de carte de marque avec numéro masqué, titulaire et expiration.",
581
900
  "emptyTitle": "Aucun moyen de paiement",
582
- "emptyBody": "Ajoutez une carte pour la voir ici."
901
+ "emptyBody": "Ajoutez une carte pour la voir ici.",
902
+ "defaultLabel": "Default",
903
+ "setDefaultLabel": "Set default",
904
+ "manageLabel": "Manage",
905
+ "addLabel": "Add payment method",
906
+ "expiresLabel": "Expires"
583
907
  },
584
908
  "planPricingCards": {
585
909
  "description": "Paliers tarifaires avec bascule mensuel/annuel, listes de fonctionnalités et une offre mise en avant.",
586
910
  "emptyTitle": "Aucune offre",
587
- "emptyBody": "Liez une table d'offres avec un nom et un prix mensuel."
911
+ "emptyBody": "Liez une table d'offres avec un nom et un prix mensuel.",
912
+ "monthlyLabel": "Monthly",
913
+ "annualLabel": "Annual",
914
+ "popularLabel": "POPULAR",
915
+ "perMonthLabel": "/ month",
916
+ "billedAnnuallyLabel": "Billed {total} yearly",
917
+ "currentLabel": "Current plan",
918
+ "ctaLabel": "Choose plan"
588
919
  },
589
920
  "apiKeysPanel": {
590
921
  "description": "Clés d'API avec badges d'environnement, valeurs masquées, portées, dernière utilisation et actions de copie, de renouvellement et de révocation.",
591
922
  "emptyTitle": "Aucune clé d'API",
592
- "emptyBody": "Créez une clé pour commencer à appeler l'API."
923
+ "emptyBody": "Créez une clé pour commencer à appeler l'API.",
924
+ "revealedTitle": "Key created",
925
+ "revealedBody": "Copy it now — it is never shown again.",
926
+ "copyLabel": "Copy",
927
+ "copiedLabel": "Copied",
928
+ "revealLabel": "Reveal key",
929
+ "hideLabel": "Hide key",
930
+ "rollLabel": "Roll key",
931
+ "revokeLabel": "Revoke key",
932
+ "neverUsedLabel": "Never used",
933
+ "lastUsedLabel": "Last used {since}"
593
934
  },
594
935
  "apiPlayground": {
595
936
  "description": "Un compositeur de requête avec paramètres et volet de réponse. Il compose seulement et n'envoie jamais de vraie requête.",
596
937
  "emptyTitle": "Aucun point de terminaison sélectionné",
597
- "emptyBody": "Choisissez un point de terminaison pour composer une requête."
938
+ "emptyBody": "Choisissez un point de terminaison pour composer une requête.",
939
+ "sendLabel": "Send",
940
+ "requestLabel": "Request",
941
+ "responseLabel": "Response",
942
+ "paramsLabel": "Parameters",
943
+ "responsePlaceholder": "Send the request to see the response."
598
944
  },
599
945
  "codeSnippetBlock": {
600
946
  "description": "Un extrait de code copiable avec une puce de langage et des onglets optionnels par langage.",
601
947
  "emptyTitle": "Aucun extrait",
602
- "emptyBody": "Liez une colonne de code ou définissez un extrait statique dans la configuration."
948
+ "emptyBody": "Liez une colonne de code ou définissez un extrait statique dans la configuration.",
949
+ "copyLabel": "Copy",
950
+ "copiedLabel": "Copied"
603
951
  },
604
952
  "webhookEndpointsList": {
605
953
  "description": "Points de terminaison webhook avec leur événement, URL cible, dernier déclenchement et interrupteur d'activation.",
606
954
  "emptyTitle": "Aucun point de terminaison",
607
- "emptyBody": "Ajoutez un point de terminaison webhook pour recevoir les événements de table."
955
+ "emptyBody": "Ajoutez un point de terminaison webhook pour recevoir les événements de table.",
956
+ "neverFiredLabel": "Never fired",
957
+ "lastFiredLabel": "Last fired {since}"
608
958
  },
609
959
  "resourceApiCard": {
610
960
  "description": "La surface d'API générée d'une table : nombre de lignes, badge de sécurité, puces de méthode et volume de requêtes.",
611
961
  "emptyTitle": "Aucune ressource",
612
- "emptyBody": "Liez une table pour afficher sa surface d'API générée."
962
+ "emptyBody": "Liez une table pour afficher sa surface d'API générée.",
963
+ "rlsLabel": "RLS",
964
+ "publicLabel": "Public",
965
+ "rowsLabel": "rows",
966
+ "perDayLabel": "{count}/day"
613
967
  },
614
968
  "liveTimer": {
615
969
  "description": "Un chronomètre démarrer/arrêter pour une tâche ; l'arrêter enregistre une entrée de temps.",
616
970
  "emptyTitle": "Aucun chronomètre",
617
- "emptyBody": "Liez une ligne d'entrée de temps avec une tâche et une colonne de durée."
971
+ "emptyBody": "Liez une ligne d'entrée de temps avec une tâche et une colonne de durée.",
972
+ "startLabel": "Start",
973
+ "stopLabel": "Stop",
974
+ "taskPlaceholder": "Untitled task"
618
975
  },
619
976
  "syncStatusCard": {
620
977
  "description": "Identité de la connexion, latence, lignes synchronisées et planning de synchronisation, avec une action de synchronisation immédiate.",
621
978
  "emptyTitle": "Aucune connexion",
622
- "emptyBody": "Liez une ligne de connexion pour afficher son état de synchronisation."
979
+ "emptyBody": "Liez une ligne de connexion pour afficher son état de synchronisation.",
980
+ "connectedLabel": "Connected",
981
+ "disconnectedLabel": "Disconnected",
982
+ "rowsSyncedLabel": "Rows synced",
983
+ "tablesLabel": "Tables",
984
+ "lastSyncLabel": "Last sync",
985
+ "nextSyncLabel": "Next sync",
986
+ "syncingLabel": "Syncing…",
987
+ "syncActionLabel": "Sync now"
623
988
  },
624
989
  "ipAllowlistCard": {
625
990
  "description": "Adresses IP de sortie fixes à autoriser dans un pare-feu, chacune avec un bouton de copie.",
626
991
  "emptyTitle": "Aucune IP de sortie",
627
- "emptyBody": "Les adresses de sortie apparaissent ici une fois la connexion provisionnée."
992
+ "emptyBody": "Les adresses de sortie apparaissent ici une fois la connexion provisionnée.",
993
+ "copyLabel": "Copy",
994
+ "copiedLabel": "Copied"
628
995
  },
629
996
  "onboardingChecklist": {
630
997
  "description": "Étapes de configuration avec estimations de durée et actions, au-dessus d'un anneau et d'une barre de progression recalculés en direct.",
631
998
  "emptyTitle": "Rien à configurer",
632
- "emptyBody": "Ajoutez des étapes d'intégration dans la configuration ou liez une table d'étapes."
999
+ "emptyBody": "Ajoutez des étapes d'intégration dans la configuration ou liez une table d'étapes.",
1000
+ "progressLabel": "{done} of {total} done",
1001
+ "celebrateTitle": "All done"
633
1002
  },
634
1003
  "testimonialCard": {
635
1004
  "description": "Une citation client avec avatar et attribution.",
@@ -672,7 +1041,8 @@ export default {
672
1041
  "imageBoard": {
673
1042
  "description": "Une grille de moodboard avec emplacements d'images et légendes, pour les tables contenant des URL d'images.",
674
1043
  "emptyTitle": "Aucune image pour l'instant",
675
- "emptyBody": "Les images de référence apparaîtront sur ce tableau."
1044
+ "emptyBody": "Les images de référence apparaîtront sur ce tableau.",
1045
+ "placeholder": "Drop reference"
676
1046
  },
677
1047
  "linkList": {
678
1048
  "description": "Liens de référence avec titres et URL, ouverts dans un nouvel onglet.",
@@ -712,13 +1082,17 @@ export default {
712
1082
  "done": "Terminé",
713
1083
  "successTitle": "Enregistrement créé",
714
1084
  "successBody": "L’enregistrement a été sauvegardé.",
715
- "required": "Ce champ est obligatoire."
1085
+ "required": "Ce champ est obligatoire.",
1086
+ "titleLabel": "Create record",
1087
+ "closeLabel": "Close"
716
1088
  },
717
1089
  "drawerForm": {
718
1090
  "description": "Un panneau latéral de création ou d’édition pour les enregistrements à nombreux champs.",
719
1091
  "trigger": "Nouveau",
720
1092
  "submit": "Enregistrer",
721
- "cancel": "Annuler"
1093
+ "cancel": "Annuler",
1094
+ "titleLabel": "New record",
1095
+ "closeLabel": "Close"
722
1096
  },
723
1097
  "stepper": {
724
1098
  "description": "Un indicateur d’étapes montrant l’avancement d’un parcours en plusieurs étapes.",
@@ -768,7 +1142,23 @@ export default {
768
1142
  "operator": "Opérateur",
769
1143
  "value": "Valeur",
770
1144
  "valuePlaceholder": "Valeur…",
771
- "emptyBody": "Aucune condition — ajoutez-en une pour définir ce segment."
1145
+ "emptyBody": "Aucune condition — ajoutez-en une pour définir ce segment.",
1146
+ "op": {
1147
+ "eq": "is",
1148
+ "neq": "is not",
1149
+ "gt": "is greater than",
1150
+ "gte": "is at least",
1151
+ "lt": "is less than",
1152
+ "lte": "is at most",
1153
+ "contains": "contains",
1154
+ "not-contains": "does not contain",
1155
+ "starts-with": "starts with",
1156
+ "in": "is one of",
1157
+ "before": "is before",
1158
+ "after": "is after",
1159
+ "is-null": "is empty",
1160
+ "is-not-null": "is not empty"
1161
+ }
772
1162
  },
773
1163
  "flowBuilder": {
774
1164
  "description": "Un canevas vertical de workflow : étapes déclencheur, condition et action.",
@@ -833,14 +1223,27 @@ export default {
833
1223
  "required": "Obligatoire",
834
1224
  "questionPlaceholder": "Posez une question…",
835
1225
  "emptyTitle": "Aucune question",
836
- "emptyBody": "Choisissez un type de question pour commencer votre sondage."
1226
+ "emptyBody": "Choisissez un type de question pour commencer votre sondage.",
1227
+ "questionLabel": "Question",
1228
+ "dropdownPlaceholder": "Choose…",
1229
+ "kind": {
1230
+ "single-choice": "Single choice",
1231
+ "multi-choice": "Multiple choice",
1232
+ "dropdown": "Dropdown",
1233
+ "short-text": "Short text",
1234
+ "long-text": "Long text",
1235
+ "rating": "Star rating",
1236
+ "nps": "NPS 0–10",
1237
+ "date": "Date"
1238
+ }
837
1239
  },
838
1240
  "inlineEditableField": {
839
1241
  "description": "Une valeur modifiable d’un clic dans un document ou un canevas.",
840
1242
  "edit": "Modifier",
841
1243
  "save": "Enregistrer",
842
1244
  "cancel": "Annuler",
843
- "empty": "Vide"
1245
+ "empty": "Vide",
1246
+ "valueLabel": "Value"
844
1247
  },
845
1248
  "passwordStrengthMeter": {
846
1249
  "description": "Un indicateur en quatre segments de la robustesse du mot de passe.",
@@ -865,7 +1268,7 @@ export default {
865
1268
  "navigate": "Naviguer",
866
1269
  "select": "Ouvrir",
867
1270
  "close": "Fermer",
868
- "emptyTitle": "Aucun résultat",
1271
+ "emptyTitle": "No results for \"{query}\"",
869
1272
  "emptyBody": "Commencez à taper pour rechercher.",
870
1273
  "groupActions": "Actions",
871
1274
  "groupNavigate": "Naviguer",
@@ -881,7 +1284,9 @@ export default {
881
1284
  "all": "Tout",
882
1285
  "summary": "{count} résultats pour « {query} »",
883
1286
  "emptyTitle": "Aucun résultat",
884
- "emptyBody": "Essayez un autre terme de recherche."
1287
+ "emptyBody": "Essayez un autre terme de recherche.",
1288
+ "searchLabel": "Search",
1289
+ "facetRailLabel": "Filter by type"
885
1290
  },
886
1291
  "breadcrumb": {
887
1292
  "description": "Le fil d’Ariane de l’enregistrement ou du dossier courant.",
@@ -900,11 +1305,23 @@ export default {
900
1305
  "description": "L’aide-mémoire des raccourcis clavier.",
901
1306
  "footerHint": "Appuyez sur ? à tout moment",
902
1307
  "then": "puis",
903
- "emptyTitle": "Aucun raccourci enregistré."
1308
+ "emptyTitle": "Aucun raccourci enregistré.",
1309
+ "generalGroupLabel": "General",
1310
+ "navigationGroupLabel": "Navigation",
1311
+ "recordsGroupLabel": "Records",
1312
+ "openCommandPaletteLabel": "Open command palette",
1313
+ "searchLabel": "Search",
1314
+ "showShortcutsLabel": "Show shortcuts",
1315
+ "goToDashboardLabel": "Go to dashboard",
1316
+ "goToOrdersLabel": "Go to orders",
1317
+ "newRecordLabel": "New record",
1318
+ "saveLabel": "Save",
1319
+ "undoLabel": "Undo"
904
1320
  },
905
1321
  "avatarStack": {
906
1322
  "description": "Des avatars superposés avec débordement « +N » et présence optionnelle.",
907
- "online": "{count} en ligne"
1323
+ "online": "{count} en ligne",
1324
+ "a11yLabel": "People"
908
1325
  }
909
1326
  },
910
1327
  "system": {
@@ -977,6 +1394,12 @@ export default {
977
1394
  "tls": "TLS",
978
1395
  "auth": "Authentification",
979
1396
  "latency": "Latence"
1397
+ },
1398
+ "widgetMissing": {
1399
+ "description": "The fallback card shown when a stored page references a widget that is not installed.",
1400
+ "title": "Widget unavailable",
1401
+ "bodyLead": "No widget is registered as",
1402
+ "bodyTail": "It may belong to a newer version or an uninstalled extension."
980
1403
  }
981
1404
  }
982
1405
  },
@@ -989,6 +1412,351 @@ export default {
989
1412
  "resized": "{title} redimensionné à {w} colonnes sur {h} lignes.",
990
1413
  "committed": "{title} placé à la colonne {col}, ligne {row}.",
991
1414
  "reverted": "{title} remis à sa position initiale."
1415
+ },
1416
+ "draggableRole": "draggable widget"
1417
+ },
1418
+ "templates": {
1419
+ "crud": {
1420
+ "newRow": "New row",
1421
+ "exportAction": "Export",
1422
+ "searchPlaceholder": "Search {table}…",
1423
+ "removeFilter": "Remove {column} filter",
1424
+ "queryFailed": "Query failed",
1425
+ "loadingRows": "Loading rows",
1426
+ "noMatchesTitle": "No matching rows",
1427
+ "emptyTitle": "{count, plural, one {No {entity} yet} other {No {entity}s yet}}",
1428
+ "createTitle": "Add {entity}",
1429
+ "createSubtitle": "Creates one row in {table}.",
1430
+ "createSubmit": "Add {entity}",
1431
+ "createSuccessTitle": "{name} added",
1432
+ "createSuccessBody": "You can undo this from the toast.",
1433
+ "editTitle": "Edit {entity}",
1434
+ "saveSubmit": "Save changes",
1435
+ "deleteTitle": "Delete {entity}",
1436
+ "deletePreflight": "Checking references…",
1437
+ "deleteNoReferences": "This row has no inbound references.",
1438
+ "deleteConsequencesIntro": "Deleting this row also affects:",
1439
+ "referenceRows": "{count, plural, one {{n} row} other {{n} rows}}",
1440
+ "confirmPrompt": "Type {value} to confirm",
1441
+ "bulkDeleteTitle": "{count, plural, one {Delete {n} row} other {Delete {n} rows}}",
1442
+ "bulkDeleteBody": "Referential consequences apply to every selected row.",
1443
+ "bulkDeleteConfirm": "Delete rows",
1444
+ "uniqueHelper": "Must be unique in {table}.",
1445
+ "uniqueHelperCounted": "{count, plural, one {Checked against {n} row.} other {Checked against {n} rows.}}",
1446
+ "toast": {
1447
+ "created": "{entity} created.",
1448
+ "createFailed": "Create failed.",
1449
+ "saved": "Changes saved.",
1450
+ "updateFailed": "Update failed.",
1451
+ "deleted": "{name} deleted.",
1452
+ "deleteFailed": "Delete failed.",
1453
+ "bulkDeleted": "{count, plural, one {{n} row deleted.} other {{n} rows deleted.}}",
1454
+ "bulkDeleteFailed": "Bulk delete failed.",
1455
+ "undone": "Change undone.",
1456
+ "undoFailed": "Undo failed."
1457
+ },
1458
+ "detail": {
1459
+ "fields": "Fields",
1460
+ "inboundReferences": "inbound references",
1461
+ "relatedCount": "{count, plural, one {{n} related record in {table}} other {{n} related records in {table}}}",
1462
+ "loadError": "Failed to load the record."
1463
+ }
1464
+ },
1465
+ "queue": {
1466
+ "allSegment": "All",
1467
+ "daysUnit": "{count, plural, one {{count} day} other {{count} days}}",
1468
+ "approvedToast": "{count} approved.",
1469
+ "rejectedToast": "{count} rejected.",
1470
+ "undoneToast": "Decision undone.",
1471
+ "undoFailedToast": "Could not undo this decision.",
1472
+ "failedToast": "Decision failed.",
1473
+ "invalidConfig": "This queue’s stored configuration is invalid. Regenerate the page to restore it.",
1474
+ "queueLabel": "Queue",
1475
+ "statusFilterLabel": "Status filter",
1476
+ "errorTitle": "This queue failed to load",
1477
+ "loading": "Loading queue",
1478
+ "emptyTitle": "Nothing in the queue",
1479
+ "emptyBody": "New requests appear here as they arrive.",
1480
+ "caughtUpTitle": "You're all caught up",
1481
+ "caughtUpBody": "No requests in this tab right now.",
1482
+ "selectItem": "Select {title}",
1483
+ "selectPrompt": "Select a request",
1484
+ "selectBody": "Choose an item to review its details.",
1485
+ "rejectTitle": "Reject requests",
1486
+ "rejectCount": "Selected · {count}",
1487
+ "rejectPlaceholder": "Add a note for the requester…",
1488
+ "rejectReasonLabel": "Rejection reason",
1489
+ "rejectNote": "The requester will be notified with your note."
1490
+ },
1491
+ "dashboard": {
1492
+ "invalidLayout": "This dashboard’s stored layout is invalid. Regenerate the page or reset its layout."
1493
+ },
1494
+ "builder": {
1495
+ "publish": "Publish",
1496
+ "paletteTitle": "Blocks",
1497
+ "inspectorTitle": "Inspector",
1498
+ "startFromTemplate": "Start from a template",
1499
+ "untitledDoc": "Untitled document",
1500
+ "invalidConfig": "This builder page’s stored config is invalid. Regenerate the page or reset it.",
1501
+ "starterPicker": {
1502
+ "subtitle": "Selection replaces the current draft."
1503
+ },
1504
+ "inspector": {
1505
+ "titleLabel": "Title",
1506
+ "numberLabel": "Number",
1507
+ "currencyLabel": "Currency",
1508
+ "taxRateLabel": "Tax rate %",
1509
+ "modulesLabel": "Modules"
1510
+ },
1511
+ "summary": {
1512
+ "questions": "Questions",
1513
+ "estLength": "Est. length",
1514
+ "estMinutes": "~{minutes} min",
1515
+ "steps": "Steps",
1516
+ "triggers": "Triggers",
1517
+ "conditions": "Conditions",
1518
+ "actions": "Actions",
1519
+ "triggerLocked": "The trigger step can’t be removed."
1520
+ },
1521
+ "publishModal": {
1522
+ "confirmTitle": "Publish survey?",
1523
+ "confirmSubtitle": "Review before it goes live.",
1524
+ "confirmCta": "Publish survey",
1525
+ "publishedTitle": "Survey published",
1526
+ "publishedSubtitle": "Your survey is live and collecting responses right now."
1527
+ },
1528
+ "blocks": {
1529
+ "block-totals-summary": "Totals summary",
1530
+ "block-line-items": "Line items",
1531
+ "block-kpi-row": "KPI row",
1532
+ "block-bar-chart": "Bar chart",
1533
+ "block-line-chart": "Line chart",
1534
+ "block-two-col-table": "Two-column table",
1535
+ "block-tax-breakdown": "Tax breakdown",
1536
+ "block-multi-currency": "Multi-currency",
1537
+ "block-payment-history": "Payment history",
1538
+ "block-discount-codes": "Discount codes",
1539
+ "block-loyalty-banner": "Loyalty points",
1540
+ "block-recurring-banner": "Recurring",
1541
+ "block-qr-pay": "Payment QR",
1542
+ "block-delivery-stepper": "Delivery timeline",
1543
+ "block-signature": "Signature",
1544
+ "block-terms-checkbox": "Terms",
1545
+ "block-approval": "Approval",
1546
+ "block-attachments": "Attachments",
1547
+ "block-late-fees": "Late fees",
1548
+ "block-image-placeholder": "Image",
1549
+ "block-contact": "Contact",
1550
+ "block-highlight-box": "Highlight box"
1551
+ },
1552
+ "starters": {
1553
+ "titles": {
1554
+ "st-standard": "Standard invoice",
1555
+ "st-recurring": "Recurring subscription",
1556
+ "st-deposit": "Deposit request",
1557
+ "st-credit-note": "Credit note",
1558
+ "st-late-reminder": "Late-payment reminder",
1559
+ "st-quote": "Quote / estimate",
1560
+ "st-proforma": "Pro forma",
1561
+ "st-receipt": "Payment receipt",
1562
+ "st-retainer": "Retainer",
1563
+ "st-usage": "Usage-based invoice",
1564
+ "st-milestone": "Project milestone",
1565
+ "st-donation": "Donation receipt (Tax ID)",
1566
+ "st-monthly": "Monthly summary",
1567
+ "st-quarterly": "Quarterly review",
1568
+ "st-usage-report": "Usage breakdown",
1569
+ "st-exec": "Executive one-pager",
1570
+ "st-welcome": "Welcome email",
1571
+ "st-receipt-email": "Invoice receipt",
1572
+ "st-digest": "Weekly digest",
1573
+ "st-dunning": "Payment reminder"
1574
+ },
1575
+ "categories": {
1576
+ "billing": "Billing",
1577
+ "sales": "Sales",
1578
+ "nonProfit": "Non-profit",
1579
+ "reports": "Reports",
1580
+ "lifecycle": "Lifecycle",
1581
+ "transactional": "Transactional",
1582
+ "marketing": "Marketing"
1583
+ }
1584
+ }
1585
+ },
1586
+ "common": {
1587
+ "clearFilters": "Clear filters",
1588
+ "noMatchesBody": "Try a different search or remove a filter.",
1589
+ "detailLabel": "Detail",
1590
+ "loadingRecord": "Loading record"
1591
+ },
1592
+ "directory": {
1593
+ "invalidConfig": "This directory’s stored configuration is invalid. Regenerate the page to restore it.",
1594
+ "searchPlaceholder": "Search people…",
1595
+ "memberCount": "{count, plural, one {{n} person} other {{n} people}}",
1596
+ "errorTitle": "This directory failed to load",
1597
+ "loading": "Loading people",
1598
+ "emptyTitle": "No people yet",
1599
+ "emptyBody": "People appear here as rows land in the table.",
1600
+ "noMatchesTitle": "No matching people",
1601
+ "detailTitle": "Person"
1602
+ },
1603
+ "masterDetail": {
1604
+ "invalidConfig": "This page’s stored configuration is invalid. Regenerate the page to restore it.",
1605
+ "railTitle": "Records",
1606
+ "errorTitle": "This list failed to load",
1607
+ "loading": "Loading records",
1608
+ "emptyBody": "Records appear here as rows land in the table.",
1609
+ "noMatchesTitle": "No matching records",
1610
+ "noMatchesBody": "Try removing a filter.",
1611
+ "selectPrompt": "Select a record",
1612
+ "selectBody": "Choose an item from the list to see its details."
1613
+ },
1614
+ "chat": {
1615
+ "invalidLayout": "This chat page’s stored layout is invalid. Regenerate the page or reset its layout.",
1616
+ "noInboxTitle": "No inbox on this page",
1617
+ "noInboxBody": "Regenerate the page.",
1618
+ "conversationsFailed": "The conversation query failed",
1619
+ "messagesFailed": "The messages query failed",
1620
+ "loadingConversations": "Loading conversations",
1621
+ "loadingMessages": "Loading messages",
1622
+ "selectTitle": "Select a conversation",
1623
+ "selectBody": "Pick a conversation from the inbox to read its messages."
1624
+ },
1625
+ "files": {
1626
+ "allFiles": "All files",
1627
+ "recent": "Recent",
1628
+ "starred": "Starred",
1629
+ "invalidLayout": "This files page’s stored layout is invalid. Regenerate the page or reset its layout.",
1630
+ "missingSlotTitle": "No file browser on this page",
1631
+ "missingSlotBody": "The stored layout has no browser slot. Regenerate the page.",
1632
+ "loadFailed": "The file query failed",
1633
+ "loading": "Loading files",
1634
+ "uploadsUnavailable": "Uploads are not available on this page yet.",
1635
+ "previewTitle": "File",
1636
+ "kindLabel": "Kind",
1637
+ "linkLabel": "Link"
1638
+ },
1639
+ "logViewer": {
1640
+ "invalidLayout": "This log page’s stored layout is invalid. Regenerate the page or reset its layout.",
1641
+ "levelFilterLabel": "Log level filter",
1642
+ "timeFilterLabel": "Time window filter",
1643
+ "window": {
1644
+ "1h": "1h",
1645
+ "24h": "24h",
1646
+ "7d": "7d"
1647
+ },
1648
+ "heldCount": "+{count}",
1649
+ "missingSlotTitle": "No log widget on this page",
1650
+ "missingSlotBody": "The stored layout has no log slot. Regenerate the page.",
1651
+ "loadFailed": "The log query failed",
1652
+ "loading": "Loading log entries",
1653
+ "traceTitle": "Trace",
1654
+ "latestTitle": "Latest activity",
1655
+ "backToLatest": "Back to latest",
1656
+ "eventFallback": "Event"
1657
+ },
1658
+ "calendar": {
1659
+ "eventCount": "{count, plural, one {{n} event} other {{n} events}}",
1660
+ "composePlaceholder": "Event title…",
1661
+ "addEvent": "Add event",
1662
+ "dateRange": "Date range",
1663
+ "agendaTitle": "Agenda",
1664
+ "categoriesTitle": "Categories",
1665
+ "upcomingTitle": "Upcoming",
1666
+ "invalidLayout": "This calendar’s stored layout is invalid. Regenerate the page or reset its layout."
1667
+ },
1668
+ "scheduler": {
1669
+ "previousWeek": "Previous week",
1670
+ "nextWeek": "Next week",
1671
+ "week": "Week",
1672
+ "month": "Month",
1673
+ "invalidLayout": "This schedule’s stored layout is invalid. Regenerate the page or reset its layout.",
1674
+ "shiftCount": "{count, plural, one {{n} shift} other {{n} shifts}}",
1675
+ "addShift": "Add shift"
1676
+ },
1677
+ "settings": {
1678
+ "title": "Notification settings",
1679
+ "subtitle": "Choose what you're notified about and how",
1680
+ "matrixLabel": "Notify me about",
1681
+ "rowHeader": "Event",
1682
+ "saved": "Saved",
1683
+ "unavailableTag": "Not available yet",
1684
+ "loading": "Loading preferences",
1685
+ "errorTitle": "These settings failed to load",
1686
+ "emptyTitle": "Nothing to configure yet",
1687
+ "emptyBody": "Notification events appear here as producers ship."
1688
+ },
1689
+ "pageCrud": {
1690
+ "description": "The canonical table page: searchable data grid, create/edit forms, safe deletes with reference checks, and undoable changes."
1691
+ },
1692
+ "pageDashboard": {
1693
+ "description": "A widget dashboard over your data: KPI cards, charts, and lists on an editable grid."
1694
+ },
1695
+ "pageBoard": {
1696
+ "description": "A kanban board grouped by a status field — drag cards between columns to update records."
1697
+ },
1698
+ "pageCalendar": {
1699
+ "description": "A month calendar with agenda, category filters, and quick event capture from a date field."
1700
+ },
1701
+ "pageScheduler": {
1702
+ "description": "A week-by-resource shift matrix with capacity tracking and coverage totals."
1703
+ },
1704
+ "pageDirectory": {
1705
+ "description": "A people directory with search, group filters, and a profile drawer."
1706
+ },
1707
+ "pageMasterDetail": {
1708
+ "description": "A list-beside-detail layout: pick a record on the left, work with it on the right."
1709
+ },
1710
+ "pageQueueInbox": {
1711
+ "description": "A review queue with approve/reject decisions, bulk actions, and undo."
1712
+ },
1713
+ "pageLogViewer": {
1714
+ "description": "A live-tailing log table with level and time filters and a trace side panel."
1715
+ },
1716
+ "pageFiles": {
1717
+ "description": "A file browser with smart folders, uploads, and a preview drawer."
1718
+ },
1719
+ "pageChat": {
1720
+ "description": "A conversation inbox beside a message thread, bound to your messages tables."
1721
+ },
1722
+ "pageBuilder": {
1723
+ "description": "A drag-and-drop document builder with block palette, inspector, and publish flow."
1724
+ },
1725
+ "pageWizard": {
1726
+ "description": "A multi-step guided flow that walks users through a structured process."
1727
+ },
1728
+ "pageSettings": {
1729
+ "description": "A notification-preferences matrix with per-channel toggles and autosave."
1730
+ }
1731
+ },
1732
+ "frame": {
1733
+ "noResult": "No result for widget",
1734
+ "emptyTitle": "No data for range",
1735
+ "loadError": "Something went wrong loading this widget.",
1736
+ "renderError": "This widget failed to render.",
1737
+ "refreshing": "Refreshing",
1738
+ "infoLabel": "Widget info",
1739
+ "menuLabel": "Widget menu"
1740
+ },
1741
+ "charts": {
1742
+ "livePillLabel": "Live",
1743
+ "forecast": {
1744
+ "nowLabel": "Now",
1745
+ "forecastLabel": "Forecast",
1746
+ "actualLabel": "Actual"
1747
+ },
1748
+ "otherLabel": "Other",
1749
+ "heat": {
1750
+ "lessLabel": "Less",
1751
+ "moreLabel": "More"
1752
+ },
1753
+ "choropleth": {
1754
+ "lowLabel": "Low",
1755
+ "highLabel": "High"
1756
+ },
1757
+ "funnel": {
1758
+ "stepConversion": "{pct}% continue",
1759
+ "overallConversion": "{pct}% overall"
992
1760
  }
993
1761
  }
994
1762
  };