@adminiumjs/i18n 0.1.2 → 0.2.2-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/a11y-keys.d.ts +17 -0
  2. package/dist/a11y-keys.d.ts.map +1 -0
  3. package/dist/a11y-keys.js +479 -0
  4. package/dist/a11y-keys.js.map +1 -0
  5. package/dist/create-i18n.d.ts.map +1 -1
  6. package/dist/create-i18n.js +38 -4
  7. package/dist/create-i18n.js.map +1 -1
  8. package/dist/editing.d.ts +17 -0
  9. package/dist/editing.d.ts.map +1 -0
  10. package/dist/editing.js +17 -0
  11. package/dist/editing.js.map +1 -0
  12. package/dist/fallback.d.ts +24 -0
  13. package/dist/fallback.d.ts.map +1 -0
  14. package/dist/fallback.js +41 -0
  15. package/dist/fallback.js.map +1 -0
  16. package/dist/format/index.d.ts.map +1 -1
  17. package/dist/format/index.js +1 -0
  18. package/dist/format/index.js.map +1 -1
  19. package/dist/format-errors.d.ts +41 -0
  20. package/dist/format-errors.d.ts.map +1 -0
  21. package/dist/format-errors.js +64 -0
  22. package/dist/format-errors.js.map +1 -0
  23. package/dist/icu-format.d.ts +4 -0
  24. package/dist/icu-format.d.ts.map +1 -1
  25. package/dist/icu-format.js +44 -3
  26. package/dist/icu-format.js.map +1 -1
  27. package/dist/index.d.ts +10 -2
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +15 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/keys.d.ts +33 -0
  32. package/dist/keys.d.ts.map +1 -0
  33. package/dist/keys.js +78 -0
  34. package/dist/keys.js.map +1 -0
  35. package/dist/locales.d.ts +106 -13
  36. package/dist/locales.d.ts.map +1 -1
  37. package/dist/locales.js +147 -17
  38. package/dist/locales.js.map +1 -1
  39. package/dist/overrides.d.ts +62 -0
  40. package/dist/overrides.d.ts.map +1 -0
  41. package/dist/overrides.js +113 -0
  42. package/dist/overrides.js.map +1 -0
  43. package/dist/react.d.ts +6 -0
  44. package/dist/react.d.ts.map +1 -1
  45. package/dist/react.js +18 -26
  46. package/dist/react.js.map +1 -1
  47. package/dist/resources/ar-eg/common.d.ts +786 -3
  48. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  49. package/dist/resources/ar-eg/common.js +813 -29
  50. package/dist/resources/ar-eg/common.js.map +1 -1
  51. package/dist/resources/ar-eg/errors.d.ts +1 -0
  52. package/dist/resources/ar-eg/errors.d.ts.map +1 -1
  53. package/dist/resources/ar-eg/errors.js +2 -0
  54. package/dist/resources/ar-eg/errors.js.map +1 -1
  55. package/dist/resources/ar-eg/generated.d.ts.map +1 -1
  56. package/dist/resources/ar-eg/generated.js +1 -0
  57. package/dist/resources/ar-eg/generated.js.map +1 -1
  58. package/dist/resources/ar-eg/studio.d.ts.map +1 -1
  59. package/dist/resources/ar-eg/studio.js +1 -0
  60. package/dist/resources/ar-eg/studio.js.map +1 -1
  61. package/dist/resources/ar-eg/ui.d.ts +586 -586
  62. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  63. package/dist/resources/ar-eg/ui.js +587 -586
  64. package/dist/resources/ar-eg/ui.js.map +1 -1
  65. package/dist/resources/cs-cz/common.d.ts +786 -3
  66. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  67. package/dist/resources/cs-cz/common.js +811 -27
  68. package/dist/resources/cs-cz/common.js.map +1 -1
  69. package/dist/resources/cs-cz/errors.d.ts +1 -0
  70. package/dist/resources/cs-cz/errors.d.ts.map +1 -1
  71. package/dist/resources/cs-cz/errors.js +2 -0
  72. package/dist/resources/cs-cz/errors.js.map +1 -1
  73. package/dist/resources/cs-cz/generated.d.ts.map +1 -1
  74. package/dist/resources/cs-cz/generated.js +1 -0
  75. package/dist/resources/cs-cz/generated.js.map +1 -1
  76. package/dist/resources/cs-cz/studio.d.ts.map +1 -1
  77. package/dist/resources/cs-cz/studio.js +1 -0
  78. package/dist/resources/cs-cz/studio.js.map +1 -1
  79. package/dist/resources/cs-cz/ui.d.ts +582 -582
  80. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  81. package/dist/resources/cs-cz/ui.js +583 -582
  82. package/dist/resources/cs-cz/ui.js.map +1 -1
  83. package/dist/resources/da-dk/common.d.ts +787 -4
  84. package/dist/resources/da-dk/common.d.ts.map +1 -1
  85. package/dist/resources/da-dk/common.js +814 -30
  86. package/dist/resources/da-dk/common.js.map +1 -1
  87. package/dist/resources/da-dk/errors.d.ts +1 -0
  88. package/dist/resources/da-dk/errors.d.ts.map +1 -1
  89. package/dist/resources/da-dk/errors.js +2 -0
  90. package/dist/resources/da-dk/errors.js.map +1 -1
  91. package/dist/resources/da-dk/generated.d.ts.map +1 -1
  92. package/dist/resources/da-dk/generated.js +1 -0
  93. package/dist/resources/da-dk/generated.js.map +1 -1
  94. package/dist/resources/da-dk/studio.d.ts.map +1 -1
  95. package/dist/resources/da-dk/studio.js +1 -0
  96. package/dist/resources/da-dk/studio.js.map +1 -1
  97. package/dist/resources/da-dk/ui.d.ts +568 -568
  98. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  99. package/dist/resources/da-dk/ui.js +569 -568
  100. package/dist/resources/da-dk/ui.js.map +1 -1
  101. package/dist/resources/de-de/common.d.ts +790 -7
  102. package/dist/resources/de-de/common.d.ts.map +1 -1
  103. package/dist/resources/de-de/common.js +817 -33
  104. package/dist/resources/de-de/common.js.map +1 -1
  105. package/dist/resources/de-de/errors.d.ts +1 -0
  106. package/dist/resources/de-de/errors.d.ts.map +1 -1
  107. package/dist/resources/de-de/errors.js +2 -0
  108. package/dist/resources/de-de/errors.js.map +1 -1
  109. package/dist/resources/de-de/generated.d.ts.map +1 -1
  110. package/dist/resources/de-de/generated.js +1 -0
  111. package/dist/resources/de-de/generated.js.map +1 -1
  112. package/dist/resources/de-de/studio.d.ts.map +1 -1
  113. package/dist/resources/de-de/studio.js +1 -0
  114. package/dist/resources/de-de/studio.js.map +1 -1
  115. package/dist/resources/de-de/ui.d.ts +569 -569
  116. package/dist/resources/de-de/ui.d.ts.map +1 -1
  117. package/dist/resources/de-de/ui.js +570 -569
  118. package/dist/resources/de-de/ui.js.map +1 -1
  119. package/dist/resources/en-us/common.d.ts +786 -3
  120. package/dist/resources/en-us/common.d.ts.map +1 -1
  121. package/dist/resources/en-us/common.js +813 -29
  122. package/dist/resources/en-us/common.js.map +1 -1
  123. package/dist/resources/en-us/errors.d.ts +1 -0
  124. package/dist/resources/en-us/errors.d.ts.map +1 -1
  125. package/dist/resources/en-us/errors.js +2 -0
  126. package/dist/resources/en-us/errors.js.map +1 -1
  127. package/dist/resources/en-us/generated.d.ts.map +1 -1
  128. package/dist/resources/en-us/generated.js +1 -0
  129. package/dist/resources/en-us/generated.js.map +1 -1
  130. package/dist/resources/en-us/studio.d.ts.map +1 -1
  131. package/dist/resources/en-us/studio.js +1 -0
  132. package/dist/resources/en-us/studio.js.map +1 -1
  133. package/dist/resources/en-us/ui.d.ts.map +1 -1
  134. package/dist/resources/en-us/ui.js +1 -0
  135. package/dist/resources/en-us/ui.js.map +1 -1
  136. package/dist/resources/fr-fr/common.d.ts +788 -5
  137. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  138. package/dist/resources/fr-fr/common.js +815 -31
  139. package/dist/resources/fr-fr/common.js.map +1 -1
  140. package/dist/resources/fr-fr/errors.d.ts +1 -0
  141. package/dist/resources/fr-fr/errors.d.ts.map +1 -1
  142. package/dist/resources/fr-fr/errors.js +2 -0
  143. package/dist/resources/fr-fr/errors.js.map +1 -1
  144. package/dist/resources/fr-fr/generated.d.ts.map +1 -1
  145. package/dist/resources/fr-fr/generated.js +1 -0
  146. package/dist/resources/fr-fr/generated.js.map +1 -1
  147. package/dist/resources/fr-fr/studio.d.ts.map +1 -1
  148. package/dist/resources/fr-fr/studio.js +1 -0
  149. package/dist/resources/fr-fr/studio.js.map +1 -1
  150. package/dist/resources/fr-fr/ui.d.ts +559 -559
  151. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  152. package/dist/resources/fr-fr/ui.js +560 -559
  153. package/dist/resources/fr-fr/ui.js.map +1 -1
  154. package/dist/resources/index.d.ts.map +1 -1
  155. package/dist/resources/index.js +1 -0
  156. package/dist/resources/index.js.map +1 -1
  157. package/dist/resources/lazy.d.ts.map +1 -1
  158. package/dist/resources/lazy.js.map +1 -1
  159. package/dist/resources/zh-cn/common.d.ts +787 -4
  160. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  161. package/dist/resources/zh-cn/common.js +814 -30
  162. package/dist/resources/zh-cn/common.js.map +1 -1
  163. package/dist/resources/zh-cn/errors.d.ts +1 -0
  164. package/dist/resources/zh-cn/errors.d.ts.map +1 -1
  165. package/dist/resources/zh-cn/errors.js +2 -0
  166. package/dist/resources/zh-cn/errors.js.map +1 -1
  167. package/dist/resources/zh-cn/generated.d.ts.map +1 -1
  168. package/dist/resources/zh-cn/generated.js +1 -0
  169. package/dist/resources/zh-cn/generated.js.map +1 -1
  170. package/dist/resources/zh-cn/studio.d.ts.map +1 -1
  171. package/dist/resources/zh-cn/studio.js +1 -0
  172. package/dist/resources/zh-cn/studio.js.map +1 -1
  173. package/dist/resources/zh-cn/ui.d.ts +575 -575
  174. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  175. package/dist/resources/zh-cn/ui.js +576 -575
  176. package/dist/resources/zh-cn/ui.js.map +1 -1
  177. package/dist/resources/zh-tw/common.d.ts +786 -3
  178. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  179. package/dist/resources/zh-tw/common.js +813 -29
  180. package/dist/resources/zh-tw/common.js.map +1 -1
  181. package/dist/resources/zh-tw/errors.d.ts +1 -0
  182. package/dist/resources/zh-tw/errors.d.ts.map +1 -1
  183. package/dist/resources/zh-tw/errors.js +2 -0
  184. package/dist/resources/zh-tw/errors.js.map +1 -1
  185. package/dist/resources/zh-tw/generated.d.ts.map +1 -1
  186. package/dist/resources/zh-tw/generated.js +1 -0
  187. package/dist/resources/zh-tw/generated.js.map +1 -1
  188. package/dist/resources/zh-tw/studio.d.ts.map +1 -1
  189. package/dist/resources/zh-tw/studio.js +1 -0
  190. package/dist/resources/zh-tw/studio.js.map +1 -1
  191. package/dist/resources/zh-tw/ui.d.ts +575 -575
  192. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  193. package/dist/resources/zh-tw/ui.js +576 -575
  194. package/dist/resources/zh-tw/ui.js.map +1 -1
  195. package/dist/review-status.d.ts +55 -0
  196. package/dist/review-status.d.ts.map +1 -0
  197. package/dist/review-status.js +60 -0
  198. package/dist/review-status.js.map +1 -0
  199. package/dist/revision.d.ts +35 -0
  200. package/dist/revision.d.ts.map +1 -0
  201. package/dist/revision.js +56 -0
  202. package/dist/revision.js.map +1 -0
  203. package/dist/server.d.ts +36 -0
  204. package/dist/server.d.ts.map +1 -0
  205. package/dist/server.js +36 -0
  206. package/dist/server.js.map +1 -0
  207. package/dist/validate-message.d.ts +57 -0
  208. package/dist/validate-message.d.ts.map +1 -0
  209. package/dist/validate-message.js +179 -0
  210. package/dist/validate-message.js.map +1 -0
  211. package/locales/ar-EG/.meta.json +13246 -0
  212. package/locales/ar-EG/common.json +812 -29
  213. package/locales/ar-EG/errors.json +1 -0
  214. package/locales/ar-EG/ui.json +586 -586
  215. package/locales/cs-CZ/.meta.json +13246 -0
  216. package/locales/cs-CZ/common.json +810 -27
  217. package/locales/cs-CZ/errors.json +1 -0
  218. package/locales/cs-CZ/ui.json +582 -582
  219. package/locales/da-DK/.meta.json +13246 -0
  220. package/locales/da-DK/common.json +813 -30
  221. package/locales/da-DK/errors.json +1 -0
  222. package/locales/da-DK/ui.json +568 -568
  223. package/locales/de-DE/.meta.json +13246 -0
  224. package/locales/de-DE/common.json +816 -33
  225. package/locales/de-DE/errors.json +1 -0
  226. package/locales/de-DE/ui.json +569 -569
  227. package/locales/en-US/common.json +812 -29
  228. package/locales/en-US/errors.json +1 -0
  229. package/locales/fr-FR/.meta.json +13246 -0
  230. package/locales/fr-FR/common.json +814 -31
  231. package/locales/fr-FR/errors.json +1 -0
  232. package/locales/fr-FR/ui.json +559 -559
  233. package/locales/zh-CN/.meta.json +13246 -0
  234. package/locales/zh-CN/common.json +813 -30
  235. package/locales/zh-CN/errors.json +1 -0
  236. package/locales/zh-CN/ui.json +575 -575
  237. package/locales/zh-TW/.meta.json +13246 -0
  238. package/locales/zh-TW/common.json +812 -29
  239. package/locales/zh-TW/errors.json +1 -0
  240. package/locales/zh-TW/ui.json +575 -575
  241. package/package.json +11 -3
@@ -1,3 +1,4 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
1
2
  /**
2
3
  * GENERATED MIRROR of ../../../locales/fr-FR/ui.json — do not edit by hand.
3
4
  * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);
@@ -26,7 +27,7 @@ export default {
26
27
  "hidePassword": "Masquer le mot de passe",
27
28
  "reveal": "Révéler",
28
29
  "hide": "Masquer",
29
- "clearSearch": "Clear search"
30
+ "clearSearch": "Effacer la recherche"
30
31
  },
31
32
  "state": {
32
33
  "loading": "Chargement…",
@@ -69,8 +70,8 @@ export default {
69
70
  },
70
71
  "usageMeter": {
71
72
  "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"
73
+ "usageLabel": "Utilisation",
74
+ "ofLabel": "sur"
74
75
  },
75
76
  "statTileCompact": {
76
77
  "description": "Une tuile de mesure fine avec micro-libellé, puce de tendance et spark à 6 barres — pour des rangées denses de 4 à 6."
@@ -87,16 +88,16 @@ export default {
87
88
  },
88
89
  "gaugeArc": {
89
90
  "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."
91
+ "emptyTitle": "Aucune jauge à afficher",
92
+ "emptyBody": "Les services apparaissent ici sous forme de jauges dès qu’une mesure existe pour eux."
92
93
  },
93
94
  "periodComparison": {
94
95
  "description": "Cette période face à la précédente en deux barres, avec l'écart calculé en dessous.",
95
96
  "higherLabel": "de plus",
96
97
  "lowerLabel": "de moins",
97
98
  "flatLabel": "stable",
98
- "periodALabel": "This period",
99
- "periodBLabel": "Last period"
99
+ "periodALabel": "Cette période",
100
+ "periodBLabel": "Période précédente"
100
101
  },
101
102
  "microKpiSubtitle": {
102
103
  "description": "Une statistique d'en-tête sur une ligne, construite à partir d'un modèle et recalculée en direct."
@@ -113,216 +114,216 @@ export default {
113
114
  "description": "Résumé en boîte à moustaches de la dispersion d'une colonne numérique par catégorie — min, quartiles, médiane et max.",
114
115
  "emptyTitle": "Aucune distribution à tracer",
115
116
  "emptyBody": "Aucune ligne ne correspond aux filtres pour les boîtes à moustaches.",
116
- "chartLabel": "Box plot"
117
+ "chartLabel": "Boîte à moustaches"
117
118
  },
118
119
  "violin": {
119
120
  "description": "Courbes de densité en miroir comparant la distribution d'une colonne numérique entre les groupes.",
120
121
  "emptyTitle": "Aucune distribution à tracer",
121
122
  "emptyBody": "Aucune ligne ne correspond aux filtres pour les profils de densité.",
122
- "chartLabel": "Violin plot"
123
+ "chartLabel": "Diagramme en violon"
123
124
  },
124
125
  "ridgeline": {
125
126
  "description": "Crêtes de densité superposées comparant une colonne numérique entre groupes ordonnés.",
126
127
  "emptyTitle": "Aucune crête à tracer",
127
128
  "emptyBody": "Aucune ligne ne correspond aux filtres pour les profils de densité.",
128
- "chartLabel": "Ridgeline"
129
+ "chartLabel": "Crêtes de densité"
129
130
  },
130
131
  "scatterBubble": {
131
132
  "description": "Deux colonnes numériques en points, avec une taille de bulle et une ligne de tendance en option.",
132
133
  "emptyTitle": "Aucun point à tracer",
133
134
  "emptyBody": "Aucune ligne ne correspond aux filtres pour les colonnes choisies.",
134
- "chartLabel": "Scatter plot"
135
+ "chartLabel": "Nuage de points"
135
136
  },
136
137
  "hexbin": {
137
138
  "description": "Densité hexagonale de deux colonnes numériques, teintée selon le nombre de lignes par tuile.",
138
139
  "emptyTitle": "Aucune densité à tracer",
139
140
  "emptyBody": "Aucune ligne ne correspond aux filtres à regrouper.",
140
- "chartLabel": "Density hexbin"
141
+ "chartLabel": "Densité hexagonale"
141
142
  },
142
143
  "correlationMatrix": {
143
144
  "description": "Corrélation de Pearson entre colonnes numériques choisies, du fortement positif au fortement négatif.",
144
145
  "emptyTitle": "Rien à corréler",
145
146
  "emptyBody": "Choisissez au moins deux colonnes numériques avec des lignes correspondantes.",
146
- "chartLabel": "Correlation matrix"
147
+ "chartLabel": "Matrice de corrélation"
147
148
  },
148
149
  "parallelCoordinates": {
149
150
  "description": "Chaque enregistrement en ligne sur plusieurs axes numériques normalisés, coloré par catégorie.",
150
151
  "emptyTitle": "Aucun enregistrement à tracer",
151
152
  "emptyBody": "Aucune ligne ne correspond aux filtres sur les axes choisis.",
152
- "chartLabel": "Parallel coordinates"
153
+ "chartLabel": "Coordonnées parallèles"
153
154
  },
154
- "unexpectedShape": "Unexpected data shape.",
155
+ "unexpectedShape": "Format de données inattendu.",
155
156
  "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."
157
+ "chartLabel": "Graphique en courbes",
158
+ "description": "Une mesure dans le temps sous forme de courbe avec aire remplie en douceur, et une comparaison en pointillés avec la période précédente en option."
158
159
  },
159
160
  "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."
161
+ "chartLabel": "Graphique à barres",
162
+ "description": "Des valeurs par catégorie ou par intervalle de temps en barres verticales, avec mise en évidence de la barre la plus haute ou de la barre actuelle en option."
162
163
  },
163
164
  "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."
165
+ "chartLabel": "Graphique en anneau",
166
+ "otherLabel": "Autres",
167
+ "description": "Les parts de chaque catégorie en segments d’anneau, avec légende et total au centre, les petites parts étant regroupées sous « Autres »."
167
168
  },
168
169
  "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."
170
+ "chartLabel": "Graphique en puce",
171
+ "description": "La progression vers un objectif sous forme de barre de mesure sur des plages qualitatives, avec un repère de cible par ligne.",
172
+ "emptyTitle": "Aucun objectif à suivre",
173
+ "emptyBody": "Ajoutez des mesures assorties de cibles à comparer."
173
174
  },
174
175
  "rankingBars": {
175
- "chartLabel": "Ranking",
176
- "description": "A top-N ranking as horizontal barsthe leader at full strength, the rest dimmedwith values alongside.",
177
- "emptyTitle": "Nothing to rank",
178
- "emptyBody": "No records matched this breakdown yet."
176
+ "chartLabel": "Classement",
177
+ "description": "Un classement des N premiers en barres horizontalesle leader en pleine intensité, les autres atténuésavec les valeurs à côté.",
178
+ "emptyTitle": "Rien à classer",
179
+ "emptyBody": "Aucun enregistrement ne correspond encore à cette répartition."
179
180
  },
180
181
  "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."
182
+ "chartLabel": "Diagramme de Pareto",
183
+ "description": "Des barres de catégories triées sous une courbe de pourcentage cumulé, avec une ligne de coupure à 80 % en option.",
184
+ "emptyTitle": "Aucune catégorie à représenter",
185
+ "emptyBody": "Aucun décompte groupé n’a été renvoyé pour cette plage."
185
186
  },
186
187
  "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."
188
+ "chartLabel": "Graphique en cascade",
189
+ "description": "Un pont de barres flottantes allant d’un total de départ à un total net, en passant par des étapes positives et négatives.",
190
+ "emptyTitle": "Aucune variation à relier",
191
+ "emptyBody": "Aucune étape de départ, de variation ou de total n’a été trouvée."
191
192
  },
192
193
  "marimekko": {
193
- "chartLabel": "Marimekko chart",
194
- "description": "A two-level mix as variable-width stacked columnswidth 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."
194
+ "chartLabel": "Graphique Marimekko",
195
+ "description": "Une répartition à deux niveaux en colonnes empilées de largeur variable la largeur pour la part extérieure, les segments pour la répartition intérieure.",
196
+ "emptyTitle": "Aucune répartition à détailler",
197
+ "emptyBody": "Aucune répartition à deux niveaux n’a été renvoyée pour cette plage."
197
198
  },
198
199
  "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."
200
+ "chartLabel": "Barre empilée à 100 %",
201
+ "description": "Une barre à 100 % découpée en segments proportionnels avec légende, pour comparer les parts d’un tout.",
202
+ "emptyTitle": "Aucune part à répartir",
203
+ "emptyBody": "Aucune part n’a été renvoyée pour cette répartition."
203
204
  },
204
205
  "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."
206
+ "chartLabel": "Graphique de pente",
207
+ "description": "Deux périodes reliées par une ligne par enregistrement, colorée selon que la valeur a augmenté ou baissé.",
208
+ "emptyTitle": "Aucune évolution entre périodes à afficher",
209
+ "emptyBody": "Aucune valeur avant/après n’a été renvoyée à comparer."
209
210
  },
210
211
  "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."
212
+ "chartLabel": "Graphique multicourbes",
213
+ "description": "Plusieurs séries en courbes superposées avec libellés en fin de courbe, pour comparer les tendances sur la même période.",
214
+ "emptyTitle": "Aucune série à tracer",
215
+ "emptyBody": "Aucune série temporelle ne correspond aux filtres pour cette plage."
215
216
  },
216
217
  "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."
218
+ "chartLabel": "Graphique en flux",
219
+ "description": "Des bandes empilées ondulant autour d’un axe central, montrant comment la composition d’un total évolue dans le temps.",
220
+ "emptyTitle": "Aucun flux à représenter",
221
+ "emptyBody": "Aucune série empilée n’a été renvoyée pour cette plage."
221
222
  },
222
223
  "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."
224
+ "chartLabel": "Graphique de prévision",
225
+ "nowLabel": "Maintenant",
226
+ "forecastLabel": "Prévision",
227
+ "actualLabel": "Réel",
228
+ "description": "Une courbe d’historique prolongée par une projection en pointillés dans une bande de confiance qui s’élargit, séparée par un repère du moment présent.",
229
+ "emptyTitle": "Aucun historique à projeter",
230
+ "emptyBody": "Aucun point passé n’a été renvoyé pour établir une prévision."
230
231
  },
231
232
  "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."
233
+ "chartLabel": "Graphique d’anomalies",
234
+ "description": "Une courbe de valeurs sur sa plage attendue, signalant par des points auréolés ceux qui en sortent.",
235
+ "emptyTitle": "Aucun signal à analyser",
236
+ "emptyBody": "Aucun point n’a été renvoyé pour rechercher des anomalies."
236
237
  },
237
238
  "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."
239
+ "chartLabel": "Graphique en chandeliers",
240
+ "livePillLabel": "Actif",
241
+ "description": "Des chandeliers ouverture-haut-bas-clôture colorés selon le sens, avec une ligne de dernier cours en pointillés et une pastille d’activité en option.",
242
+ "emptyTitle": "Aucun chandelier à représenter",
243
+ "emptyBody": "Aucune ligne ouverture-haut-bas-clôture ne correspond à cette plage."
243
244
  },
244
245
  "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."
246
+ "chartLabel": "Graphique de rangs",
247
+ "description": "Des courbes de rang dans le temps montrant comment les concurrents échangent leurs places d’une période à l’autre.",
248
+ "emptyTitle": "Aucun rang à tracer",
249
+ "emptyBody": "Aucun classement d’une période à l’autre n’a été renvoyé."
249
250
  },
250
251
  "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."
252
+ "chartLabel": "Couloirs chronologiques",
253
+ "laneLabel": "Événements",
254
+ "description": "Des événements datés sous forme de pastilles sur des couloirs horizontaux partageant un même axe temporel.",
255
+ "emptyTitle": "Aucun événement à placer",
256
+ "emptyBody": "Aucun événement ne correspond aux filtres pour cette plage."
256
257
  },
257
258
  "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."
259
+ "chartLabel": "Carte proportionnelle",
260
+ "otherLabel": "Autres",
261
+ "description": "Une répartition partie-tout sous forme de tuiles carrées dimensionnées par valeur, les petites parts étant regroupées dans une tuile « Autres ».",
262
+ "emptyTitle": "Aucune part à disposer",
263
+ "emptyBody": "Aucune catégorie n’a été renvoyée pour cette répartition."
263
264
  },
264
265
  "sunburst": {
265
- "chartLabel": "Sunburst",
266
- "description": "A two-level hierarchy as nested rings — parents inside, their children outsidewith a parent legend.",
267
- "emptyTitle": "No rings to draw",
268
- "emptyBody": "No grouped categories were returned to nest."
266
+ "chartLabel": "Rayons de soleil",
267
+ "description": "Une hiérarchie à deux niveaux en anneaux imbriqués les parents à l’intérieur, leurs enfants à l’extérieur avec une légende des parents.",
268
+ "emptyTitle": "Aucun anneau à dessiner",
269
+ "emptyBody": "Aucune catégorie groupée n’a été renvoyée à imbriquer."
269
270
  },
270
271
  "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."
272
+ "chartLabel": "Entonnoir",
273
+ "description": "Des étapes ordonnées qui se rétrécissent, avec un taux de passage par étape et un pied de page indiquant la conversion globale.",
274
+ "emptyTitle": "Aucune étape à représenter",
275
+ "emptyBody": "Aucun décompte d’étape n’a été renvoyé pour cette plage."
275
276
  },
276
277
  "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."
278
+ "chartLabel": "Barres radiales",
279
+ "description": "Jusqu’à quatre pourcentages en anneaux de progression concentriques avec une légende à pastilles.",
280
+ "emptyTitle": "Aucun anneau à remplir",
281
+ "emptyBody": "Aucune catégorie ne correspond encore à cette répartition."
281
282
  },
282
283
  "radar": {
283
284
  "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."
285
+ "description": "Plusieurs axes nommés sur un polygone avec une forme remplie par série, sur une superposition de cible en option.",
286
+ "emptyTitle": "Aucun axe à comparer",
287
+ "emptyBody": "Aucune matrice de séries et d’axes n’a été renvoyée."
287
288
  },
288
289
  "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."
290
+ "chartLabel": "Diagramme en cordes",
291
+ "description": "Des flux deux à deux sous forme de rubans entre des nœuds disposés en anneau, l’opacité des rubans reflétant le volume.",
292
+ "emptyTitle": "Aucun flux à relier",
293
+ "emptyBody": "Aucune connexion entre groupes n’a été renvoyée."
293
294
  },
294
295
  "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."
296
+ "chartLabel": "Nuage de mots",
297
+ "description": "Des termes dimensionnés selon leur fréquence et répartis en lignes, pour voir d’un coup d’œil ce qui domine.",
298
+ "emptyTitle": "Aucun terme à afficher",
299
+ "emptyBody": "Aucun terme pondéré ne correspond aux filtres."
299
300
  },
300
301
  "cohortMatrix": {
301
- "chartLabel": "Cohort retention",
302
- "description": "Cohort rows against period columns, each cell shaded by retention or revenue."
302
+ "chartLabel": "Rétention par cohorte",
303
+ "description": "Des lignes de cohortes face à des colonnes de périodes, chaque cellule étant teintée selon la rétention ou le chiffre d’affaires."
303
304
  },
304
305
  "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."
306
+ "chartLabel": "Calendrier d’activité",
307
+ "legendLessLabel": "Moins",
308
+ "legendMoreLabel": "Plus",
309
+ "description": "Une année d’activité quotidienne sous forme de grille semaines × jours teintée selon l’intensité."
309
310
  },
310
311
  "heatMonth": {
311
- "chartLabel": "Monthly activity",
312
- "description": "One calendar month as a day grid shaded by each day's value."
312
+ "chartLabel": "Activité mensuelle",
313
+ "description": "Un mois calendaire sous forme de grille de jours teintée selon la valeur de chaque jour."
313
314
  },
314
315
  "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."
316
+ "chartLabel": "Répartition régionale",
317
+ "legendLowLabel": "Faible",
318
+ "legendHighLabel": "Élevé",
319
+ "description": "Des valeurs régionales sous forme de carte en tuiles des États-Unis ou de grille compacte, avec une liste de classement des N premiers en option."
319
320
  },
320
321
  "sankey": {
321
- "chartLabel": "Flow",
322
- "description": "Layered source-to-target flows as ribbons whose thickness encodes volume."
322
+ "chartLabel": "Flux",
323
+ "description": "Des flux source-cible en couches sous forme de rubans dont l’épaisseur traduit le volume."
323
324
  },
324
325
  "sparkline": {
325
- "description": "An inline micro-trend of recent valuesno axes or labelsfor KPI cards, table cells and list rows."
326
+ "description": "Une micro-tendance en ligne des valeurs récentes sans axes ni libelléspour les cartes d’indicateurs, les cellules de tableau et les lignes de liste."
326
327
  }
327
328
  },
328
329
  "feeds": {
@@ -330,32 +331,32 @@ export default {
330
331
  "description": "Un fil continu de qui a fait quoi dans votre espace de travail, du plus récent au plus ancien.",
331
332
  "emptyTitle": "Aucune activité récente",
332
333
  "emptyBody": "Les actions de votre espace de travail apparaîtront ici.",
333
- "viewAllLabel": "View all"
334
+ "viewAllLabel": "Tout afficher"
334
335
  },
335
336
  "notificationFeed": {
336
337
  "description": "Notifications groupées avec état non lu, filtres et actions intégrées.",
337
338
  "emptyTitle": "Aucune notification",
338
339
  "emptyBody": "Les nouvelles notifications apparaîtront ici.",
339
- "allLabel": "All",
340
- "unreadLabel": "Unread",
340
+ "allLabel": "Toutes",
341
+ "unreadLabel": "Non lues",
341
342
  "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"
343
+ "filterLabel": "Filtre de notifications",
344
+ "markAllReadLabel": "Tout marquer comme lu",
345
+ "todayLabel": "Aujourd’hui",
346
+ "yesterdayLabel": "Hier",
347
+ "earlierLabel": "Plus tôt",
348
+ "dismissLabel": "Fermer",
349
+ "emptyUnreadTitle": "Vous êtes à jour",
350
+ "emptyMentionsTitle": "Aucune mention"
350
351
  },
351
352
  "realtimeFeed": {
352
353
  "description": "Un flux d’événements en direct qui ajoute les nouveaux éléments en tête.",
353
354
  "emptyTitle": "En attente d’événements",
354
355
  "emptyBody": "Les événements en direct s’afficheront au fur et à mesure.",
355
- "liveLabel": "Live",
356
- "pausedLabel": "Paused",
357
- "pauseLabel": "Pause",
358
- "resumeLabel": "Resume"
356
+ "liveLabel": "Actif",
357
+ "pausedLabel": "En pause",
358
+ "pauseLabel": "Mettre en pause",
359
+ "resumeLabel": "Reprendre"
359
360
  },
360
361
  "timelineVertical": {
361
362
  "description": "Une chronologie verticale d’événements, de versions, d’incidents ou d’étapes d’exécution.",
@@ -385,22 +386,22 @@ export default {
385
386
  "description": "Une grille mensuelle des événements planifiés avec des puces par jour et la navigation entre les mois.",
386
387
  "emptyTitle": "Rien de planifié",
387
388
  "emptyBody": "Les événements planifiés apparaîtront dans ce calendrier.",
388
- "previousLabel": "Previous month",
389
- "nextLabel": "Next month",
390
- "overflowLabel": "+{count} more"
389
+ "previousLabel": "Mois précédent",
390
+ "nextLabel": "Mois suivant",
391
+ "overflowLabel": "+{count} de plus"
391
392
  },
392
393
  "dayAgenda": {
393
394
  "description": "Les événements du jour sélectionné sous forme d'agenda chronologique.",
394
395
  "emptyTitle": "Rien de planifié",
395
396
  "emptyBody": "Les événements du jour sélectionné apparaîtront ici.",
396
- "countLabel": "{count, plural, one {{n} event} other {{n} events}}"
397
+ "countLabel": "{count, plural, one {{n} événement} other {{n} événements}}"
397
398
  },
398
399
  "scheduleMatrix": {
399
400
  "description": "Une grille de postes par ressource et par jour avec la couverture quotidienne et une légende.",
400
401
  "emptyTitle": "Aucun poste planifié",
401
402
  "emptyBody": "Les postes attribués apparaîtront dans ce planning.",
402
- "resourceLabel": "Resource",
403
- "coverageLabel": "Coverage",
403
+ "resourceLabel": "Ressource",
404
+ "coverageLabel": "Couverture",
404
405
  "hoursLabel": "{hours}h"
405
406
  },
406
407
  "capacityBoard": {
@@ -408,16 +409,16 @@ export default {
408
409
  "emptyTitle": "Aucune donnée de charge",
409
410
  "emptyBody": "L'utilisation des membres apparaîtra ici une fois les affectations créées.",
410
411
  "status": {
411
- "overloaded": "Overloaded",
412
- "balanced": "Balanced",
413
- "available": "Available"
412
+ "overloaded": "Surchargé",
413
+ "balanced": "Équilibré",
414
+ "available": "Disponible"
414
415
  },
415
- "utilizationLabel": "{name}: {util}%",
416
+ "utilizationLabel": "{name} : {util} %",
416
417
  "assignmentLabel": "{project} · {hours}h",
417
418
  "periodLabel": "h · {period}",
418
419
  "period": {
419
- "week": "week",
420
- "month": "month"
420
+ "week": "semaine",
421
+ "month": "mois"
421
422
  }
422
423
  },
423
424
  "calendarLegendFilter": {
@@ -459,26 +460,26 @@ export default {
459
460
  "description": "Une liste sélectionnable d’enregistrements qui pilote un volet de détail.",
460
461
  "emptyTitle": "Aucun élément",
461
462
  "emptyBody": "Les éléments apparaîtront ici une fois créés.",
462
- "allLabel": "All",
463
- "toggleLabel": "Toggle {title}",
464
- "progressLabel": "{title} progress"
463
+ "allLabel": "Tous",
464
+ "toggleLabel": "Basculer {title}",
465
+ "progressLabel": "Progression de {title}"
465
466
  },
466
467
  "logTable": {
467
468
  "description": "Un journal d’événements avec recherche, filtre d’erreurs et actions par ligne.",
468
469
  "emptyTitle": "Aucune entrée de journal",
469
470
  "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",
471
+ "liveLabel": "Actif",
472
+ "placeholder": "Rechercher dans les journaux…",
473
+ "filterLabel": "Filtre du journal",
474
+ "allLabel": "Tout",
475
+ "errorsLabel": "Erreurs",
476
+ "noMatchesLabel": "Aucune entrée correspondante",
477
+ "todayLabel": "Aujourd’hui",
478
+ "yesterdayLabel": "Hier",
478
479
  "action": {
479
- "retry": "retry",
480
- "download": "download",
481
- "inspect": "inspect"
480
+ "retry": "réessayer",
481
+ "download": "télécharger",
482
+ "inspect": "inspecter"
482
483
  }
483
484
  },
484
485
  "cardGallery": {
@@ -490,21 +491,21 @@ export default {
490
491
  "description": "Lignes groupées avec colonnes d’agrégats, détails dépliables et totaux.",
491
492
  "emptyTitle": "Aucune donnée de synthèse",
492
493
  "emptyBody": "Les totaux groupés apparaîtront ici dès qu’il y aura des données.",
493
- "groupLabel": "Group",
494
+ "groupLabel": "Groupe",
494
495
  "totalsLabel": "Total"
495
496
  },
496
497
  "schemaTree": {
497
498
  "description": "Un explorateur de schémas, tables et colonnes avec badges de type et de clé.",
498
499
  "emptyTitle": "Aucun schéma analysé",
499
500
  "emptyBody": "Connectez une base de données pour explorer son schéma ici.",
500
- "treeLabel": "Schema",
501
- "viewLabel": "view"
501
+ "treeLabel": "Schéma",
502
+ "viewLabel": "vue"
502
503
  },
503
504
  "toggleMatrix": {
504
505
  "description": "Une grille interactive de bascules booléennes pour rôles, règles ou canaux.",
505
506
  "emptyTitle": "Aucune matrice configurée",
506
507
  "emptyBody": "Les lignes et colonnes apparaîtront ici une fois configurées.",
507
- "matrixLabel": "Permissions matrix",
508
+ "matrixLabel": "Matrice de permissions",
508
509
  "rowHeaderLabel": "Permission"
509
510
  },
510
511
  "sparklineTable": {
@@ -540,38 +541,38 @@ export default {
540
541
  "moreLabel": "+{n} de plus"
541
542
  },
542
543
  "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."
544
+ "selectAllLabel": "Sélectionner toutes les lignes",
545
+ "selectRowLabel": "Sélectionner la ligne",
546
+ "sortByLabel": "Trier par {column}",
547
+ "description": "La grille CRUD de référence, avec colonnes triables, sélection de lignes et cellules adaptées au type."
547
548
  },
548
549
  "paginationFooter": {
549
- "emptyLabel": "0 rows",
550
- "ofLabel": "of",
551
- "pageSizeLabel": "Rows",
550
+ "emptyLabel": "0 ligne",
551
+ "ofLabel": "sur",
552
+ "pageSizeLabel": "Lignes",
552
553
  "a11y": {
553
- "pageSize": "Rows per page"
554
+ "pageSize": "Lignes par page"
554
555
  },
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."
556
+ "prevLabel": "Page précédente",
557
+ "nextLabel": "Page suivante",
558
+ "description": "Un pied de page avec la plage de lignes visible, la pagination précédent/suivant et un sélecteur de taille de page."
558
559
  },
559
560
  "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."
561
+ "selectedLabel": "sélectionnées",
562
+ "clearLabel": "Effacer la sélection",
563
+ "toolbarLabel": "Actions groupées",
564
+ "description": "Une barre d’outils liée à la sélection, affichant le nombre d’éléments sélectionnés et les actions groupées."
564
565
  },
565
566
  "miniTable": {
566
- "viewAllLabel": "View all",
567
- "description": "A compact dashboard row list with mapped columns and a view-all link."
567
+ "viewAllLabel": "Tout afficher",
568
+ "description": "Une liste de lignes compacte pour tableau de bord, avec colonnes mappées et un lien « tout afficher »."
568
569
  },
569
- "revealLabel": "Reveal value",
570
- "hideLabel": "Hide value",
571
- "trueLabel": "true",
572
- "falseLabel": "false",
570
+ "revealLabel": "Révéler la valeur",
571
+ "hideLabel": "Masquer la valeur",
572
+ "trueLabel": "vrai",
573
+ "falseLabel": "faux",
573
574
  "detailKeyValue": {
574
- "description": "A record's fields as label/value rows with type-aware values."
575
+ "description": "Les champs d’un enregistrement en lignes libellé/valeur, avec des valeurs adaptées au type."
575
576
  }
576
577
  },
577
578
  "boards": {
@@ -639,7 +640,7 @@ export default {
639
640
  "configureBody": "Ajoutez une clé Anthropic ou OpenAI — ou pointez Adminium vers votre propre point de terminaison — pour poser des questions sur votre schéma.",
640
641
  "configureCtaLabel": "Configurer un fournisseur",
641
642
  "assistantLabel": "Assistant",
642
- "composerLabel": "Ask a question"
643
+ "composerLabel": "Poser une question"
643
644
  },
644
645
  "typingIndicator": {
645
646
  "description": "Un avatar et une ligne en italique « en train d’écrire… », liée à un booléen actif par conversation.",
@@ -677,7 +678,7 @@ export default {
677
678
  "emptyBody": "Les lignes comportant un code de région et une valeur numérique apparaissent ici sous forme de tuiles teintées.",
678
679
  "legendLowLabel": "Faible",
679
680
  "legendHighLabel": "Élevé",
680
- "chartLabel": "Regional breakdown"
681
+ "chartLabel": "Répartition régionale"
681
682
  }
682
683
  },
683
684
  "domain": {
@@ -706,8 +707,8 @@ export default {
706
707
  "billedToLabel": "Facturé à",
707
708
  "issuedLabel": "Émis le",
708
709
  "dueLabel": "Échéance",
709
- "noDocumentTitle": "No document yet",
710
- "noDocumentBody": "Pick a starter template or add a block to begin."
710
+ "noDocumentTitle": "Aucun document pour l’instant",
711
+ "noDocumentBody": "Choisissez un modèle de départ ou ajoutez un bloc pour commencer."
711
712
  },
712
713
  "blockTotalsSummary": {
713
714
  "description": "Les totaux du document — sous-total, remise, taxe et total dû, recalculés à partir des lignes.",
@@ -736,13 +737,13 @@ export default {
736
737
  "description": "Un mini-graphique à barres dans la couleur du document, dimensionné pour un bloc.",
737
738
  "emptyTitle": "Aucune donnée à représenter",
738
739
  "emptyBody": "Les barres apparaissent dès que le rapport contient une série.",
739
- "a11yLabel": "Bar chart"
740
+ "a11yLabel": "Graphique à barres"
740
741
  },
741
742
  "blockLineChart": {
742
743
  "description": "Un mini-graphique en courbe avec aire remplie facultative, dimensionné pour un bloc.",
743
744
  "emptyTitle": "Aucune donnée à représenter",
744
745
  "emptyBody": "La courbe apparaît dès que le rapport contient une série.",
745
- "a11yLabel": "Line chart"
746
+ "a11yLabel": "Graphique en courbes"
746
747
  },
747
748
  "blockTwoColTable": {
748
749
  "description": "Un tableau à deux colonnes avec une ligne d'en-tête stylisée et une colonne de valeurs en chasse fixe.",
@@ -801,7 +802,7 @@ export default {
801
802
  "namePlaceholder": "Nom complet",
802
803
  "titlePlaceholder": "Fonction",
803
804
  "dateLabel": "Date",
804
- "nameInputLabel": "Signature name"
805
+ "nameInputLabel": "Nom du signataire"
805
806
  },
806
807
  "blockTermsCheckbox": {
807
808
  "description": "Une case pour les conditions, avec libellé modifiable.",
@@ -847,114 +848,114 @@ export default {
847
848
  "description": "Une grille de modèles prédéfinis avec vignettes générées ; en choisir un initialise un document complet.",
848
849
  "emptyTitle": "Aucun modèle",
849
850
  "emptyBody": "Définissez des modèles dans la configuration ou liez une table de modèles.",
850
- "blankLabel": "Blank",
851
+ "blankLabel": "Vierge",
851
852
  "kicker": {
852
- "invoice": "Invoice",
853
- "report": "Report",
854
- "email": "Email"
853
+ "invoice": "Facture",
854
+ "report": "Rapport",
855
+ "email": "E-mail"
855
856
  }
856
857
  },
857
858
  "sloMonitorCard": {
858
859
  "description": "Carte SLA par service avec statut, disponibilité par rapport à la cible, bande de disponibilité quotidienne, budget d'erreur et latence p95.",
859
860
  "emptyTitle": "Aucun moniteur",
860
861
  "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",
862
+ "targetLabel": "Cible",
863
+ "budgetLabel": "Budget d’erreur",
864
+ "latencyLabel": "Latence p95",
864
865
  "status": {
865
- "operational": "Operational",
866
- "degraded": "Degraded",
867
- "down": "Down",
868
- "unknown": "Unknown"
866
+ "operational": "Opérationnel",
867
+ "degraded": "Dégradé",
868
+ "down": "Hors service",
869
+ "unknown": "Inconnu"
869
870
  }
870
871
  },
871
872
  "uptimeSegmentBar": {
872
873
  "description": "Bandes journalières de type page de statut, colorées selon le statut du jour, avec bascule 30/90 jours.",
873
874
  "emptyTitle": "Aucun historique de disponibilité",
874
875
  "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",
876
+ "daysAgoLabel": "Il y a {days} jours",
877
+ "todayLabel": "Aujourd’hui",
878
+ "uptimeLabel": "de disponibilité",
879
+ "period30Label": "30 j",
880
+ "period90Label": "90 j",
880
881
  "status": {
881
- "operational": "Operational",
882
- "degraded": "Degraded",
883
- "down": "Down",
884
- "unknown": "No data"
882
+ "operational": "Opérationnel",
883
+ "degraded": "Dégradé",
884
+ "down": "Hors service",
885
+ "unknown": "Aucune donnée"
885
886
  }
886
887
  },
887
888
  "experimentVariantCompare": {
888
889
  "description": "Barres de conversion par variante avec le gain face au témoin et un indicateur de significativité.",
889
890
  "emptyTitle": "Aucune variante",
890
891
  "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 significantsafe to call.",
895
- "verdictInconclusiveLabel": "Not yet significantkeep the test running.",
892
+ "controlLabel": "TÉMOIN",
893
+ "winnerLabel": "GAGNANTE",
894
+ "significanceLabel": "Confiance",
895
+ "verdictSignificantLabel": "Statistiquement significatifvous pouvez conclure.",
896
+ "verdictInconclusiveLabel": "Pas encore significatiflaissez le test se poursuivre.",
896
897
  "countsLabel": "{users} participants · {conversions} conversions"
897
898
  },
898
899
  "creditCardTile": {
899
900
  "description": "Un moyen de paiement enregistré sous forme de carte de marque avec numéro masqué, titulaire et expiration.",
900
901
  "emptyTitle": "Aucun moyen de paiement",
901
902
  "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"
903
+ "defaultLabel": "Par défaut",
904
+ "setDefaultLabel": "Définir par défaut",
905
+ "manageLabel": "Gérer",
906
+ "addLabel": "Ajouter un moyen de paiement",
907
+ "expiresLabel": "Expire le"
907
908
  },
908
909
  "planPricingCards": {
909
910
  "description": "Paliers tarifaires avec bascule mensuel/annuel, listes de fonctionnalités et une offre mise en avant.",
910
911
  "emptyTitle": "Aucune offre",
911
912
  "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"
913
+ "monthlyLabel": "Mensuel",
914
+ "annualLabel": "Annuel",
915
+ "popularLabel": "POPULAIRE",
916
+ "perMonthLabel": "/ mois",
917
+ "billedAnnuallyLabel": "Facturé {total} par an",
918
+ "currentLabel": "Offre actuelle",
919
+ "ctaLabel": "Choisir cette offre"
919
920
  },
920
921
  "apiKeysPanel": {
921
922
  "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.",
922
923
  "emptyTitle": "Aucune clé d'API",
923
924
  "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}"
925
+ "revealedTitle": "Clé créée",
926
+ "revealedBody": "Copiez-la maintenantelle ne sera plus jamais affichée.",
927
+ "copyLabel": "Copier",
928
+ "copiedLabel": "Copié",
929
+ "revealLabel": "Révéler la clé",
930
+ "hideLabel": "Masquer la clé",
931
+ "rollLabel": "Renouveler la clé",
932
+ "revokeLabel": "Révoquer la clé",
933
+ "neverUsedLabel": "Jamais utilisée",
934
+ "lastUsedLabel": "Dernière utilisation {since}"
934
935
  },
935
936
  "apiPlayground": {
936
937
  "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.",
937
938
  "emptyTitle": "Aucun point de terminaison sélectionné",
938
939
  "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."
940
+ "sendLabel": "Envoyer",
941
+ "requestLabel": "Requête",
942
+ "responseLabel": "Réponse",
943
+ "paramsLabel": "Paramètres",
944
+ "responsePlaceholder": "Envoyez la requête pour voir la réponse."
944
945
  },
945
946
  "codeSnippetBlock": {
946
947
  "description": "Un extrait de code copiable avec une puce de langage et des onglets optionnels par langage.",
947
948
  "emptyTitle": "Aucun extrait",
948
949
  "emptyBody": "Liez une colonne de code ou définissez un extrait statique dans la configuration.",
949
- "copyLabel": "Copy",
950
- "copiedLabel": "Copied"
950
+ "copyLabel": "Copier",
951
+ "copiedLabel": "Copié"
951
952
  },
952
953
  "webhookEndpointsList": {
953
954
  "description": "Points de terminaison webhook avec leur événement, URL cible, dernier déclenchement et interrupteur d'activation.",
954
955
  "emptyTitle": "Aucun point de terminaison",
955
956
  "emptyBody": "Ajoutez un point de terminaison webhook pour recevoir les événements de table.",
956
- "neverFiredLabel": "Never fired",
957
- "lastFiredLabel": "Last fired {since}"
957
+ "neverFiredLabel": "Jamais déclenché",
958
+ "lastFiredLabel": "Dernier déclenchement {since}"
958
959
  },
959
960
  "resourceApiCard": {
960
961
  "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.",
@@ -962,43 +963,43 @@ export default {
962
963
  "emptyBody": "Liez une table pour afficher sa surface d'API générée.",
963
964
  "rlsLabel": "RLS",
964
965
  "publicLabel": "Public",
965
- "rowsLabel": "rows",
966
- "perDayLabel": "{count}/day"
966
+ "rowsLabel": "lignes",
967
+ "perDayLabel": "{count}/jour"
967
968
  },
968
969
  "liveTimer": {
969
970
  "description": "Un chronomètre démarrer/arrêter pour une tâche ; l'arrêter enregistre une entrée de temps.",
970
971
  "emptyTitle": "Aucun chronomètre",
971
972
  "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"
973
+ "startLabel": "Démarrer",
974
+ "stopLabel": "Arrêter",
975
+ "taskPlaceholder": "Tâche sans titre"
975
976
  },
976
977
  "syncStatusCard": {
977
978
  "description": "Identité de la connexion, latence, lignes synchronisées et planning de synchronisation, avec une action de synchronisation immédiate.",
978
979
  "emptyTitle": "Aucune connexion",
979
980
  "emptyBody": "Liez une ligne de connexion pour afficher son état de synchronisation.",
980
- "connectedLabel": "Connected",
981
- "disconnectedLabel": "Disconnected",
982
- "rowsSyncedLabel": "Rows synced",
981
+ "connectedLabel": "Connectée",
982
+ "disconnectedLabel": "Déconnectée",
983
+ "rowsSyncedLabel": "Lignes synchronisées",
983
984
  "tablesLabel": "Tables",
984
- "lastSyncLabel": "Last sync",
985
- "nextSyncLabel": "Next sync",
986
- "syncingLabel": "Syncing…",
987
- "syncActionLabel": "Sync now"
985
+ "lastSyncLabel": "Dernière synchronisation",
986
+ "nextSyncLabel": "Prochaine synchronisation",
987
+ "syncingLabel": "Synchronisation…",
988
+ "syncActionLabel": "Synchroniser maintenant"
988
989
  },
989
990
  "ipAllowlistCard": {
990
991
  "description": "Adresses IP de sortie fixes à autoriser dans un pare-feu, chacune avec un bouton de copie.",
991
992
  "emptyTitle": "Aucune IP de sortie",
992
993
  "emptyBody": "Les adresses de sortie apparaissent ici une fois la connexion provisionnée.",
993
- "copyLabel": "Copy",
994
- "copiedLabel": "Copied"
994
+ "copyLabel": "Copier",
995
+ "copiedLabel": "Copié"
995
996
  },
996
997
  "onboardingChecklist": {
997
998
  "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.",
998
999
  "emptyTitle": "Rien à configurer",
999
1000
  "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"
1001
+ "progressLabel": "{done} sur {total} terminées",
1002
+ "celebrateTitle": "Tout est terminé"
1002
1003
  },
1003
1004
  "testimonialCard": {
1004
1005
  "description": "Une citation client avec avatar et attribution.",
@@ -1042,7 +1043,7 @@ export default {
1042
1043
  "description": "Une grille de moodboard avec emplacements d'images et légendes, pour les tables contenant des URL d'images.",
1043
1044
  "emptyTitle": "Aucune image pour l'instant",
1044
1045
  "emptyBody": "Les images de référence apparaîtront sur ce tableau.",
1045
- "placeholder": "Drop reference"
1046
+ "placeholder": "Déposez une référence"
1046
1047
  },
1047
1048
  "linkList": {
1048
1049
  "description": "Liens de référence avec titres et URL, ouverts dans un nouvel onglet.",
@@ -1083,16 +1084,16 @@ export default {
1083
1084
  "successTitle": "Enregistrement créé",
1084
1085
  "successBody": "L’enregistrement a été sauvegardé.",
1085
1086
  "required": "Ce champ est obligatoire.",
1086
- "titleLabel": "Create record",
1087
- "closeLabel": "Close"
1087
+ "titleLabel": "Créer un enregistrement",
1088
+ "closeLabel": "Fermer"
1088
1089
  },
1089
1090
  "drawerForm": {
1090
1091
  "description": "Un panneau latéral de création ou d’édition pour les enregistrements à nombreux champs.",
1091
1092
  "trigger": "Nouveau",
1092
1093
  "submit": "Enregistrer",
1093
1094
  "cancel": "Annuler",
1094
- "titleLabel": "New record",
1095
- "closeLabel": "Close"
1095
+ "titleLabel": "Nouvel enregistrement",
1096
+ "closeLabel": "Fermer"
1096
1097
  },
1097
1098
  "stepper": {
1098
1099
  "description": "Un indicateur d’étapes montrant l’avancement d’un parcours en plusieurs étapes.",
@@ -1144,20 +1145,20 @@ export default {
1144
1145
  "valuePlaceholder": "Valeur…",
1145
1146
  "emptyBody": "Aucune condition — ajoutez-en une pour définir ce segment.",
1146
1147
  "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"
1148
+ "eq": "est",
1149
+ "neq": "n’est pas",
1150
+ "gt": "est supérieur à",
1151
+ "gte": "est supérieur ou égal à",
1152
+ "lt": "est inférieur à",
1153
+ "lte": "est inférieur ou égal à",
1154
+ "contains": "contient",
1155
+ "not-contains": "ne contient pas",
1156
+ "starts-with": "commence par",
1157
+ "in": "fait partie de",
1158
+ "before": "est avant",
1159
+ "after": "est après",
1160
+ "is-null": "est vide",
1161
+ "is-not-null": "n’est pas vide"
1161
1162
  }
1162
1163
  },
1163
1164
  "flowBuilder": {
@@ -1225,14 +1226,14 @@ export default {
1225
1226
  "emptyTitle": "Aucune question",
1226
1227
  "emptyBody": "Choisissez un type de question pour commencer votre sondage.",
1227
1228
  "questionLabel": "Question",
1228
- "dropdownPlaceholder": "Choose…",
1229
+ "dropdownPlaceholder": "Choisir…",
1229
1230
  "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",
1231
+ "single-choice": "Choix unique",
1232
+ "multi-choice": "Choix multiple",
1233
+ "dropdown": "Liste déroulante",
1234
+ "short-text": "Texte court",
1235
+ "long-text": "Texte long",
1236
+ "rating": "Note en étoiles",
1236
1237
  "nps": "NPS 0–10",
1237
1238
  "date": "Date"
1238
1239
  }
@@ -1243,7 +1244,7 @@ export default {
1243
1244
  "save": "Enregistrer",
1244
1245
  "cancel": "Annuler",
1245
1246
  "empty": "Vide",
1246
- "valueLabel": "Value"
1247
+ "valueLabel": "Valeur"
1247
1248
  },
1248
1249
  "passwordStrengthMeter": {
1249
1250
  "description": "Un indicateur en quatre segments de la robustesse du mot de passe.",
@@ -1268,7 +1269,7 @@ export default {
1268
1269
  "navigate": "Naviguer",
1269
1270
  "select": "Ouvrir",
1270
1271
  "close": "Fermer",
1271
- "emptyTitle": "No results for \"{query}\"",
1272
+ "emptyTitle": "Aucun résultat pour « {query} »",
1272
1273
  "emptyBody": "Commencez à taper pour rechercher.",
1273
1274
  "groupActions": "Actions",
1274
1275
  "groupNavigate": "Naviguer",
@@ -1285,8 +1286,8 @@ export default {
1285
1286
  "summary": "{count} résultats pour « {query} »",
1286
1287
  "emptyTitle": "Aucun résultat",
1287
1288
  "emptyBody": "Essayez un autre terme de recherche.",
1288
- "searchLabel": "Search",
1289
- "facetRailLabel": "Filter by type"
1289
+ "searchLabel": "Rechercher",
1290
+ "facetRailLabel": "Filtrer par type"
1290
1291
  },
1291
1292
  "breadcrumb": {
1292
1293
  "description": "Le fil d’Ariane de l’enregistrement ou du dossier courant.",
@@ -1306,22 +1307,22 @@ export default {
1306
1307
  "footerHint": "Appuyez sur ? à tout moment",
1307
1308
  "then": "puis",
1308
1309
  "emptyTitle": "Aucun raccourci enregistré.",
1309
- "generalGroupLabel": "General",
1310
+ "generalGroupLabel": "Général",
1310
1311
  "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"
1312
+ "recordsGroupLabel": "Enregistrements",
1313
+ "openCommandPaletteLabel": "Ouvrir la palette de commandes",
1314
+ "searchLabel": "Rechercher",
1315
+ "showShortcutsLabel": "Afficher les raccourcis",
1316
+ "goToDashboardLabel": "Aller au tableau de bord",
1317
+ "goToOrdersLabel": "Aller aux commandes",
1318
+ "newRecordLabel": "Nouvel enregistrement",
1319
+ "saveLabel": "Enregistrer",
1320
+ "undoLabel": "Annuler"
1320
1321
  },
1321
1322
  "avatarStack": {
1322
1323
  "description": "Des avatars superposés avec débordement « +N » et présence optionnelle.",
1323
1324
  "online": "{count} en ligne",
1324
- "a11yLabel": "People"
1325
+ "a11yLabel": "Personnes"
1325
1326
  }
1326
1327
  },
1327
1328
  "system": {
@@ -1396,10 +1397,10 @@ export default {
1396
1397
  "latency": "Latence"
1397
1398
  },
1398
1399
  "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."
1400
+ "description": "La carte de repli affichée lorsqu’une page enregistrée référence un widget qui n’est pas installé.",
1401
+ "title": "Widget indisponible",
1402
+ "bodyLead": "Aucun widget n’est enregistré sous",
1403
+ "bodyTail": "Il appartient peut-être à une version plus récente ou à une extension désinstallée."
1403
1404
  }
1404
1405
  }
1405
1406
  },
@@ -1413,350 +1414,350 @@ export default {
1413
1414
  "committed": "{title} placé à la colonne {col}, ligne {row}.",
1414
1415
  "reverted": "{title} remis à sa position initiale."
1415
1416
  },
1416
- "draggableRole": "draggable widget"
1417
+ "draggableRole": "widget déplaçable"
1417
1418
  },
1418
1419
  "templates": {
1419
1420
  "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.}}",
1421
+ "newRow": "Nouvelle ligne",
1422
+ "exportAction": "Exporter",
1423
+ "searchPlaceholder": "Rechercher dans {table}…",
1424
+ "removeFilter": "Supprimer le filtre {column}",
1425
+ "queryFailed": "Échec de la requête",
1426
+ "loadingRows": "Chargement des lignes",
1427
+ "noMatchesTitle": "Aucune ligne correspondante",
1428
+ "emptyTitle": "{count, plural, one {Pas encore de {entity}} other {Pas encore de {entity}}}",
1429
+ "createTitle": "Ajouter {entity}",
1430
+ "createSubtitle": "Crée une ligne dans {table}.",
1431
+ "createSubmit": "Ajouter {entity}",
1432
+ "createSuccessTitle": "{name} ajouté",
1433
+ "createSuccessBody": "Vous pouvez annuler cette action depuis la notification.",
1434
+ "editTitle": "Modifier {entity}",
1435
+ "saveSubmit": "Enregistrer les modifications",
1436
+ "deleteTitle": "Supprimer {entity}",
1437
+ "deletePreflight": "Vérification des références…",
1438
+ "deleteNoReferences": "Cette ligne n’a aucune référence entrante.",
1439
+ "deleteConsequencesIntro": "Supprimer cette ligne affecte aussi :",
1440
+ "referenceRows": "{count, plural, one {{n} ligne} other {{n} lignes}}",
1441
+ "confirmPrompt": "Saisissez {value} pour confirmer",
1442
+ "bulkDeleteTitle": "{count, plural, one {Supprimer {n} ligne} other {Supprimer {n} lignes}}",
1443
+ "bulkDeleteBody": "Les conséquences référentielles s’appliquent à chaque ligne sélectionnée.",
1444
+ "bulkDeleteConfirm": "Supprimer les lignes",
1445
+ "uniqueHelper": "Doit être unique dans {table}.",
1446
+ "uniqueHelperCounted": "{count, plural, one {Vérifié sur {n} ligne.} other {Vérifié sur {n} lignes.}}",
1446
1447
  "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."
1448
+ "created": "{entity} créé.",
1449
+ "createFailed": "Échec de la création.",
1450
+ "saved": "Modifications enregistrées.",
1451
+ "updateFailed": "Échec de la mise à jour.",
1452
+ "deleted": "{name} supprimé.",
1453
+ "deleteFailed": "Échec de la suppression.",
1454
+ "bulkDeleted": "{count, plural, one {{n} ligne supprimée.} other {{n} lignes supprimées.}}",
1455
+ "bulkDeleteFailed": "Échec de la suppression groupée.",
1456
+ "undone": "Modification annulée.",
1457
+ "undoFailed": "Échec de l’annulation."
1457
1458
  },
1458
1459
  "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."
1460
+ "fields": "Champs",
1461
+ "inboundReferences": "références entrantes",
1462
+ "relatedCount": "{count, plural, one {{n} enregistrement lié dans {table}} other {{n} enregistrements liés dans {table}}}",
1463
+ "loadError": "Impossible de charger l’enregistrement."
1463
1464
  }
1464
1465
  },
1465
1466
  "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."
1467
+ "allSegment": "Tout",
1468
+ "daysUnit": "{count, plural, one {{count} jour} other {{count} jours}}",
1469
+ "approvedToast": "{count} approuvées.",
1470
+ "rejectedToast": "{count} rejetées.",
1471
+ "undoneToast": "Décision annulée.",
1472
+ "undoFailedToast": "Impossible d’annuler cette décision.",
1473
+ "failedToast": "Échec de la décision.",
1474
+ "invalidConfig": "La configuration enregistrée de cette file d’attente est invalide. Régénérez la page pour la restaurer.",
1475
+ "queueLabel": "File d’attente",
1476
+ "statusFilterLabel": "Filtre de statut",
1477
+ "errorTitle": "Cette file d’attente n’a pas pu être chargée",
1478
+ "loading": "Chargement de la file d’attente",
1479
+ "emptyTitle": "Rien dans la file d’attente",
1480
+ "emptyBody": "Les nouvelles demandes apparaissent ici à mesure qu’elles arrivent.",
1481
+ "caughtUpTitle": "Vous êtes à jour",
1482
+ "caughtUpBody": "Aucune demande dans cet onglet pour l’instant.",
1483
+ "selectItem": "Sélectionner {title}",
1484
+ "selectPrompt": "Sélectionnez une demande",
1485
+ "selectBody": "Choisissez un élément pour en examiner les détails.",
1486
+ "rejectTitle": "Rejeter les demandes",
1487
+ "rejectCount": "Sélectionnées · {count}",
1488
+ "rejectPlaceholder": "Ajoutez une note pour le demandeur…",
1489
+ "rejectReasonLabel": "Motif du rejet",
1490
+ "rejectNote": "Le demandeur sera notifié avec votre note."
1490
1491
  },
1491
1492
  "dashboard": {
1492
- "invalidLayout": "This dashboard’s stored layout is invalid. Regenerate the page or reset its layout."
1493
+ "invalidLayout": "La disposition enregistrée de ce tableau de bord est invalide. Régénérez la page ou réinitialisez sa disposition."
1493
1494
  },
1494
1495
  "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.",
1496
+ "publish": "Publier",
1497
+ "paletteTitle": "Blocs",
1498
+ "inspectorTitle": "Inspecteur",
1499
+ "startFromTemplate": "Partir d’un modèle",
1500
+ "untitledDoc": "Document sans titre",
1501
+ "invalidConfig": "La configuration enregistrée de cette page d’éditeur est invalide. Régénérez la page ou réinitialisez-la.",
1501
1502
  "starterPicker": {
1502
- "subtitle": "Selection replaces the current draft."
1503
+ "subtitle": "Votre sélection remplace le brouillon actuel."
1503
1504
  },
1504
1505
  "inspector": {
1505
- "titleLabel": "Title",
1506
- "numberLabel": "Number",
1507
- "currencyLabel": "Currency",
1508
- "taxRateLabel": "Tax rate %",
1506
+ "titleLabel": "Titre",
1507
+ "numberLabel": "Numéro",
1508
+ "currencyLabel": "Devise",
1509
+ "taxRateLabel": "Taux de taxe %",
1509
1510
  "modulesLabel": "Modules"
1510
1511
  },
1511
1512
  "summary": {
1512
1513
  "questions": "Questions",
1513
- "estLength": "Est. length",
1514
+ "estLength": "Durée est.",
1514
1515
  "estMinutes": "~{minutes} min",
1515
- "steps": "Steps",
1516
- "triggers": "Triggers",
1516
+ "steps": "Étapes",
1517
+ "triggers": "Déclencheurs",
1517
1518
  "conditions": "Conditions",
1518
1519
  "actions": "Actions",
1519
- "triggerLocked": "The trigger step can’t be removed."
1520
+ "triggerLocked": "L’étape de déclenchement ne peut pas être supprimée."
1520
1521
  },
1521
1522
  "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."
1523
+ "confirmTitle": "Publier le sondage ?",
1524
+ "confirmSubtitle": "Vérifiez avant la mise en ligne.",
1525
+ "confirmCta": "Publier le sondage",
1526
+ "publishedTitle": "Sondage publié",
1527
+ "publishedSubtitle": "Votre sondage est en ligne et collecte des réponses dès maintenant."
1527
1528
  },
1528
1529
  "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",
1530
+ "block-totals-summary": "Récapitulatif des totaux",
1531
+ "block-line-items": "Lignes du document",
1532
+ "block-kpi-row": "Rangée de KPI",
1533
+ "block-bar-chart": "Graphique à barres",
1534
+ "block-line-chart": "Graphique en courbes",
1535
+ "block-two-col-table": "Tableau à deux colonnes",
1536
+ "block-tax-breakdown": "Détail des taxes",
1537
+ "block-multi-currency": "Multidevise",
1538
+ "block-payment-history": "Historique des paiements",
1539
+ "block-discount-codes": "Codes de remise",
1540
+ "block-loyalty-banner": "Points de fidélité",
1541
+ "block-recurring-banner": "Récurrence",
1542
+ "block-qr-pay": "QR de paiement",
1543
+ "block-delivery-stepper": "Suivi de livraison",
1543
1544
  "block-signature": "Signature",
1544
- "block-terms-checkbox": "Terms",
1545
- "block-approval": "Approval",
1546
- "block-attachments": "Attachments",
1547
- "block-late-fees": "Late fees",
1545
+ "block-terms-checkbox": "Conditions",
1546
+ "block-approval": "Approbation",
1547
+ "block-attachments": "Pièces jointes",
1548
+ "block-late-fees": "Pénalités de retard",
1548
1549
  "block-image-placeholder": "Image",
1549
1550
  "block-contact": "Contact",
1550
- "block-highlight-box": "Highlight box"
1551
+ "block-highlight-box": "Encadré"
1551
1552
  },
1552
1553
  "starters": {
1553
1554
  "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",
1555
+ "st-standard": "Facture standard",
1556
+ "st-recurring": "Abonnement récurrent",
1557
+ "st-deposit": "Demande d’acompte",
1558
+ "st-credit-note": "Avoir",
1559
+ "st-late-reminder": "Relance de paiement en retard",
1560
+ "st-quote": "Devis / estimation",
1560
1561
  "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"
1562
+ "st-receipt": "Reçu de paiement",
1563
+ "st-retainer": "Provision sur honoraires",
1564
+ "st-usage": "Facture à l’usage",
1565
+ "st-milestone": "Jalon de projet",
1566
+ "st-donation": "Reçu de don (numéro fiscal)",
1567
+ "st-monthly": "Récapitulatif mensuel",
1568
+ "st-quarterly": "Bilan trimestriel",
1569
+ "st-usage-report": "Détail de la consommation",
1570
+ "st-exec": "Synthèse d’une page",
1571
+ "st-welcome": "E-mail de bienvenue",
1572
+ "st-receipt-email": "Reçu de facture",
1573
+ "st-digest": "Résumé hebdomadaire",
1574
+ "st-dunning": "Rappel de paiement"
1574
1575
  },
1575
1576
  "categories": {
1576
- "billing": "Billing",
1577
- "sales": "Sales",
1578
- "nonProfit": "Non-profit",
1579
- "reports": "Reports",
1580
- "lifecycle": "Lifecycle",
1581
- "transactional": "Transactional",
1577
+ "billing": "Facturation",
1578
+ "sales": "Ventes",
1579
+ "nonProfit": "Associatif",
1580
+ "reports": "Rapports",
1581
+ "lifecycle": "Cycle de vie",
1582
+ "transactional": "Transactionnel",
1582
1583
  "marketing": "Marketing"
1583
1584
  }
1584
1585
  }
1585
1586
  },
1586
1587
  "common": {
1587
- "clearFilters": "Clear filters",
1588
- "noMatchesBody": "Try a different search or remove a filter.",
1589
- "detailLabel": "Detail",
1590
- "loadingRecord": "Loading record"
1588
+ "clearFilters": "Effacer les filtres",
1589
+ "noMatchesBody": "Essayez une autre recherche ou supprimez un filtre.",
1590
+ "detailLabel": "Détail",
1591
+ "loadingRecord": "Chargement de l’enregistrement"
1591
1592
  },
1592
1593
  "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"
1594
+ "invalidConfig": "La configuration enregistrée de cet annuaire est invalide. Régénérez la page pour la restaurer.",
1595
+ "searchPlaceholder": "Rechercher des personnes…",
1596
+ "memberCount": "{count, plural, one {{n} personne} other {{n} personnes}}",
1597
+ "errorTitle": "Cet annuaire n’a pas pu être chargé",
1598
+ "loading": "Chargement des personnes",
1599
+ "emptyTitle": "Aucune personne pour l’instant",
1600
+ "emptyBody": "Les personnes apparaissent ici à mesure que des lignes arrivent dans la table.",
1601
+ "noMatchesTitle": "Aucune personne correspondante",
1602
+ "detailTitle": "Personne"
1602
1603
  },
1603
1604
  "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."
1605
+ "invalidConfig": "La configuration enregistrée de cette page est invalide. Régénérez la page pour la restaurer.",
1606
+ "railTitle": "Enregistrements",
1607
+ "errorTitle": "Cette liste n’a pas pu être chargée",
1608
+ "loading": "Chargement des enregistrements",
1609
+ "emptyBody": "Les enregistrements apparaissent ici à mesure que des lignes arrivent dans la table.",
1610
+ "noMatchesTitle": "Aucun enregistrement correspondant",
1611
+ "noMatchesBody": "Essayez de supprimer un filtre.",
1612
+ "selectPrompt": "Sélectionnez un enregistrement",
1613
+ "selectBody": "Choisissez un élément de la liste pour en voir les détails."
1613
1614
  },
1614
1615
  "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."
1616
+ "invalidLayout": "La disposition enregistrée de cette page de messagerie est invalide. Régénérez la page ou réinitialisez sa disposition.",
1617
+ "noInboxTitle": "Aucune boîte de réception sur cette page",
1618
+ "noInboxBody": "Régénérez la page.",
1619
+ "conversationsFailed": "La requête des conversations a échoué",
1620
+ "messagesFailed": "La requête des messages a échoué",
1621
+ "loadingConversations": "Chargement des conversations",
1622
+ "loadingMessages": "Chargement des messages",
1623
+ "selectTitle": "Sélectionnez une conversation",
1624
+ "selectBody": "Choisissez une conversation dans la boîte de réception pour lire ses messages."
1624
1625
  },
1625
1626
  "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"
1627
+ "allFiles": "Tous les fichiers",
1628
+ "recent": "Récents",
1629
+ "starred": "Favoris",
1630
+ "invalidLayout": "La disposition enregistrée de cette page de fichiers est invalide. Régénérez la page ou réinitialisez sa disposition.",
1631
+ "missingSlotTitle": "Aucun explorateur de fichiers sur cette page",
1632
+ "missingSlotBody": "La disposition enregistrée n’a aucun emplacement d’explorateur. Régénérez la page.",
1633
+ "loadFailed": "La requête des fichiers a échoué",
1634
+ "loading": "Chargement des fichiers",
1635
+ "uploadsUnavailable": "Les téléversements ne sont pas encore disponibles sur cette page.",
1636
+ "previewTitle": "Fichier",
1637
+ "kindLabel": "Nature",
1638
+ "linkLabel": "Lien"
1638
1639
  },
1639
1640
  "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",
1641
+ "invalidLayout": "La disposition enregistrée de cette page de journal est invalide. Régénérez la page ou réinitialisez sa disposition.",
1642
+ "levelFilterLabel": "Filtre de niveau de journal",
1643
+ "timeFilterLabel": "Filtre de fenêtre temporelle",
1643
1644
  "window": {
1644
- "1h": "1h",
1645
- "24h": "24h",
1646
- "7d": "7d"
1645
+ "1h": "1 h",
1646
+ "24h": "24 h",
1647
+ "7d": "7 j"
1647
1648
  },
1648
1649
  "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",
1650
+ "missingSlotTitle": "Aucun widget de journal sur cette page",
1651
+ "missingSlotBody": "La disposition enregistrée n’a aucun emplacement de journal. Régénérez la page.",
1652
+ "loadFailed": "La requête du journal a échoué",
1653
+ "loading": "Chargement des entrées de journal",
1653
1654
  "traceTitle": "Trace",
1654
- "latestTitle": "Latest activity",
1655
- "backToLatest": "Back to latest",
1656
- "eventFallback": "Event"
1655
+ "latestTitle": "Activité récente",
1656
+ "backToLatest": "Revenir aux dernières entrées",
1657
+ "eventFallback": "Événement"
1657
1658
  },
1658
1659
  "calendar": {
1659
- "eventCount": "{count, plural, one {{n} event} other {{n} events}}",
1660
- "composePlaceholder": "Event title…",
1661
- "addEvent": "Add event",
1662
- "dateRange": "Date range",
1660
+ "eventCount": "{count, plural, one {{n} événement} other {{n} événements}}",
1661
+ "composePlaceholder": "Titre de l’événement…",
1662
+ "addEvent": "Ajouter un événement",
1663
+ "dateRange": "Période",
1663
1664
  "agendaTitle": "Agenda",
1664
- "categoriesTitle": "Categories",
1665
- "upcomingTitle": "Upcoming",
1666
- "invalidLayout": "This calendar’s stored layout is invalid. Regenerate the page or reset its layout."
1665
+ "categoriesTitle": "Catégories",
1666
+ "upcomingTitle": "À venir",
1667
+ "invalidLayout": "La disposition enregistrée de ce calendrier est invalide. Régénérez la page ou réinitialisez sa disposition."
1667
1668
  },
1668
1669
  "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"
1670
+ "previousWeek": "Semaine précédente",
1671
+ "nextWeek": "Semaine suivante",
1672
+ "week": "Semaine",
1673
+ "month": "Mois",
1674
+ "invalidLayout": "La disposition enregistrée de ce planning est invalide. Régénérez la page ou réinitialisez sa disposition.",
1675
+ "shiftCount": "{count, plural, one {{n} créneau} other {{n} créneaux}}",
1676
+ "addShift": "Ajouter un créneau"
1676
1677
  },
1677
1678
  "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."
1679
+ "title": "Paramètres de notification",
1680
+ "subtitle": "Choisissez de quoi vous êtes notifié et comment",
1681
+ "matrixLabel": "Me notifier pour",
1682
+ "rowHeader": "Événement",
1683
+ "saved": "Enregistré",
1684
+ "unavailableTag": "Pas encore disponible",
1685
+ "loading": "Chargement des préférences",
1686
+ "errorTitle": "Ces paramètres n’ont pas pu être chargés",
1687
+ "emptyTitle": "Rien à configurer pour l’instant",
1688
+ "emptyBody": "Les événements de notification apparaissent ici à mesure que leurs producteurs sont livrés."
1688
1689
  },
1689
1690
  "pageCrud": {
1690
- "description": "The canonical table page: searchable data grid, create/edit forms, safe deletes with reference checks, and undoable changes."
1691
+ "description": "La page de table de référence : grille de données avec recherche, formulaires de création et d’édition, suppressions sûres avec vérification des références et modifications annulables."
1691
1692
  },
1692
1693
  "pageDashboard": {
1693
- "description": "A widget dashboard over your data: KPI cards, charts, and lists on an editable grid."
1694
+ "description": "Un tableau de bord de widgets sur vos données : cartes de KPI, graphiques et listes sur une grille modifiable."
1694
1695
  },
1695
1696
  "pageBoard": {
1696
- "description": "A kanban board grouped by a status fielddrag cards between columns to update records."
1697
+ "description": "Un tableau kanban regroupé par un champ de statutfaites glisser les cartes entre les colonnes pour mettre à jour les enregistrements."
1697
1698
  },
1698
1699
  "pageCalendar": {
1699
- "description": "A month calendar with agenda, category filters, and quick event capture from a date field."
1700
+ "description": "Un calendrier mensuel avec agenda, filtres de catégorie et saisie rapide d’événements à partir d’un champ de date."
1700
1701
  },
1701
1702
  "pageScheduler": {
1702
- "description": "A week-by-resource shift matrix with capacity tracking and coverage totals."
1703
+ "description": "Une matrice de créneaux semaine par ressource, avec suivi de la capacité et totaux de couverture."
1703
1704
  },
1704
1705
  "pageDirectory": {
1705
- "description": "A people directory with search, group filters, and a profile drawer."
1706
+ "description": "Un annuaire de personnes avec recherche, filtres de groupe et un panneau latéral de profil."
1706
1707
  },
1707
1708
  "pageMasterDetail": {
1708
- "description": "A list-beside-detail layout: pick a record on the left, work with it on the right."
1709
+ "description": "Une disposition liste et détail : choisissez un enregistrement à gauche, travaillez dessus à droite."
1709
1710
  },
1710
1711
  "pageQueueInbox": {
1711
- "description": "A review queue with approve/reject decisions, bulk actions, and undo."
1712
+ "description": "Une file d’attente de revue avec décisions d’approbation ou de rejet, actions groupées et annulation."
1712
1713
  },
1713
1714
  "pageLogViewer": {
1714
- "description": "A live-tailing log table with level and time filters and a trace side panel."
1715
+ "description": "Un tableau de journal en suivi direct, avec filtres de niveau et de temps et un panneau latéral de trace."
1715
1716
  },
1716
1717
  "pageFiles": {
1717
- "description": "A file browser with smart folders, uploads, and a preview drawer."
1718
+ "description": "Un explorateur de fichiers avec dossiers intelligents, téléversements et un panneau latéral d’aperçu."
1718
1719
  },
1719
1720
  "pageChat": {
1720
- "description": "A conversation inbox beside a message thread, bound to your messages tables."
1721
+ "description": "Une boîte de réception de conversations à côté d’un fil de messages, liée à vos tables de messages."
1721
1722
  },
1722
1723
  "pageBuilder": {
1723
- "description": "A drag-and-drop document builder with block palette, inspector, and publish flow."
1724
+ "description": "Un éditeur de documents en glisser-déposer avec palette de blocs, inspecteur et flux de publication."
1724
1725
  },
1725
1726
  "pageWizard": {
1726
- "description": "A multi-step guided flow that walks users through a structured process."
1727
+ "description": "Un flux guidé en plusieurs étapes qui accompagne les utilisateurs dans un processus structuré."
1727
1728
  },
1728
1729
  "pageSettings": {
1729
- "description": "A notification-preferences matrix with per-channel toggles and autosave."
1730
+ "description": "Une matrice de préférences de notification avec interrupteurs par canal et enregistrement automatique."
1730
1731
  }
1731
1732
  },
1732
1733
  "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"
1734
+ "noResult": "Aucun résultat pour ce widget",
1735
+ "emptyTitle": "Aucune donnée pour cette période",
1736
+ "loadError": "Une erreur s’est produite lors du chargement de ce widget.",
1737
+ "renderError": "Ce widget n’a pas pu s’afficher.",
1738
+ "refreshing": "Actualisation",
1739
+ "infoLabel": "Infos du widget",
1740
+ "menuLabel": "Menu du widget"
1740
1741
  },
1741
1742
  "charts": {
1742
- "livePillLabel": "Live",
1743
+ "livePillLabel": "En direct",
1743
1744
  "forecast": {
1744
- "nowLabel": "Now",
1745
- "forecastLabel": "Forecast",
1746
- "actualLabel": "Actual"
1745
+ "nowLabel": "Maintenant",
1746
+ "forecastLabel": "Prévision",
1747
+ "actualLabel": "Réel"
1747
1748
  },
1748
- "otherLabel": "Other",
1749
+ "otherLabel": "Autre",
1749
1750
  "heat": {
1750
- "lessLabel": "Less",
1751
- "moreLabel": "More"
1751
+ "lessLabel": "Moins",
1752
+ "moreLabel": "Plus"
1752
1753
  },
1753
1754
  "choropleth": {
1754
- "lowLabel": "Low",
1755
- "highLabel": "High"
1755
+ "lowLabel": "Faible",
1756
+ "highLabel": "Élevé"
1756
1757
  },
1757
1758
  "funnel": {
1758
- "stepConversion": "{pct}% continue",
1759
- "overallConversion": "{pct}% overall"
1759
+ "stepConversion": "{pct}% poursuivent",
1760
+ "overallConversion": "{pct}% au total"
1760
1761
  }
1761
1762
  }
1762
1763
  };