@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
@@ -18,7 +18,7 @@
18
18
  "hidePassword": "Masquer le mot de passe",
19
19
  "reveal": "Révéler",
20
20
  "hide": "Masquer",
21
- "clearSearch": "Clear search"
21
+ "clearSearch": "Effacer la recherche"
22
22
  },
23
23
  "state": {
24
24
  "loading": "Chargement…",
@@ -61,8 +61,8 @@
61
61
  },
62
62
  "usageMeter": {
63
63
  "description": "Consommation du quota par rapport à une limite ; la barre passe à l'orange puis au rouge au-delà de vos seuils.",
64
- "usageLabel": "Usage",
65
- "ofLabel": "of"
64
+ "usageLabel": "Utilisation",
65
+ "ofLabel": "sur"
66
66
  },
67
67
  "statTileCompact": {
68
68
  "description": "Une tuile de mesure fine avec micro-libellé, puce de tendance et spark à 6 barres — pour des rangées denses de 4 à 6."
@@ -79,16 +79,16 @@
79
79
  },
80
80
  "gaugeArc": {
81
81
  "description": "Un arc de compteur avec plages qualitatives et aiguille ; affiche aussi une grille de jauges.",
82
- "emptyTitle": "No gauges to show",
83
- "emptyBody": "Services appear here as gauges once there is a reading for them."
82
+ "emptyTitle": "Aucune jauge à afficher",
83
+ "emptyBody": "Les services apparaissent ici sous forme de jauges dès qu’une mesure existe pour eux."
84
84
  },
85
85
  "periodComparison": {
86
86
  "description": "Cette période face à la précédente en deux barres, avec l'écart calculé en dessous.",
87
87
  "higherLabel": "de plus",
88
88
  "lowerLabel": "de moins",
89
89
  "flatLabel": "stable",
90
- "periodALabel": "This period",
91
- "periodBLabel": "Last period"
90
+ "periodALabel": "Cette période",
91
+ "periodBLabel": "Période précédente"
92
92
  },
93
93
  "microKpiSubtitle": {
94
94
  "description": "Une statistique d'en-tête sur une ligne, construite à partir d'un modèle et recalculée en direct."
@@ -105,216 +105,216 @@
105
105
  "description": "Résumé en boîte à moustaches de la dispersion d'une colonne numérique par catégorie — min, quartiles, médiane et max.",
106
106
  "emptyTitle": "Aucune distribution à tracer",
107
107
  "emptyBody": "Aucune ligne ne correspond aux filtres pour les boîtes à moustaches.",
108
- "chartLabel": "Box plot"
108
+ "chartLabel": "Boîte à moustaches"
109
109
  },
110
110
  "violin": {
111
111
  "description": "Courbes de densité en miroir comparant la distribution d'une colonne numérique entre les groupes.",
112
112
  "emptyTitle": "Aucune distribution à tracer",
113
113
  "emptyBody": "Aucune ligne ne correspond aux filtres pour les profils de densité.",
114
- "chartLabel": "Violin plot"
114
+ "chartLabel": "Diagramme en violon"
115
115
  },
116
116
  "ridgeline": {
117
117
  "description": "Crêtes de densité superposées comparant une colonne numérique entre groupes ordonnés.",
118
118
  "emptyTitle": "Aucune crête à tracer",
119
119
  "emptyBody": "Aucune ligne ne correspond aux filtres pour les profils de densité.",
120
- "chartLabel": "Ridgeline"
120
+ "chartLabel": "Crêtes de densité"
121
121
  },
122
122
  "scatterBubble": {
123
123
  "description": "Deux colonnes numériques en points, avec une taille de bulle et une ligne de tendance en option.",
124
124
  "emptyTitle": "Aucun point à tracer",
125
125
  "emptyBody": "Aucune ligne ne correspond aux filtres pour les colonnes choisies.",
126
- "chartLabel": "Scatter plot"
126
+ "chartLabel": "Nuage de points"
127
127
  },
128
128
  "hexbin": {
129
129
  "description": "Densité hexagonale de deux colonnes numériques, teintée selon le nombre de lignes par tuile.",
130
130
  "emptyTitle": "Aucune densité à tracer",
131
131
  "emptyBody": "Aucune ligne ne correspond aux filtres à regrouper.",
132
- "chartLabel": "Density hexbin"
132
+ "chartLabel": "Densité hexagonale"
133
133
  },
134
134
  "correlationMatrix": {
135
135
  "description": "Corrélation de Pearson entre colonnes numériques choisies, du fortement positif au fortement négatif.",
136
136
  "emptyTitle": "Rien à corréler",
137
137
  "emptyBody": "Choisissez au moins deux colonnes numériques avec des lignes correspondantes.",
138
- "chartLabel": "Correlation matrix"
138
+ "chartLabel": "Matrice de corrélation"
139
139
  },
140
140
  "parallelCoordinates": {
141
141
  "description": "Chaque enregistrement en ligne sur plusieurs axes numériques normalisés, coloré par catégorie.",
142
142
  "emptyTitle": "Aucun enregistrement à tracer",
143
143
  "emptyBody": "Aucune ligne ne correspond aux filtres sur les axes choisis.",
144
- "chartLabel": "Parallel coordinates"
144
+ "chartLabel": "Coordonnées parallèles"
145
145
  },
146
- "unexpectedShape": "Unexpected data shape.",
146
+ "unexpectedShape": "Format de données inattendu.",
147
147
  "lineArea": {
148
- "chartLabel": "Line chart",
149
- "description": "A metric over time as a line with a soft area fill, with an optional dashed prior-period comparison."
148
+ "chartLabel": "Graphique en courbes",
149
+ "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."
150
150
  },
151
151
  "bar": {
152
- "chartLabel": "Bar chart",
153
- "description": "Categorical or time-bucketed values as vertical bars, with an optional highlight on the largest or current bar."
152
+ "chartLabel": "Graphique à barres",
153
+ "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."
154
154
  },
155
155
  "donut": {
156
- "chartLabel": "Donut chart",
157
- "otherLabel": "Other",
158
- "description": "Category shares as donut slices with a legend and centre total, folding small slices into an Other bucket."
156
+ "chartLabel": "Graphique en anneau",
157
+ "otherLabel": "Autres",
158
+ "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 »."
159
159
  },
160
160
  "bullet": {
161
- "chartLabel": "Bullet chart",
162
- "description": "Progress toward a goal as a measure bar over qualitative bands, with a target tick per row.",
163
- "emptyTitle": "No goals to track",
164
- "emptyBody": "Add measures with targets to compare against."
161
+ "chartLabel": "Graphique en puce",
162
+ "description": "La progression vers un objectif sous forme de barre de mesure sur des plages qualitatives, avec un repère de cible par ligne.",
163
+ "emptyTitle": "Aucun objectif à suivre",
164
+ "emptyBody": "Ajoutez des mesures assorties de cibles à comparer."
165
165
  },
166
166
  "rankingBars": {
167
- "chartLabel": "Ranking",
168
- "description": "A top-N ranking as horizontal barsthe leader at full strength, the rest dimmedwith values alongside.",
169
- "emptyTitle": "Nothing to rank",
170
- "emptyBody": "No records matched this breakdown yet."
167
+ "chartLabel": "Classement",
168
+ "description": "Un classement des N premiers en barres horizontalesle leader en pleine intensité, les autres atténuésavec les valeurs à côté.",
169
+ "emptyTitle": "Rien à classer",
170
+ "emptyBody": "Aucun enregistrement ne correspond encore à cette répartition."
171
171
  },
172
172
  "pareto": {
173
- "chartLabel": "Pareto chart",
174
- "description": "Sorted category bars under a cumulative-percent line, with an optional 80% cutline.",
175
- "emptyTitle": "No categories to chart",
176
- "emptyBody": "No grouped counts were returned for this range."
173
+ "chartLabel": "Diagramme de Pareto",
174
+ "description": "Des barres de catégories triées sous une courbe de pourcentage cumulé, avec une ligne de coupure à 80 % en option.",
175
+ "emptyTitle": "Aucune catégorie à représenter",
176
+ "emptyBody": "Aucun décompte groupé n’a été renvoyé pour cette plage."
177
177
  },
178
178
  "waterfall": {
179
- "chartLabel": "Waterfall chart",
180
- "description": "A floating-bar bridge from a start total through positive and negative steps to a net total.",
181
- "emptyTitle": "No movement to bridge",
182
- "emptyBody": "No start, change, or total steps were found."
179
+ "chartLabel": "Graphique en cascade",
180
+ "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.",
181
+ "emptyTitle": "Aucune variation à relier",
182
+ "emptyBody": "Aucune étape de départ, de variation ou de total n’a été trouvée."
183
183
  },
184
184
  "marimekko": {
185
- "chartLabel": "Marimekko chart",
186
- "description": "A two-level mix as variable-width stacked columnswidth for the outer share, segments for the inner split.",
187
- "emptyTitle": "No mix to break down",
188
- "emptyBody": "No two-level breakdown was returned for this range."
185
+ "chartLabel": "Graphique Marimekko",
186
+ "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.",
187
+ "emptyTitle": "Aucune répartition à détailler",
188
+ "emptyBody": "Aucune répartition à deux niveaux n’a été renvoyée pour cette plage."
189
189
  },
190
190
  "stackedBar100": {
191
- "chartLabel": "100% stacked bar",
192
- "description": "One 100% bar split into proportional segments with a legend, comparing shares of a whole.",
193
- "emptyTitle": "No shares to split",
194
- "emptyBody": "No parts were returned for this breakdown."
191
+ "chartLabel": "Barre empilée à 100 %",
192
+ "description": "Une barre à 100 % découpée en segments proportionnels avec légende, pour comparer les parts d’un tout.",
193
+ "emptyTitle": "Aucune part à répartir",
194
+ "emptyBody": "Aucune part n’a été renvoyée pour cette répartition."
195
195
  },
196
196
  "slope": {
197
- "chartLabel": "Slope chart",
198
- "description": "Two periods joined by one line per record, coloured by whether the value rose or fell.",
199
- "emptyTitle": "No period shift to show",
200
- "emptyBody": "No before/after values were returned to compare."
197
+ "chartLabel": "Graphique de pente",
198
+ "description": "Deux périodes reliées par une ligne par enregistrement, colorée selon que la valeur a augmenté ou baissé.",
199
+ "emptyTitle": "Aucune évolution entre périodes à afficher",
200
+ "emptyBody": "Aucune valeur avant/après n’a été renvoyée à comparer."
201
201
  },
202
202
  "multiline": {
203
- "chartLabel": "Multi-line chart",
204
- "description": "Several series as overlaid lines with end labels, comparing trends over the same time span.",
205
- "emptyTitle": "No series to plot",
206
- "emptyBody": "No time series matched the filters for this range."
203
+ "chartLabel": "Graphique multicourbes",
204
+ "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.",
205
+ "emptyTitle": "Aucune série à tracer",
206
+ "emptyBody": "Aucune série temporelle ne correspond aux filtres pour cette plage."
207
207
  },
208
208
  "stream": {
209
- "chartLabel": "Stream chart",
210
- "description": "Stacked bands flowing around a centre line, showing how a total's composition shifts over time.",
211
- "emptyTitle": "No flow to chart",
212
- "emptyBody": "No stacked series were returned for this range."
209
+ "chartLabel": "Graphique en flux",
210
+ "description": "Des bandes empilées ondulant autour d’un axe central, montrant comment la composition d’un total évolue dans le temps.",
211
+ "emptyTitle": "Aucun flux à représenter",
212
+ "emptyBody": "Aucune série empilée n’a été renvoyée pour cette plage."
213
213
  },
214
214
  "forecast": {
215
- "chartLabel": "Forecast chart",
216
- "nowLabel": "Now",
217
- "forecastLabel": "Forecast",
218
- "actualLabel": "Actual",
219
- "description": "A history line extended by a dashed projection inside a widening confidence band, split at a now divider.",
220
- "emptyTitle": "No history to project",
221
- "emptyBody": "No past points were returned to forecast from."
215
+ "chartLabel": "Graphique de prévision",
216
+ "nowLabel": "Maintenant",
217
+ "forecastLabel": "Prévision",
218
+ "actualLabel": "Réel",
219
+ "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.",
220
+ "emptyTitle": "Aucun historique à projeter",
221
+ "emptyBody": "Aucun point passé n’a été renvoyé pour établir une prévision."
222
222
  },
223
223
  "anomaly": {
224
- "chartLabel": "Anomaly chart",
225
- "description": "A value line over its expected range, flagging points that fall outside it with halo dots.",
226
- "emptyTitle": "No signal to scan",
227
- "emptyBody": "No points were returned to check for anomalies."
224
+ "chartLabel": "Graphique d’anomalies",
225
+ "description": "Une courbe de valeurs sur sa plage attendue, signalant par des points auréolés ceux qui en sortent.",
226
+ "emptyTitle": "Aucun signal à analyser",
227
+ "emptyBody": "Aucun point n’a été renvoyé pour rechercher des anomalies."
228
228
  },
229
229
  "candlestick": {
230
- "chartLabel": "Candlestick chart",
231
- "livePillLabel": "Live",
232
- "description": "Open-high-low-close candles coloured by direction, with a dashed last-price line and an optional live pill.",
233
- "emptyTitle": "No candles to chart",
234
- "emptyBody": "No open-high-low-close rows matched this range."
230
+ "chartLabel": "Graphique en chandeliers",
231
+ "livePillLabel": "Actif",
232
+ "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.",
233
+ "emptyTitle": "Aucun chandelier à représenter",
234
+ "emptyBody": "Aucune ligne ouverture-haut-bas-clôture ne correspond à cette plage."
235
235
  },
236
236
  "bump": {
237
- "chartLabel": "Bump chart",
238
- "description": "Rank-over-time lines showing how competitors trade places between periods.",
239
- "emptyTitle": "No ranks to trace",
240
- "emptyBody": "No period-over-period rankings were returned."
237
+ "chartLabel": "Graphique de rangs",
238
+ "description": "Des courbes de rang dans le temps montrant comment les concurrents échangent leurs places d’une période à l’autre.",
239
+ "emptyTitle": "Aucun rang à tracer",
240
+ "emptyBody": "Aucun classement d’une période à l’autre n’a été renvoyé."
241
241
  },
242
242
  "timelineLanes": {
243
- "chartLabel": "Timeline lanes",
244
- "laneLabel": "Events",
245
- "description": "Dated events as pills on horizontal swimlanes sharing one time axis.",
246
- "emptyTitle": "No events to place",
247
- "emptyBody": "No events matched the filters for this range."
243
+ "chartLabel": "Couloirs chronologiques",
244
+ "laneLabel": "Événements",
245
+ "description": "Des événements datés sous forme de pastilles sur des couloirs horizontaux partageant un même axe temporel.",
246
+ "emptyTitle": "Aucun événement à placer",
247
+ "emptyBody": "Aucun événement ne correspond aux filtres pour cette plage."
248
248
  },
249
249
  "treemap": {
250
- "chartLabel": "Treemap",
251
- "otherLabel": "Other",
252
- "description": "A part-to-whole breakdown as squarified tiles sized by value, folding small slices into an Other tile.",
253
- "emptyTitle": "No slices to tile",
254
- "emptyBody": "No categories were returned for this breakdown."
250
+ "chartLabel": "Carte proportionnelle",
251
+ "otherLabel": "Autres",
252
+ "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 ».",
253
+ "emptyTitle": "Aucune part à disposer",
254
+ "emptyBody": "Aucune catégorie n’a été renvoyée pour cette répartition."
255
255
  },
256
256
  "sunburst": {
257
- "chartLabel": "Sunburst",
258
- "description": "A two-level hierarchy as nested rings — parents inside, their children outsidewith a parent legend.",
259
- "emptyTitle": "No rings to draw",
260
- "emptyBody": "No grouped categories were returned to nest."
257
+ "chartLabel": "Rayons de soleil",
258
+ "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.",
259
+ "emptyTitle": "Aucun anneau à dessiner",
260
+ "emptyBody": "Aucune catégorie groupée n’a été renvoyée à imbriquer."
261
261
  },
262
262
  "funnel": {
263
- "chartLabel": "Funnel",
264
- "description": "Ordered shrinking stages with per-step continuation rates and an overall-conversion footer.",
265
- "emptyTitle": "No stages to funnel",
266
- "emptyBody": "No step counts were returned for this range."
263
+ "chartLabel": "Entonnoir",
264
+ "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.",
265
+ "emptyTitle": "Aucune étape à représenter",
266
+ "emptyBody": "Aucun décompte d’étape n’a été renvoyé pour cette plage."
267
267
  },
268
268
  "radialBar": {
269
- "chartLabel": "Radial bar",
270
- "description": "Up to four percentages as concentric progress rings with a dot legend.",
271
- "emptyTitle": "No rings to fill",
272
- "emptyBody": "No categories matched this breakdown yet."
269
+ "chartLabel": "Barres radiales",
270
+ "description": "Jusqu’à quatre pourcentages en anneaux de progression concentriques avec une légende à pastilles.",
271
+ "emptyTitle": "Aucun anneau à remplir",
272
+ "emptyBody": "Aucune catégorie ne correspond encore à cette répartition."
273
273
  },
274
274
  "radar": {
275
275
  "chartLabel": "Radar",
276
- "description": "Several named axes on a polygon with one filled shape per series, against an optional target overlay.",
277
- "emptyTitle": "No axes to compare",
278
- "emptyBody": "No matrix of series and axes was returned."
276
+ "description": "Plusieurs axes nommés sur un polygone avec une forme remplie par série, sur une superposition de cible en option.",
277
+ "emptyTitle": "Aucun axe à comparer",
278
+ "emptyBody": "Aucune matrice de séries et d’axes n’a été renvoyée."
279
279
  },
280
280
  "chord": {
281
- "chartLabel": "Chord",
282
- "description": "Pairwise flows as ribbons between nodes on a ring, with ribbon opacity weighted by volume.",
283
- "emptyTitle": "No flows to link",
284
- "emptyBody": "No connections between groups were returned."
281
+ "chartLabel": "Diagramme en cordes",
282
+ "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.",
283
+ "emptyTitle": "Aucun flux à relier",
284
+ "emptyBody": "Aucune connexion entre groupes n’a été renvoyée."
285
285
  },
286
286
  "wordcloud": {
287
- "chartLabel": "Word cloud",
288
- "description": "Terms sized by frequency and flowed into rows, for a glanceable view of what dominates.",
289
- "emptyTitle": "No terms to cloud",
290
- "emptyBody": "No weighted terms matched the filters."
287
+ "chartLabel": "Nuage de mots",
288
+ "description": "Des termes dimensionnés selon leur fréquence et répartis en lignes, pour voir d’un coup d’œil ce qui domine.",
289
+ "emptyTitle": "Aucun terme à afficher",
290
+ "emptyBody": "Aucun terme pondéré ne correspond aux filtres."
291
291
  },
292
292
  "cohortMatrix": {
293
- "chartLabel": "Cohort retention",
294
- "description": "Cohort rows against period columns, each cell shaded by retention or revenue."
293
+ "chartLabel": "Rétention par cohorte",
294
+ "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."
295
295
  },
296
296
  "heatmapCalendar": {
297
- "chartLabel": "Activity calendar",
298
- "legendLessLabel": "Less",
299
- "legendMoreLabel": "More",
300
- "description": "A year of daily activity as a week-by-day grid shaded by intensity."
297
+ "chartLabel": "Calendrier d’activité",
298
+ "legendLessLabel": "Moins",
299
+ "legendMoreLabel": "Plus",
300
+ "description": "Une année d’activité quotidienne sous forme de grille semaines × jours teintée selon l’intensité."
301
301
  },
302
302
  "heatMonth": {
303
- "chartLabel": "Monthly activity",
304
- "description": "One calendar month as a day grid shaded by each day's value."
303
+ "chartLabel": "Activité mensuelle",
304
+ "description": "Un mois calendaire sous forme de grille de jours teintée selon la valeur de chaque jour."
305
305
  },
306
306
  "choroplethGrid": {
307
- "chartLabel": "Regional breakdown",
308
- "legendLowLabel": "Low",
309
- "legendHighLabel": "High",
310
- "description": "Regional values as a tinted US tilegram or compact grid, with an optional top-N ranking list."
307
+ "chartLabel": "Répartition régionale",
308
+ "legendLowLabel": "Faible",
309
+ "legendHighLabel": "Élevé",
310
+ "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."
311
311
  },
312
312
  "sankey": {
313
- "chartLabel": "Flow",
314
- "description": "Layered source-to-target flows as ribbons whose thickness encodes volume."
313
+ "chartLabel": "Flux",
314
+ "description": "Des flux source-cible en couches sous forme de rubans dont l’épaisseur traduit le volume."
315
315
  },
316
316
  "sparkline": {
317
- "description": "An inline micro-trend of recent valuesno axes or labelsfor KPI cards, table cells and list rows."
317
+ "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."
318
318
  }
319
319
  },
320
320
  "feeds": {
@@ -322,32 +322,32 @@
322
322
  "description": "Un fil continu de qui a fait quoi dans votre espace de travail, du plus récent au plus ancien.",
323
323
  "emptyTitle": "Aucune activité récente",
324
324
  "emptyBody": "Les actions de votre espace de travail apparaîtront ici.",
325
- "viewAllLabel": "View all"
325
+ "viewAllLabel": "Tout afficher"
326
326
  },
327
327
  "notificationFeed": {
328
328
  "description": "Notifications groupées avec état non lu, filtres et actions intégrées.",
329
329
  "emptyTitle": "Aucune notification",
330
330
  "emptyBody": "Les nouvelles notifications apparaîtront ici.",
331
- "allLabel": "All",
332
- "unreadLabel": "Unread",
331
+ "allLabel": "Toutes",
332
+ "unreadLabel": "Non lues",
333
333
  "mentionsLabel": "Mentions",
334
- "filterLabel": "Notification filter",
335
- "markAllReadLabel": "Mark all read",
336
- "todayLabel": "Today",
337
- "yesterdayLabel": "Yesterday",
338
- "earlierLabel": "Earlier",
339
- "dismissLabel": "Dismiss",
340
- "emptyUnreadTitle": "You're all caught up",
341
- "emptyMentionsTitle": "No mentions"
334
+ "filterLabel": "Filtre de notifications",
335
+ "markAllReadLabel": "Tout marquer comme lu",
336
+ "todayLabel": "Aujourd’hui",
337
+ "yesterdayLabel": "Hier",
338
+ "earlierLabel": "Plus tôt",
339
+ "dismissLabel": "Fermer",
340
+ "emptyUnreadTitle": "Vous êtes à jour",
341
+ "emptyMentionsTitle": "Aucune mention"
342
342
  },
343
343
  "realtimeFeed": {
344
344
  "description": "Un flux d’événements en direct qui ajoute les nouveaux éléments en tête.",
345
345
  "emptyTitle": "En attente d’événements",
346
346
  "emptyBody": "Les événements en direct s’afficheront au fur et à mesure.",
347
- "liveLabel": "Live",
348
- "pausedLabel": "Paused",
349
- "pauseLabel": "Pause",
350
- "resumeLabel": "Resume"
347
+ "liveLabel": "Actif",
348
+ "pausedLabel": "En pause",
349
+ "pauseLabel": "Mettre en pause",
350
+ "resumeLabel": "Reprendre"
351
351
  },
352
352
  "timelineVertical": {
353
353
  "description": "Une chronologie verticale d’événements, de versions, d’incidents ou d’étapes d’exécution.",
@@ -377,22 +377,22 @@
377
377
  "description": "Une grille mensuelle des événements planifiés avec des puces par jour et la navigation entre les mois.",
378
378
  "emptyTitle": "Rien de planifié",
379
379
  "emptyBody": "Les événements planifiés apparaîtront dans ce calendrier.",
380
- "previousLabel": "Previous month",
381
- "nextLabel": "Next month",
382
- "overflowLabel": "+{count} more"
380
+ "previousLabel": "Mois précédent",
381
+ "nextLabel": "Mois suivant",
382
+ "overflowLabel": "+{count} de plus"
383
383
  },
384
384
  "dayAgenda": {
385
385
  "description": "Les événements du jour sélectionné sous forme d'agenda chronologique.",
386
386
  "emptyTitle": "Rien de planifié",
387
387
  "emptyBody": "Les événements du jour sélectionné apparaîtront ici.",
388
- "countLabel": "{count, plural, one {{n} event} other {{n} events}}"
388
+ "countLabel": "{count, plural, one {{n} événement} other {{n} événements}}"
389
389
  },
390
390
  "scheduleMatrix": {
391
391
  "description": "Une grille de postes par ressource et par jour avec la couverture quotidienne et une légende.",
392
392
  "emptyTitle": "Aucun poste planifié",
393
393
  "emptyBody": "Les postes attribués apparaîtront dans ce planning.",
394
- "resourceLabel": "Resource",
395
- "coverageLabel": "Coverage",
394
+ "resourceLabel": "Ressource",
395
+ "coverageLabel": "Couverture",
396
396
  "hoursLabel": "{hours}h"
397
397
  },
398
398
  "capacityBoard": {
@@ -400,16 +400,16 @@
400
400
  "emptyTitle": "Aucune donnée de charge",
401
401
  "emptyBody": "L'utilisation des membres apparaîtra ici une fois les affectations créées.",
402
402
  "status": {
403
- "overloaded": "Overloaded",
404
- "balanced": "Balanced",
405
- "available": "Available"
403
+ "overloaded": "Surchargé",
404
+ "balanced": "Équilibré",
405
+ "available": "Disponible"
406
406
  },
407
- "utilizationLabel": "{name}: {util}%",
407
+ "utilizationLabel": "{name} : {util} %",
408
408
  "assignmentLabel": "{project} · {hours}h",
409
409
  "periodLabel": "h · {period}",
410
410
  "period": {
411
- "week": "week",
412
- "month": "month"
411
+ "week": "semaine",
412
+ "month": "mois"
413
413
  }
414
414
  },
415
415
  "calendarLegendFilter": {
@@ -451,26 +451,26 @@
451
451
  "description": "Une liste sélectionnable d’enregistrements qui pilote un volet de détail.",
452
452
  "emptyTitle": "Aucun élément",
453
453
  "emptyBody": "Les éléments apparaîtront ici une fois créés.",
454
- "allLabel": "All",
455
- "toggleLabel": "Toggle {title}",
456
- "progressLabel": "{title} progress"
454
+ "allLabel": "Tous",
455
+ "toggleLabel": "Basculer {title}",
456
+ "progressLabel": "Progression de {title}"
457
457
  },
458
458
  "logTable": {
459
459
  "description": "Un journal d’événements avec recherche, filtre d’erreurs et actions par ligne.",
460
460
  "emptyTitle": "Aucune entrée de journal",
461
461
  "emptyBody": "Les événements seront enregistrés ici au fur et à mesure.",
462
- "liveLabel": "Live",
463
- "placeholder": "Search logs…",
464
- "filterLabel": "Log filter",
465
- "allLabel": "All",
466
- "errorsLabel": "Errors",
467
- "noMatchesLabel": "No matching entries",
468
- "todayLabel": "Today",
469
- "yesterdayLabel": "Yesterday",
462
+ "liveLabel": "Actif",
463
+ "placeholder": "Rechercher dans les journaux…",
464
+ "filterLabel": "Filtre du journal",
465
+ "allLabel": "Tout",
466
+ "errorsLabel": "Erreurs",
467
+ "noMatchesLabel": "Aucune entrée correspondante",
468
+ "todayLabel": "Aujourd’hui",
469
+ "yesterdayLabel": "Hier",
470
470
  "action": {
471
- "retry": "retry",
472
- "download": "download",
473
- "inspect": "inspect"
471
+ "retry": "réessayer",
472
+ "download": "télécharger",
473
+ "inspect": "inspecter"
474
474
  }
475
475
  },
476
476
  "cardGallery": {
@@ -482,21 +482,21 @@
482
482
  "description": "Lignes groupées avec colonnes d’agrégats, détails dépliables et totaux.",
483
483
  "emptyTitle": "Aucune donnée de synthèse",
484
484
  "emptyBody": "Les totaux groupés apparaîtront ici dès qu’il y aura des données.",
485
- "groupLabel": "Group",
485
+ "groupLabel": "Groupe",
486
486
  "totalsLabel": "Total"
487
487
  },
488
488
  "schemaTree": {
489
489
  "description": "Un explorateur de schémas, tables et colonnes avec badges de type et de clé.",
490
490
  "emptyTitle": "Aucun schéma analysé",
491
491
  "emptyBody": "Connectez une base de données pour explorer son schéma ici.",
492
- "treeLabel": "Schema",
493
- "viewLabel": "view"
492
+ "treeLabel": "Schéma",
493
+ "viewLabel": "vue"
494
494
  },
495
495
  "toggleMatrix": {
496
496
  "description": "Une grille interactive de bascules booléennes pour rôles, règles ou canaux.",
497
497
  "emptyTitle": "Aucune matrice configurée",
498
498
  "emptyBody": "Les lignes et colonnes apparaîtront ici une fois configurées.",
499
- "matrixLabel": "Permissions matrix",
499
+ "matrixLabel": "Matrice de permissions",
500
500
  "rowHeaderLabel": "Permission"
501
501
  },
502
502
  "sparklineTable": {
@@ -532,38 +532,38 @@
532
532
  "moreLabel": "+{n} de plus"
533
533
  },
534
534
  "dataGrid": {
535
- "selectAllLabel": "Select all rows",
536
- "selectRowLabel": "Select row",
537
- "sortByLabel": "Sort by {column}",
538
- "description": "The canonical CRUD grid with sortable columns, row selection, and type-aware cells."
535
+ "selectAllLabel": "Sélectionner toutes les lignes",
536
+ "selectRowLabel": "Sélectionner la ligne",
537
+ "sortByLabel": "Trier par {column}",
538
+ "description": "La grille CRUD de référence, avec colonnes triables, sélection de lignes et cellules adaptées au type."
539
539
  },
540
540
  "paginationFooter": {
541
- "emptyLabel": "0 rows",
542
- "ofLabel": "of",
543
- "pageSizeLabel": "Rows",
541
+ "emptyLabel": "0 ligne",
542
+ "ofLabel": "sur",
543
+ "pageSizeLabel": "Lignes",
544
544
  "a11y": {
545
- "pageSize": "Rows per page"
545
+ "pageSize": "Lignes par page"
546
546
  },
547
- "prevLabel": "Previous page",
548
- "nextLabel": "Next page",
549
- "description": "A footer with the visible row range, prev/next paging, and a page-size select."
547
+ "prevLabel": "Page précédente",
548
+ "nextLabel": "Page suivante",
549
+ "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."
550
550
  },
551
551
  "bulkActionToolbar": {
552
- "selectedLabel": "selected",
553
- "clearLabel": "Clear selection",
554
- "toolbarLabel": "Bulk actions",
555
- "description": "A selection-aware toolbar showing the selected count and bulk actions."
552
+ "selectedLabel": "sélectionnées",
553
+ "clearLabel": "Effacer la sélection",
554
+ "toolbarLabel": "Actions groupées",
555
+ "description": "Une barre d’outils liée à la sélection, affichant le nombre d’éléments sélectionnés et les actions groupées."
556
556
  },
557
557
  "miniTable": {
558
- "viewAllLabel": "View all",
559
- "description": "A compact dashboard row list with mapped columns and a view-all link."
558
+ "viewAllLabel": "Tout afficher",
559
+ "description": "Une liste de lignes compacte pour tableau de bord, avec colonnes mappées et un lien « tout afficher »."
560
560
  },
561
- "revealLabel": "Reveal value",
562
- "hideLabel": "Hide value",
563
- "trueLabel": "true",
564
- "falseLabel": "false",
561
+ "revealLabel": "Révéler la valeur",
562
+ "hideLabel": "Masquer la valeur",
563
+ "trueLabel": "vrai",
564
+ "falseLabel": "faux",
565
565
  "detailKeyValue": {
566
- "description": "A record's fields as label/value rows with type-aware values."
566
+ "description": "Les champs d’un enregistrement en lignes libellé/valeur, avec des valeurs adaptées au type."
567
567
  }
568
568
  },
569
569
  "boards": {
@@ -631,7 +631,7 @@
631
631
  "configureBody": "Ajoutez une clé Anthropic ou OpenAI — ou pointez Adminium vers votre propre point de terminaison — pour poser des questions sur votre schéma.",
632
632
  "configureCtaLabel": "Configurer un fournisseur",
633
633
  "assistantLabel": "Assistant",
634
- "composerLabel": "Ask a question"
634
+ "composerLabel": "Poser une question"
635
635
  },
636
636
  "typingIndicator": {
637
637
  "description": "Un avatar et une ligne en italique « en train d’écrire… », liée à un booléen actif par conversation.",
@@ -669,7 +669,7 @@
669
669
  "emptyBody": "Les lignes comportant un code de région et une valeur numérique apparaissent ici sous forme de tuiles teintées.",
670
670
  "legendLowLabel": "Faible",
671
671
  "legendHighLabel": "Élevé",
672
- "chartLabel": "Regional breakdown"
672
+ "chartLabel": "Répartition régionale"
673
673
  }
674
674
  },
675
675
  "domain": {
@@ -698,8 +698,8 @@
698
698
  "billedToLabel": "Facturé à",
699
699
  "issuedLabel": "Émis le",
700
700
  "dueLabel": "Échéance",
701
- "noDocumentTitle": "No document yet",
702
- "noDocumentBody": "Pick a starter template or add a block to begin."
701
+ "noDocumentTitle": "Aucun document pour l’instant",
702
+ "noDocumentBody": "Choisissez un modèle de départ ou ajoutez un bloc pour commencer."
703
703
  },
704
704
  "blockTotalsSummary": {
705
705
  "description": "Les totaux du document — sous-total, remise, taxe et total dû, recalculés à partir des lignes.",
@@ -728,13 +728,13 @@
728
728
  "description": "Un mini-graphique à barres dans la couleur du document, dimensionné pour un bloc.",
729
729
  "emptyTitle": "Aucune donnée à représenter",
730
730
  "emptyBody": "Les barres apparaissent dès que le rapport contient une série.",
731
- "a11yLabel": "Bar chart"
731
+ "a11yLabel": "Graphique à barres"
732
732
  },
733
733
  "blockLineChart": {
734
734
  "description": "Un mini-graphique en courbe avec aire remplie facultative, dimensionné pour un bloc.",
735
735
  "emptyTitle": "Aucune donnée à représenter",
736
736
  "emptyBody": "La courbe apparaît dès que le rapport contient une série.",
737
- "a11yLabel": "Line chart"
737
+ "a11yLabel": "Graphique en courbes"
738
738
  },
739
739
  "blockTwoColTable": {
740
740
  "description": "Un tableau à deux colonnes avec une ligne d'en-tête stylisée et une colonne de valeurs en chasse fixe.",
@@ -793,7 +793,7 @@
793
793
  "namePlaceholder": "Nom complet",
794
794
  "titlePlaceholder": "Fonction",
795
795
  "dateLabel": "Date",
796
- "nameInputLabel": "Signature name"
796
+ "nameInputLabel": "Nom du signataire"
797
797
  },
798
798
  "blockTermsCheckbox": {
799
799
  "description": "Une case pour les conditions, avec libellé modifiable.",
@@ -839,114 +839,114 @@
839
839
  "description": "Une grille de modèles prédéfinis avec vignettes générées ; en choisir un initialise un document complet.",
840
840
  "emptyTitle": "Aucun modèle",
841
841
  "emptyBody": "Définissez des modèles dans la configuration ou liez une table de modèles.",
842
- "blankLabel": "Blank",
842
+ "blankLabel": "Vierge",
843
843
  "kicker": {
844
- "invoice": "Invoice",
845
- "report": "Report",
846
- "email": "Email"
844
+ "invoice": "Facture",
845
+ "report": "Rapport",
846
+ "email": "E-mail"
847
847
  }
848
848
  },
849
849
  "sloMonitorCard": {
850
850
  "description": "Carte SLA par service avec statut, disponibilité par rapport à la cible, bande de disponibilité quotidienne, budget d'erreur et latence p95.",
851
851
  "emptyTitle": "Aucun moniteur",
852
852
  "emptyBody": "Liez une table de moniteurs avec une colonne de statut et de disponibilité.",
853
- "targetLabel": "Target",
854
- "budgetLabel": "Error budget",
855
- "latencyLabel": "p95 latency",
853
+ "targetLabel": "Cible",
854
+ "budgetLabel": "Budget d’erreur",
855
+ "latencyLabel": "Latence p95",
856
856
  "status": {
857
- "operational": "Operational",
858
- "degraded": "Degraded",
859
- "down": "Down",
860
- "unknown": "Unknown"
857
+ "operational": "Opérationnel",
858
+ "degraded": "Dégradé",
859
+ "down": "Hors service",
860
+ "unknown": "Inconnu"
861
861
  }
862
862
  },
863
863
  "uptimeSegmentBar": {
864
864
  "description": "Bandes journalières de type page de statut, colorées selon le statut du jour, avec bascule 30/90 jours.",
865
865
  "emptyTitle": "Aucun historique de disponibilité",
866
866
  "emptyBody": "Les lignes de statut quotidien apparaissent ici sous forme de bande.",
867
- "daysAgoLabel": "{days} days ago",
868
- "todayLabel": "Today",
869
- "uptimeLabel": "uptime",
870
- "period30Label": "30d",
871
- "period90Label": "90d",
867
+ "daysAgoLabel": "Il y a {days} jours",
868
+ "todayLabel": "Aujourd’hui",
869
+ "uptimeLabel": "de disponibilité",
870
+ "period30Label": "30 j",
871
+ "period90Label": "90 j",
872
872
  "status": {
873
- "operational": "Operational",
874
- "degraded": "Degraded",
875
- "down": "Down",
876
- "unknown": "No data"
873
+ "operational": "Opérationnel",
874
+ "degraded": "Dégradé",
875
+ "down": "Hors service",
876
+ "unknown": "Aucune donnée"
877
877
  }
878
878
  },
879
879
  "experimentVariantCompare": {
880
880
  "description": "Barres de conversion par variante avec le gain face au témoin et un indicateur de significativité.",
881
881
  "emptyTitle": "Aucune variante",
882
882
  "emptyBody": "Liez une table de variantes d'expérience avec des chiffres de conversion.",
883
- "controlLabel": "CONTROL",
884
- "winnerLabel": "WINNER",
885
- "significanceLabel": "Confidence",
886
- "verdictSignificantLabel": "Statistically significantsafe to call.",
887
- "verdictInconclusiveLabel": "Not yet significantkeep the test running.",
883
+ "controlLabel": "TÉMOIN",
884
+ "winnerLabel": "GAGNANTE",
885
+ "significanceLabel": "Confiance",
886
+ "verdictSignificantLabel": "Statistiquement significatifvous pouvez conclure.",
887
+ "verdictInconclusiveLabel": "Pas encore significatiflaissez le test se poursuivre.",
888
888
  "countsLabel": "{users} participants · {conversions} conversions"
889
889
  },
890
890
  "creditCardTile": {
891
891
  "description": "Un moyen de paiement enregistré sous forme de carte de marque avec numéro masqué, titulaire et expiration.",
892
892
  "emptyTitle": "Aucun moyen de paiement",
893
893
  "emptyBody": "Ajoutez une carte pour la voir ici.",
894
- "defaultLabel": "Default",
895
- "setDefaultLabel": "Set default",
896
- "manageLabel": "Manage",
897
- "addLabel": "Add payment method",
898
- "expiresLabel": "Expires"
894
+ "defaultLabel": "Par défaut",
895
+ "setDefaultLabel": "Définir par défaut",
896
+ "manageLabel": "Gérer",
897
+ "addLabel": "Ajouter un moyen de paiement",
898
+ "expiresLabel": "Expire le"
899
899
  },
900
900
  "planPricingCards": {
901
901
  "description": "Paliers tarifaires avec bascule mensuel/annuel, listes de fonctionnalités et une offre mise en avant.",
902
902
  "emptyTitle": "Aucune offre",
903
903
  "emptyBody": "Liez une table d'offres avec un nom et un prix mensuel.",
904
- "monthlyLabel": "Monthly",
905
- "annualLabel": "Annual",
906
- "popularLabel": "POPULAR",
907
- "perMonthLabel": "/ month",
908
- "billedAnnuallyLabel": "Billed {total} yearly",
909
- "currentLabel": "Current plan",
910
- "ctaLabel": "Choose plan"
904
+ "monthlyLabel": "Mensuel",
905
+ "annualLabel": "Annuel",
906
+ "popularLabel": "POPULAIRE",
907
+ "perMonthLabel": "/ mois",
908
+ "billedAnnuallyLabel": "Facturé {total} par an",
909
+ "currentLabel": "Offre actuelle",
910
+ "ctaLabel": "Choisir cette offre"
911
911
  },
912
912
  "apiKeysPanel": {
913
913
  "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.",
914
914
  "emptyTitle": "Aucune clé d'API",
915
915
  "emptyBody": "Créez une clé pour commencer à appeler l'API.",
916
- "revealedTitle": "Key created",
917
- "revealedBody": "Copy it now it is never shown again.",
918
- "copyLabel": "Copy",
919
- "copiedLabel": "Copied",
920
- "revealLabel": "Reveal key",
921
- "hideLabel": "Hide key",
922
- "rollLabel": "Roll key",
923
- "revokeLabel": "Revoke key",
924
- "neverUsedLabel": "Never used",
925
- "lastUsedLabel": "Last used {since}"
916
+ "revealedTitle": "Clé créée",
917
+ "revealedBody": "Copiez-la maintenantelle ne sera plus jamais affichée.",
918
+ "copyLabel": "Copier",
919
+ "copiedLabel": "Copié",
920
+ "revealLabel": "Révéler la clé",
921
+ "hideLabel": "Masquer la clé",
922
+ "rollLabel": "Renouveler la clé",
923
+ "revokeLabel": "Révoquer la clé",
924
+ "neverUsedLabel": "Jamais utilisée",
925
+ "lastUsedLabel": "Dernière utilisation {since}"
926
926
  },
927
927
  "apiPlayground": {
928
928
  "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.",
929
929
  "emptyTitle": "Aucun point de terminaison sélectionné",
930
930
  "emptyBody": "Choisissez un point de terminaison pour composer une requête.",
931
- "sendLabel": "Send",
932
- "requestLabel": "Request",
933
- "responseLabel": "Response",
934
- "paramsLabel": "Parameters",
935
- "responsePlaceholder": "Send the request to see the response."
931
+ "sendLabel": "Envoyer",
932
+ "requestLabel": "Requête",
933
+ "responseLabel": "Réponse",
934
+ "paramsLabel": "Paramètres",
935
+ "responsePlaceholder": "Envoyez la requête pour voir la réponse."
936
936
  },
937
937
  "codeSnippetBlock": {
938
938
  "description": "Un extrait de code copiable avec une puce de langage et des onglets optionnels par langage.",
939
939
  "emptyTitle": "Aucun extrait",
940
940
  "emptyBody": "Liez une colonne de code ou définissez un extrait statique dans la configuration.",
941
- "copyLabel": "Copy",
942
- "copiedLabel": "Copied"
941
+ "copyLabel": "Copier",
942
+ "copiedLabel": "Copié"
943
943
  },
944
944
  "webhookEndpointsList": {
945
945
  "description": "Points de terminaison webhook avec leur événement, URL cible, dernier déclenchement et interrupteur d'activation.",
946
946
  "emptyTitle": "Aucun point de terminaison",
947
947
  "emptyBody": "Ajoutez un point de terminaison webhook pour recevoir les événements de table.",
948
- "neverFiredLabel": "Never fired",
949
- "lastFiredLabel": "Last fired {since}"
948
+ "neverFiredLabel": "Jamais déclenché",
949
+ "lastFiredLabel": "Dernier déclenchement {since}"
950
950
  },
951
951
  "resourceApiCard": {
952
952
  "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.",
@@ -954,43 +954,43 @@
954
954
  "emptyBody": "Liez une table pour afficher sa surface d'API générée.",
955
955
  "rlsLabel": "RLS",
956
956
  "publicLabel": "Public",
957
- "rowsLabel": "rows",
958
- "perDayLabel": "{count}/day"
957
+ "rowsLabel": "lignes",
958
+ "perDayLabel": "{count}/jour"
959
959
  },
960
960
  "liveTimer": {
961
961
  "description": "Un chronomètre démarrer/arrêter pour une tâche ; l'arrêter enregistre une entrée de temps.",
962
962
  "emptyTitle": "Aucun chronomètre",
963
963
  "emptyBody": "Liez une ligne d'entrée de temps avec une tâche et une colonne de durée.",
964
- "startLabel": "Start",
965
- "stopLabel": "Stop",
966
- "taskPlaceholder": "Untitled task"
964
+ "startLabel": "Démarrer",
965
+ "stopLabel": "Arrêter",
966
+ "taskPlaceholder": "Tâche sans titre"
967
967
  },
968
968
  "syncStatusCard": {
969
969
  "description": "Identité de la connexion, latence, lignes synchronisées et planning de synchronisation, avec une action de synchronisation immédiate.",
970
970
  "emptyTitle": "Aucune connexion",
971
971
  "emptyBody": "Liez une ligne de connexion pour afficher son état de synchronisation.",
972
- "connectedLabel": "Connected",
973
- "disconnectedLabel": "Disconnected",
974
- "rowsSyncedLabel": "Rows synced",
972
+ "connectedLabel": "Connectée",
973
+ "disconnectedLabel": "Déconnectée",
974
+ "rowsSyncedLabel": "Lignes synchronisées",
975
975
  "tablesLabel": "Tables",
976
- "lastSyncLabel": "Last sync",
977
- "nextSyncLabel": "Next sync",
978
- "syncingLabel": "Syncing…",
979
- "syncActionLabel": "Sync now"
976
+ "lastSyncLabel": "Dernière synchronisation",
977
+ "nextSyncLabel": "Prochaine synchronisation",
978
+ "syncingLabel": "Synchronisation…",
979
+ "syncActionLabel": "Synchroniser maintenant"
980
980
  },
981
981
  "ipAllowlistCard": {
982
982
  "description": "Adresses IP de sortie fixes à autoriser dans un pare-feu, chacune avec un bouton de copie.",
983
983
  "emptyTitle": "Aucune IP de sortie",
984
984
  "emptyBody": "Les adresses de sortie apparaissent ici une fois la connexion provisionnée.",
985
- "copyLabel": "Copy",
986
- "copiedLabel": "Copied"
985
+ "copyLabel": "Copier",
986
+ "copiedLabel": "Copié"
987
987
  },
988
988
  "onboardingChecklist": {
989
989
  "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.",
990
990
  "emptyTitle": "Rien à configurer",
991
991
  "emptyBody": "Ajoutez des étapes d'intégration dans la configuration ou liez une table d'étapes.",
992
- "progressLabel": "{done} of {total} done",
993
- "celebrateTitle": "All done"
992
+ "progressLabel": "{done} sur {total} terminées",
993
+ "celebrateTitle": "Tout est terminé"
994
994
  },
995
995
  "testimonialCard": {
996
996
  "description": "Une citation client avec avatar et attribution.",
@@ -1034,7 +1034,7 @@
1034
1034
  "description": "Une grille de moodboard avec emplacements d'images et légendes, pour les tables contenant des URL d'images.",
1035
1035
  "emptyTitle": "Aucune image pour l'instant",
1036
1036
  "emptyBody": "Les images de référence apparaîtront sur ce tableau.",
1037
- "placeholder": "Drop reference"
1037
+ "placeholder": "Déposez une référence"
1038
1038
  },
1039
1039
  "linkList": {
1040
1040
  "description": "Liens de référence avec titres et URL, ouverts dans un nouvel onglet.",
@@ -1075,16 +1075,16 @@
1075
1075
  "successTitle": "Enregistrement créé",
1076
1076
  "successBody": "L’enregistrement a été sauvegardé.",
1077
1077
  "required": "Ce champ est obligatoire.",
1078
- "titleLabel": "Create record",
1079
- "closeLabel": "Close"
1078
+ "titleLabel": "Créer un enregistrement",
1079
+ "closeLabel": "Fermer"
1080
1080
  },
1081
1081
  "drawerForm": {
1082
1082
  "description": "Un panneau latéral de création ou d’édition pour les enregistrements à nombreux champs.",
1083
1083
  "trigger": "Nouveau",
1084
1084
  "submit": "Enregistrer",
1085
1085
  "cancel": "Annuler",
1086
- "titleLabel": "New record",
1087
- "closeLabel": "Close"
1086
+ "titleLabel": "Nouvel enregistrement",
1087
+ "closeLabel": "Fermer"
1088
1088
  },
1089
1089
  "stepper": {
1090
1090
  "description": "Un indicateur d’étapes montrant l’avancement d’un parcours en plusieurs étapes.",
@@ -1136,20 +1136,20 @@
1136
1136
  "valuePlaceholder": "Valeur…",
1137
1137
  "emptyBody": "Aucune condition — ajoutez-en une pour définir ce segment.",
1138
1138
  "op": {
1139
- "eq": "is",
1140
- "neq": "is not",
1141
- "gt": "is greater than",
1142
- "gte": "is at least",
1143
- "lt": "is less than",
1144
- "lte": "is at most",
1145
- "contains": "contains",
1146
- "not-contains": "does not contain",
1147
- "starts-with": "starts with",
1148
- "in": "is one of",
1149
- "before": "is before",
1150
- "after": "is after",
1151
- "is-null": "is empty",
1152
- "is-not-null": "is not empty"
1139
+ "eq": "est",
1140
+ "neq": "n’est pas",
1141
+ "gt": "est supérieur à",
1142
+ "gte": "est supérieur ou égal à",
1143
+ "lt": "est inférieur à",
1144
+ "lte": "est inférieur ou égal à",
1145
+ "contains": "contient",
1146
+ "not-contains": "ne contient pas",
1147
+ "starts-with": "commence par",
1148
+ "in": "fait partie de",
1149
+ "before": "est avant",
1150
+ "after": "est après",
1151
+ "is-null": "est vide",
1152
+ "is-not-null": "n’est pas vide"
1153
1153
  }
1154
1154
  },
1155
1155
  "flowBuilder": {
@@ -1217,14 +1217,14 @@
1217
1217
  "emptyTitle": "Aucune question",
1218
1218
  "emptyBody": "Choisissez un type de question pour commencer votre sondage.",
1219
1219
  "questionLabel": "Question",
1220
- "dropdownPlaceholder": "Choose…",
1220
+ "dropdownPlaceholder": "Choisir…",
1221
1221
  "kind": {
1222
- "single-choice": "Single choice",
1223
- "multi-choice": "Multiple choice",
1224
- "dropdown": "Dropdown",
1225
- "short-text": "Short text",
1226
- "long-text": "Long text",
1227
- "rating": "Star rating",
1222
+ "single-choice": "Choix unique",
1223
+ "multi-choice": "Choix multiple",
1224
+ "dropdown": "Liste déroulante",
1225
+ "short-text": "Texte court",
1226
+ "long-text": "Texte long",
1227
+ "rating": "Note en étoiles",
1228
1228
  "nps": "NPS 0–10",
1229
1229
  "date": "Date"
1230
1230
  }
@@ -1235,7 +1235,7 @@
1235
1235
  "save": "Enregistrer",
1236
1236
  "cancel": "Annuler",
1237
1237
  "empty": "Vide",
1238
- "valueLabel": "Value"
1238
+ "valueLabel": "Valeur"
1239
1239
  },
1240
1240
  "passwordStrengthMeter": {
1241
1241
  "description": "Un indicateur en quatre segments de la robustesse du mot de passe.",
@@ -1260,7 +1260,7 @@
1260
1260
  "navigate": "Naviguer",
1261
1261
  "select": "Ouvrir",
1262
1262
  "close": "Fermer",
1263
- "emptyTitle": "No results for \"{query}\"",
1263
+ "emptyTitle": "Aucun résultat pour « {query} »",
1264
1264
  "emptyBody": "Commencez à taper pour rechercher.",
1265
1265
  "groupActions": "Actions",
1266
1266
  "groupNavigate": "Naviguer",
@@ -1277,8 +1277,8 @@
1277
1277
  "summary": "{count} résultats pour « {query} »",
1278
1278
  "emptyTitle": "Aucun résultat",
1279
1279
  "emptyBody": "Essayez un autre terme de recherche.",
1280
- "searchLabel": "Search",
1281
- "facetRailLabel": "Filter by type"
1280
+ "searchLabel": "Rechercher",
1281
+ "facetRailLabel": "Filtrer par type"
1282
1282
  },
1283
1283
  "breadcrumb": {
1284
1284
  "description": "Le fil d’Ariane de l’enregistrement ou du dossier courant.",
@@ -1298,22 +1298,22 @@
1298
1298
  "footerHint": "Appuyez sur ? à tout moment",
1299
1299
  "then": "puis",
1300
1300
  "emptyTitle": "Aucun raccourci enregistré.",
1301
- "generalGroupLabel": "General",
1301
+ "generalGroupLabel": "Général",
1302
1302
  "navigationGroupLabel": "Navigation",
1303
- "recordsGroupLabel": "Records",
1304
- "openCommandPaletteLabel": "Open command palette",
1305
- "searchLabel": "Search",
1306
- "showShortcutsLabel": "Show shortcuts",
1307
- "goToDashboardLabel": "Go to dashboard",
1308
- "goToOrdersLabel": "Go to orders",
1309
- "newRecordLabel": "New record",
1310
- "saveLabel": "Save",
1311
- "undoLabel": "Undo"
1303
+ "recordsGroupLabel": "Enregistrements",
1304
+ "openCommandPaletteLabel": "Ouvrir la palette de commandes",
1305
+ "searchLabel": "Rechercher",
1306
+ "showShortcutsLabel": "Afficher les raccourcis",
1307
+ "goToDashboardLabel": "Aller au tableau de bord",
1308
+ "goToOrdersLabel": "Aller aux commandes",
1309
+ "newRecordLabel": "Nouvel enregistrement",
1310
+ "saveLabel": "Enregistrer",
1311
+ "undoLabel": "Annuler"
1312
1312
  },
1313
1313
  "avatarStack": {
1314
1314
  "description": "Des avatars superposés avec débordement « +N » et présence optionnelle.",
1315
1315
  "online": "{count} en ligne",
1316
- "a11yLabel": "People"
1316
+ "a11yLabel": "Personnes"
1317
1317
  }
1318
1318
  },
1319
1319
  "system": {
@@ -1388,10 +1388,10 @@
1388
1388
  "latency": "Latence"
1389
1389
  },
1390
1390
  "widgetMissing": {
1391
- "description": "The fallback card shown when a stored page references a widget that is not installed.",
1392
- "title": "Widget unavailable",
1393
- "bodyLead": "No widget is registered as",
1394
- "bodyTail": "It may belong to a newer version or an uninstalled extension."
1391
+ "description": "La carte de repli affichée lorsqu’une page enregistrée référence un widget qui n’est pas installé.",
1392
+ "title": "Widget indisponible",
1393
+ "bodyLead": "Aucun widget n’est enregistré sous",
1394
+ "bodyTail": "Il appartient peut-être à une version plus récente ou à une extension désinstallée."
1395
1395
  }
1396
1396
  }
1397
1397
  },
@@ -1405,350 +1405,350 @@
1405
1405
  "committed": "{title} placé à la colonne {col}, ligne {row}.",
1406
1406
  "reverted": "{title} remis à sa position initiale."
1407
1407
  },
1408
- "draggableRole": "draggable widget"
1408
+ "draggableRole": "widget déplaçable"
1409
1409
  },
1410
1410
  "templates": {
1411
1411
  "crud": {
1412
- "newRow": "New row",
1413
- "exportAction": "Export",
1414
- "searchPlaceholder": "Search {table}…",
1415
- "removeFilter": "Remove {column} filter",
1416
- "queryFailed": "Query failed",
1417
- "loadingRows": "Loading rows",
1418
- "noMatchesTitle": "No matching rows",
1419
- "emptyTitle": "{count, plural, one {No {entity} yet} other {No {entity}s yet}}",
1420
- "createTitle": "Add {entity}",
1421
- "createSubtitle": "Creates one row in {table}.",
1422
- "createSubmit": "Add {entity}",
1423
- "createSuccessTitle": "{name} added",
1424
- "createSuccessBody": "You can undo this from the toast.",
1425
- "editTitle": "Edit {entity}",
1426
- "saveSubmit": "Save changes",
1427
- "deleteTitle": "Delete {entity}",
1428
- "deletePreflight": "Checking references…",
1429
- "deleteNoReferences": "This row has no inbound references.",
1430
- "deleteConsequencesIntro": "Deleting this row also affects:",
1431
- "referenceRows": "{count, plural, one {{n} row} other {{n} rows}}",
1432
- "confirmPrompt": "Type {value} to confirm",
1433
- "bulkDeleteTitle": "{count, plural, one {Delete {n} row} other {Delete {n} rows}}",
1434
- "bulkDeleteBody": "Referential consequences apply to every selected row.",
1435
- "bulkDeleteConfirm": "Delete rows",
1436
- "uniqueHelper": "Must be unique in {table}.",
1437
- "uniqueHelperCounted": "{count, plural, one {Checked against {n} row.} other {Checked against {n} rows.}}",
1412
+ "newRow": "Nouvelle ligne",
1413
+ "exportAction": "Exporter",
1414
+ "searchPlaceholder": "Rechercher dans {table}…",
1415
+ "removeFilter": "Supprimer le filtre {column}",
1416
+ "queryFailed": "Échec de la requête",
1417
+ "loadingRows": "Chargement des lignes",
1418
+ "noMatchesTitle": "Aucune ligne correspondante",
1419
+ "emptyTitle": "{count, plural, one {Pas encore de {entity}} other {Pas encore de {entity}}}",
1420
+ "createTitle": "Ajouter {entity}",
1421
+ "createSubtitle": "Crée une ligne dans {table}.",
1422
+ "createSubmit": "Ajouter {entity}",
1423
+ "createSuccessTitle": "{name} ajouté",
1424
+ "createSuccessBody": "Vous pouvez annuler cette action depuis la notification.",
1425
+ "editTitle": "Modifier {entity}",
1426
+ "saveSubmit": "Enregistrer les modifications",
1427
+ "deleteTitle": "Supprimer {entity}",
1428
+ "deletePreflight": "Vérification des références…",
1429
+ "deleteNoReferences": "Cette ligne n’a aucune référence entrante.",
1430
+ "deleteConsequencesIntro": "Supprimer cette ligne affecte aussi :",
1431
+ "referenceRows": "{count, plural, one {{n} ligne} other {{n} lignes}}",
1432
+ "confirmPrompt": "Saisissez {value} pour confirmer",
1433
+ "bulkDeleteTitle": "{count, plural, one {Supprimer {n} ligne} other {Supprimer {n} lignes}}",
1434
+ "bulkDeleteBody": "Les conséquences référentielles s’appliquent à chaque ligne sélectionnée.",
1435
+ "bulkDeleteConfirm": "Supprimer les lignes",
1436
+ "uniqueHelper": "Doit être unique dans {table}.",
1437
+ "uniqueHelperCounted": "{count, plural, one {Vérifié sur {n} ligne.} other {Vérifié sur {n} lignes.}}",
1438
1438
  "toast": {
1439
- "created": "{entity} created.",
1440
- "createFailed": "Create failed.",
1441
- "saved": "Changes saved.",
1442
- "updateFailed": "Update failed.",
1443
- "deleted": "{name} deleted.",
1444
- "deleteFailed": "Delete failed.",
1445
- "bulkDeleted": "{count, plural, one {{n} row deleted.} other {{n} rows deleted.}}",
1446
- "bulkDeleteFailed": "Bulk delete failed.",
1447
- "undone": "Change undone.",
1448
- "undoFailed": "Undo failed."
1439
+ "created": "{entity} créé.",
1440
+ "createFailed": "Échec de la création.",
1441
+ "saved": "Modifications enregistrées.",
1442
+ "updateFailed": "Échec de la mise à jour.",
1443
+ "deleted": "{name} supprimé.",
1444
+ "deleteFailed": "Échec de la suppression.",
1445
+ "bulkDeleted": "{count, plural, one {{n} ligne supprimée.} other {{n} lignes supprimées.}}",
1446
+ "bulkDeleteFailed": "Échec de la suppression groupée.",
1447
+ "undone": "Modification annulée.",
1448
+ "undoFailed": "Échec de l’annulation."
1449
1449
  },
1450
1450
  "detail": {
1451
- "fields": "Fields",
1452
- "inboundReferences": "inbound references",
1453
- "relatedCount": "{count, plural, one {{n} related record in {table}} other {{n} related records in {table}}}",
1454
- "loadError": "Failed to load the record."
1451
+ "fields": "Champs",
1452
+ "inboundReferences": "références entrantes",
1453
+ "relatedCount": "{count, plural, one {{n} enregistrement lié dans {table}} other {{n} enregistrements liés dans {table}}}",
1454
+ "loadError": "Impossible de charger l’enregistrement."
1455
1455
  }
1456
1456
  },
1457
1457
  "queue": {
1458
- "allSegment": "All",
1459
- "daysUnit": "{count, plural, one {{count} day} other {{count} days}}",
1460
- "approvedToast": "{count} approved.",
1461
- "rejectedToast": "{count} rejected.",
1462
- "undoneToast": "Decision undone.",
1463
- "undoFailedToast": "Could not undo this decision.",
1464
- "failedToast": "Decision failed.",
1465
- "invalidConfig": "This queue’s stored configuration is invalid. Regenerate the page to restore it.",
1466
- "queueLabel": "Queue",
1467
- "statusFilterLabel": "Status filter",
1468
- "errorTitle": "This queue failed to load",
1469
- "loading": "Loading queue",
1470
- "emptyTitle": "Nothing in the queue",
1471
- "emptyBody": "New requests appear here as they arrive.",
1472
- "caughtUpTitle": "You're all caught up",
1473
- "caughtUpBody": "No requests in this tab right now.",
1474
- "selectItem": "Select {title}",
1475
- "selectPrompt": "Select a request",
1476
- "selectBody": "Choose an item to review its details.",
1477
- "rejectTitle": "Reject requests",
1478
- "rejectCount": "Selected · {count}",
1479
- "rejectPlaceholder": "Add a note for the requester…",
1480
- "rejectReasonLabel": "Rejection reason",
1481
- "rejectNote": "The requester will be notified with your note."
1458
+ "allSegment": "Tout",
1459
+ "daysUnit": "{count, plural, one {{count} jour} other {{count} jours}}",
1460
+ "approvedToast": "{count} approuvées.",
1461
+ "rejectedToast": "{count} rejetées.",
1462
+ "undoneToast": "Décision annulée.",
1463
+ "undoFailedToast": "Impossible d’annuler cette décision.",
1464
+ "failedToast": "Échec de la décision.",
1465
+ "invalidConfig": "La configuration enregistrée de cette file d’attente est invalide. Régénérez la page pour la restaurer.",
1466
+ "queueLabel": "File d’attente",
1467
+ "statusFilterLabel": "Filtre de statut",
1468
+ "errorTitle": "Cette file d’attente n’a pas pu être chargée",
1469
+ "loading": "Chargement de la file d’attente",
1470
+ "emptyTitle": "Rien dans la file d’attente",
1471
+ "emptyBody": "Les nouvelles demandes apparaissent ici à mesure qu’elles arrivent.",
1472
+ "caughtUpTitle": "Vous êtes à jour",
1473
+ "caughtUpBody": "Aucune demande dans cet onglet pour l’instant.",
1474
+ "selectItem": "Sélectionner {title}",
1475
+ "selectPrompt": "Sélectionnez une demande",
1476
+ "selectBody": "Choisissez un élément pour en examiner les détails.",
1477
+ "rejectTitle": "Rejeter les demandes",
1478
+ "rejectCount": "Sélectionnées · {count}",
1479
+ "rejectPlaceholder": "Ajoutez une note pour le demandeur…",
1480
+ "rejectReasonLabel": "Motif du rejet",
1481
+ "rejectNote": "Le demandeur sera notifié avec votre note."
1482
1482
  },
1483
1483
  "dashboard": {
1484
- "invalidLayout": "This dashboard’s stored layout is invalid. Regenerate the page or reset its layout."
1484
+ "invalidLayout": "La disposition enregistrée de ce tableau de bord est invalide. Régénérez la page ou réinitialisez sa disposition."
1485
1485
  },
1486
1486
  "builder": {
1487
- "publish": "Publish",
1488
- "paletteTitle": "Blocks",
1489
- "inspectorTitle": "Inspector",
1490
- "startFromTemplate": "Start from a template",
1491
- "untitledDoc": "Untitled document",
1492
- "invalidConfig": "This builder page’s stored config is invalid. Regenerate the page or reset it.",
1487
+ "publish": "Publier",
1488
+ "paletteTitle": "Blocs",
1489
+ "inspectorTitle": "Inspecteur",
1490
+ "startFromTemplate": "Partir d’un modèle",
1491
+ "untitledDoc": "Document sans titre",
1492
+ "invalidConfig": "La configuration enregistrée de cette page d’éditeur est invalide. Régénérez la page ou réinitialisez-la.",
1493
1493
  "starterPicker": {
1494
- "subtitle": "Selection replaces the current draft."
1494
+ "subtitle": "Votre sélection remplace le brouillon actuel."
1495
1495
  },
1496
1496
  "inspector": {
1497
- "titleLabel": "Title",
1498
- "numberLabel": "Number",
1499
- "currencyLabel": "Currency",
1500
- "taxRateLabel": "Tax rate %",
1497
+ "titleLabel": "Titre",
1498
+ "numberLabel": "Numéro",
1499
+ "currencyLabel": "Devise",
1500
+ "taxRateLabel": "Taux de taxe %",
1501
1501
  "modulesLabel": "Modules"
1502
1502
  },
1503
1503
  "summary": {
1504
1504
  "questions": "Questions",
1505
- "estLength": "Est. length",
1505
+ "estLength": "Durée est.",
1506
1506
  "estMinutes": "~{minutes} min",
1507
- "steps": "Steps",
1508
- "triggers": "Triggers",
1507
+ "steps": "Étapes",
1508
+ "triggers": "Déclencheurs",
1509
1509
  "conditions": "Conditions",
1510
1510
  "actions": "Actions",
1511
- "triggerLocked": "The trigger step can’t be removed."
1511
+ "triggerLocked": "L’étape de déclenchement ne peut pas être supprimée."
1512
1512
  },
1513
1513
  "publishModal": {
1514
- "confirmTitle": "Publish survey?",
1515
- "confirmSubtitle": "Review before it goes live.",
1516
- "confirmCta": "Publish survey",
1517
- "publishedTitle": "Survey published",
1518
- "publishedSubtitle": "Your survey is live and collecting responses right now."
1514
+ "confirmTitle": "Publier le sondage ?",
1515
+ "confirmSubtitle": "Vérifiez avant la mise en ligne.",
1516
+ "confirmCta": "Publier le sondage",
1517
+ "publishedTitle": "Sondage publié",
1518
+ "publishedSubtitle": "Votre sondage est en ligne et collecte des réponses dès maintenant."
1519
1519
  },
1520
1520
  "blocks": {
1521
- "block-totals-summary": "Totals summary",
1522
- "block-line-items": "Line items",
1523
- "block-kpi-row": "KPI row",
1524
- "block-bar-chart": "Bar chart",
1525
- "block-line-chart": "Line chart",
1526
- "block-two-col-table": "Two-column table",
1527
- "block-tax-breakdown": "Tax breakdown",
1528
- "block-multi-currency": "Multi-currency",
1529
- "block-payment-history": "Payment history",
1530
- "block-discount-codes": "Discount codes",
1531
- "block-loyalty-banner": "Loyalty points",
1532
- "block-recurring-banner": "Recurring",
1533
- "block-qr-pay": "Payment QR",
1534
- "block-delivery-stepper": "Delivery timeline",
1521
+ "block-totals-summary": "Récapitulatif des totaux",
1522
+ "block-line-items": "Lignes du document",
1523
+ "block-kpi-row": "Rangée de KPI",
1524
+ "block-bar-chart": "Graphique à barres",
1525
+ "block-line-chart": "Graphique en courbes",
1526
+ "block-two-col-table": "Tableau à deux colonnes",
1527
+ "block-tax-breakdown": "Détail des taxes",
1528
+ "block-multi-currency": "Multidevise",
1529
+ "block-payment-history": "Historique des paiements",
1530
+ "block-discount-codes": "Codes de remise",
1531
+ "block-loyalty-banner": "Points de fidélité",
1532
+ "block-recurring-banner": "Récurrence",
1533
+ "block-qr-pay": "QR de paiement",
1534
+ "block-delivery-stepper": "Suivi de livraison",
1535
1535
  "block-signature": "Signature",
1536
- "block-terms-checkbox": "Terms",
1537
- "block-approval": "Approval",
1538
- "block-attachments": "Attachments",
1539
- "block-late-fees": "Late fees",
1536
+ "block-terms-checkbox": "Conditions",
1537
+ "block-approval": "Approbation",
1538
+ "block-attachments": "Pièces jointes",
1539
+ "block-late-fees": "Pénalités de retard",
1540
1540
  "block-image-placeholder": "Image",
1541
1541
  "block-contact": "Contact",
1542
- "block-highlight-box": "Highlight box"
1542
+ "block-highlight-box": "Encadré"
1543
1543
  },
1544
1544
  "starters": {
1545
1545
  "titles": {
1546
- "st-standard": "Standard invoice",
1547
- "st-recurring": "Recurring subscription",
1548
- "st-deposit": "Deposit request",
1549
- "st-credit-note": "Credit note",
1550
- "st-late-reminder": "Late-payment reminder",
1551
- "st-quote": "Quote / estimate",
1546
+ "st-standard": "Facture standard",
1547
+ "st-recurring": "Abonnement récurrent",
1548
+ "st-deposit": "Demande d’acompte",
1549
+ "st-credit-note": "Avoir",
1550
+ "st-late-reminder": "Relance de paiement en retard",
1551
+ "st-quote": "Devis / estimation",
1552
1552
  "st-proforma": "Pro forma",
1553
- "st-receipt": "Payment receipt",
1554
- "st-retainer": "Retainer",
1555
- "st-usage": "Usage-based invoice",
1556
- "st-milestone": "Project milestone",
1557
- "st-donation": "Donation receipt (Tax ID)",
1558
- "st-monthly": "Monthly summary",
1559
- "st-quarterly": "Quarterly review",
1560
- "st-usage-report": "Usage breakdown",
1561
- "st-exec": "Executive one-pager",
1562
- "st-welcome": "Welcome email",
1563
- "st-receipt-email": "Invoice receipt",
1564
- "st-digest": "Weekly digest",
1565
- "st-dunning": "Payment reminder"
1553
+ "st-receipt": "Reçu de paiement",
1554
+ "st-retainer": "Provision sur honoraires",
1555
+ "st-usage": "Facture à l’usage",
1556
+ "st-milestone": "Jalon de projet",
1557
+ "st-donation": "Reçu de don (numéro fiscal)",
1558
+ "st-monthly": "Récapitulatif mensuel",
1559
+ "st-quarterly": "Bilan trimestriel",
1560
+ "st-usage-report": "Détail de la consommation",
1561
+ "st-exec": "Synthèse d’une page",
1562
+ "st-welcome": "E-mail de bienvenue",
1563
+ "st-receipt-email": "Reçu de facture",
1564
+ "st-digest": "Résumé hebdomadaire",
1565
+ "st-dunning": "Rappel de paiement"
1566
1566
  },
1567
1567
  "categories": {
1568
- "billing": "Billing",
1569
- "sales": "Sales",
1570
- "nonProfit": "Non-profit",
1571
- "reports": "Reports",
1572
- "lifecycle": "Lifecycle",
1573
- "transactional": "Transactional",
1568
+ "billing": "Facturation",
1569
+ "sales": "Ventes",
1570
+ "nonProfit": "Associatif",
1571
+ "reports": "Rapports",
1572
+ "lifecycle": "Cycle de vie",
1573
+ "transactional": "Transactionnel",
1574
1574
  "marketing": "Marketing"
1575
1575
  }
1576
1576
  }
1577
1577
  },
1578
1578
  "common": {
1579
- "clearFilters": "Clear filters",
1580
- "noMatchesBody": "Try a different search or remove a filter.",
1581
- "detailLabel": "Detail",
1582
- "loadingRecord": "Loading record"
1579
+ "clearFilters": "Effacer les filtres",
1580
+ "noMatchesBody": "Essayez une autre recherche ou supprimez un filtre.",
1581
+ "detailLabel": "Détail",
1582
+ "loadingRecord": "Chargement de l’enregistrement"
1583
1583
  },
1584
1584
  "directory": {
1585
- "invalidConfig": "This directory’s stored configuration is invalid. Regenerate the page to restore it.",
1586
- "searchPlaceholder": "Search people…",
1587
- "memberCount": "{count, plural, one {{n} person} other {{n} people}}",
1588
- "errorTitle": "This directory failed to load",
1589
- "loading": "Loading people",
1590
- "emptyTitle": "No people yet",
1591
- "emptyBody": "People appear here as rows land in the table.",
1592
- "noMatchesTitle": "No matching people",
1593
- "detailTitle": "Person"
1585
+ "invalidConfig": "La configuration enregistrée de cet annuaire est invalide. Régénérez la page pour la restaurer.",
1586
+ "searchPlaceholder": "Rechercher des personnes…",
1587
+ "memberCount": "{count, plural, one {{n} personne} other {{n} personnes}}",
1588
+ "errorTitle": "Cet annuaire n’a pas pu être chargé",
1589
+ "loading": "Chargement des personnes",
1590
+ "emptyTitle": "Aucune personne pour l’instant",
1591
+ "emptyBody": "Les personnes apparaissent ici à mesure que des lignes arrivent dans la table.",
1592
+ "noMatchesTitle": "Aucune personne correspondante",
1593
+ "detailTitle": "Personne"
1594
1594
  },
1595
1595
  "masterDetail": {
1596
- "invalidConfig": "This page’s stored configuration is invalid. Regenerate the page to restore it.",
1597
- "railTitle": "Records",
1598
- "errorTitle": "This list failed to load",
1599
- "loading": "Loading records",
1600
- "emptyBody": "Records appear here as rows land in the table.",
1601
- "noMatchesTitle": "No matching records",
1602
- "noMatchesBody": "Try removing a filter.",
1603
- "selectPrompt": "Select a record",
1604
- "selectBody": "Choose an item from the list to see its details."
1596
+ "invalidConfig": "La configuration enregistrée de cette page est invalide. Régénérez la page pour la restaurer.",
1597
+ "railTitle": "Enregistrements",
1598
+ "errorTitle": "Cette liste n’a pas pu être chargée",
1599
+ "loading": "Chargement des enregistrements",
1600
+ "emptyBody": "Les enregistrements apparaissent ici à mesure que des lignes arrivent dans la table.",
1601
+ "noMatchesTitle": "Aucun enregistrement correspondant",
1602
+ "noMatchesBody": "Essayez de supprimer un filtre.",
1603
+ "selectPrompt": "Sélectionnez un enregistrement",
1604
+ "selectBody": "Choisissez un élément de la liste pour en voir les détails."
1605
1605
  },
1606
1606
  "chat": {
1607
- "invalidLayout": "This chat page’s stored layout is invalid. Regenerate the page or reset its layout.",
1608
- "noInboxTitle": "No inbox on this page",
1609
- "noInboxBody": "Regenerate the page.",
1610
- "conversationsFailed": "The conversation query failed",
1611
- "messagesFailed": "The messages query failed",
1612
- "loadingConversations": "Loading conversations",
1613
- "loadingMessages": "Loading messages",
1614
- "selectTitle": "Select a conversation",
1615
- "selectBody": "Pick a conversation from the inbox to read its messages."
1607
+ "invalidLayout": "La disposition enregistrée de cette page de messagerie est invalide. Régénérez la page ou réinitialisez sa disposition.",
1608
+ "noInboxTitle": "Aucune boîte de réception sur cette page",
1609
+ "noInboxBody": "Régénérez la page.",
1610
+ "conversationsFailed": "La requête des conversations a échoué",
1611
+ "messagesFailed": "La requête des messages a échoué",
1612
+ "loadingConversations": "Chargement des conversations",
1613
+ "loadingMessages": "Chargement des messages",
1614
+ "selectTitle": "Sélectionnez une conversation",
1615
+ "selectBody": "Choisissez une conversation dans la boîte de réception pour lire ses messages."
1616
1616
  },
1617
1617
  "files": {
1618
- "allFiles": "All files",
1619
- "recent": "Recent",
1620
- "starred": "Starred",
1621
- "invalidLayout": "This files page’s stored layout is invalid. Regenerate the page or reset its layout.",
1622
- "missingSlotTitle": "No file browser on this page",
1623
- "missingSlotBody": "The stored layout has no browser slot. Regenerate the page.",
1624
- "loadFailed": "The file query failed",
1625
- "loading": "Loading files",
1626
- "uploadsUnavailable": "Uploads are not available on this page yet.",
1627
- "previewTitle": "File",
1628
- "kindLabel": "Kind",
1629
- "linkLabel": "Link"
1618
+ "allFiles": "Tous les fichiers",
1619
+ "recent": "Récents",
1620
+ "starred": "Favoris",
1621
+ "invalidLayout": "La disposition enregistrée de cette page de fichiers est invalide. Régénérez la page ou réinitialisez sa disposition.",
1622
+ "missingSlotTitle": "Aucun explorateur de fichiers sur cette page",
1623
+ "missingSlotBody": "La disposition enregistrée n’a aucun emplacement d’explorateur. Régénérez la page.",
1624
+ "loadFailed": "La requête des fichiers a échoué",
1625
+ "loading": "Chargement des fichiers",
1626
+ "uploadsUnavailable": "Les téléversements ne sont pas encore disponibles sur cette page.",
1627
+ "previewTitle": "Fichier",
1628
+ "kindLabel": "Nature",
1629
+ "linkLabel": "Lien"
1630
1630
  },
1631
1631
  "logViewer": {
1632
- "invalidLayout": "This log page’s stored layout is invalid. Regenerate the page or reset its layout.",
1633
- "levelFilterLabel": "Log level filter",
1634
- "timeFilterLabel": "Time window filter",
1632
+ "invalidLayout": "La disposition enregistrée de cette page de journal est invalide. Régénérez la page ou réinitialisez sa disposition.",
1633
+ "levelFilterLabel": "Filtre de niveau de journal",
1634
+ "timeFilterLabel": "Filtre de fenêtre temporelle",
1635
1635
  "window": {
1636
- "1h": "1h",
1637
- "24h": "24h",
1638
- "7d": "7d"
1636
+ "1h": "1 h",
1637
+ "24h": "24 h",
1638
+ "7d": "7 j"
1639
1639
  },
1640
1640
  "heldCount": "+{count}",
1641
- "missingSlotTitle": "No log widget on this page",
1642
- "missingSlotBody": "The stored layout has no log slot. Regenerate the page.",
1643
- "loadFailed": "The log query failed",
1644
- "loading": "Loading log entries",
1641
+ "missingSlotTitle": "Aucun widget de journal sur cette page",
1642
+ "missingSlotBody": "La disposition enregistrée n’a aucun emplacement de journal. Régénérez la page.",
1643
+ "loadFailed": "La requête du journal a échoué",
1644
+ "loading": "Chargement des entrées de journal",
1645
1645
  "traceTitle": "Trace",
1646
- "latestTitle": "Latest activity",
1647
- "backToLatest": "Back to latest",
1648
- "eventFallback": "Event"
1646
+ "latestTitle": "Activité récente",
1647
+ "backToLatest": "Revenir aux dernières entrées",
1648
+ "eventFallback": "Événement"
1649
1649
  },
1650
1650
  "calendar": {
1651
- "eventCount": "{count, plural, one {{n} event} other {{n} events}}",
1652
- "composePlaceholder": "Event title…",
1653
- "addEvent": "Add event",
1654
- "dateRange": "Date range",
1651
+ "eventCount": "{count, plural, one {{n} événement} other {{n} événements}}",
1652
+ "composePlaceholder": "Titre de l’événement…",
1653
+ "addEvent": "Ajouter un événement",
1654
+ "dateRange": "Période",
1655
1655
  "agendaTitle": "Agenda",
1656
- "categoriesTitle": "Categories",
1657
- "upcomingTitle": "Upcoming",
1658
- "invalidLayout": "This calendar’s stored layout is invalid. Regenerate the page or reset its layout."
1656
+ "categoriesTitle": "Catégories",
1657
+ "upcomingTitle": "À venir",
1658
+ "invalidLayout": "La disposition enregistrée de ce calendrier est invalide. Régénérez la page ou réinitialisez sa disposition."
1659
1659
  },
1660
1660
  "scheduler": {
1661
- "previousWeek": "Previous week",
1662
- "nextWeek": "Next week",
1663
- "week": "Week",
1664
- "month": "Month",
1665
- "invalidLayout": "This schedule’s stored layout is invalid. Regenerate the page or reset its layout.",
1666
- "shiftCount": "{count, plural, one {{n} shift} other {{n} shifts}}",
1667
- "addShift": "Add shift"
1661
+ "previousWeek": "Semaine précédente",
1662
+ "nextWeek": "Semaine suivante",
1663
+ "week": "Semaine",
1664
+ "month": "Mois",
1665
+ "invalidLayout": "La disposition enregistrée de ce planning est invalide. Régénérez la page ou réinitialisez sa disposition.",
1666
+ "shiftCount": "{count, plural, one {{n} créneau} other {{n} créneaux}}",
1667
+ "addShift": "Ajouter un créneau"
1668
1668
  },
1669
1669
  "settings": {
1670
- "title": "Notification settings",
1671
- "subtitle": "Choose what you're notified about and how",
1672
- "matrixLabel": "Notify me about",
1673
- "rowHeader": "Event",
1674
- "saved": "Saved",
1675
- "unavailableTag": "Not available yet",
1676
- "loading": "Loading preferences",
1677
- "errorTitle": "These settings failed to load",
1678
- "emptyTitle": "Nothing to configure yet",
1679
- "emptyBody": "Notification events appear here as producers ship."
1670
+ "title": "Paramètres de notification",
1671
+ "subtitle": "Choisissez de quoi vous êtes notifié et comment",
1672
+ "matrixLabel": "Me notifier pour",
1673
+ "rowHeader": "Événement",
1674
+ "saved": "Enregistré",
1675
+ "unavailableTag": "Pas encore disponible",
1676
+ "loading": "Chargement des préférences",
1677
+ "errorTitle": "Ces paramètres n’ont pas pu être chargés",
1678
+ "emptyTitle": "Rien à configurer pour l’instant",
1679
+ "emptyBody": "Les événements de notification apparaissent ici à mesure que leurs producteurs sont livrés."
1680
1680
  },
1681
1681
  "pageCrud": {
1682
- "description": "The canonical table page: searchable data grid, create/edit forms, safe deletes with reference checks, and undoable changes."
1682
+ "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."
1683
1683
  },
1684
1684
  "pageDashboard": {
1685
- "description": "A widget dashboard over your data: KPI cards, charts, and lists on an editable grid."
1685
+ "description": "Un tableau de bord de widgets sur vos données : cartes de KPI, graphiques et listes sur une grille modifiable."
1686
1686
  },
1687
1687
  "pageBoard": {
1688
- "description": "A kanban board grouped by a status fielddrag cards between columns to update records."
1688
+ "description": "Un tableau kanban regroupé par un champ de statutfaites glisser les cartes entre les colonnes pour mettre à jour les enregistrements."
1689
1689
  },
1690
1690
  "pageCalendar": {
1691
- "description": "A month calendar with agenda, category filters, and quick event capture from a date field."
1691
+ "description": "Un calendrier mensuel avec agenda, filtres de catégorie et saisie rapide d’événements à partir d’un champ de date."
1692
1692
  },
1693
1693
  "pageScheduler": {
1694
- "description": "A week-by-resource shift matrix with capacity tracking and coverage totals."
1694
+ "description": "Une matrice de créneaux semaine par ressource, avec suivi de la capacité et totaux de couverture."
1695
1695
  },
1696
1696
  "pageDirectory": {
1697
- "description": "A people directory with search, group filters, and a profile drawer."
1697
+ "description": "Un annuaire de personnes avec recherche, filtres de groupe et un panneau latéral de profil."
1698
1698
  },
1699
1699
  "pageMasterDetail": {
1700
- "description": "A list-beside-detail layout: pick a record on the left, work with it on the right."
1700
+ "description": "Une disposition liste et détail : choisissez un enregistrement à gauche, travaillez dessus à droite."
1701
1701
  },
1702
1702
  "pageQueueInbox": {
1703
- "description": "A review queue with approve/reject decisions, bulk actions, and undo."
1703
+ "description": "Une file d’attente de revue avec décisions d’approbation ou de rejet, actions groupées et annulation."
1704
1704
  },
1705
1705
  "pageLogViewer": {
1706
- "description": "A live-tailing log table with level and time filters and a trace side panel."
1706
+ "description": "Un tableau de journal en suivi direct, avec filtres de niveau et de temps et un panneau latéral de trace."
1707
1707
  },
1708
1708
  "pageFiles": {
1709
- "description": "A file browser with smart folders, uploads, and a preview drawer."
1709
+ "description": "Un explorateur de fichiers avec dossiers intelligents, téléversements et un panneau latéral d’aperçu."
1710
1710
  },
1711
1711
  "pageChat": {
1712
- "description": "A conversation inbox beside a message thread, bound to your messages tables."
1712
+ "description": "Une boîte de réception de conversations à côté d’un fil de messages, liée à vos tables de messages."
1713
1713
  },
1714
1714
  "pageBuilder": {
1715
- "description": "A drag-and-drop document builder with block palette, inspector, and publish flow."
1715
+ "description": "Un éditeur de documents en glisser-déposer avec palette de blocs, inspecteur et flux de publication."
1716
1716
  },
1717
1717
  "pageWizard": {
1718
- "description": "A multi-step guided flow that walks users through a structured process."
1718
+ "description": "Un flux guidé en plusieurs étapes qui accompagne les utilisateurs dans un processus structuré."
1719
1719
  },
1720
1720
  "pageSettings": {
1721
- "description": "A notification-preferences matrix with per-channel toggles and autosave."
1721
+ "description": "Une matrice de préférences de notification avec interrupteurs par canal et enregistrement automatique."
1722
1722
  }
1723
1723
  },
1724
1724
  "frame": {
1725
- "noResult": "No result for widget",
1726
- "emptyTitle": "No data for range",
1727
- "loadError": "Something went wrong loading this widget.",
1728
- "renderError": "This widget failed to render.",
1729
- "refreshing": "Refreshing",
1730
- "infoLabel": "Widget info",
1731
- "menuLabel": "Widget menu"
1725
+ "noResult": "Aucun résultat pour ce widget",
1726
+ "emptyTitle": "Aucune donnée pour cette période",
1727
+ "loadError": "Une erreur s’est produite lors du chargement de ce widget.",
1728
+ "renderError": "Ce widget n’a pas pu s’afficher.",
1729
+ "refreshing": "Actualisation",
1730
+ "infoLabel": "Infos du widget",
1731
+ "menuLabel": "Menu du widget"
1732
1732
  },
1733
1733
  "charts": {
1734
- "livePillLabel": "Live",
1734
+ "livePillLabel": "En direct",
1735
1735
  "forecast": {
1736
- "nowLabel": "Now",
1737
- "forecastLabel": "Forecast",
1738
- "actualLabel": "Actual"
1736
+ "nowLabel": "Maintenant",
1737
+ "forecastLabel": "Prévision",
1738
+ "actualLabel": "Réel"
1739
1739
  },
1740
- "otherLabel": "Other",
1740
+ "otherLabel": "Autre",
1741
1741
  "heat": {
1742
- "lessLabel": "Less",
1743
- "moreLabel": "More"
1742
+ "lessLabel": "Moins",
1743
+ "moreLabel": "Plus"
1744
1744
  },
1745
1745
  "choropleth": {
1746
- "lowLabel": "Low",
1747
- "highLabel": "High"
1746
+ "lowLabel": "Faible",
1747
+ "highLabel": "Élevé"
1748
1748
  },
1749
1749
  "funnel": {
1750
- "stepConversion": "{pct}% continue",
1751
- "overallConversion": "{pct}% overall"
1750
+ "stepConversion": "{pct}% poursuivent",
1751
+ "overallConversion": "{pct}% au total"
1752
1752
  }
1753
1753
  }
1754
1754
  }