@object-ui/i18n 17.5.0 → 17.7.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.
- package/CHANGELOG.md +4954 -0
- package/README.md +234 -13
- package/dist/builtinAggregateLabels.d.ts +40 -0
- package/dist/builtinAggregateLabels.js +23 -0
- package/dist/currency.d.ts +27 -3
- package/dist/currency.js +28 -4
- package/dist/fallbackInterpolation.d.ts +79 -0
- package/dist/fallbackInterpolation.js +124 -0
- package/dist/i18n.d.ts +28 -2
- package/dist/i18n.js +99 -17
- package/dist/index.d.ts +17 -23
- package/dist/index.js +51 -27
- package/dist/locales/ar.d.ts +1113 -370
- package/dist/locales/ar.js +1276 -428
- package/dist/locales/de.d.ts +785 -370
- package/dist/locales/de.js +896 -401
- package/dist/locales/en.d.ts +800 -385
- package/dist/locales/en.js +1261 -419
- package/dist/locales/es.d.ts +867 -370
- package/dist/locales/es.js +976 -398
- package/dist/locales/fr.d.ts +867 -370
- package/dist/locales/fr.js +976 -399
- package/dist/locales/index.d.ts +8682 -3761
- package/dist/locales/index.js +68 -29
- package/dist/locales/ja.d.ts +785 -370
- package/dist/locales/ja.js +891 -395
- package/dist/locales/ko.d.ts +785 -370
- package/dist/locales/ko.js +893 -399
- package/dist/locales/pt.d.ts +867 -370
- package/dist/locales/pt.js +975 -397
- package/dist/locales/registry.d.ts +102 -0
- package/dist/locales/registry.js +220 -0
- package/dist/locales/rtl.d.ts +24 -0
- package/dist/locales/rtl.js +26 -0
- package/dist/locales/ru.d.ts +949 -370
- package/dist/locales/ru.js +1093 -419
- package/dist/locales/zh.d.ts +803 -388
- package/dist/locales/zh.js +899 -388
- package/dist/pickLocalized.d.ts +67 -0
- package/dist/pickLocalized.js +114 -0
- package/dist/provider.d.ts +102 -13
- package/dist/provider.js +335 -50
- package/dist/translateFn.d.ts +29 -0
- package/dist/translateFn.js +8 -0
- package/dist/useDisplayLocale.d.ts +11 -0
- package/dist/useDisplayLocale.js +13 -2
- package/dist/useObjectLabel.d.ts +118 -22
- package/dist/useObjectLabel.js +148 -23
- package/dist/useSafeTranslation.js +41 -43
- package/dist/utils/formatting.d.ts +16 -0
- package/dist/utils/formatting.js +23 -3
- package/dist/utils/index.d.ts +4 -4
- package/dist/utils/index.js +4 -4
- package/dist/utils/spec-formatters.d.ts +13 -23
- package/dist/utils/spec-formatters.js +41 -2
- package/dist/utils/spec-translations.d.ts +16 -3
- package/dist/utils/spec-translations.js +52 -13
- package/package.json +12 -6
package/dist/locales/fr.js
CHANGED
|
@@ -19,10 +19,12 @@ const fr = {
|
|
|
19
19
|
manage_users: "Gérer les utilisateurs",
|
|
20
20
|
manage_org_users: "Gérer les utilisateurs de l'organisation",
|
|
21
21
|
manage_metadata: "Gérer les métadonnées",
|
|
22
|
+
manage_org_presentation: "Gérer la présentation de l'organisation",
|
|
22
23
|
manage_platform_settings: "Gérer les paramètres de la plateforme",
|
|
23
24
|
setup_access: "Accès à la configuration",
|
|
24
25
|
setup_write: "Écriture des paramètres",
|
|
25
26
|
studio_access: "Accès à Studio",
|
|
27
|
+
manage_sharing: "Gérer le partage",
|
|
26
28
|
},
|
|
27
29
|
group: {
|
|
28
30
|
platform: 'Plateforme',
|
|
@@ -39,12 +41,20 @@ const fr = {
|
|
|
39
41
|
more: "+{{count}} de plus",
|
|
40
42
|
objects: "{{count}} objets",
|
|
41
43
|
objects_one: "{{count}} objet",
|
|
44
|
+
objects_many: "{{count}} d'objets",
|
|
45
|
+
objects_other: "{{count}} objets",
|
|
42
46
|
fields: "{{count}} règles de champ",
|
|
43
47
|
fields_one: "{{count}} règle de champ",
|
|
48
|
+
fields_many: "{{count}} de règles de champ",
|
|
49
|
+
fields_other: "{{count}} règles de champ",
|
|
44
50
|
rls: "{{count}} politiques RLS",
|
|
45
51
|
rls_one: "{{count}} politique RLS",
|
|
52
|
+
rls_many: "{{count}} de politiques RLS",
|
|
53
|
+
rls_other: "{{count}} politiques RLS",
|
|
46
54
|
tabs: "{{count}} règles d'onglet",
|
|
47
55
|
tabs_one: "{{count}} règle d'onglet",
|
|
56
|
+
tabs_many: "{{count}} de règles d'onglet",
|
|
57
|
+
tabs_other: "{{count}} règles d'onglet",
|
|
48
58
|
adminScope: "Administration déléguée configurée",
|
|
49
59
|
designInStudio: "Concevoir dans Studio →",
|
|
50
60
|
designInStudioHint: "Concevoir dans Studio",
|
|
@@ -63,7 +73,9 @@ const fr = {
|
|
|
63
73
|
selectFirst: 'Sélectionnez d’abord {{fields}}',
|
|
64
74
|
selectRecord: 'Sélectionner un enregistrement',
|
|
65
75
|
recordCount: '{{count}} enregistrements',
|
|
66
|
-
|
|
76
|
+
recordCount_one: '{{count}} enregistrement',
|
|
77
|
+
recordCount_many: "{{count}} d'enregistrements",
|
|
78
|
+
recordCount_other: '{{count}} enregistrements',
|
|
67
79
|
pageOf: 'Page {{current}} sur {{total}}',
|
|
68
80
|
filters: 'Filtres',
|
|
69
81
|
clear: 'Effacer',
|
|
@@ -82,6 +94,7 @@ const fr = {
|
|
|
82
94
|
removeFromFavorites: "Retirer des favoris",
|
|
83
95
|
loading: "Chargement…",
|
|
84
96
|
save: "Enregistrer",
|
|
97
|
+
discard: "Abandonner",
|
|
85
98
|
cancel: "Annuler",
|
|
86
99
|
delete: "Supprimer",
|
|
87
100
|
edit: "Modifier",
|
|
@@ -115,7 +128,9 @@ const fr = {
|
|
|
115
128
|
closePanel: "Fermer le panneau",
|
|
116
129
|
resizeDrawer: "Redimensionner le panneau",
|
|
117
130
|
itemCount: "{{count}} éléments",
|
|
118
|
-
|
|
131
|
+
itemCount_one: "{{count}} élément",
|
|
132
|
+
itemCount_many: "{{count}} d'éléments",
|
|
133
|
+
itemCount_other: "{{count}} éléments",
|
|
119
134
|
toggleSidebar: "Basculer la barre latérale",
|
|
120
135
|
package: "Package",
|
|
121
136
|
done: "Terminé",
|
|
@@ -123,6 +138,16 @@ const fr = {
|
|
|
123
138
|
record: "Enregistrement",
|
|
124
139
|
retry: "Réessayer",
|
|
125
140
|
printDialogHint: "Ouvre la boîte de dialogue d'impression de votre navigateur (ce n'est pas un export PDF)",
|
|
141
|
+
// The non-grid row ceiling's footnote (objectui#7210). Two keys because
|
|
142
|
+
// there are two conditions: a reported `total` states the fact with BOTH
|
|
143
|
+
// numbers, a missing one cannot name how many. Kept terse deliberately —
|
|
144
|
+
// this copy is eagerly loaded, and since objectui#7399 these bytes are
|
|
145
|
+
// budgeted by the `i18n-locales` chunk, not `framework`. ⛔ That ceiling's
|
|
146
|
+
// headroom is deliberately NOT restated here — it moves on every
|
|
147
|
+
// re-baseline, and the figure that was here went stale.
|
|
148
|
+
// `pnpm check:eager-closure` prints it.
|
|
149
|
+
rowCeilingNote: "Affichage des {{shown}} premiers enregistrements sur {{total}}. Affinez le filtre.",
|
|
150
|
+
rowCeilingNoteUnknownTotal: "Affichage des {{shown}} premiers enregistrements. Affinez le filtre.",
|
|
126
151
|
},
|
|
127
152
|
actions: {
|
|
128
153
|
decisionOutput: {
|
|
@@ -134,6 +159,14 @@ const fr = {
|
|
|
134
159
|
acknowledge: 'Je l\'ai enregistrée',
|
|
135
160
|
copyAll: 'Tout copier',
|
|
136
161
|
},
|
|
162
|
+
notAvailableHere: '« {{action}} » n\'est pas disponible sur la page actuelle.',
|
|
163
|
+
completedSuccessfully: 'Action effectuée avec succès',
|
|
164
|
+
failed: "Échec de l'action",
|
|
165
|
+
parallelFailed: 'Une ou plusieurs actions parallèles ont échoué',
|
|
166
|
+
undo: 'Annuler',
|
|
167
|
+
undone: 'Modification annulée',
|
|
168
|
+
undoneOperation: 'Annuler : {{description}}',
|
|
169
|
+
redoneOperation: 'Rétablir : {{description}}',
|
|
137
170
|
},
|
|
138
171
|
validation: {
|
|
139
172
|
required: "{{field}} est obligatoire",
|
|
@@ -151,19 +184,45 @@ const fr = {
|
|
|
151
184
|
},
|
|
152
185
|
form: {
|
|
153
186
|
noPermissionToSave: "Vous n'avez pas l'autorisation d'enregistrer cet enregistrement.",
|
|
187
|
+
noPermissionToCreate: "Vous n'avez pas l'autorisation de créer des enregistrements {{object}}. Les champs sont en lecture seule.",
|
|
188
|
+
noPermissionToEdit: "Vous n'avez pas l'autorisation de modifier les enregistrements {{object}}. Les champs sont en lecture seule.",
|
|
154
189
|
submitFailed: "Échec de l'enregistrement. Veuillez réessayer.",
|
|
190
|
+
uploadInFlight: "Attendez la fin du téléversement avant de sauvegarder.",
|
|
191
|
+
clearedOnHide: "Ce qui ne s'applique plus aux valeurs actuelles a été effacé : {{fields}}",
|
|
192
|
+
visibleWhenFaulted: "Envoi impossible : la règle visibleWhen de {{fields}} n'a pas pu être évaluée. La règle doit être corrigée avant que ce formulaire puisse être envoyé.",
|
|
155
193
|
discardTitle: "Abandonner les modifications ?",
|
|
156
194
|
discardMessage: "Vous avez des modifications non enregistrées. Si vous fermez ce formulaire maintenant, vos modifications seront perdues.",
|
|
157
195
|
// objectui#4024 — the create/edit dialog's `sr-only` accessible
|
|
158
196
|
// description, used when the form declares no `description` of its own.
|
|
159
197
|
dialogDescriptionFallback: "Remplissez les champs du formulaire, puis envoyez ou annulez.",
|
|
198
|
+
deniedDescription: "Vous n'avez pas l'autorisation de modifier ce champ.",
|
|
199
|
+
masterDetail: {
|
|
200
|
+
loadingColumns: "Chargement des colonnes…",
|
|
201
|
+
subtotal: "Sous-total",
|
|
202
|
+
tax: "Taxe ({{rate}} %)",
|
|
203
|
+
total: "Total",
|
|
204
|
+
lineItem: "Ligne",
|
|
205
|
+
rowTitle: "{{title}} — ligne {{row}}",
|
|
206
|
+
applyRow: "Appliquer",
|
|
207
|
+
editorDescription: "Saisissez l'enregistrement et ses lignes, puis enregistrez.",
|
|
208
|
+
noChildObject: "Aucun objet enfant n'est configuré pour cette collection : définissez {{property}} sur l'objet dont elle liste les lignes.",
|
|
209
|
+
schemaUnavailable: "Impossible de charger le schéma de {{object}} : cette collection n'a donc aucune colonne à afficher. Vérifiez que l'objet existe et est lisible, puis rechargez.",
|
|
210
|
+
noRelationshipField: "Impossible de déterminer comment {{object}} est lié à {{parent}} : aucun champ lookup ou master_detail de cet objet ne référence le parent. Définissez {{property}} sur cette collection avec le champ qui contient l'enregistrement parent.",
|
|
211
|
+
},
|
|
212
|
+
lineItems: {
|
|
213
|
+
title: "Lignes",
|
|
214
|
+
saveRecordFirst: "Enregistrez d'abord l'enregistrement pour ajouter des lignes.",
|
|
215
|
+
notLoaded: "Les lignes de cet enregistrement n'ont pas été chargées.",
|
|
216
|
+
loadFailed: "Échec du chargement des lignes",
|
|
217
|
+
saveFailed: "Échec de l'enregistrement des lignes",
|
|
218
|
+
noChildObject: "Aucun objet enfant n'est configuré pour ce panneau : définissez {{property}} sur l'objet dont il liste les lignes.",
|
|
219
|
+
},
|
|
160
220
|
keepEditing: "Continuer l'édition",
|
|
161
221
|
discard: "Abandonner",
|
|
162
222
|
conflictTitle: "Conflit d'enregistrement",
|
|
163
223
|
conflictMessage: "Cet enregistrement a été modifié par quelqu'un d'autre pendant votre édition. L'écrasement remplacera ses modifications par les vôtres.",
|
|
164
224
|
conflictLatestVersion: "Son enregistrement : {{time}}",
|
|
165
225
|
conflictOverwrite: "Écraser",
|
|
166
|
-
addItem: "Ajouter un élément",
|
|
167
226
|
removeItem: "Supprimer un élément",
|
|
168
227
|
fieldRequired: "Ce champ est obligatoire",
|
|
169
228
|
invalidFormat: "Format invalide",
|
|
@@ -181,6 +240,12 @@ const fr = {
|
|
|
181
240
|
createSuccess: "{{object}} créé",
|
|
182
241
|
updateSuccess: "{{object}} mis à jour",
|
|
183
242
|
deleteSuccess: "{{object}} supprimé",
|
|
243
|
+
created: "Créé",
|
|
244
|
+
saved: "Enregistré",
|
|
245
|
+
savedNamed: "{{title}} enregistré",
|
|
246
|
+
submitted: "Envoyé",
|
|
247
|
+
errorLoading: "Erreur de chargement du formulaire",
|
|
248
|
+
navigateRefused: "La destination `navigateOnSuccess` déclarée pour ce formulaire a été refusée, la navigation n’a donc pas eu lieu.",
|
|
184
249
|
fullscreen: {
|
|
185
250
|
title: "Modifier le texte",
|
|
186
251
|
description: "Modifiez la valeur texte complète, puis enregistrez ou annulez vos modifications.",
|
|
@@ -205,6 +270,9 @@ const fr = {
|
|
|
205
270
|
},
|
|
206
271
|
relativeDate: {
|
|
207
272
|
overdue: "En retard de {{count}} j",
|
|
273
|
+
overdue_one: "En retard de {{count}} j",
|
|
274
|
+
overdue_many: "En retard de {{count}} j",
|
|
275
|
+
overdue_other: "En retard de {{count}} j",
|
|
208
276
|
},
|
|
209
277
|
file: {
|
|
210
278
|
dragDropHere: 'Glissez-déposez des fichiers ici',
|
|
@@ -221,6 +289,7 @@ const fr = {
|
|
|
221
289
|
remove: 'Supprimer {{name}}',
|
|
222
290
|
exceedsMaxSize: '« {{name}} » dépasse la taille maximale ({{max}} Mo)',
|
|
223
291
|
uploadFailed: 'Échec du téléversement de « {{name}} » : {{error}}',
|
|
292
|
+
uploadIncomplete: 'Le téléversement de « {{name}} » n’a pas abouti : aucun identifiant de fichier n’a été renvoyé, rien n’a été enregistré',
|
|
224
293
|
},
|
|
225
294
|
richText: {
|
|
226
295
|
format: "Format : {{format}}",
|
|
@@ -248,6 +317,9 @@ const fr = {
|
|
|
248
317
|
selectBusinessUnit: "Sélectionner une unité opérationnelle",
|
|
249
318
|
selectPosition: "Sélectionner un poste",
|
|
250
319
|
selectUnitAndSubordinates: "Sélectionner une unité opérationnelle",
|
|
320
|
+
selectField: "Sélectionner un champ utilisateur",
|
|
321
|
+
noUserFields: "Cet objet n'a aucun champ utilisateur",
|
|
322
|
+
fieldNotUserTyped: "{{name}} — pas un champ utilisateur",
|
|
251
323
|
},
|
|
252
324
|
filterCondition: {
|
|
253
325
|
selectObjectFirst: "Sélectionnez d'abord un objet.",
|
|
@@ -258,13 +330,51 @@ const fr = {
|
|
|
258
330
|
editAsJson: "Modifier en JSON",
|
|
259
331
|
useVisualBuilder: "Utiliser le constructeur visuel",
|
|
260
332
|
},
|
|
333
|
+
object: {
|
|
334
|
+
invalidJson: "JSON invalide",
|
|
335
|
+
},
|
|
336
|
+
location: {
|
|
337
|
+
refusedFormat: "Non enregistré : saisissez une paire latitude, longitude (exemple : 30.2741, 120.1551).",
|
|
338
|
+
refusedRange: "Non enregistré : {{detail}}",
|
|
339
|
+
latitude: "latitude",
|
|
340
|
+
longitude: "longitude",
|
|
341
|
+
refusedResidueOne: "Non enregistré : {{name}} « {{text}} » n'est pas un nombre. Saisissez des décimales simples (exemple : 30.2741, 120.1551).",
|
|
342
|
+
refusedResidue: "Non enregistré : {{name}} « {{text}} » et {{otherName}} « {{otherText}} » ne sont pas des nombres. Saisissez des décimales simples (exemple : 30.2741, 120.1551).",
|
|
343
|
+
},
|
|
344
|
+
date: {
|
|
345
|
+
impossibleDay: "La valeur enregistrée « {{value}} » n’est pas une date réelle. Choisissez une date pour la remplacer.",
|
|
346
|
+
},
|
|
347
|
+
dateTime: {
|
|
348
|
+
impossibleDay: "La valeur enregistrée « {{value}} » n’est pas une date réelle. Choisissez une date et une heure pour la remplacer.",
|
|
349
|
+
},
|
|
350
|
+
number: {
|
|
351
|
+
badInput: "Non enregistré : le texte de ce champ n'est pas un nombre. Saisissez une décimale simple (exemple : {{example}}).",
|
|
352
|
+
},
|
|
261
353
|
tags: {
|
|
262
354
|
placeholder: "Saisissez puis appuyez sur Entrée pour ajouter…",
|
|
263
355
|
},
|
|
356
|
+
// objectui#4028 — `AddressField`'s five sub-labels.
|
|
357
|
+
address: {
|
|
358
|
+
street: "Adresse (rue)",
|
|
359
|
+
city: "Ville",
|
|
360
|
+
state: "État / Province",
|
|
361
|
+
postalCode: "Code postal",
|
|
362
|
+
country: "Pays",
|
|
363
|
+
},
|
|
264
364
|
textarea: {
|
|
265
365
|
characterCount: "Nombre de caractères : {{count}} sur {{max}}",
|
|
266
366
|
charactersRemaining: "Caractères restants : {{count}}",
|
|
267
367
|
},
|
|
368
|
+
grid: {
|
|
369
|
+
addLine: "Ajouter une ligne",
|
|
370
|
+
noItems: "Aucun élément",
|
|
371
|
+
noItemsAddHint: "Aucun élément pour l'instant — cliquez sur « {{label}} » pour commencer.",
|
|
372
|
+
optionalColumns: "Colonnes facultatives",
|
|
373
|
+
computed: "Calculé",
|
|
374
|
+
openRow: "Ouvrir la ligne",
|
|
375
|
+
duplicateRow: "Dupliquer la ligne",
|
|
376
|
+
removeRow: "Supprimer la ligne",
|
|
377
|
+
},
|
|
268
378
|
},
|
|
269
379
|
table: {
|
|
270
380
|
rowsPerPage: "Lignes par page",
|
|
@@ -293,23 +403,41 @@ const fr = {
|
|
|
293
403
|
open: "Ouvrir",
|
|
294
404
|
search: "Rechercher…",
|
|
295
405
|
modified: "{{count}} ligne(s) modifiée(s)",
|
|
406
|
+
modified_one: "{{count}} ligne modifiée",
|
|
407
|
+
modified_many: "{{count}} de lignes modifiées",
|
|
408
|
+
modified_other: "{{count}} lignes modifiées",
|
|
296
409
|
saveFailed: 'Échec de l’enregistrement',
|
|
297
410
|
selected: "{{count}} sélectionné(s)",
|
|
411
|
+
selected_one: "{{count}} sélectionné",
|
|
412
|
+
selected_many: "{{count}} sélectionnés",
|
|
413
|
+
selected_other: "{{count}} sélectionnés",
|
|
298
414
|
edit: "Modifier",
|
|
299
415
|
delete: "Supprimer",
|
|
300
416
|
},
|
|
301
417
|
grid: {
|
|
302
418
|
bulkSelected: "{{count}} sélectionné(s)",
|
|
419
|
+
bulkSelected_one: "{{count}} sélectionné",
|
|
420
|
+
bulkSelected_many: "{{count}} sélectionnés",
|
|
421
|
+
bulkSelected_other: "{{count}} sélectionnés",
|
|
303
422
|
bulkSelectedAllMatches: "{{count}} sélectionné(s) (tous les résultats)",
|
|
304
423
|
bulkClear: "Effacer",
|
|
305
424
|
bulkAllOnPage: "Les {{count}} éléments de cette page sont sélectionnés.",
|
|
425
|
+
bulkAllOnPage_one: "{{count}} enregistrement de cette page est sélectionné.",
|
|
426
|
+
bulkAllOnPage_many: "Les {{count}} éléments de cette page sont sélectionnés.",
|
|
427
|
+
bulkAllOnPage_other: "Les {{count}} éléments de cette page sont sélectionnés.",
|
|
306
428
|
bulkSelectAllMatching: "Sélectionner les {{count}} correspondances",
|
|
307
429
|
bulkAllMatchingSelected: "Les {{count}} enregistrements correspondants sont tous sélectionnés.",
|
|
308
430
|
bulk: {
|
|
309
431
|
confirmDefault: "Ceci s'appliquera à {{count}} enregistrement(s).",
|
|
432
|
+
confirmDefault_one: "Ceci s'appliquera à {{count}} enregistrement.",
|
|
433
|
+
confirmDefault_many: "Ceci s'appliquera à {{count}} d'enregistrements.",
|
|
434
|
+
confirmDefault_other: "Ceci s'appliquera à {{count}} enregistrements.",
|
|
310
435
|
overLimit: "La sélection ({{count}}) dépasse la limite de l'action ({{limit}}). Réduisez la sélection pour continuer.",
|
|
311
436
|
affectedRecords: "Enregistrements concernés ({{count}}) :",
|
|
312
437
|
skippedIneligible: '{{count}} des enregistrements sélectionnés ne sont pas éligibles à cette action et seront ignorés.',
|
|
438
|
+
skippedIneligible_one: "{{count}} des enregistrements sélectionnés n'est pas éligible à cette action et sera ignoré.",
|
|
439
|
+
skippedIneligible_many: '{{count}} des enregistrements sélectionnés ne sont pas éligibles à cette action et seront ignorés.',
|
|
440
|
+
skippedIneligible_other: '{{count}} des enregistrements sélectionnés ne sont pas éligibles à cette action et seront ignorés.',
|
|
313
441
|
rowFallback: "Ligne {{index}}",
|
|
314
442
|
andMore: "… et {{count}} de plus",
|
|
315
443
|
processed: "{{count}} / {{total}} traités",
|
|
@@ -327,7 +455,6 @@ const fr = {
|
|
|
327
455
|
undo: "Annuler",
|
|
328
456
|
undoing: "Annulation…",
|
|
329
457
|
done: "Terminé",
|
|
330
|
-
selectPlaceholder: "Sélectionner…",
|
|
331
458
|
loading: "Chargement…",
|
|
332
459
|
},
|
|
333
460
|
actions: "Actions",
|
|
@@ -346,6 +473,14 @@ const fr = {
|
|
|
346
473
|
yes: "Oui",
|
|
347
474
|
no: "Non",
|
|
348
475
|
systemFields: "Système",
|
|
476
|
+
// objectui#10881 — the grouped grid's two refusals: over a data source
|
|
477
|
+
// that cannot answer the group header query, and over rows a host
|
|
478
|
+
// handed in while declaring them one page of more. `queryGroupHeaders`
|
|
479
|
+
// is the member's name and stays untranslated.
|
|
480
|
+
grouping: {
|
|
481
|
+
needsHeaderQuery: "Cette vue est groupée, mais sa source de données n'implémente pas queryGroupHeaders : les groupes ne peuvent donc pas être comptés. Supprimez le regroupement pour afficher les enregistrements.",
|
|
482
|
+
needsWholeRows: "Le regroupement a besoin de tous les enregistrements, mais cette grille n'en a reçu qu'une page : les groupes ne peuvent donc pas être comptés. Fournissez tous les enregistrements, ou laissez la grille les charger depuis une source de données qui implémente queryGroupHeaders.",
|
|
483
|
+
},
|
|
349
484
|
// objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
|
|
350
485
|
// `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
|
|
351
486
|
// pack controls its own separator and word order.
|
|
@@ -372,10 +507,15 @@ const fr = {
|
|
|
372
507
|
},
|
|
373
508
|
import: {
|
|
374
509
|
downloadTemplate: "Télécharger le modèle",
|
|
375
|
-
downloadTemplateHint: "Obtenez un
|
|
510
|
+
downloadTemplateHint: "Obtenez un fichier Excel des colonnes importables (les champs obligatoires sont marqués d'un *), avec des instructions de saisie.",
|
|
376
511
|
templateFileName: "{{object}}-import-template",
|
|
512
|
+
templateDownloadFailed: "Impossible de télécharger le modèle. Veuillez réessayer.",
|
|
513
|
+
templateNotPermitted: "Vous n'êtes pas autorisé à créer des enregistrements de cet objet, son modèle d'import n'est donc pas disponible.",
|
|
377
514
|
autoMatched: "Associé automatiquement",
|
|
378
515
|
autoMatchedSummary: "{{count}} colonne(s) associée(s) automatiquement — vérifiez et ajustez ci-dessous.",
|
|
516
|
+
autoMatchedSummary_one: "{{count}} colonne associée automatiquement — vérifiez et ajustez ci-dessous.",
|
|
517
|
+
autoMatchedSummary_many: "{{count}} de colonnes associées automatiquement — vérifiez et ajustez ci-dessous.",
|
|
518
|
+
autoMatchedSummary_other: "{{count}} colonnes associées automatiquement — vérifiez et ajustez ci-dessous.",
|
|
379
519
|
confidence: {
|
|
380
520
|
high: "Confiance élevée",
|
|
381
521
|
medium: "Confiance moyenne",
|
|
@@ -388,8 +528,17 @@ const fr = {
|
|
|
388
528
|
cancelImport: "Annuler l'import",
|
|
389
529
|
importCancelled: "Import annulé",
|
|
390
530
|
resultsTruncated: "Affichage des {{count}} premiers résultats de lignes (sur {{total}}).",
|
|
531
|
+
resultsTruncated_one: "Affichage du premier résultat de ligne ({{count}} sur {{total}}).",
|
|
532
|
+
resultsTruncated_many: "Affichage des {{count}} premiers résultats de lignes (sur {{total}}).",
|
|
533
|
+
resultsTruncated_other: "Affichage des {{count}} premiers résultats de lignes (sur {{total}}).",
|
|
391
534
|
createdCount: "{{count}} créé(s)",
|
|
535
|
+
createdCount_one: "{{count}} créé",
|
|
536
|
+
createdCount_many: "{{count}} créés",
|
|
537
|
+
createdCount_other: "{{count}} créés",
|
|
392
538
|
updatedCount: "{{count}} mis à jour",
|
|
539
|
+
updatedCount_one: "{{count}} mis à jour",
|
|
540
|
+
updatedCount_many: "{{count}} mis à jour",
|
|
541
|
+
updatedCount_other: "{{count}} mis à jour",
|
|
393
542
|
downloadFailed: "Télécharger les lignes en échec",
|
|
394
543
|
options: "Options d'import",
|
|
395
544
|
writeMode: "Lorsqu'une ligne correspond à un enregistrement existant",
|
|
@@ -437,6 +586,9 @@ const fr = {
|
|
|
437
586
|
historyColResult: "Résultat",
|
|
438
587
|
historyColTime: "Quand",
|
|
439
588
|
errorCount: "{{count}} erreurs",
|
|
589
|
+
errorCount_one: "{{count}} erreur",
|
|
590
|
+
errorCount_many: "{{count}} d'erreurs",
|
|
591
|
+
errorCount_other: "{{count}} erreurs",
|
|
440
592
|
undoImport: "Annuler l'import",
|
|
441
593
|
undoing: "Annulation…",
|
|
442
594
|
undoConfirm: "Annuler cet import ? Les enregistrements créés seront supprimés et les enregistrements mis à jour seront rétablis à leurs valeurs précédentes.",
|
|
@@ -497,7 +649,13 @@ const fr = {
|
|
|
497
649
|
mapped: "Mappé",
|
|
498
650
|
skipped: "Ignoré",
|
|
499
651
|
rowsWithErrors: "{{count}} ligne(s) avec des erreurs",
|
|
652
|
+
rowsWithErrors_one: "{{count}} ligne avec des erreurs",
|
|
653
|
+
rowsWithErrors_many: "{{count}} de lignes avec des erreurs",
|
|
654
|
+
rowsWithErrors_other: "{{count}} lignes avec des erreurs",
|
|
500
655
|
rowsCorrected: "{{count}} ligne(s) corrigée(s)",
|
|
656
|
+
rowsCorrected_one: "{{count}} ligne corrigée",
|
|
657
|
+
rowsCorrected_many: "{{count}} de lignes corrigées",
|
|
658
|
+
rowsCorrected_other: "{{count}} lignes corrigées",
|
|
501
659
|
clickToFix: "— cliquez sur une cellule mise en surbrillance pour modifier en ligne.",
|
|
502
660
|
showingRows: "Affichage de {{shown}} sur {{total}} lignes",
|
|
503
661
|
importing: "Importation… {{progress}}%",
|
|
@@ -505,11 +663,17 @@ const fr = {
|
|
|
505
663
|
imported: "{{count}} importé(s)",
|
|
506
664
|
skippedCount: "{{count}} ignoré(s)",
|
|
507
665
|
moreErrors: "…et {{count}} erreur(s) de plus",
|
|
666
|
+
moreErrors_one: "…et {{count}} erreur de plus",
|
|
667
|
+
moreErrors_many: "…et {{count}} d'erreurs de plus",
|
|
668
|
+
moreErrors_other: "…et {{count}} erreurs de plus",
|
|
508
669
|
cancel: "Annuler",
|
|
509
670
|
back: "Retour",
|
|
510
671
|
next: "Suivant",
|
|
511
672
|
close: "Fermer",
|
|
512
673
|
importNRows: "Importer {{count}} lignes",
|
|
674
|
+
importNRows_one: "Importer {{count}} ligne",
|
|
675
|
+
importNRows_many: "Importer {{count}} de lignes",
|
|
676
|
+
importNRows_other: "Importer {{count}} lignes",
|
|
513
677
|
importingProgress: "Importation…",
|
|
514
678
|
requiredMark: "*",
|
|
515
679
|
required: "Obligatoire",
|
|
@@ -521,11 +685,38 @@ const fr = {
|
|
|
521
685
|
month: "Mois",
|
|
522
686
|
week: "Semaine",
|
|
523
687
|
day: "Jour",
|
|
524
|
-
agenda: "Agenda",
|
|
525
688
|
allDay: "Toute la journée",
|
|
526
|
-
noEvents: "Aucun événement",
|
|
527
689
|
newEvent: "Nouvel événement",
|
|
528
690
|
moreEvents: "+{{count}} de plus",
|
|
691
|
+
unscheduled: "Non planifié ({{count}})",
|
|
692
|
+
loading: "Chargement du calendrier…",
|
|
693
|
+
loadError: "Erreur : {{message}}",
|
|
694
|
+
configRequired: "Configuration du calendrier requise. Veuillez indiquer startDateField, la seule clé obligatoire du calendrier ; le titre de l'événement se résout sans titleField.",
|
|
695
|
+
configRequiredHint: "Elle appartient au bloc calendar de la vue. Une page d'interface n'a pas d'emplacement de calendrier propre : pointez son sourceView vers une vue qui en déclare un.",
|
|
696
|
+
eventDetails: "Détails de l'événement",
|
|
697
|
+
pullToRefresh: "Tirer pour actualiser",
|
|
698
|
+
refreshing: "Actualisation…",
|
|
699
|
+
onDate: "Le {{date}}",
|
|
700
|
+
eventTitle: "Titre",
|
|
701
|
+
eventTitlePlaceholder: "De quoi s'agit-il ?",
|
|
702
|
+
creating: "Création…",
|
|
703
|
+
titleRequired: "Le titre est obligatoire",
|
|
704
|
+
a11y: {
|
|
705
|
+
region: "Calendrier",
|
|
706
|
+
grid: "Grille du calendrier",
|
|
707
|
+
goToToday: "Aller à aujourd'hui",
|
|
708
|
+
previousPeriod: "Période précédente",
|
|
709
|
+
nextPeriod: "Période suivante",
|
|
710
|
+
currentDate: "Date actuelle : {{date}}",
|
|
711
|
+
dayCell: "{{date}}, {{count}} événements",
|
|
712
|
+
dayCell_one: "{{date}}, {{count}} événement",
|
|
713
|
+
dayCell_many: "{{date}}, {{count}} d'événements",
|
|
714
|
+
dayCell_other: "{{date}}, {{count}} événements",
|
|
715
|
+
resizeEventEnd: "Modifier la fin de l'événement",
|
|
716
|
+
resizeEventEndHint: "Faites glisser pour modifier la date de fin",
|
|
717
|
+
resizeStart: "Modifier le début",
|
|
718
|
+
resizeEnd: "Modifier la fin",
|
|
719
|
+
},
|
|
529
720
|
},
|
|
530
721
|
list: {
|
|
531
722
|
firstRunTitle: "Rien pour l'instant",
|
|
@@ -568,7 +759,9 @@ const fr = {
|
|
|
568
759
|
refresh: "Actualiser",
|
|
569
760
|
loading: "Chargement des enregistrements…",
|
|
570
761
|
recordCount: "{{count}} enregistrements",
|
|
571
|
-
|
|
762
|
+
recordCount_one: "{{count}} enregistrement",
|
|
763
|
+
recordCount_many: "{{count}} d'enregistrements",
|
|
764
|
+
recordCount_other: "{{count}} enregistrements",
|
|
572
765
|
addRecord: "Ajouter un enregistrement",
|
|
573
766
|
tabs: "Onglets",
|
|
574
767
|
allRecords: "Tous les enregistrements",
|
|
@@ -600,7 +793,7 @@ const fr = {
|
|
|
600
793
|
hideFieldsTitle: "Masquer les champs",
|
|
601
794
|
dataLimitReached: "Les {{limit}} premiers enregistrements sont affichés. Il peut y avoir plus de données disponibles.",
|
|
602
795
|
viewSettings: "Paramètres de vue",
|
|
603
|
-
viewSettingsHint: "Regroupement, couleur, densité et champs visibles.",
|
|
796
|
+
viewSettingsHint: "Regroupement, couleur, densité et champs visibles. S’applique à tous les utilisateurs de cette vue.",
|
|
604
797
|
addGroup: "Ajouter un champ de groupe",
|
|
605
798
|
collapsedByDefault: "Réduit par défaut",
|
|
606
799
|
removeGroup: "Supprimer",
|
|
@@ -665,6 +858,17 @@ const fr = {
|
|
|
665
858
|
},
|
|
666
859
|
gantt: {
|
|
667
860
|
rowLabel: "Éléments",
|
|
861
|
+
unusableRange: {
|
|
862
|
+
malformedDate: "Plage de dates du gantt inutilisable — {{path}} vaut {{value}}, ce qui n'est pas une date valide. Toutes les dates du gantt doivent être analysables : startDate et endDate de chaque élément de ligne, ainsi que tout minDate / maxDate fixé sur le schéma.",
|
|
863
|
+
malformedRow: "Lignes du gantt inutilisables — {{path}} vaut {{value}}, ce qui n'est pas la forme d'une ligne. Un gantt lit items comme une liste de lignes, chaque ligne comme un objet avec un label et ses propres items, et les items de chaque ligne comme une liste de barres ; un null, un nombre, une chaîne ou un objet simple à l'un de ces emplacements ne peut pas être dessiné.",
|
|
864
|
+
inverted: "Plage de dates du gantt inutilisable — minDate {{minDate}} est postérieur à maxDate {{maxDate}}. Un minDate / maxDate fixé l'emporte sur la plage calculée à partir des lignes ; cet axe n'a donc aucune colonne et aucune barre ne peut y être placée. Intervertissez les deux valeurs.",
|
|
865
|
+
},
|
|
866
|
+
},
|
|
867
|
+
unsupported: {
|
|
868
|
+
objectBoundGantt: "Variante « gantt » non prise en charge — une timeline liée à un objet affiche les variantes de flux ({{variants}}). Gantt nécessite des lignes littérales, chacune avec ses propres items imbriqués ; l'axe gantt (scale) est donc sans effet ici.",
|
|
869
|
+
},
|
|
870
|
+
unconfigured: {
|
|
871
|
+
noDateAxis: "Axe de dates requis pour la timeline — cette vue ne déclare aucun champ de date, et une timeline liée à un objet n'en invente pas. Déclarez l'un de : {{fields}}. Le premier est l'orthographe de la spec, les autres sont des alias hérités.",
|
|
668
872
|
},
|
|
669
873
|
},
|
|
670
874
|
gantt: {
|
|
@@ -682,6 +886,7 @@ const fr = {
|
|
|
682
886
|
},
|
|
683
887
|
aria: {
|
|
684
888
|
taskList: "Liste des tâches",
|
|
889
|
+
refreshing: "Actualisation…",
|
|
685
890
|
},
|
|
686
891
|
tooltip: {
|
|
687
892
|
days: "j",
|
|
@@ -727,13 +932,22 @@ const fr = {
|
|
|
727
932
|
conflict: {
|
|
728
933
|
title: "Conflit de planning",
|
|
729
934
|
body: "Ce déplacement entre en conflit avec les contraintes de dépendance. Replanifier automatiquement {{count}} tâche(s) concernée(s) ?",
|
|
935
|
+
body_one: "Ce déplacement entre en conflit avec les contraintes de dépendance. Replanifier automatiquement {{count}} tâche concernée ?",
|
|
936
|
+
body_many: "Ce déplacement entre en conflit avec les contraintes de dépendance. Replanifier automatiquement {{count}} de tâches concernées ?",
|
|
937
|
+
body_other: "Ce déplacement entre en conflit avec les contraintes de dépendance. Replanifier automatiquement {{count}} tâches concernées ?",
|
|
730
938
|
confirm: "Replanifier automatiquement",
|
|
731
939
|
cancel: "Laisser tel quel",
|
|
732
940
|
},
|
|
733
941
|
autoScheduleDlg: {
|
|
734
942
|
title: "Planification automatique",
|
|
735
943
|
body: "Décaler {{count}} tâche(s) plus tard pour respecter les liens de dépendance ?",
|
|
944
|
+
body_one: "Décaler {{count}} tâche plus tard pour respecter les liens de dépendance ?",
|
|
945
|
+
body_many: "Décaler {{count}} de tâches plus tard pour respecter les liens de dépendance ?",
|
|
946
|
+
body_other: "Décaler {{count}} tâches plus tard pour respecter les liens de dépendance ?",
|
|
736
947
|
skipped: "{{count}} tâche(s) verrouillée(s) violent aussi les liens et ont été ignorées.",
|
|
948
|
+
skipped_one: "{{count}} tâche verrouillée viole aussi les liens et a été ignorée.",
|
|
949
|
+
skipped_many: "{{count}} de tâches verrouillées violent aussi les liens et ont été ignorées.",
|
|
950
|
+
skipped_other: "{{count}} tâches verrouillées violent aussi les liens et ont été ignorées.",
|
|
737
951
|
confirm: "Appliquer",
|
|
738
952
|
cancel: "Annuler",
|
|
739
953
|
none: "Toutes les dépendances sont respectées — rien à replanifier.",
|
|
@@ -812,6 +1026,7 @@ const fr = {
|
|
|
812
1026
|
tabActionsFor: "Actions de vue pour {{name}}",
|
|
813
1027
|
readonlyAriaLabel: "Vue en lecture seule",
|
|
814
1028
|
readonlyTooltip: "Vue système — définie dans le code, en lecture seule.",
|
|
1029
|
+
malformedFilter: "Le filtre de cette vue est incorrect, aucun enregistrement n’est donc affiché : la condition {{subject}} ne peut pas être appliquée.",
|
|
815
1030
|
},
|
|
816
1031
|
designer: {
|
|
817
1032
|
undo: "Annuler",
|
|
@@ -839,7 +1054,9 @@ const fr = {
|
|
|
839
1054
|
pageHeaderActions: "Actions de l'en-tête de page",
|
|
840
1055
|
emojiPicker: "Sélecteur d'émojis",
|
|
841
1056
|
reactionCount: "{{emoji}} {{count}} réactions",
|
|
842
|
-
|
|
1057
|
+
reactionCount_one: "{{emoji}} {{count}} réaction",
|
|
1058
|
+
reactionCount_many: "{{emoji}} {{count}} de réactions",
|
|
1059
|
+
reactionCount_other: "{{emoji}} {{count}} réactions",
|
|
843
1060
|
recordDetail: "Détail de l'enregistrement",
|
|
844
1061
|
recordDetailWithLabel: "Détail — {{label}}",
|
|
845
1062
|
openAsFullPage: "Ouvrir en pleine page",
|
|
@@ -866,7 +1083,6 @@ const fr = {
|
|
|
866
1083
|
viewAll: "Tout afficher",
|
|
867
1084
|
new: "Nouveau",
|
|
868
1085
|
add: "Ajouter",
|
|
869
|
-
emptyValue: "—",
|
|
870
1086
|
comments: "Commentaires",
|
|
871
1087
|
searchComments: "Rechercher des commentaires…",
|
|
872
1088
|
addCommentPlaceholder: "Ajouter un commentaire… (Ctrl+Entrée pour envoyer)",
|
|
@@ -877,11 +1093,22 @@ const fr = {
|
|
|
877
1093
|
unpin: "Désépingler",
|
|
878
1094
|
justNow: "à l'instant",
|
|
879
1095
|
minutesAgo: "il y a {{count}} min",
|
|
1096
|
+
minutesAgo_one: "il y a {{count}} min",
|
|
1097
|
+
minutesAgo_many: "il y a {{count}} min",
|
|
1098
|
+
minutesAgo_other: "il y a {{count}} min",
|
|
880
1099
|
hoursAgo: "il y a {{count}} h",
|
|
1100
|
+
hoursAgo_one: "il y a {{count}} h",
|
|
1101
|
+
hoursAgo_many: "il y a {{count}} h",
|
|
1102
|
+
hoursAgo_other: "il y a {{count}} h",
|
|
881
1103
|
daysAgo: "il y a {{count}} j",
|
|
1104
|
+
daysAgo_one: "il y a {{count}} j",
|
|
1105
|
+
daysAgo_many: "il y a {{count}} j",
|
|
1106
|
+
daysAgo_other: "il y a {{count}} j",
|
|
882
1107
|
dropFilesToUpload: "Déposez les fichiers ici ou cliquez pour télécharger",
|
|
883
1108
|
attachmentCount: "{{count}} pièce jointe",
|
|
884
|
-
|
|
1109
|
+
attachmentCount_one: "{{count}} pièce jointe",
|
|
1110
|
+
attachmentCount_many: "{{count}} de pièces jointes",
|
|
1111
|
+
attachmentCount_other: "{{count}} pièces jointes",
|
|
885
1112
|
removeAttachment: "Supprimer la pièce jointe",
|
|
886
1113
|
// Record Attachments panel (enable.files, objectstack#4358)
|
|
887
1114
|
attachments: "Pièces jointes",
|
|
@@ -895,11 +1122,10 @@ const fr = {
|
|
|
895
1122
|
attachmentDownloadDenied: "Vous n'avez pas accès pour télécharger cette pièce jointe.",
|
|
896
1123
|
attachmentAuthRequired: "Veuillez vous connecter pour télécharger cette pièce jointe.",
|
|
897
1124
|
attachmentPermissionDenied: "Vous n'avez pas la permission de faire cela.",
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
currentVersion: "Actuel",
|
|
1125
|
+
attachmentsAccessDenied: "Vous n'avez pas accès à ces pièces jointes.",
|
|
1126
|
+
attachmentsLoadFailed: "Impossible de charger les pièces jointes de cet enregistrement.",
|
|
1127
|
+
attachmentsApiUnavailable: "La liste des pièces jointes n'est pas disponible sur cet objet.",
|
|
1128
|
+
retryLoadAttachments: "Réessayer",
|
|
903
1129
|
discussion: "Discussion",
|
|
904
1130
|
showDiscussion: "Afficher la discussion ({{count}})",
|
|
905
1131
|
hideDiscussion: "Masquer la discussion",
|
|
@@ -914,25 +1140,36 @@ const fr = {
|
|
|
914
1140
|
writeComment: "Écrire un commentaire…",
|
|
915
1141
|
subscribedTooltip: "Abonné — cliquez pour vous désabonner",
|
|
916
1142
|
unsubscribedTooltip: "S'abonner aux notifications",
|
|
917
|
-
firstRecord: "Premier enregistrement (Début)",
|
|
918
|
-
previousRecordKey: "Enregistrement précédent (←)",
|
|
919
|
-
nextRecordKey: "Enregistrement suivant (→)",
|
|
920
|
-
lastRecord: "Dernier enregistrement (Fin)",
|
|
921
1143
|
noRecords: "Aucun enregistrement",
|
|
922
|
-
searchWhileNavigating: "Rechercher pendant la navigation",
|
|
923
|
-
searchRecords: "Rechercher des enregistrements…",
|
|
924
1144
|
allActivity: "Toute l'activité",
|
|
925
1145
|
commentsOnly: "Commentaires uniquement",
|
|
926
1146
|
fieldChangesFilter: "Modifications de champs",
|
|
927
1147
|
tasksOnly: "Tâches uniquement",
|
|
928
1148
|
leaveCommentPlaceholder: "Laisser un commentaire… (Ctrl+Entrée pour envoyer)",
|
|
929
1149
|
noActivity: "Aucune activité enregistrée",
|
|
1150
|
+
activityAccessDenied: "Vous n'avez pas l'autorisation de consulter l'activité de cet enregistrement.",
|
|
1151
|
+
commentsAccessDenied: "Vous n'avez pas l'autorisation de consulter les commentaires de cet enregistrement.",
|
|
1152
|
+
// objectui#7149 — the rest of `ActivityTimeline`. The four chip labels the
|
|
1153
|
+
// `detail.*` pack did not already name, and the `formatFieldChange`
|
|
1154
|
+
// sentences, which are assembled in code and so need interpolation holes.
|
|
1155
|
+
allFilter: 'Tout',
|
|
1156
|
+
createsFilter: 'Créations',
|
|
1157
|
+
deletesFilter: 'Suppressions',
|
|
1158
|
+
statusChangesFilter: 'Changements de statut',
|
|
1159
|
+
activityEmptyValue: '(vide)',
|
|
1160
|
+
activityFieldChanged: '{{field}} modifié de « {{old}} » à « {{new}} »',
|
|
1161
|
+
activityCreated: 'A créé cet enregistrement',
|
|
1162
|
+
activityDeleted: 'A supprimé cet enregistrement',
|
|
1163
|
+
activityStatusChanged: 'A changé le statut en « {{value}} »',
|
|
1164
|
+
activityUpdated: 'A mis à jour l\'enregistrement',
|
|
930
1165
|
loadMore: "Charger plus",
|
|
931
1166
|
edited: "(modifié)",
|
|
932
1167
|
via: "via {{source}}",
|
|
933
1168
|
viewSource: "Voir la source",
|
|
934
1169
|
replyCount: "{{count}} réponse",
|
|
935
|
-
|
|
1170
|
+
replyCount_one: "{{count}} réponse",
|
|
1171
|
+
replyCount_many: "{{count}} de réponses",
|
|
1172
|
+
replyCount_other: "{{count}} réponses",
|
|
936
1173
|
replyPlaceholder: "Répondre…",
|
|
937
1174
|
filterActivity: "Filtrer l'activité",
|
|
938
1175
|
openDiscussion: "Ouvrir le panneau de discussion",
|
|
@@ -946,6 +1183,9 @@ const fr = {
|
|
|
946
1183
|
writeStrippedTitle: "Enregistré — mais certains champs n'ont pas été appliqués",
|
|
947
1184
|
writeStrippedReadonly: "En lecture seule, donc non appliqué : {{fields}}",
|
|
948
1185
|
writeStrippedByState: "Non modifiable dans l'état actuel de cet enregistrement, donc non appliqué : {{fields}}",
|
|
1186
|
+
writeStrippedPrimaryKey: "L'identifiant de l'enregistrement ne peut pas être modifié lors d'un enregistrement, donc non appliqué : {{fields}}",
|
|
1187
|
+
writeStrippedComputed: "Calculé par le serveur à partir d'une formule, donc la valeur envoyée n'a pas été appliquée : {{fields}}",
|
|
1188
|
+
writeStrippedUnknownReason: "Non appliqué par le serveur : {{fields}}",
|
|
949
1189
|
approvalPendingEditable: "En approbation · modifiable",
|
|
950
1190
|
approvalPendingTooltip: "Cet enregistrement a une demande d'approbation en attente ; cette étape autorise encore la modification",
|
|
951
1191
|
approvalProgress: "Approbations — {{got}} sur {{need}}",
|
|
@@ -958,7 +1198,16 @@ const fr = {
|
|
|
958
1198
|
cancelApprovalTooltipUnlocked: "Annuler la demande d'approbation en attente",
|
|
959
1199
|
cancelApprovalFailed: "Échec de l'annulation de l'approbation",
|
|
960
1200
|
cancelApprovalUnavailable: "L'annulation des approbations n'est pas prise en charge par cette source de données",
|
|
1201
|
+
pathLabel: "Parcours de l'enregistrement",
|
|
1202
|
+
pathStageCompleted: '{{stage}}, terminée',
|
|
1203
|
+
pathStageCurrent: '{{stage}}, étape actuelle',
|
|
1204
|
+
pathStageUpcoming: '{{stage}}, à venir',
|
|
1205
|
+
pathStageLostCurrent: '{{stage}}, perdue, étape actuelle',
|
|
1206
|
+
pathStageLostUpcoming: '{{stage}}, perdue, non atteinte',
|
|
1207
|
+
pathStageWonUpcoming: '{{stage}}, étape objectif, non atteinte',
|
|
961
1208
|
linkCopied: "Lien copié dans le presse-papiers",
|
|
1209
|
+
commentFailed: "Votre commentaire n'a pas été publié. Rien n'a été enregistré — veuillez réessayer.",
|
|
1210
|
+
reactionFailed: "Votre réaction n'a pas été enregistrée. Veuillez réessayer.",
|
|
962
1211
|
linkCopyFailed: "Impossible de copier le lien",
|
|
963
1212
|
cancel: "Annuler",
|
|
964
1213
|
cancelEdit: "Abandonner les modifications",
|
|
@@ -988,99 +1237,68 @@ const fr = {
|
|
|
988
1237
|
sortBy: "Trier par",
|
|
989
1238
|
filterPlaceholder: "Filtrer…",
|
|
990
1239
|
highlightFields: "Champs clés",
|
|
1240
|
+
highlightsLabel: "Champs clés de l'enregistrement",
|
|
991
1241
|
createdBy: "Créé par",
|
|
992
1242
|
updatedBy: "Mis à jour par",
|
|
993
|
-
// objectui#3863 — base key
|
|
994
|
-
//
|
|
995
|
-
//
|
|
996
|
-
//
|
|
1243
|
+
// objectui#3863 — base key, answering only a call made without a count. fr's
|
|
1244
|
+
// third category, `many` (exact millions), has its own slot since objectui#11432;
|
|
1245
|
+
// here it repeats `_other` because the count governs no noun ("de" goes before a
|
|
1246
|
+
// noun complement, and this label has none).
|
|
997
1247
|
showEmptyRelated: "+ {{count}} vides",
|
|
998
1248
|
showEmptyRelated_one: "+ {{count}} vide",
|
|
1249
|
+
showEmptyRelated_many: "+ {{count}} vides",
|
|
999
1250
|
showEmptyRelated_other: "+ {{count}} vides",
|
|
1000
1251
|
copyEmail: "Copier l'e-mail",
|
|
1001
1252
|
copyPhone: "Copier le téléphone",
|
|
1002
1253
|
copyRecordId: "Copier l'ID",
|
|
1003
1254
|
showEmptyFields: "Afficher {{count}} champs vides",
|
|
1255
|
+
showEmptyFields_one: "Afficher {{count}} champ vide",
|
|
1256
|
+
showEmptyFields_many: "Afficher {{count}} de champs vides",
|
|
1257
|
+
showEmptyFields_other: "Afficher {{count}} champs vides",
|
|
1004
1258
|
hideEmptyFields: "Masquer les champs vides",
|
|
1005
1259
|
noValue: "Aucune valeur",
|
|
1260
|
+
unresolvedReference: "Référence non résolue : {{value}} n'a pas été résolue en utilisateur",
|
|
1261
|
+
unresolvedLookupReference: "Référence non résolue : {{value}} n'a pas été résolue en enregistrement sur cet écran",
|
|
1262
|
+
repeaterItemCount: "{{count}} éléments",
|
|
1263
|
+
repeaterItemCount_one: "{{count}} élément",
|
|
1264
|
+
repeaterItemCount_many: "{{count}} d'éléments",
|
|
1265
|
+
repeaterItemCount_other: "{{count}} éléments",
|
|
1266
|
+
fileCount: "{{count}} fichiers",
|
|
1267
|
+
fileCount_one: "{{count}} fichier",
|
|
1268
|
+
fileCount_many: "{{count}} de fichiers",
|
|
1269
|
+
fileCount_other: "{{count}} fichiers",
|
|
1006
1270
|
},
|
|
1007
1271
|
chart: {
|
|
1008
|
-
noData: "Aucune donnée de graphique disponible",
|
|
1009
1272
|
loading: "Chargement du graphique…",
|
|
1273
|
+
refreshing: "Actualisation…",
|
|
1010
1274
|
nullCategory: "(Non défini)",
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
markersCount: "{{count}} marqueurs",
|
|
1016
|
-
invalidCoordinates: "{{count}} enregistrement avec des coordonnées manquantes ou invalides exclu de la carte.",
|
|
1017
|
-
invalidCoordinatesPlural: "{{count}} enregistrements avec des coordonnées manquantes ou invalides exclus de la carte.",
|
|
1018
|
-
},
|
|
1019
|
-
workflow: {
|
|
1020
|
-
draft: "Brouillon",
|
|
1021
|
-
active: "Actif",
|
|
1022
|
-
paused: "En pause",
|
|
1023
|
-
completed: "Terminé",
|
|
1024
|
-
cancelled: "Annulé",
|
|
1025
|
-
save: "Enregistrer",
|
|
1026
|
-
publish: "Publier",
|
|
1027
|
-
addNode: "Ajouter un nœud",
|
|
1028
|
-
workflowFlow: "Flux de travail",
|
|
1029
|
-
properties: "Propriétés",
|
|
1030
|
-
connections: "Connexions",
|
|
1031
|
-
quickConnect: "Connexion rapide",
|
|
1032
|
-
fromPlaceholder: "De…",
|
|
1033
|
-
toPlaceholder: "Vers…",
|
|
1034
|
-
connect: "Connecter",
|
|
1035
|
-
label: "Libellé",
|
|
1036
|
-
type: "Type",
|
|
1037
|
-
description: "Description",
|
|
1038
|
-
assignee: "Responsable",
|
|
1039
|
-
assigneeType: "Type de responsable",
|
|
1040
|
-
user: "Utilisateur",
|
|
1041
|
-
role: "Rôle",
|
|
1042
|
-
group: "Groupe",
|
|
1043
|
-
expression: "Expression",
|
|
1044
|
-
timeoutMinutes: "Délai (minutes)",
|
|
1045
|
-
selectNodeToEdit: "Sélectionnez un nœud pour modifier ses propriétés",
|
|
1046
|
-
workflowTitle: "Titre du workflow",
|
|
1047
|
-
newWorkflow: "Nouveau workflow",
|
|
1048
|
-
outConnections: "{{count}} sortie(s)",
|
|
1049
|
-
start: "Début",
|
|
1050
|
-
end: "Fin",
|
|
1051
|
-
task: "Tâche",
|
|
1052
|
-
userTask: "Tâche utilisateur",
|
|
1053
|
-
serviceTask: "Tâche service",
|
|
1054
|
-
scriptTask: "Tâche script",
|
|
1055
|
-
approval: "Approbation",
|
|
1056
|
-
condition: "Condition",
|
|
1057
|
-
parallelGateway: "Passerelle parallèle",
|
|
1058
|
-
joinGateway: "Passerelle de jonction",
|
|
1059
|
-
boundaryEvent: "Événement limite",
|
|
1060
|
-
delay: "Délai",
|
|
1061
|
-
notification: "Notification",
|
|
1062
|
-
webhook: "Webhook",
|
|
1063
|
-
allowConcurrency: "Autoriser (exécution simultanée)",
|
|
1064
|
-
forbidConcurrency: "Interdire (ignorer les nouveaux)",
|
|
1065
|
-
replaceConcurrency: "Remplacer (annuler les existants)",
|
|
1066
|
-
queueConcurrency: "File d'attente (exécuter après)",
|
|
1067
|
-
conditionEvent: "Condition",
|
|
1068
|
-
manualEvent: "Manuel",
|
|
1069
|
-
webhookEvent: "Webhook",
|
|
1070
|
-
timerEvent: "Minuterie",
|
|
1071
|
-
signalEvent: "Signal",
|
|
1072
|
-
versionHistory: "Historique des versions",
|
|
1073
|
-
importBpmn: "Importer BPMN",
|
|
1074
|
-
exportBpmn: "Exporter BPMN",
|
|
1075
|
-
undo: "Annuler",
|
|
1076
|
-
redo: "Rétablir",
|
|
1077
|
-
resetZoom: "Réinitialiser le zoom",
|
|
1275
|
+
scatterOneMeasure: "Un nuage de points trace une seule mesure. Ne conservez qu’une série :",
|
|
1276
|
+
unconfigured: {
|
|
1277
|
+
noCategoryAxis: "Axe de catégories requis — un graphique lié à un objet n’en invente pas. Déclarez l’un des suivants :",
|
|
1278
|
+
},
|
|
1078
1279
|
},
|
|
1079
1280
|
dashboard: {
|
|
1080
|
-
|
|
1281
|
+
// objectui#7063 — the DEFAULT empty state every dashboard widget renders
|
|
1282
|
+
// when its query SUCCEEDED and returned nothing. It replaced the terse
|
|
1283
|
+
// per-widget `noRows` / `noDataAvailable` fragments at the render site;
|
|
1284
|
+
// objectui#7125 deleted those two keys from all ten packs once nothing
|
|
1285
|
+
// read them. The copy here has to read as a state rather than a failure,
|
|
1286
|
+
// which is why it says the widget loaded. `sourceLabel` carries its own
|
|
1287
|
+
// punctuation so the call site concatenates no separator (see
|
|
1288
|
+
// `WidgetEmptyState`).
|
|
1289
|
+
empty: {
|
|
1290
|
+
title: "Pas encore de données",
|
|
1291
|
+
message: "Ce widget s'est chargé correctement, mais la requête n'a encore renvoyé aucun enregistrement.",
|
|
1292
|
+
sourceLabel: "Source de données :",
|
|
1293
|
+
},
|
|
1081
1294
|
loading: "Chargement…",
|
|
1295
|
+
refreshing: "Actualisation…",
|
|
1296
|
+
refreshAll: "Tout actualiser",
|
|
1297
|
+
refreshDashboard: "Actualiser le tableau de bord",
|
|
1082
1298
|
pickMeasures: "Choisissez des mesures (valeurs) pour ce widget de dataset.",
|
|
1083
1299
|
datasetUnsupported: "Cette source de données ne prend pas en charge les requêtes de dataset.",
|
|
1300
|
+
widgetForbiddenTitle: "Accès refusé",
|
|
1301
|
+
widgetForbiddenMessage: "Vous n’avez pas l’autorisation de voir les données de ce widget.",
|
|
1084
1302
|
details: "Détails",
|
|
1085
1303
|
exportCsv: "Exporter en CSV",
|
|
1086
1304
|
openInList: "Ouvrir dans la liste",
|
|
@@ -1108,13 +1326,110 @@ const fr = {
|
|
|
1108
1326
|
},
|
|
1109
1327
|
},
|
|
1110
1328
|
addWidget: "Ajouter un widget",
|
|
1111
|
-
removeWidget: "Supprimer un widget",
|
|
1112
1329
|
editLayout: "Modifier la mise en page",
|
|
1113
1330
|
saveLayout: "Enregistrer la mise en page",
|
|
1114
1331
|
resetLayout: "Réinitialiser la mise en page",
|
|
1115
1332
|
total: "Total",
|
|
1116
|
-
noDataAvailable: "Aucune donnée disponible",
|
|
1117
1333
|
noDataSourceFor: "Aucune source de données pour",
|
|
1334
|
+
config: {
|
|
1335
|
+
breadcrumb: {
|
|
1336
|
+
dashboard: "Tableau de bord",
|
|
1337
|
+
configuration: "Configuration",
|
|
1338
|
+
widget: "Widget",
|
|
1339
|
+
chart: "Graphique",
|
|
1340
|
+
table: "Tableau",
|
|
1341
|
+
pivotTable: "Tableau croisé",
|
|
1342
|
+
},
|
|
1343
|
+
section: {
|
|
1344
|
+
general: "Général",
|
|
1345
|
+
layout: "Disposition",
|
|
1346
|
+
data: "Données",
|
|
1347
|
+
dataBinding: "Liaison de données",
|
|
1348
|
+
appearance: "Apparence",
|
|
1349
|
+
},
|
|
1350
|
+
field: {
|
|
1351
|
+
title: "Titre",
|
|
1352
|
+
description: "Description",
|
|
1353
|
+
columns: "Colonnes",
|
|
1354
|
+
gap: "Espacement",
|
|
1355
|
+
rowHeight: "Hauteur de ligne (px)",
|
|
1356
|
+
autoRefresh: "Actualisation automatique",
|
|
1357
|
+
showDescription: "Afficher la description",
|
|
1358
|
+
theme: "Thème",
|
|
1359
|
+
widgetType: "Type de widget",
|
|
1360
|
+
colorVariant: "Variante de couleur",
|
|
1361
|
+
dataset: "Jeu de données",
|
|
1362
|
+
dimensions: "Dimensions",
|
|
1363
|
+
values: "Valeurs",
|
|
1364
|
+
width: "Largeur (colonnes)",
|
|
1365
|
+
height: "Hauteur (lignes)",
|
|
1366
|
+
},
|
|
1367
|
+
placeholder: {
|
|
1368
|
+
dashboardTitle: "Titre du tableau de bord",
|
|
1369
|
+
dashboardDescription: "Résumé court affiché sous le titre",
|
|
1370
|
+
widgetTitle: "Titre du widget",
|
|
1371
|
+
widgetDescription: "Description du widget",
|
|
1372
|
+
datasetName: "Nom du jeu de données",
|
|
1373
|
+
selectDataset: "Sélectionner un jeu de données…",
|
|
1374
|
+
searchDatasets: "Rechercher des jeux de données…",
|
|
1375
|
+
addDimension: "Ajouter une dimension…",
|
|
1376
|
+
addMeasure: "Ajouter une mesure…",
|
|
1377
|
+
searchMembers: "Rechercher…",
|
|
1378
|
+
},
|
|
1379
|
+
empty: {
|
|
1380
|
+
datasets: "Aucun jeu de données trouvé.",
|
|
1381
|
+
dimensions: "Aucune dimension sélectionnée.",
|
|
1382
|
+
measures: "Aucune mesure sélectionnée.",
|
|
1383
|
+
nothingToAdd: "Plus rien à ajouter.",
|
|
1384
|
+
},
|
|
1385
|
+
help: {
|
|
1386
|
+
dataset: "Le jeu de données de la couche sémantique auquel ce widget est lié (ADR-0021).",
|
|
1387
|
+
dimensions: "Grouper/diviser les valeurs selon ces dimensions du jeu de données.",
|
|
1388
|
+
dimensionsPivot: "Champs de groupement/division. La dernière dimension se déploie en colonnes.",
|
|
1389
|
+
values: "Mesures du jeu de données à afficher (au moins une).",
|
|
1390
|
+
},
|
|
1391
|
+
action: {
|
|
1392
|
+
add: "Ajouter",
|
|
1393
|
+
remove: "Supprimer {{name}}",
|
|
1394
|
+
},
|
|
1395
|
+
refresh: {
|
|
1396
|
+
off: "Désactivé",
|
|
1397
|
+
every30s: "Toutes les 30 s",
|
|
1398
|
+
every1m: "Toutes les minutes",
|
|
1399
|
+
every5m: "Toutes les 5 min",
|
|
1400
|
+
every15m: "Toutes les 15 min",
|
|
1401
|
+
every30m: "Toutes les 30 min",
|
|
1402
|
+
every1h: "Toutes les heures",
|
|
1403
|
+
},
|
|
1404
|
+
themeOption: {
|
|
1405
|
+
light: "Clair",
|
|
1406
|
+
dark: "Sombre",
|
|
1407
|
+
auto: "Automatique",
|
|
1408
|
+
},
|
|
1409
|
+
widgetType: {
|
|
1410
|
+
metric: "Indicateur",
|
|
1411
|
+
bar: "Graphique à barres",
|
|
1412
|
+
horizontalBar: "Barres horizontales",
|
|
1413
|
+
line: "Graphique en courbes",
|
|
1414
|
+
pie: "Graphique circulaire",
|
|
1415
|
+
donut: "Graphique en anneau",
|
|
1416
|
+
area: "Graphique en aires",
|
|
1417
|
+
scatter: "Nuage de points",
|
|
1418
|
+
funnel: "Entonnoir",
|
|
1419
|
+
table: "Tableau",
|
|
1420
|
+
pivot: "Tableau croisé",
|
|
1421
|
+
},
|
|
1422
|
+
color: {
|
|
1423
|
+
default: "Par défaut",
|
|
1424
|
+
blue: "Bleu",
|
|
1425
|
+
teal: "Sarcelle",
|
|
1426
|
+
orange: "Orange",
|
|
1427
|
+
purple: "Violet",
|
|
1428
|
+
success: "Succès",
|
|
1429
|
+
warning: "Avertissement",
|
|
1430
|
+
danger: "Danger",
|
|
1431
|
+
},
|
|
1432
|
+
},
|
|
1118
1433
|
trend: {
|
|
1119
1434
|
vsLastQuarter: "vs. trimestre dernier",
|
|
1120
1435
|
vsLastMonth: "vs. mois dernier",
|
|
@@ -1124,24 +1439,6 @@ const fr = {
|
|
|
1124
1439
|
vsPreviousPeriod: "vs. période précédente",
|
|
1125
1440
|
},
|
|
1126
1441
|
},
|
|
1127
|
-
configPanel: {
|
|
1128
|
-
save: "Enregistrer",
|
|
1129
|
-
discard: "Annuler",
|
|
1130
|
-
close: "Fermer",
|
|
1131
|
-
layout: "Disposition",
|
|
1132
|
-
columns: "Colonnes",
|
|
1133
|
-
gap: "Espacement",
|
|
1134
|
-
rowHeight: "Hauteur de ligne",
|
|
1135
|
-
data: "Données",
|
|
1136
|
-
refreshInterval: "Intervalle de rafraîchissement",
|
|
1137
|
-
appearance: "Apparence",
|
|
1138
|
-
title: "Titre",
|
|
1139
|
-
showDescription: "Afficher la description",
|
|
1140
|
-
theme: "Thème",
|
|
1141
|
-
configuration: "Configuration",
|
|
1142
|
-
general: "Général",
|
|
1143
|
-
advanced: "Avancé",
|
|
1144
|
-
},
|
|
1145
1442
|
appDesigner: {
|
|
1146
1443
|
createApp: "Créer une application",
|
|
1147
1444
|
editApp: "Modifier l'application",
|
|
@@ -1154,10 +1451,6 @@ const fr = {
|
|
|
1154
1451
|
appDescription: "Description",
|
|
1155
1452
|
appIcon: "Icône",
|
|
1156
1453
|
template: "Modèle",
|
|
1157
|
-
layout: "Disposition",
|
|
1158
|
-
layoutSidebar: "Barre latérale",
|
|
1159
|
-
layoutHeader: "En-tête",
|
|
1160
|
-
layoutEmpty: "Vide",
|
|
1161
1454
|
selectObjects: "Sélectionner des objets",
|
|
1162
1455
|
searchObjects: "Rechercher des objets…",
|
|
1163
1456
|
selectAll: "Tout sélectionner",
|
|
@@ -1166,7 +1459,6 @@ const fr = {
|
|
|
1166
1459
|
addGroup: "Ajouter un groupe",
|
|
1167
1460
|
addUrl: "Ajouter une URL",
|
|
1168
1461
|
addSeparator: "Ajouter un séparateur",
|
|
1169
|
-
noNavItems: "Aucun élément de navigation pour l'instant.",
|
|
1170
1462
|
logoUrl: "URL du logo",
|
|
1171
1463
|
primaryColor: "Couleur principale",
|
|
1172
1464
|
faviconUrl: "URL du favicon",
|
|
@@ -1192,16 +1484,13 @@ const fr = {
|
|
|
1192
1484
|
showSort: "Afficher le tri",
|
|
1193
1485
|
appearance: "Apparence",
|
|
1194
1486
|
rowHeight: "Hauteur de ligne",
|
|
1195
|
-
stripedRows: "Lignes alternées",
|
|
1196
|
-
bordered: "Avec bordure",
|
|
1197
1487
|
livePreview: "Aperçu en direct",
|
|
1198
|
-
stepBasicDesc: "Nom, titre et
|
|
1488
|
+
stepBasicDesc: "Nom, titre et icône",
|
|
1199
1489
|
stepObjectsDesc: "Sélectionner les objets métier",
|
|
1200
1490
|
stepNavigationDesc: "Construire l'arbre de navigation",
|
|
1201
1491
|
stepBrandingDesc: "Logo, couleurs et favicon",
|
|
1202
1492
|
noObjectsFound: "Aucun objet trouvé.",
|
|
1203
1493
|
noNavItemsHint: "Pas encore d'éléments de navigation. Sélectionnez des objets à l'étape précédente ou ajoutez-en manuellement.",
|
|
1204
|
-
separator: "Séparateur",
|
|
1205
1494
|
separatorLabel: "— Séparateur —",
|
|
1206
1495
|
newGroup: "Nouveau groupe",
|
|
1207
1496
|
newLink: "Nouveau lien",
|
|
@@ -1235,6 +1524,7 @@ const fr = {
|
|
|
1235
1524
|
navTypeSeparator: "Séparateur",
|
|
1236
1525
|
navTypeAction: "Action",
|
|
1237
1526
|
navTypeComponent: "Composant",
|
|
1527
|
+
navTypeDoc: "Document",
|
|
1238
1528
|
navEditIcon: "Modifier l'icône",
|
|
1239
1529
|
navToggleVisible: "Basculer la visibilité",
|
|
1240
1530
|
navHidden: "Masqué",
|
|
@@ -1307,17 +1597,13 @@ const fr = {
|
|
|
1307
1597
|
unique: "Unique",
|
|
1308
1598
|
readOnly: "Lecture seule",
|
|
1309
1599
|
hidden: "Masqué",
|
|
1310
|
-
indexed: "Indexé",
|
|
1311
1600
|
externalId: "ID externe",
|
|
1312
1601
|
trackHistory: "Suivre l'historique",
|
|
1313
1602
|
defaultValue: "Valeur par défaut",
|
|
1314
1603
|
placeholder: "Espace réservé",
|
|
1315
1604
|
referenceTo: "Référence à",
|
|
1316
|
-
formula: "Formule",
|
|
1317
1605
|
options: "Options",
|
|
1318
1606
|
addOption: "Ajouter une option",
|
|
1319
|
-
validationRules: "Règles de validation",
|
|
1320
|
-
addRule: "Ajouter une règle",
|
|
1321
1607
|
systemBadge: "Système",
|
|
1322
1608
|
ungrouped: "Général",
|
|
1323
1609
|
deleteConfirmTitle: "Supprimer le champ ?",
|
|
@@ -1336,7 +1622,23 @@ const fr = {
|
|
|
1336
1622
|
},
|
|
1337
1623
|
},
|
|
1338
1624
|
console: {
|
|
1625
|
+
studio: {
|
|
1626
|
+
backToHome: "Retour à l'accueil",
|
|
1627
|
+
},
|
|
1339
1628
|
saveAdvisoryTitle: "Enregistré — le contrôle de création a signalé {{count}} recommandation(s)",
|
|
1629
|
+
saveAdvisoryTitle_one: "Enregistré — le contrôle de création a signalé {{count}} recommandation",
|
|
1630
|
+
saveAdvisoryTitle_many: "Enregistré — le contrôle de création a signalé {{count}} de recommandations",
|
|
1631
|
+
saveAdvisoryTitle_other: "Enregistré — le contrôle de création a signalé {{count}} recommandations",
|
|
1632
|
+
publishAdvisoryTitle: "Publié — le contrôle de création a signalé {{count}} recommandation(s)",
|
|
1633
|
+
publishAdvisoryTitle_one: "Publié — le contrôle de création a signalé {{count}} recommandation",
|
|
1634
|
+
publishAdvisoryTitle_many: "Publié — le contrôle de création a signalé {{count}} de recommandations",
|
|
1635
|
+
publishAdvisoryTitle_other: "Publié — le contrôle de création a signalé {{count}} recommandations",
|
|
1636
|
+
importMappingsUnavailable: "Impossible de charger les mappages d’import enregistrés pour {{object}}",
|
|
1637
|
+
importMappingsRefused: "Le serveur a refusé cette requête : cette liste est donc vide parce qu’elle n’a pas pu être lue, et non parce que rien n’est enregistré. Reconnectez-vous ou demandez un accès à un administrateur.",
|
|
1638
|
+
importMappingsUnreadable: "Cette liste est vide parce qu’elle n’a pas pu être lue, et non parce que rien n’est enregistré. Réessayez, et signalez le problème s’il persiste.",
|
|
1639
|
+
savedViewsUnavailable: "Impossible de charger les vues enregistrées pour {{object}}",
|
|
1640
|
+
savedViewsRefused: "Le serveur a refusé cette requête : cette liste est donc vide parce qu’elle n’a pas pu être lue, et non parce que cet objet n’aurait aucune vue enregistrée. Reconnectez-vous ou demandez un accès à un administrateur.",
|
|
1641
|
+
savedViewsUnreadable: "Cette liste est vide parce qu’elle n’a pas pu être lue, et non parce que cet objet n’aurait aucune vue enregistrée. Réessayez, et signalez le problème s’il persiste.",
|
|
1340
1642
|
settingsHub: {
|
|
1341
1643
|
title: "Paramètres",
|
|
1342
1644
|
subtitle: "Configurez votre espace de travail, vos intégrations et vos indicateurs de fonctionnalité.",
|
|
@@ -1381,6 +1683,13 @@ const fr = {
|
|
|
1381
1683
|
passwordsDownload: "Télécharger le CSV",
|
|
1382
1684
|
},
|
|
1383
1685
|
ai: {
|
|
1686
|
+
pendingDrafts: {
|
|
1687
|
+
count: "{{count}} modification(s) ne sont pas encore publiée(s) — les utilisateurs ne peuvent pas les voir.",
|
|
1688
|
+
publish: "Publier",
|
|
1689
|
+
published: "Toutes les modifications en attente sont actives.",
|
|
1690
|
+
failed: "Échec de la publication.",
|
|
1691
|
+
publishedWithFindings: "Publié, mais les contrôles d'exécution ont signalé des problèmes : {{detail}}",
|
|
1692
|
+
},
|
|
1384
1693
|
usage: {
|
|
1385
1694
|
title: "Utilisation de l'IA",
|
|
1386
1695
|
meterBuild: "Créer",
|
|
@@ -1390,9 +1699,18 @@ const fr = {
|
|
|
1390
1699
|
statusFull: "Limite atteinte",
|
|
1391
1700
|
resetsDaily: "Réinitialisation ce soir",
|
|
1392
1701
|
resetsMonthly: "Réinitialisation au prochain cycle",
|
|
1702
|
+
resetsWeeklyDays: "Réinitialisation dans {{count}} jours",
|
|
1703
|
+
resetsWeeklyDays_one: "Réinitialisation dans {{count}} jour",
|
|
1704
|
+
resetsWeeklyDays_many: "Réinitialisation dans {{count}} de jours",
|
|
1705
|
+
resetsWeeklyDays_other: "Réinitialisation dans {{count}} jours",
|
|
1706
|
+
resetsWeeklyHours: "Réinitialisation dans {{count}} heures",
|
|
1707
|
+
resetsWeeklyHours_one: "Réinitialisation dans {{count}} heure",
|
|
1708
|
+
resetsWeeklyHours_many: "Réinitialisation dans {{count}} d'heures",
|
|
1709
|
+
resetsWeeklyHours_other: "Réinitialisation dans {{count}} heures",
|
|
1393
1710
|
ctaUpgrade: "Passer à l'offre supérieure pour continuer",
|
|
1394
1711
|
ctaTopUp: "Ajouter des crédits pour continuer",
|
|
1395
1712
|
ariaLabel: "Utilisation de l'IA : {{status}}",
|
|
1713
|
+
breakdownTitle: "Utilisé jusqu'à présent",
|
|
1396
1714
|
},
|
|
1397
1715
|
workspaceTitle: "Espace de travail IA",
|
|
1398
1716
|
workspaceSubtitle: "Posez des questions, inspectez et reprenez vos conversations",
|
|
@@ -1402,6 +1720,31 @@ const fr = {
|
|
|
1402
1720
|
share: "Partager",
|
|
1403
1721
|
shareTitle: "Partager cette conversation",
|
|
1404
1722
|
shareDisabledTitle: "Commencez à discuter pour activer le partage",
|
|
1723
|
+
buildDoctor: "Diagnostic de build",
|
|
1724
|
+
buildDoctorTitle: "Diagnostic de build — qu'est-ce qui a réellement été appliqué ?",
|
|
1725
|
+
buildDoctorDisabledTitle: "Envoyez d'abord un message",
|
|
1726
|
+
buildDoctorDrawer: {
|
|
1727
|
+
description: "Ce que l'agent a annoncé face à ce qui est réellement en ligne. Diagnostic en lecture seule.",
|
|
1728
|
+
reconciling: 'Rapprochement…',
|
|
1729
|
+
notAvailable: "Non disponible — la conversation est introuvable ou vous n'êtes pas autorisé.",
|
|
1730
|
+
untitled: '(sans titre)',
|
|
1731
|
+
summary: '{{turns}} tour(s) · {{messages}} msg · {{tokens}} jetons · {{seconds}} s LLM',
|
|
1732
|
+
allLive: "Les {{count}} modification(s) tentée(s) sont en ligne — rien ne s'est perdu.",
|
|
1733
|
+
discrepancies: '{{count}} écart(s) — ce que le chat a annoncé ne correspond pas à ce qui est en ligne.',
|
|
1734
|
+
orphanedTitle: 'Proposé mais jamais appliqué',
|
|
1735
|
+
orphanedHint: "Une carte de confirmation proposée par l'agent qu'aucun tour ultérieur n'a appliquée — la modification s'est perdue silencieusement.",
|
|
1736
|
+
missingTitle: 'Annoncé mais absent',
|
|
1737
|
+
missingHint: "Un résultat d'outil indiquait une application, mais l'artefact n'est pas en ligne dans sys_metadata.",
|
|
1738
|
+
toolErrorsTitle: "Erreurs d'outils",
|
|
1739
|
+
toolErrorsHint: "Appels d'outils ayant renvoyé une erreur pendant le build.",
|
|
1740
|
+
verifyTitle: 'Vérification du build (verify_build)',
|
|
1741
|
+
yourApp: 'Votre application :',
|
|
1742
|
+
noIssues: '0 problème',
|
|
1743
|
+
issueCount: '{{count}} problème(s)',
|
|
1744
|
+
platformNoise: '{{count}} constat(s) sys_* de la plateforme masqué(s)',
|
|
1745
|
+
pendingActions: 'Actions en attente',
|
|
1746
|
+
timeline: 'Chronologie ({{count}})',
|
|
1747
|
+
},
|
|
1405
1748
|
newChat: "Nouveau",
|
|
1406
1749
|
searchChats: "Rechercher des discussions…",
|
|
1407
1750
|
noChatsYet: "Aucune discussion pour l'instant",
|
|
@@ -1431,7 +1774,7 @@ const fr = {
|
|
|
1431
1774
|
empty: {
|
|
1432
1775
|
build: {
|
|
1433
1776
|
title: "Créer avec l'IA",
|
|
1434
|
-
description: "Décrivez une application
|
|
1777
|
+
description: "Décrivez une application en langage courant — je rédige les objets, les écrans et les données d'exemple, puis vous vérifiez et publiez.",
|
|
1435
1778
|
},
|
|
1436
1779
|
ask: {
|
|
1437
1780
|
title: "Interroger vos données",
|
|
@@ -1440,7 +1783,7 @@ const fr = {
|
|
|
1440
1783
|
editApp: {
|
|
1441
1784
|
title: "Modification de « {{app}} »",
|
|
1442
1785
|
titleGeneric: "Modifier cette application",
|
|
1443
|
-
description: "Que souhaitez-vous changer ? Je modifie cette application sur place — ajouter un champ, un objet, une vue ou
|
|
1786
|
+
description: "Que souhaitez-vous changer ? Je modifie cette application sur place — ajouter un champ, un objet, une vue ou un tableau de bord, ou ajuster l'existant.",
|
|
1444
1787
|
},
|
|
1445
1788
|
},
|
|
1446
1789
|
clearConversation: "Effacer",
|
|
@@ -1493,29 +1836,52 @@ const fr = {
|
|
|
1493
1836
|
recentRecords: "Liste les 5 enregistrements créés le plus récemment.",
|
|
1494
1837
|
recordCounts: "Compte les enregistrements pour chaque objet.",
|
|
1495
1838
|
},
|
|
1839
|
+
// cloud#1984 — these five chips are the maker's own recommendations, so
|
|
1840
|
+
// they may only ask for what ADR-0112 v1 BUILDS: objects, fields, views
|
|
1841
|
+
// (grid/kanban/calendar/gallery), pages, dashboards and sample data. No
|
|
1842
|
+
// wording that promises autonomous behaviour (alert / remind / notify /
|
|
1843
|
+
// automate / status workflow) — v1 has no flows, actions or schedules, and
|
|
1844
|
+
// the model silently degrades such a request into a board or a filtered
|
|
1845
|
+
// view, so the chip would promise an alert and deliver a page. REVERT to
|
|
1846
|
+
// the automation wording when ADR-0112 v2 re-adds flows and actions.
|
|
1496
1847
|
metadataAssistant: {
|
|
1497
|
-
buildCrm: "Crée un CRM commercial — clients, contacts et un
|
|
1498
|
-
buildApp: "Crée un suivi de projets — projets, tâches avec responsables et échéances,
|
|
1499
|
-
buildFlow: "Conçois un service d'assistance — tickets avec
|
|
1500
|
-
buildInventory: "Crée une application de stock — produits, niveaux de stock, fournisseurs et
|
|
1501
|
-
buildRecruiting: "Crée un suivi de candidatures — candidats, postes ouverts,
|
|
1848
|
+
buildCrm: "Crée un CRM commercial — clients, contacts et affaires avec un champ étape, plus un tableau de bord qui totalise le montant par étape.",
|
|
1849
|
+
buildApp: "Crée un suivi de projets — projets, tâches avec responsables et échéances, un tableau par statut et un calendrier des échéances.",
|
|
1850
|
+
buildFlow: "Conçois un service d'assistance — tickets avec des champs priorité et statut, un tableau par statut et des liens vers les clients.",
|
|
1851
|
+
buildInventory: "Crée une application de stock — produits, niveaux de stock, fournisseurs et une vue qui filtre les articles sous leur seuil de réapprovisionnement.",
|
|
1852
|
+
buildRecruiting: "Crée un suivi de candidatures — candidats, postes ouverts, un champ étape d'entretien et un tableau par étape.",
|
|
1502
1853
|
},
|
|
1503
1854
|
generic: {
|
|
1504
1855
|
help: "En quoi peux-tu m'aider ?",
|
|
1505
1856
|
availableObjects: "Liste les objets de données disponibles.",
|
|
1506
1857
|
recentActivity: "Résume mon activité récente.",
|
|
1507
1858
|
},
|
|
1859
|
+
// objectui#7709 — the edit-mode starters, shown when the maker is bound
|
|
1860
|
+
// to an EXISTING app (`?package=`). Same rule as the five above: they
|
|
1861
|
+
// may only ask for what ADR-0112 v1 BUILDS. The fourth chip used to be
|
|
1862
|
+
// `addAutomation` ("an approval, a status flow, or a notification") and
|
|
1863
|
+
// every capability it named is refused by v1 (cloud#1956 / PR #1970), so
|
|
1864
|
+
// it now asks for sample data — `seed` IS on v1's whitelist, and having
|
|
1865
|
+
// no data is what an existing app most often lacks. REVERT: when
|
|
1866
|
+
// ADR-0112 v2 re-adds flows and actions, THIS chip's automation wording
|
|
1867
|
+
// comes back as `addAutomation`; the retired string is pinned for every
|
|
1868
|
+
// pack in `packages/i18n/src/__tests__/makerEditChips-v1-scope-7709.test.ts`.
|
|
1508
1869
|
editApp: {
|
|
1509
1870
|
addField: "Ajoute un champ à l'un des objets.",
|
|
1510
1871
|
addObject: "Ajoute un nouvel objet et relie-le à un objet existant.",
|
|
1511
1872
|
addDashboard: "Ajoute un tableau de bord pour les indicateurs clés.",
|
|
1512
|
-
|
|
1873
|
+
addSampleData: "Remplis les objets existants avec des données d'exemple réalistes pour que je puisse présenter l'application.",
|
|
1513
1874
|
},
|
|
1514
1875
|
},
|
|
1515
1876
|
changesTitle: "Confirmer les modifications",
|
|
1516
1877
|
changesConfirmed: "Confirmé",
|
|
1517
1878
|
changesConfirm: "Confirmer",
|
|
1518
1879
|
changesConfirmHint: "Répondez pour confirmer ou ajuster cette modification.",
|
|
1880
|
+
changesApplying: "Application…",
|
|
1881
|
+
changesApplied: "Appliqué",
|
|
1882
|
+
changesDrafted: "Enregistré comme brouillon",
|
|
1883
|
+
changesFailed: "Non appliqué",
|
|
1884
|
+
discussing: "Sujet : {{target}}",
|
|
1519
1885
|
changeVerb: {
|
|
1520
1886
|
createObject: "Créer un objet",
|
|
1521
1887
|
addField: "Ajouter un champ",
|
|
@@ -1586,6 +1952,13 @@ const fr = {
|
|
|
1586
1952
|
pages: "Pages",
|
|
1587
1953
|
reports: "Rapports",
|
|
1588
1954
|
system: "Système",
|
|
1955
|
+
marketplace: "Marketplace",
|
|
1956
|
+
settings: 'Paramètres',
|
|
1957
|
+
apps: 'Applications',
|
|
1958
|
+
profile: 'Profil',
|
|
1959
|
+
approvals: 'Approbations',
|
|
1960
|
+
aiApprovals: 'Approbations IA',
|
|
1961
|
+
auditLog: "Journal d'audit",
|
|
1589
1962
|
},
|
|
1590
1963
|
// objectui#4024 — the single-namespace settings screen. Its sibling
|
|
1591
1964
|
// `settingsHub` above already resolved through this pack; the view was the
|
|
@@ -1605,6 +1978,7 @@ const fr = {
|
|
|
1605
1978
|
saveChanges: "Enregistrer les modifications",
|
|
1606
1979
|
unsavedCount: "{{count}} modifications non enregistrées",
|
|
1607
1980
|
unsavedCount_one: "{{count}} modification non enregistrée",
|
|
1981
|
+
unsavedCount_many: "{{count}} de modifications non enregistrées",
|
|
1608
1982
|
unsavedCount_other: "{{count}} modifications non enregistrées",
|
|
1609
1983
|
cryptoRefusalTitle: "Ce déploiement ne peut pas chiffrer les secrets",
|
|
1610
1984
|
cryptoRefusalSubjectSuffix: "est déclaré chiffré, aucune écriture n'a donc eu lieu.",
|
|
@@ -1677,6 +2051,21 @@ const fr = {
|
|
|
1677
2051
|
records: "Enregistrements",
|
|
1678
2052
|
recentRecords: "Récemment consultés",
|
|
1679
2053
|
},
|
|
2054
|
+
// objectui#9954 — see the `en` pack for what raises each case.
|
|
2055
|
+
readRate: {
|
|
2056
|
+
ratioTitle: 'Volume de lecture inhabituel dans cet environnement',
|
|
2057
|
+
ratio: '{{ratio}} lignes sont lues pour chaque ligne écrite. La plateforme signale tout ce qui dépasse {{threshold}}. Rien n’est limité ni bloqué ; il s’agit d’un rapport permettant d’examiner le schéma de lecture.',
|
|
2058
|
+
noWritesTitle: 'Lectures sans aucune écriture dans cet environnement',
|
|
2059
|
+
noWrites: 'Des lignes sont lues alors qu’aucune n’est écrite, de sorte que le taux de lecture n’a aucune limite supérieure. C’est la mesure la plus grave. La plateforme signale tout ce qui dépasse {{threshold}}. Rien n’est limité ni bloqué ; il s’agit d’un rapport permettant d’examiner le schéma de lecture.',
|
|
2060
|
+
},
|
|
2061
|
+
// objectui#10439 — see the `en` pack for what raises each case.
|
|
2062
|
+
storageUsage: {
|
|
2063
|
+
warningTitle: 'Le stockage est presque plein',
|
|
2064
|
+
warning: '{{used}} Mo sur {{limit}} Mo utilisés. Les envois et les importations sont suspendus dès que le stockage est plein.',
|
|
2065
|
+
blockedTitle: 'Stockage plein : les envois et les importations sont suspendus',
|
|
2066
|
+
blocked: "{{used}} Mo sur {{limit}} Mo utilisés. Les données existantes ne sont pas modifiées, et la lecture, l'export et la modification d'enregistrements individuels fonctionnent toujours.",
|
|
2067
|
+
upgrade: "Passer à l'offre supérieure pour continuer",
|
|
2068
|
+
},
|
|
1680
2069
|
errors: {
|
|
1681
2070
|
somethingWentWrong: "Quelque chose s'est mal passé",
|
|
1682
2071
|
unexpectedError: "Une erreur inattendue est survenue lors du rendu de cette vue.",
|
|
@@ -1707,6 +2096,7 @@ const fr = {
|
|
|
1707
2096
|
viewNameInvalid: "Utilisez des minuscules, des chiffres et des tirets bas ; commencez par une lettre ou un tiret bas.",
|
|
1708
2097
|
systemViewReadonly: "Vue système définie dans le code — en lecture seule.",
|
|
1709
2098
|
cannotEditMetaView: "Cette vue est intégrée et définie dans le code — elle ne peut pas être modifiée.",
|
|
2099
|
+
viewConfigPermissionDenied: "Les paramètres de vue s’appliquent à tous les utilisateurs de cette vue ; les modifier requiert donc l’autorisation « Gérer les métadonnées ». Demandez à un administrateur d’effectuer ce changement.",
|
|
1710
2100
|
cannotDeleteMetaView: "Cette vue est intégrée et définie dans le code — elle ne peut pas être supprimée.",
|
|
1711
2101
|
expandToPage: "Ouvrir en pleine page",
|
|
1712
2102
|
objectNotFound: "Objet introuvable",
|
|
@@ -1715,101 +2105,35 @@ const fr = {
|
|
|
1715
2105
|
filterOrNotSavable: "Ce filtre relie les conditions par OU, ce qu'une vue enregistrée ne peut pas encore stocker. Il s'applique toujours à cette liste — supprimez le groupement OU pour l'enregistrer dans la vue.",
|
|
1716
2106
|
filterNestedNotSavable: "Ce filtre utilise des groupes de conditions imbriqués, qu'une vue enregistrée ne peut pas stocker. Aplatissez-le en une seule liste de conditions pour l'enregistrer dans la vue.",
|
|
1717
2107
|
allRecords: "Tous les enregistrements",
|
|
1718
|
-
exitDesignMode: "Quitter le mode conception",
|
|
1719
|
-
enterDesignMode: "Entrer en mode conception",
|
|
1720
|
-
metadataInspector: "Inspecteur de métadonnées",
|
|
1721
|
-
editView: "Modifier la vue",
|
|
1722
|
-
addView: "Ajouter une vue",
|
|
1723
|
-
designTools: "Outils de conception",
|
|
1724
2108
|
new: "Nouveau",
|
|
1725
2109
|
configureView: "Configurer la vue",
|
|
1726
|
-
closePanel: "Fermer le panneau",
|
|
1727
|
-
page: "Page",
|
|
1728
|
-
pageConfigHint: "Barre d'outils, navigation et paramètres du shell de vue",
|
|
1729
|
-
listConfigHint: "Rendu des données, colonnes et apparence pour ce type de liste",
|
|
1730
|
-
general: "Général",
|
|
1731
|
-
generalHint: "Titre, description et type de la vue",
|
|
1732
|
-
toolbar: "Barre d'outils",
|
|
1733
|
-
toolbarHint: "Recherche, filtre, tri, regroupement et bascule de densité",
|
|
1734
2110
|
toolbarEnabledCount: "{{count}} sur {{total}} activés",
|
|
1735
|
-
navigationSection: "Navigation",
|
|
1736
|
-
navigationHint: "Comportement au clic sur la ligne et paramètres de la vue détaillée",
|
|
1737
|
-
records: "Enregistrements",
|
|
1738
|
-
recordsHint: "Mode de sélection, ajout d'enregistrement et édition en ligne",
|
|
1739
|
-
exportPrint: "Export et impression",
|
|
1740
|
-
exportPrintHint: "Formats d'export, impression et affichage du nombre d'enregistrements",
|
|
1741
|
-
showAllFields: "Tout afficher",
|
|
1742
|
-
hideAllFields: "Tout masquer",
|
|
1743
2111
|
searchFields: "Rechercher des champs…",
|
|
1744
2112
|
title: "Titre",
|
|
1745
|
-
description: "Description",
|
|
1746
|
-
data: "Données",
|
|
1747
|
-
source: "Source",
|
|
1748
|
-
columns: "Colonnes",
|
|
1749
|
-
filterBy: "Filtrer par",
|
|
1750
|
-
sortBy: "Trier par",
|
|
1751
|
-
appearance: "Apparence",
|
|
1752
|
-
showDescription: "Afficher la description",
|
|
1753
2113
|
viewType: "Type de vue",
|
|
1754
|
-
userFilters: "Filtres utilisateur",
|
|
1755
|
-
enableSearch: "Activer la recherche",
|
|
1756
|
-
enableFilter: "Activer le filtre",
|
|
1757
|
-
enableSort: "Activer le tri",
|
|
1758
|
-
enableHideFields: "Activer masquer les champs",
|
|
1759
|
-
enableGroup: "Activer le regroupement",
|
|
1760
|
-
enableColor: "Activer la couleur",
|
|
1761
|
-
enableDensity: "Activer la densité",
|
|
1762
|
-
userActions: "Actions utilisateur",
|
|
1763
|
-
addRecordViaForm: "Ajouter des enregistrements via un formulaire",
|
|
1764
|
-
advanced: "Avancé",
|
|
1765
|
-
allowExport: "Autoriser l'exportation",
|
|
1766
2114
|
recordCount: "{{count}} enregistrements",
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
2115
|
+
recordCount_one: "{{count}} enregistrement",
|
|
2116
|
+
recordCount_many: "{{count}} d'enregistrements",
|
|
2117
|
+
recordCount_other: "{{count}} enregistrements",
|
|
1770
2118
|
save: "Enregistrer",
|
|
1771
2119
|
discard: "Annuler",
|
|
1772
2120
|
createView: "Créer une vue",
|
|
1773
2121
|
newView: "Nouvelle vue",
|
|
1774
|
-
typeOptions: "Options de type",
|
|
1775
2122
|
groupByField: "Champ de regroupement",
|
|
1776
2123
|
startDateField: "Champ de date de début",
|
|
1777
2124
|
titleField: "Champ de titre",
|
|
1778
2125
|
latitudeField: "Champ de latitude",
|
|
1779
2126
|
longitudeField: "Champ de longitude",
|
|
1780
2127
|
imageField: "Champ d'image",
|
|
1781
|
-
dateField: "Champ de date",
|
|
1782
2128
|
selectField: "Sélectionner un champ…",
|
|
1783
|
-
gridOptionsHint: "La vue grille utilise les colonnes configurées ci-dessus.",
|
|
1784
|
-
groupBy: "Regrouper par",
|
|
1785
|
-
prefixField: "Champ de préfixe",
|
|
1786
|
-
fields: "Champs",
|
|
1787
|
-
fieldsVisible: "{{count}} visibles",
|
|
1788
|
-
sortsCount: "{{count}} tris",
|
|
1789
|
-
filtersCount: "{{count}} filtres",
|
|
1790
2129
|
endDateField: "Champ de date de fin",
|
|
1791
|
-
color: "Couleur",
|
|
1792
|
-
fieldTextColor: "Couleur du texte du champ",
|
|
1793
|
-
rowHeight: "Hauteur de ligne",
|
|
1794
|
-
wrapHeaders: "Retour à la ligne des en-têtes",
|
|
1795
|
-
showFieldDescriptions: "Afficher les descriptions des champs",
|
|
1796
|
-
collapseAllByDefault: "Tout réduire par défaut",
|
|
1797
|
-
striped: "Lignes rayées",
|
|
1798
|
-
bordered: "Cellules bordées",
|
|
1799
|
-
inlineEdit: "Modifier les enregistrements en ligne",
|
|
1800
|
-
addDeleteRecordsInline: "Ajouter/supprimer des enregistrements en ligne",
|
|
1801
|
-
clickIntoRecordDetails: "Cliquer pour les détails de l'enregistrement",
|
|
1802
|
-
navigationMode: "Mode de navigation",
|
|
1803
|
-
navigationWidth: "Largeur de navigation",
|
|
1804
|
-
navigationWidthHint: "Disponible pour les modes de navigation tiroir, modale et partagée",
|
|
1805
|
-
openNewTab: "Ouvrir dans un nouvel onglet",
|
|
1806
|
-
openNewTabHint: "Disponible pour les modes de navigation page et nouvelle fenêtre",
|
|
1807
2130
|
import: "Importer",
|
|
1808
2131
|
importTitle: "Importer depuis CSV",
|
|
1809
2132
|
importedToast: "{{count}} ligne(s) importée(s).",
|
|
2133
|
+
importedToast_one: "{{count}} ligne importée.",
|
|
2134
|
+
importedToast_many: "{{count}} de lignes importées.",
|
|
2135
|
+
importedToast_other: "{{count}} lignes importées.",
|
|
1810
2136
|
importedWithSkipped: "{{ok}} ligne(s) importée(s) ; {{skipped}} ignorée(s).",
|
|
1811
|
-
showAdvancedSettings: "Afficher les paramètres avancés",
|
|
1812
|
-
showFewerSettings: "Afficher moins de paramètres",
|
|
1813
2137
|
createViewDesc: "Choisissez un type de vue et donnez-lui un nom. Tous les paramètres peuvent être modifiés ensuite.",
|
|
1814
2138
|
cancel: "Annuler",
|
|
1815
2139
|
create: "Créer",
|
|
@@ -1817,6 +2141,9 @@ const fr = {
|
|
|
1817
2141
|
deleteViewTitle: "Supprimer la vue",
|
|
1818
2142
|
deleteViewConfirm: "Supprimer la vue \"{{name}}\" ? Ceci est irréversible.",
|
|
1819
2143
|
bulkDeleteConfirm: "Supprimer {{count}} enregistrements sélectionnés ? Ceci est irréversible.",
|
|
2144
|
+
bulkDeleteConfirm_one: "Supprimer {{count}} enregistrement sélectionné ? Ceci est irréversible.",
|
|
2145
|
+
bulkDeleteConfirm_many: "Supprimer {{count}} d'enregistrements sélectionnés ? Ceci est irréversible.",
|
|
2146
|
+
bulkDeleteConfirm_other: "Supprimer {{count}} enregistrements sélectionnés ? Ceci est irréversible.",
|
|
1820
2147
|
duplicateViewName: "Une vue avec ce nom existe déjà.",
|
|
1821
2148
|
viewTypeGrid: "Grille",
|
|
1822
2149
|
viewTypeGridDesc: "Tableau de type tableur d'enregistrements.",
|
|
@@ -1853,62 +2180,17 @@ const fr = {
|
|
|
1853
2180
|
chartTypePie: "Graphique circulaire",
|
|
1854
2181
|
chartTypeArea: "Graphique en aires",
|
|
1855
2182
|
chartTypeScatter: "Nuage de points",
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
pageSize: "Taille de page",
|
|
1865
|
-
pageSizeOptions: "Options de taille de page",
|
|
1866
|
-
exportFormats: "Formats d'exportation",
|
|
1867
|
-
exportMaxRecords: "Enregistrements max",
|
|
1868
|
-
exportIncludeHeaders: "Inclure les en-têtes",
|
|
1869
|
-
exportFileNamePrefix: "Préfixe du nom de fichier",
|
|
1870
|
-
searchableFields: "Champs recherchables",
|
|
1871
|
-
filterableFields: "Champs filtrables",
|
|
1872
|
-
resizableColumns: "Colonnes redimensionnables",
|
|
1873
|
-
densityCompact: "Compact",
|
|
1874
|
-
densityComfortable: "Normal",
|
|
1875
|
-
densitySpacious: "Spacieux",
|
|
1876
|
-
densityMode: "Mode de densité",
|
|
1877
|
-
hiddenFields: "Champs masqués",
|
|
1878
|
-
rowActions: "Actions de ligne",
|
|
1879
|
-
bulkActions: "Actions en masse",
|
|
1880
|
-
sharing: "Partage",
|
|
1881
|
-
sharingEnabled: "Partage activé",
|
|
1882
|
-
sharingVisibility: "Visibilité",
|
|
1883
|
-
addRecordEnabled: "Ajout d'enregistrement activé",
|
|
1884
|
-
addRecordPosition: "Position",
|
|
1885
|
-
addRecordMode: "Mode",
|
|
1886
|
-
addRecordFormView: "Vue formulaire",
|
|
1887
|
-
conditionalFormatting: "Mise en forme conditionnelle",
|
|
1888
|
-
addRule: "Ajouter une règle",
|
|
1889
|
-
quickFilters: "Filtres rapides",
|
|
1890
|
-
addQuickFilter: "Ajouter un filtre rapide",
|
|
1891
|
-
ufElements: "Éléments",
|
|
1892
|
-
ufDropdown: "Liste déroulante",
|
|
2183
|
+
dataset: "Jeu de données",
|
|
2184
|
+
datasetHelp: "Le graphique lit ses valeurs dans ce jeu de données de l’objet.",
|
|
2185
|
+
chartMeasure: "Mesure",
|
|
2186
|
+
chartMeasureHelp: "La mesure du jeu de données tracée sur l’axe des valeurs.",
|
|
2187
|
+
chartDimension: "Dimension",
|
|
2188
|
+
chartDimensionHelp: "La dimension du jeu de données selon laquelle les valeurs sont regroupées (facultatif).",
|
|
2189
|
+
viewTypeUnavailableDataset: "Cet objet n’expose aucun jeu de données à représenter.",
|
|
2190
|
+
noDatasetMeasure: "Ce jeu de données ne déclare aucune mesure à représenter.",
|
|
1893
2191
|
ufTabs: "Onglets",
|
|
1894
|
-
ufToggle: "Bascule",
|
|
1895
2192
|
ufAddField: "+ Ajouter un champ de filtre…",
|
|
1896
|
-
ufNoFields: "Aucun champ disponible",
|
|
1897
|
-
ufAddTab: "+ Ajouter un onglet",
|
|
1898
|
-
ufTabLabel: "Étiquette",
|
|
1899
2193
|
ufShowAllRecords: "Afficher l'onglet \"Tous les enregistrements\"",
|
|
1900
|
-
ufAllowAddTab: "Autoriser l'ajout d'onglets",
|
|
1901
|
-
showRecordCount: "Afficher le nombre d'enregistrements",
|
|
1902
|
-
allowPrinting: "Autoriser l'impression",
|
|
1903
|
-
virtualScroll: "Défilement virtuel",
|
|
1904
|
-
emptyStateTitle: "Titre de l'état vide",
|
|
1905
|
-
emptyStateMessage: "Message de l'état vide",
|
|
1906
|
-
emptyStateIcon: "Icône de l'état vide",
|
|
1907
|
-
ariaLabel: "Étiquette ARIA",
|
|
1908
|
-
ariaDescribedBy: "Décrit par ARIA",
|
|
1909
|
-
ariaLive: "ARIA en direct",
|
|
1910
|
-
accessibility: "Accessibilité",
|
|
1911
|
-
viewTabs: "Onglets de vue",
|
|
1912
2194
|
},
|
|
1913
2195
|
localeSwitcher: {
|
|
1914
2196
|
label: "Langue",
|
|
@@ -1919,6 +2201,9 @@ const fr = {
|
|
|
1919
2201
|
unpinItem: "Désépingler {{name}}",
|
|
1920
2202
|
dragToReorder: "Glisser pour réorganiser",
|
|
1921
2203
|
favorites: "Favoris",
|
|
2204
|
+
launcherLabel: "Lanceur d'applications",
|
|
2205
|
+
menuLabel: "Navigation de l'application",
|
|
2206
|
+
menuEmpty: "Cette application n'a aucune entrée de navigation que vous pouvez ouvrir.",
|
|
1922
2207
|
},
|
|
1923
2208
|
},
|
|
1924
2209
|
auth: {
|
|
@@ -1972,6 +2257,8 @@ const fr = {
|
|
|
1972
2257
|
resendOtpCountdownText: "Renvoyer dans {seconds} s",
|
|
1973
2258
|
usePhoneOtpText: "Se connecter avec un code de vérification",
|
|
1974
2259
|
usePasswordSignInText: "Se connecter avec un mot de passe à la place",
|
|
2260
|
+
socialButton: "Continuer avec {provider}",
|
|
2261
|
+
orText: "ou continuer avec l'e-mail",
|
|
1975
2262
|
},
|
|
1976
2263
|
register: {
|
|
1977
2264
|
title: "Créer un compte",
|
|
@@ -1990,8 +2277,12 @@ const fr = {
|
|
|
1990
2277
|
submittingButton: "Création du compte…",
|
|
1991
2278
|
hasAccountText: "Vous avez déjà un compte ?",
|
|
1992
2279
|
signInText: "Se connecter",
|
|
2280
|
+
socialButton: "S'inscrire avec {provider}",
|
|
2281
|
+
orText: "ou continuer avec l'e-mail",
|
|
1993
2282
|
errors: {
|
|
1994
2283
|
userExists: "Un compte avec cet e-mail existe déjà. Essayez de vous connecter.",
|
|
2284
|
+
selfRegistrationClosed: "L'inscription libre n'est pas ouverte dans cet environnement. Demandez une invitation à un administrateur.",
|
|
2285
|
+
emailDomainNotAllowed: "Le domaine de cet e-mail n'est pas autorisé à s'inscrire ici. Utilisez l'e-mail de votre organisation ou demandez une invitation à un administrateur.",
|
|
1995
2286
|
},
|
|
1996
2287
|
verifyInbox: {
|
|
1997
2288
|
title: "Vérifiez votre boîte de réception",
|
|
@@ -2010,7 +2301,7 @@ const fr = {
|
|
|
2010
2301
|
submitButton: "Envoyer le lien de réinitialisation",
|
|
2011
2302
|
submittingButton: "Envoi en cours…",
|
|
2012
2303
|
successTitle: "Vérifiez vos e-mails",
|
|
2013
|
-
successDescription: "Nous avons envoyé un lien de réinitialisation du mot de passe à {
|
|
2304
|
+
successDescription: "Nous avons envoyé un lien de réinitialisation du mot de passe à {email}. Veuillez vérifier votre boîte de réception.",
|
|
2014
2305
|
backToSignInText: "Retour à la connexion",
|
|
2015
2306
|
rememberPasswordText: "Vous vous souvenez de votre mot de passe ?",
|
|
2016
2307
|
signInText: "Se connecter",
|
|
@@ -2190,6 +2481,15 @@ const fr = {
|
|
|
2190
2481
|
role: "Rôle",
|
|
2191
2482
|
save: "Enregistrer les modifications",
|
|
2192
2483
|
},
|
|
2484
|
+
language: {
|
|
2485
|
+
title: "Langue",
|
|
2486
|
+
description: "La langue utilisée pour les notifications et les messages qui vous sont envoyés. La langue de l'interface se choisit séparément, dans le menu du globe.",
|
|
2487
|
+
label: "Langue préférée",
|
|
2488
|
+
systemDefault: "Utiliser la valeur par défaut du déploiement",
|
|
2489
|
+
save: "Enregistrer",
|
|
2490
|
+
saved: "Préférence de langue mise à jour.",
|
|
2491
|
+
readOnly: "La langue de votre compte est gérée par votre administrateur.",
|
|
2492
|
+
},
|
|
2193
2493
|
password: {
|
|
2194
2494
|
changeTitle: "Changer le mot de passe",
|
|
2195
2495
|
setTitle: "Définir un mot de passe local",
|
|
@@ -2221,7 +2521,6 @@ const fr = {
|
|
|
2221
2521
|
label: "Espaces de travail",
|
|
2222
2522
|
default: "Mon espace de travail",
|
|
2223
2523
|
switch: "Changer d'espace de travail",
|
|
2224
|
-
create: "Créer un espace de travail",
|
|
2225
2524
|
createTitle: "Créer un espace de travail",
|
|
2226
2525
|
createDescription: "Un espace de travail est un lieu partagé pour la collaboration de votre équipe.",
|
|
2227
2526
|
createButton: "Créer un espace de travail",
|
|
@@ -2246,7 +2545,6 @@ const fr = {
|
|
|
2246
2545
|
packageManagement: "Gestion des packages",
|
|
2247
2546
|
searchNavigation: "Rechercher dans la navigation…",
|
|
2248
2547
|
settings: "Paramètres",
|
|
2249
|
-
help: "Aide",
|
|
2250
2548
|
helpTooltip: "Aide et documentation",
|
|
2251
2549
|
activityFeed: "Flux d'activité",
|
|
2252
2550
|
notifications: "Notifications",
|
|
@@ -2285,10 +2583,12 @@ const fr = {
|
|
|
2285
2583
|
build: {
|
|
2286
2584
|
title: "Créer une application",
|
|
2287
2585
|
subtitle: "Partir de zéro — concevez les objets, formulaires, automatisations et interfaces.",
|
|
2586
|
+
noCapability: "La création d'applications n'est pas disponible dans cet espace de travail : elle requiert l'autorisation « Gérer les métadonnées », que votre compte ne possède pas.",
|
|
2288
2587
|
},
|
|
2289
2588
|
template: {
|
|
2290
2589
|
title: "Partir d'un modèle",
|
|
2291
2590
|
subtitle: "Installez une application modèle depuis la place de marché et personnalisez-la.",
|
|
2591
|
+
marketplaceDisabled: "Aucune place de marché d'applications n'est configurée pour ce runtime : il n'y a donc aucun modèle à installer ici.",
|
|
2292
2592
|
},
|
|
2293
2593
|
welcomeAdminDescription: "Décrivez votre activité en une phrase — l'IA génère les objets, les écrans, les API et les outils d'agent. Ou configurez tout vous-même depuis le menu de gauche.",
|
|
2294
2594
|
welcomeAdminDescriptionNoBuild: "Configurez votre première application depuis le menu Administration à gauche. Une fois les données en place, l'assistant IA pourra vous aider à les explorer.",
|
|
@@ -2304,6 +2604,9 @@ const fr = {
|
|
|
2304
2604
|
},
|
|
2305
2605
|
pendingDrafts: {
|
|
2306
2606
|
message: "Vous avez {{count}} modification(s) non publiée(s) — publiez-les pour les activer.",
|
|
2607
|
+
message_one: "Vous avez {{count}} modification non publiée — publiez-la pour l'activer.",
|
|
2608
|
+
message_many: "Vous avez {{count}} de modifications non publiées — publiez-les pour les activer.",
|
|
2609
|
+
message_other: "Vous avez {{count}} modifications non publiées — publiez-les pour les activer.",
|
|
2307
2610
|
cta: "Publier",
|
|
2308
2611
|
publishing: "Publication…",
|
|
2309
2612
|
published: "Publié ! Vos modifications sont actives.",
|
|
@@ -2318,7 +2621,6 @@ const fr = {
|
|
|
2318
2621
|
capabilityWarn: "Contrôle de conception : {{count}} référence(s) de capacité ne mènent à rien.",
|
|
2319
2622
|
},
|
|
2320
2623
|
title: "Accueil",
|
|
2321
|
-
subtitle: "Tableau de bord de votre espace de travail",
|
|
2322
2624
|
nav: "Accueil",
|
|
2323
2625
|
allApps: "Toutes les applications",
|
|
2324
2626
|
yourApps: "Vos applications",
|
|
@@ -2330,8 +2632,6 @@ const fr = {
|
|
|
2330
2632
|
empty: "Vous êtes à jour",
|
|
2331
2633
|
},
|
|
2332
2634
|
loading: "Chargement de l'espace de travail…",
|
|
2333
|
-
recent: "Récent",
|
|
2334
|
-
starred: "Favoris",
|
|
2335
2635
|
welcome: "Bienvenue dans ObjectUI",
|
|
2336
2636
|
welcomeDescription: "Commencez par créer votre première application ou configurer les paramètres système.",
|
|
2337
2637
|
createFirstApp: "Créez votre première app",
|
|
@@ -2339,8 +2639,6 @@ const fr = {
|
|
|
2339
2639
|
browseMarketplace: "Parcourir la marketplace d'apps",
|
|
2340
2640
|
quickActions: {
|
|
2341
2641
|
title: "Actions rapides",
|
|
2342
|
-
createApp: "Créer une app",
|
|
2343
|
-
createAppDesc: "Commencez avec une nouvelle application",
|
|
2344
2642
|
manageObjects: "Gérer les objets",
|
|
2345
2643
|
manageObjectsDesc: "Configurer les modèles de données",
|
|
2346
2644
|
systemSettings: "Paramètres système",
|
|
@@ -2356,18 +2654,15 @@ const fr = {
|
|
|
2356
2654
|
greetingNight: "Travail de nuit",
|
|
2357
2655
|
heroTagline: "Reprenez là où vous vous êtes arrêté ou découvrez quelque chose de nouveau.",
|
|
2358
2656
|
open: "Ouvrir",
|
|
2359
|
-
stats: {
|
|
2360
|
-
apps: "Applications",
|
|
2361
|
-
starred: "Étoilés",
|
|
2362
|
-
recent: "Récents",
|
|
2363
|
-
},
|
|
2364
2657
|
recentApps: {
|
|
2365
2658
|
title: "Récemment ouverts",
|
|
2366
2659
|
itemType: {
|
|
2367
2660
|
object: "Objet",
|
|
2368
2661
|
dashboard: "Tableau de bord",
|
|
2369
2662
|
page: "Page",
|
|
2663
|
+
report: "Rapport",
|
|
2370
2664
|
record: "Enregistrement",
|
|
2665
|
+
metadata: "Métadonnées",
|
|
2371
2666
|
},
|
|
2372
2667
|
},
|
|
2373
2668
|
starredApps: {
|
|
@@ -2389,7 +2684,6 @@ const fr = {
|
|
|
2389
2684
|
organizations: "Organisations",
|
|
2390
2685
|
roles: "Rôles",
|
|
2391
2686
|
configuration: "Configuration",
|
|
2392
|
-
createApp: "Créer une application",
|
|
2393
2687
|
administration: "Administration",
|
|
2394
2688
|
datasources: "Sources de données",
|
|
2395
2689
|
documentation: "Documentation",
|
|
@@ -2414,6 +2708,7 @@ const fr = {
|
|
|
2414
2708
|
typeUpdate: "Mettre à jour",
|
|
2415
2709
|
typeDelete: "Supprimer",
|
|
2416
2710
|
typeComment: "Commentaire",
|
|
2711
|
+
typeSystem: "Système",
|
|
2417
2712
|
relativeJustNow: "à l'instant",
|
|
2418
2713
|
relativeSecondsAgo: "il y a {{count}}s",
|
|
2419
2714
|
relativeMinutesAgo: "il y a {{count}}m",
|
|
@@ -2435,8 +2730,13 @@ const fr = {
|
|
|
2435
2730
|
placeholder: "Rechercher des objets, tableaux de bord, pages, rapports…",
|
|
2436
2731
|
inputAriaLabel: "Rechercher des objets, tableaux de bord, pages, rapports",
|
|
2437
2732
|
resultsCount: "{{count}} résultat pour \"{{query}}\"",
|
|
2438
|
-
|
|
2733
|
+
resultsCount_one: "{{count}} résultat pour \"{{query}}\"",
|
|
2734
|
+
resultsCount_many: "{{count}} de résultats pour \"{{query}}\"",
|
|
2735
|
+
resultsCount_other: "{{count}} résultats pour \"{{query}}\"",
|
|
2439
2736
|
itemsAvailable: "{{count}} éléments disponibles",
|
|
2737
|
+
itemsAvailable_one: "{{count}} élément disponible",
|
|
2738
|
+
itemsAvailable_many: "{{count}} d'éléments disponibles",
|
|
2739
|
+
itemsAvailable_other: "{{count}} éléments disponibles",
|
|
2440
2740
|
noResults: "Aucun résultat trouvé",
|
|
2441
2741
|
noResultsHint: "Essayez d'ajuster vos termes de recherche",
|
|
2442
2742
|
typeObjects: "Objets",
|
|
@@ -2461,7 +2761,11 @@ const fr = {
|
|
|
2461
2761
|
noAppsConfigured: "Aucune application configurée",
|
|
2462
2762
|
noAppsConfiguredDescription: "Aucune application n'est enregistrée. Créez votre première application ou visitez les paramètres système.",
|
|
2463
2763
|
appNotAvailable: "Application non disponible",
|
|
2464
|
-
appNotAvailableDescription: "Cette application n'est pas
|
|
2764
|
+
appNotAvailableDescription: "Cette application n'est pas disponible — réessayez dans un instant.",
|
|
2765
|
+
appNotFound: "Impossible d'ouvrir cette application",
|
|
2766
|
+
appNotFoundDescription: "Le serveur n'a pas renvoyé cette application pour votre compte.",
|
|
2767
|
+
appUnreachable: "Impossible de joindre le serveur",
|
|
2768
|
+
appUnreachableDescription: "Cette application n'a pas pu être vérifiée. Réessayez dans un instant.",
|
|
2465
2769
|
appAccessDenied: "Vous n'avez pas accès à cette application",
|
|
2466
2770
|
appAccessDeniedDescription: "Cette application existe, mais votre compte n'est pas autorisé à l'ouvrir. Demandez l'accès à un administrateur.",
|
|
2467
2771
|
appAccessDeniedHome: "Retour à l'accueil",
|
|
@@ -2471,31 +2775,16 @@ const fr = {
|
|
|
2471
2775
|
recordNotFound: "Enregistrement introuvable",
|
|
2472
2776
|
recordNotFoundDescription: "L'enregistrement que vous recherchez n'existe pas ou a peut-être été supprimé.",
|
|
2473
2777
|
},
|
|
2474
|
-
renderer: {
|
|
2475
|
-
noPageSchema: "Aucun schéma de page fourni",
|
|
2476
|
-
noFormSchema: "Aucun schéma de formulaire fourni",
|
|
2477
|
-
noDashboardSchema: "Aucun schéma de tableau de bord fourni",
|
|
2478
|
-
pageRendering: "Rendu de la page : {{name}}",
|
|
2479
|
-
dashboardRendering: "Rendu du tableau de bord : {{name}}",
|
|
2480
|
-
formRenderingMode: "Formulaire rendu en mode {{mode}}",
|
|
2481
|
-
formRenderingFor: "pour l'enregistrement {{id}}",
|
|
2482
|
-
createRecord: "Créer un enregistrement",
|
|
2483
|
-
editRecord: "Modifier l'enregistrement",
|
|
2484
|
-
page: "Page",
|
|
2485
|
-
dashboard: "Tableau de bord",
|
|
2486
|
-
save: "Enregistrer",
|
|
2487
|
-
cancel: "Annuler",
|
|
2488
|
-
},
|
|
2489
2778
|
actionDialog: {
|
|
2490
2779
|
title: "Paramètres d'action",
|
|
2491
2780
|
description: "Veuillez saisir les informations requises pour continuer.",
|
|
2492
2781
|
selectPlaceholder: "Sélectionner {{label}}",
|
|
2493
2782
|
requiredError: "{{label}} est obligatoire",
|
|
2783
|
+
unresolvedParam: 'Ce paramètre ne peut pas être affiché : le champ dont il dépend est absent des métadonnées de l’objet, le contrôle nécessaire ne peut donc pas être construit. Demandez à un administrateur de corriger la définition de l’action.',
|
|
2784
|
+
carryOverHint: 'Repris tel quel (lecture seule)',
|
|
2494
2785
|
cancel: "Annuler",
|
|
2495
2786
|
confirm: "Confirmer",
|
|
2496
2787
|
uploading: "Téléversement…",
|
|
2497
|
-
defaultActionTitle: "Action",
|
|
2498
|
-
ok: "OK",
|
|
2499
2788
|
lookupPlaceholder: "ID d'enregistrement pour {{label}}",
|
|
2500
2789
|
lookupHelpText: "Aucun objet de référence n'est configuré pour ce paramètre, le sélecteur d'enregistrement est donc indisponible. Saisissez un ID d'enregistrement ou demandez à un administrateur de corriger le paramètre d'action.",
|
|
2501
2790
|
},
|
|
@@ -2504,11 +2793,6 @@ const fr = {
|
|
|
2504
2793
|
confirm: "Continuer",
|
|
2505
2794
|
cancel: "Annuler",
|
|
2506
2795
|
},
|
|
2507
|
-
rowAction: {
|
|
2508
|
-
openMenu: "Ouvrir le menu",
|
|
2509
|
-
edit: "Modifier",
|
|
2510
|
-
delete: "Supprimer",
|
|
2511
|
-
},
|
|
2512
2796
|
navigationSync: {
|
|
2513
2797
|
addedPage: "Navigation mise à jour : page \"{{name}}\" ajoutée",
|
|
2514
2798
|
addedDashboard: "Navigation mise à jour : tableau de bord \"{{name}}\" ajouté",
|
|
@@ -2529,6 +2813,9 @@ const fr = {
|
|
|
2529
2813
|
noRecordId: "Aucun ID d'enregistrement fourni",
|
|
2530
2814
|
deleteConfirm: "Supprimer cet enregistrement ?",
|
|
2531
2815
|
bulkDeleteSuccess: "{{count}} enregistrement(s) {{label}} supprimé(s)",
|
|
2816
|
+
bulkDeleteSuccess_one: "{{count}} enregistrement {{label}} supprimé",
|
|
2817
|
+
bulkDeleteSuccess_many: "{{count}} d'enregistrements {{label}} supprimés",
|
|
2818
|
+
bulkDeleteSuccess_other: "{{count}} enregistrements {{label}} supprimés",
|
|
2532
2819
|
bulkDeletePartial: "{{succeeded}} supprimé(s), {{failed}} échoué(s)",
|
|
2533
2820
|
},
|
|
2534
2821
|
objectViewActions: {
|
|
@@ -2540,15 +2827,6 @@ const fr = {
|
|
|
2540
2827
|
exportFailed: "Échec de l'export : {{message}}",
|
|
2541
2828
|
forecastSoon: "La vue de prévision arrive bientôt",
|
|
2542
2829
|
},
|
|
2543
|
-
recordDetail: {
|
|
2544
|
-
viewersTooltip: "Utilisateurs consultant cet enregistrement en ce moment",
|
|
2545
|
-
},
|
|
2546
|
-
cellRender: {
|
|
2547
|
-
empty: "Vide",
|
|
2548
|
-
yes: "Oui",
|
|
2549
|
-
no: "Non",
|
|
2550
|
-
systemFields: "Système",
|
|
2551
|
-
},
|
|
2552
2830
|
user: {
|
|
2553
2831
|
profile: "Profil",
|
|
2554
2832
|
settings: "Paramètres",
|
|
@@ -2585,17 +2863,17 @@ const fr = {
|
|
|
2585
2863
|
},
|
|
2586
2864
|
organizations: {
|
|
2587
2865
|
create: "Créer un espace de travail",
|
|
2588
|
-
mine: "Mes
|
|
2589
|
-
title: "
|
|
2590
|
-
heading: "Vos
|
|
2591
|
-
subtitle: "Sélectionnez
|
|
2592
|
-
searchPlaceholder: "Rechercher
|
|
2593
|
-
new: "
|
|
2594
|
-
current: "
|
|
2866
|
+
mine: "Mes espaces de travail",
|
|
2867
|
+
title: "Espaces de travail",
|
|
2868
|
+
heading: "Vos espaces de travail",
|
|
2869
|
+
subtitle: "Sélectionnez un espace de travail pour continuer ou créez-en un nouveau.",
|
|
2870
|
+
searchPlaceholder: "Rechercher un espace de travail",
|
|
2871
|
+
new: "Nouvel espace de travail",
|
|
2872
|
+
current: "Espace de travail actuel",
|
|
2595
2873
|
manage: "Gérer",
|
|
2596
|
-
emptyTitle: "
|
|
2597
|
-
emptyDescription: "Créez votre
|
|
2598
|
-
noMatches: "
|
|
2874
|
+
emptyTitle: "Aucun espace de travail pour le moment",
|
|
2875
|
+
emptyDescription: "Créez votre premier espace de travail pour commencer.",
|
|
2876
|
+
noMatches: "Aucun espace de travail ne correspond à votre recherche.",
|
|
2599
2877
|
},
|
|
2600
2878
|
organization: {
|
|
2601
2879
|
roles: {
|
|
@@ -2724,6 +3002,9 @@ const fr = {
|
|
|
2724
3002
|
declined: "Invitation refusée",
|
|
2725
3003
|
declineFailed: "Impossible de refuser l'invitation",
|
|
2726
3004
|
},
|
|
3005
|
+
current: {
|
|
3006
|
+
label: "Organisation actuelle",
|
|
3007
|
+
},
|
|
2727
3008
|
switcher: {
|
|
2728
3009
|
label: "Changer d'organisation",
|
|
2729
3010
|
groupLabel: "Organisation de travail",
|
|
@@ -2735,18 +3016,37 @@ const fr = {
|
|
|
2735
3016
|
regionLabel: "Notifications",
|
|
2736
3017
|
groupCount: "{{count}} notifications",
|
|
2737
3018
|
groupUnread: "{{count}} non lues",
|
|
3019
|
+
groupUnread_one: "{{count}} non lue",
|
|
3020
|
+
groupUnread_many: "{{count}} non lues",
|
|
3021
|
+
groupUnread_other: "{{count}} non lues",
|
|
2738
3022
|
groupMarkRead: "Marquer comme lu",
|
|
2739
3023
|
groupMarkReadTitle: "Tout marquer comme lu pour ce type",
|
|
2740
3024
|
empty: "Aucune notification",
|
|
2741
3025
|
markAllRead: "Tout marquer comme lu",
|
|
2742
3026
|
viewAll: "Voir toutes les notifications",
|
|
2743
3027
|
approvalsPending: "{{count}} approbations en attente",
|
|
3028
|
+
approvalsPending_one: "{{count}} approbation en attente",
|
|
3029
|
+
approvalsPending_many: "{{count}} d'approbations en attente",
|
|
3030
|
+
approvalsPending_other: "{{count}} approbations en attente",
|
|
2744
3031
|
viewApprovals: "Voir les approbations",
|
|
2745
3032
|
noPendingApprovals: "Aucune approbation en attente",
|
|
2746
3033
|
openApprovalsInbox: "Ouvrir la boîte d'approbations",
|
|
2747
3034
|
badgeTotal: "{{total}} au total",
|
|
2748
3035
|
badgeNotifications: "{{unread}} notifications",
|
|
2749
3036
|
badgeApprovals: "{{approvals}} approbations en attente",
|
|
3037
|
+
arrivalMany: "{{count}} nouveaux messages",
|
|
3038
|
+
arrivalMany_one: "{{count}} nouveau message",
|
|
3039
|
+
arrivalMany_many: "{{count}} de nouveaux messages",
|
|
3040
|
+
arrivalMany_other: "{{count}} nouveaux messages",
|
|
3041
|
+
arrivalRepeats: "{{count}} nouveaux messages sur ce sujet",
|
|
3042
|
+
arrivalRepeats_one: "{{count}} nouveau message sur ce sujet",
|
|
3043
|
+
arrivalRepeats_many: "{{count}} de nouveaux messages sur ce sujet",
|
|
3044
|
+
arrivalRepeats_other: "{{count}} nouveaux messages sur ce sujet",
|
|
3045
|
+
arrivalOpen: "Afficher",
|
|
3046
|
+
toastEnabled: "Alertes dans l'application",
|
|
3047
|
+
desktopEnabled: "Notifications du bureau",
|
|
3048
|
+
desktopBlocked: "Bloqué. Autorisez les notifications pour ce site dans les paramètres du navigateur.",
|
|
3049
|
+
desktopUnsupported: "Ce navigateur ne prend pas en charge les notifications du bureau.",
|
|
2750
3050
|
emptyUnread: "Tout est lu",
|
|
2751
3051
|
filterUnread: "Non lus",
|
|
2752
3052
|
filterAll: "Tous",
|
|
@@ -2760,63 +3060,19 @@ const fr = {
|
|
|
2760
3060
|
thankYouTitle: "Merci !",
|
|
2761
3061
|
thankYouMessage: "Votre soumission a été reçue avec succès.",
|
|
2762
3062
|
redirecting: "Redirection dans {{seconds}} seconde(s)…",
|
|
3063
|
+
redirectPending: "Redirection…",
|
|
2763
3064
|
unavailableTitle: "Formulaire non disponible",
|
|
2764
3065
|
unavailableDescription: "Aucun formulaire public n'est disponible à cette URL. Assurez-vous que la vue sous-jacente a le partage anonyme activé.",
|
|
2765
3066
|
tryDemo: "Essayer la démo",
|
|
2766
3067
|
retry: "Réessayer",
|
|
2767
3068
|
loading: "Chargement du formulaire…",
|
|
2768
3069
|
requiredHint: "* Champ obligatoire",
|
|
3070
|
+
requiredFields: "Champs obligatoires : {{fields}}",
|
|
2769
3071
|
consentLabelDefault: "J'accepte la politique de confidentialité et consens au traitement de mes données pour cette demande.",
|
|
2770
3072
|
consentLink: "Politique de confidentialité",
|
|
2771
3073
|
consentRequired: "Veuillez accepter la politique de confidentialité pour continuer.",
|
|
2772
3074
|
rateLimited: "Prenez un moment pour vérifier vos réponses avant d'envoyer.",
|
|
2773
3075
|
redirectBlocked: "Soumission acceptée, mais l'URL de redirection a été bloquée pour des raisons de sécurité.",
|
|
2774
|
-
demo: {
|
|
2775
|
-
contactTitle: "Nous contacter",
|
|
2776
|
-
contactDescription: "Parlez-nous de votre projet et un représentant commercial vous contactera dans un jour ouvrable.",
|
|
2777
|
-
supportTitle: "Soumettre une demande d'assistance",
|
|
2778
|
-
supportDescription: "Décrivez-nous le problème — notre équipe répondra dans un jour ouvrable.",
|
|
2779
|
-
thankYouSalesTitle: "Merci — nous avons reçu votre message !",
|
|
2780
|
-
thankYouSalesMessage: "Un représentant commercial vous contactera dans un jour ouvrable.",
|
|
2781
|
-
thankYouSupportTitle: "C'est bon — votre demande est en file d'attente.",
|
|
2782
|
-
thankYouSupportMessage: "Un ingénieur d'assistance vous fera un suivi bientôt. Sauvegardez cette page si vous avez des captures d'écran supplémentaires.",
|
|
2783
|
-
field: {
|
|
2784
|
-
firstName: "Prénom",
|
|
2785
|
-
lastName: "Nom",
|
|
2786
|
-
email: "E-mail professionnel",
|
|
2787
|
-
phone: "Téléphone",
|
|
2788
|
-
jobTitle: "Titre du poste",
|
|
2789
|
-
company: "Entreprise",
|
|
2790
|
-
website: "Site web",
|
|
2791
|
-
industry: "Secteur",
|
|
2792
|
-
companySize: "Taille de l'entreprise",
|
|
2793
|
-
howCanWeHelp: "Comment pouvons-nous vous aider ?",
|
|
2794
|
-
subject: "Sujet",
|
|
2795
|
-
description: "Description",
|
|
2796
|
-
issueType: "Type de problème",
|
|
2797
|
-
priority: "Priorité",
|
|
2798
|
-
},
|
|
2799
|
-
industry: {
|
|
2800
|
-
technology: "Technologie",
|
|
2801
|
-
software: "Logiciel / SaaS",
|
|
2802
|
-
finance: "Finance",
|
|
2803
|
-
healthcare: "Santé",
|
|
2804
|
-
retail: "Commerce de détail",
|
|
2805
|
-
other: "Autre",
|
|
2806
|
-
},
|
|
2807
|
-
issueType: {
|
|
2808
|
-
question: "Question",
|
|
2809
|
-
problem: "Problème",
|
|
2810
|
-
bug: "Bug",
|
|
2811
|
-
feature_request: "Demande de fonctionnalité",
|
|
2812
|
-
},
|
|
2813
|
-
priority: {
|
|
2814
|
-
low: "Faible",
|
|
2815
|
-
medium: "Moyen",
|
|
2816
|
-
high: "Élevé",
|
|
2817
|
-
critical: "Critique",
|
|
2818
|
-
},
|
|
2819
|
-
},
|
|
2820
3076
|
},
|
|
2821
3077
|
connectAgent: {
|
|
2822
3078
|
disabled: {
|
|
@@ -2862,6 +3118,9 @@ const fr = {
|
|
|
2862
3118
|
noImportableFields: "Cet objet n'a aucun champ importable.",
|
|
2863
3119
|
schemaReadFailed: "Impossible de lire le schéma de l'objet.",
|
|
2864
3120
|
imported: "{{count}} ligne(s) importée(s) dans {{object}}.",
|
|
3121
|
+
imported_one: "{{count}} ligne importée dans {{object}}.",
|
|
3122
|
+
imported_many: "{{count}} de lignes importées dans {{object}}.",
|
|
3123
|
+
imported_other: "{{count}} lignes importées dans {{object}}.",
|
|
2865
3124
|
importFrom: "Importer les lignes réelles depuis",
|
|
2866
3125
|
into: "vers",
|
|
2867
3126
|
opening: "Ouverture…",
|
|
@@ -2875,6 +3134,78 @@ const fr = {
|
|
|
2875
3134
|
openProduction: "Ouvrir la production",
|
|
2876
3135
|
manageEnvironments: "Gérer les environnements",
|
|
2877
3136
|
},
|
|
3137
|
+
cloudPlanStatus: {
|
|
3138
|
+
current: "Offre actuelle",
|
|
3139
|
+
},
|
|
3140
|
+
ai: {
|
|
3141
|
+
nlQuery: {
|
|
3142
|
+
placeholder: "Posez une question sur vos données…",
|
|
3143
|
+
ask: "Demander",
|
|
3144
|
+
results: "Résultats",
|
|
3145
|
+
match: "Correspondance : {{percent}}",
|
|
3146
|
+
simulatedSummary: "Résultats pour : {{query}}",
|
|
3147
|
+
noResults: "Aucun enregistrement correspondant",
|
|
3148
|
+
recentQueries: "Requêtes récentes",
|
|
3149
|
+
},
|
|
3150
|
+
formAssist: {
|
|
3151
|
+
title: "Suggestions de l’IA",
|
|
3152
|
+
suggestionCount: "{{count}} suggestions",
|
|
3153
|
+
suggestionCount_one: "{{count}} suggestion",
|
|
3154
|
+
suggestionCount_many: "{{count}} de suggestions",
|
|
3155
|
+
suggestionCount_other: "{{count}} suggestions",
|
|
3156
|
+
applyAll: "Tout appliquer",
|
|
3157
|
+
confidence: "Confiance : {{percent}}",
|
|
3158
|
+
appliedCount: "{{count}} suggestions appliquées",
|
|
3159
|
+
appliedCount_one: "{{count}} suggestion appliquée",
|
|
3160
|
+
appliedCount_many: "{{count}} de suggestions appliquées",
|
|
3161
|
+
appliedCount_other: "{{count}} suggestions appliquées",
|
|
3162
|
+
},
|
|
3163
|
+
recommendations: {
|
|
3164
|
+
title: "Recommandations",
|
|
3165
|
+
generating: "Génération des recommandations…",
|
|
3166
|
+
empty: "Aucune recommandation disponible",
|
|
3167
|
+
},
|
|
3168
|
+
},
|
|
3169
|
+
aiApprovals: {
|
|
3170
|
+
title: "Approbations IA",
|
|
3171
|
+
description: "Actions proposées par un agent IA qui nécessitent une validation humaine avant exécution.",
|
|
3172
|
+
tabPending: "En attente",
|
|
3173
|
+
tabDecided: "Traitées",
|
|
3174
|
+
tabAll: "Toutes",
|
|
3175
|
+
statusPending: "En attente",
|
|
3176
|
+
statusApproved: "Approuvée",
|
|
3177
|
+
statusExecuted: "Exécutée",
|
|
3178
|
+
statusFailed: "Échouée",
|
|
3179
|
+
statusRejected: "Rejetée",
|
|
3180
|
+
colTool: "Outil",
|
|
3181
|
+
colAction: "Action",
|
|
3182
|
+
colObject: "Objet",
|
|
3183
|
+
colStatus: "Statut",
|
|
3184
|
+
colProposed: "Proposée",
|
|
3185
|
+
colDecision: "Décision",
|
|
3186
|
+
emptyTitle: "Aucune action en attente",
|
|
3187
|
+
emptyDescription: "Lorsque l'IA propose une action sensible, elle apparaît ici pour validation.",
|
|
3188
|
+
view: "Voir",
|
|
3189
|
+
approve: "Approuver",
|
|
3190
|
+
reject: "Rejeter",
|
|
3191
|
+
working: "En cours…",
|
|
3192
|
+
approveAndExecute: "Approuver et exécuter",
|
|
3193
|
+
outcomeApprove: "Approbation de {{id}} : {{message}}",
|
|
3194
|
+
outcomeReject: "Rejet de {{id}} : {{message}}",
|
|
3195
|
+
outcomeExecuteFailed: "L'action a échoué pendant son exécution",
|
|
3196
|
+
drawerFallbackTitle: "Action en attente",
|
|
3197
|
+
drawerSubtitle: "Outil {{tool}} sur {{object}}",
|
|
3198
|
+
fieldProposedBy: "Proposée par",
|
|
3199
|
+
fieldDecidedBy: "Décidée par",
|
|
3200
|
+
fieldConversation: "Conversation",
|
|
3201
|
+
fieldToolInput: "Entrée de l'outil",
|
|
3202
|
+
fieldResult: "Résultat",
|
|
3203
|
+
fieldError: "Erreur",
|
|
3204
|
+
fieldRejectionReason: "Motif du rejet",
|
|
3205
|
+
rejectTitle: "Rejeter cette action ?",
|
|
3206
|
+
rejectBody: "Le motif est renvoyé à l'IA pour qu'elle ajuste sa prochaine réponse.",
|
|
3207
|
+
rejectPlaceholder: "Motif facultatif (par ex. « Identifiant d'enregistrement erroné — merci de confirmer d'abord avec l'utilisateur. »)",
|
|
3208
|
+
},
|
|
2878
3209
|
aiModelStatus: {
|
|
2879
3210
|
summary: "Créer / Demander utilise {{conversational}} ({{conversationalSource}}) ; structuré utilise {{structured}} ({{structuredSource}}).",
|
|
2880
3211
|
summaryRouting: "Politique de routage : offres gratuites → {{free}}, offres payantes → {{paid}}.",
|
|
@@ -2892,6 +3223,114 @@ const fr = {
|
|
|
2892
3223
|
sourceInherits: "identique à build/ask",
|
|
2893
3224
|
sourcePinned: "figé par {{source}}",
|
|
2894
3225
|
},
|
|
3226
|
+
// objectui#7254 — the AI copilot's tool cards. Three families, all of them
|
|
3227
|
+
// English-only until this landed while every other string on the same screen
|
|
3228
|
+
// was translated:
|
|
3229
|
+
//
|
|
3230
|
+
// `tool.*` — one entry per PLATFORM-PROVIDED tool name
|
|
3231
|
+
// (@objectstack/spec `PLATFORM_TOOLS_BY_PACKAGE`, the
|
|
3232
|
+
// closed registry those runtimes are conformance-tested
|
|
3233
|
+
// against). `humanizeToolName` looks each up as
|
|
3234
|
+
// `chatbot.tool.<tool_name>` and falls back to its English
|
|
3235
|
+
// title-caser for a custom / third-party tool, so a name
|
|
3236
|
+
// missing here is degraded, never broken. The `en` values
|
|
3237
|
+
// are deliberately EQUAL to what that title-caser produces:
|
|
3238
|
+
// adding the key must not silently reword the English UI.
|
|
3239
|
+
// `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
|
|
3240
|
+
// set for both surfaces (they used to carry separate
|
|
3241
|
+
// tables and disagreed on casing).
|
|
3242
|
+
// `plan.*` — the "N objects · N views · N dashboards" strip. Plural
|
|
3243
|
+
// FAMILIES: one slot per CLDR category the pack's language
|
|
3244
|
+
// selects (objectui#11432), plus the base key for a call
|
|
3245
|
+
// made without a count. `all-locales-key-parity.test.ts`
|
|
3246
|
+
// derives the required slots from `Intl.PluralRules`.
|
|
3247
|
+
//
|
|
3248
|
+
// objectui#7481 — five `tool.*` entries are NEWER than the registry above:
|
|
3249
|
+
// `get_authoring_rules` (cloud#1837), `load_tools`, `open_record`, `test_flow`
|
|
3250
|
+
// and `toggle_flow` are registered by cloud `service-ai-studio` but the pinned
|
|
3251
|
+
// `@objectstack/spec` snapshot does not list them yet. They are kept here on
|
|
3252
|
+
// purpose: a step label the user reads must not wait on a pin bump. When the
|
|
3253
|
+
// pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
|
|
3254
|
+
// against the registry instead of against its own hand-held list.
|
|
3255
|
+
chatbot: {
|
|
3256
|
+
tool: {
|
|
3257
|
+
aggregate_data: "Agréger les données",
|
|
3258
|
+
get_record: "Lire un enregistrement",
|
|
3259
|
+
query_data: "Interroger les données",
|
|
3260
|
+
query_records: "Interroger les enregistrements",
|
|
3261
|
+
search_knowledge: "Rechercher dans la base de connaissances",
|
|
3262
|
+
visualize_data: "Créer un graphique",
|
|
3263
|
+
add_field: "Ajouter un champ",
|
|
3264
|
+
apply_blueprint: "Construire l’application",
|
|
3265
|
+
apply_edit: "Appliquer les modifications",
|
|
3266
|
+
create_metadata: "Créer des métadonnées",
|
|
3267
|
+
create_object: "Créer un objet",
|
|
3268
|
+
create_package: "Créer un paquet",
|
|
3269
|
+
create_seed: "Générer des données d’exemple",
|
|
3270
|
+
delete_field: "Supprimer un champ",
|
|
3271
|
+
describe_metadata: "Consulter les métadonnées",
|
|
3272
|
+
describe_object: "Consulter la structure de l’objet",
|
|
3273
|
+
get_active_package: "Lire le paquet actif",
|
|
3274
|
+
get_authoring_rules: "Lire les règles d'écriture",
|
|
3275
|
+
get_metadata_schema: "Lire le schéma des métadonnées",
|
|
3276
|
+
get_package: "Lire le paquet",
|
|
3277
|
+
list_metadata: "Lister les métadonnées",
|
|
3278
|
+
list_objects: "Lister les objets",
|
|
3279
|
+
list_packages: "Lister les paquets",
|
|
3280
|
+
load_tools: "Charger les outils",
|
|
3281
|
+
modify_field: "Modifier un champ",
|
|
3282
|
+
open_record: "Ouvrir la fiche",
|
|
3283
|
+
propose_blueprint: "Concevoir le plan de l’application",
|
|
3284
|
+
set_active_package: "Changer le paquet actif",
|
|
3285
|
+
suggest_builder: "Proposer une méthode de construction",
|
|
3286
|
+
test_flow: "Tester le flux",
|
|
3287
|
+
todo_write: "Noter les tâches",
|
|
3288
|
+
toggle_flow: "Activer ou désactiver le flux",
|
|
3289
|
+
update_metadata: "Mettre à jour les métadonnées",
|
|
3290
|
+
validate_expression: "Valider l’expression",
|
|
3291
|
+
verify_build: "Vérifier la construction",
|
|
3292
|
+
},
|
|
3293
|
+
toolState: {
|
|
3294
|
+
agentActivity: "Activité de l’agent",
|
|
3295
|
+
pending: "En attente",
|
|
3296
|
+
running: "En cours",
|
|
3297
|
+
awaitingApproval: "En attente d’approbation",
|
|
3298
|
+
responded: "Répondu",
|
|
3299
|
+
completed: "Terminé",
|
|
3300
|
+
error: "Erreur",
|
|
3301
|
+
denied: "Refusé",
|
|
3302
|
+
failed: "Échec",
|
|
3303
|
+
},
|
|
3304
|
+
plan: {
|
|
3305
|
+
countObjects: "{{count}} objets",
|
|
3306
|
+
countObjects_one: "{{count}} objet",
|
|
3307
|
+
countObjects_many: "{{count}} d'objets",
|
|
3308
|
+
countObjects_other: "{{count}} objets",
|
|
3309
|
+
countViews: "{{count}} vues",
|
|
3310
|
+
countViews_one: "{{count}} vue",
|
|
3311
|
+
countViews_many: "{{count}} de vues",
|
|
3312
|
+
countViews_other: "{{count}} vues",
|
|
3313
|
+
countDashboards: "{{count}} tableaux de bord",
|
|
3314
|
+
countDashboards_one: "{{count}} tableau de bord",
|
|
3315
|
+
countDashboards_many: "{{count}} de tableaux de bord",
|
|
3316
|
+
countDashboards_other: "{{count}} tableaux de bord",
|
|
3317
|
+
countSeedData: "données d’exemple",
|
|
3318
|
+
},
|
|
3319
|
+
build: {
|
|
3320
|
+
building: "Création de {{app}}…",
|
|
3321
|
+
built: "Création de {{app}} terminée",
|
|
3322
|
+
appFallback: "votre application",
|
|
3323
|
+
addingSampleData: "ajout de données d’exemple",
|
|
3324
|
+
group: {
|
|
3325
|
+
object: "Objets",
|
|
3326
|
+
view: "Vues",
|
|
3327
|
+
dashboard: "Tableaux de bord",
|
|
3328
|
+
app: "Application",
|
|
3329
|
+
seed: "Données d’exemple",
|
|
3330
|
+
},
|
|
3331
|
+
moreArtifacts: "+{{n}} autres",
|
|
3332
|
+
},
|
|
3333
|
+
},
|
|
2895
3334
|
chatbotError: {
|
|
2896
3335
|
title: "Échec de la réponse",
|
|
2897
3336
|
fallbackDetail: "Une erreur s'est produite. Veuillez réessayer.",
|
|
@@ -2929,6 +3368,7 @@ const fr = {
|
|
|
2929
3368
|
retry: "Réessayer",
|
|
2930
3369
|
errors: {
|
|
2931
3370
|
expired: "La demande a expiré avant d'être approuvée. Recommencez.",
|
|
3371
|
+
accessDenied: "La demande de connexion a été refusée. Recommencez.",
|
|
2932
3372
|
bindFailed: "Échec de la liaison.",
|
|
2933
3373
|
deviceCodeFailed: "Échec de la demande de code d'appareil.",
|
|
2934
3374
|
},
|
|
@@ -2971,7 +3411,7 @@ const fr = {
|
|
|
2971
3411
|
},
|
|
2972
3412
|
title: "Marketplace d'applications",
|
|
2973
3413
|
subtitle: "Parcourez les applications approuvées publiées dans le catalogue ObjectStack. Cliquez sur une application pour voir les détails et l'installer dans l'un de vos environnements.",
|
|
2974
|
-
searchPlaceholder: "Rechercher des applications par nom ou ID
|
|
3414
|
+
searchPlaceholder: "Rechercher des applications par nom ou ID d'application…",
|
|
2975
3415
|
searchAria: "Rechercher des applications du marketplace",
|
|
2976
3416
|
installed: "Installé",
|
|
2977
3417
|
installedCount: "Installées ({{count}})",
|
|
@@ -2994,10 +3434,16 @@ const fr = {
|
|
|
2994
3434
|
installedBadge: "Installé v{{version}}",
|
|
2995
3435
|
load: {
|
|
2996
3436
|
failed: "Impossible de charger le marketplace",
|
|
2997
|
-
|
|
3437
|
+
failedHintConfigured: "Ce runtime accède à la place de marché via le plan de contrôle situé à {{url}}. Vérifiez qu'il est en ligne et joignable depuis ici.",
|
|
3438
|
+
failedHintSameOrigin: "Ce runtime sert lui-même le catalogue de la place de marché. Vérifiez qu'il est en ligne.",
|
|
2998
3439
|
packageFailed: "Impossible de charger le paquet",
|
|
2999
3440
|
notFound: "Introuvable.",
|
|
3000
3441
|
},
|
|
3442
|
+
disabled: {
|
|
3443
|
+
title: "La place de marché des applications est désactivée",
|
|
3444
|
+
description: "Aucune place de marché n'est configurée pour ce runtime : il n'y a donc rien à parcourir ni à installer ici.",
|
|
3445
|
+
hint: "C'est l'état attendu lorsque le runtime démarre avec <code>OS_CLOUD_URL=off</code> (ou <code>none</code>, <code>local</code>, <code>disabled</code>). Pour activer la place de marché, faites pointer <code>OS_CLOUD_URL</code> vers un plan de contrôle puis redémarrez le runtime.",
|
|
3446
|
+
},
|
|
3001
3447
|
detail: {
|
|
3002
3448
|
homepage: "Page d'accueil",
|
|
3003
3449
|
installedV: "Installé · v{{version}}",
|
|
@@ -3013,10 +3459,17 @@ const fr = {
|
|
|
3013
3459
|
purgeSampleData: 'Supprimer les données d\'exemple',
|
|
3014
3460
|
purgeConfirm: 'Supprimer tous les enregistrements d\'exemple créés par ce paquet ? Les enregistrements ajoutés par l\'utilisateur ne seront PAS touchés.',
|
|
3015
3461
|
purgeSuccess: '{{count}} enregistrement(s) d\'exemple supprimé(s).',
|
|
3462
|
+
purgeSuccess_one: "{{count}} enregistrement d'exemple supprimé.",
|
|
3463
|
+
purgeSuccess_many: "{{count}} d'enregistrements d'exemple supprimés.",
|
|
3464
|
+
purgeSuccess_other: "{{count}} enregistrements d'exemple supprimés.",
|
|
3016
3465
|
purgeNoData: 'Aucun enregistrement d\'exemple à supprimer.',
|
|
3017
3466
|
reseedQueued: 'Les données d\'exemple seront rechargées au prochain accès à l\'environnement.',
|
|
3018
3467
|
reseedLocalSuccess: 'Données d\'exemple rechargées : {{inserted}} ajoutés, {{updated}} mis à jour.',
|
|
3019
3468
|
reseedPartialErrors: '({{count}} enregistrement(s) n\'ont pas pu être écrits)',
|
|
3469
|
+
reseedPartialErrors_one: "({{count}} enregistrement n'a pas pu être écrit)",
|
|
3470
|
+
reseedPartialErrors_many: "({{count}} d'enregistrements n'ont pas pu être écrits)",
|
|
3471
|
+
reseedPartialErrors_other: "({{count}} enregistrements n'ont pas pu être écrits)",
|
|
3472
|
+
sampleDataKernelUnavailable: 'Ce plan de contrôle n\'a pas de noyau d\'environnement : les données d\'exemple ne peuvent donc être ni rechargées ni supprimées ici. Faites-le depuis le runtime propre à l\'environnement.',
|
|
3020
3473
|
updateAvailable: 'Mise à jour disponible',
|
|
3021
3474
|
},
|
|
3022
3475
|
action: {
|
|
@@ -3069,7 +3522,8 @@ const fr = {
|
|
|
3069
3522
|
reviewed: "Examiné et approuvé",
|
|
3070
3523
|
unreviewed: "Pas encore examiné",
|
|
3071
3524
|
signed: "Signé",
|
|
3072
|
-
grantsIntro: "
|
|
3525
|
+
grantsIntro: "Ce paquet demande :",
|
|
3526
|
+
notEnforced: "Cette liste est enregistrée à l'installation et reconfirmée si une version ultérieure en demande davantage, mais l'exécution ne restreint pas encore le paquet à cette liste.",
|
|
3073
3527
|
services: "Services de la plateforme",
|
|
3074
3528
|
hooks: "Hooks de cycle de vie",
|
|
3075
3529
|
network: "Accès réseau",
|
|
@@ -3108,30 +3562,21 @@ const fr = {
|
|
|
3108
3562
|
storage: "Stockage",
|
|
3109
3563
|
other: "Autre",
|
|
3110
3564
|
},
|
|
3111
|
-
pricing: {
|
|
3112
|
-
free: "Gratuit",
|
|
3113
|
-
freemium: "Freemium",
|
|
3114
|
-
paid: "Payant",
|
|
3115
|
-
subscription: "Abonnement",
|
|
3116
|
-
"usage-based": "À l'utilisation",
|
|
3117
|
-
"contact-sales": "Contacter les ventes",
|
|
3118
|
-
},
|
|
3119
3565
|
relativeTime: {
|
|
3120
3566
|
today: "aujourd'hui",
|
|
3121
3567
|
daysAgo: "il y a {{count}}j",
|
|
3122
3568
|
monthsAgo: "il y a {{count}} mois",
|
|
3569
|
+
monthsAgo_one: "il y a {{count}} mois",
|
|
3570
|
+
monthsAgo_many: "il y a {{count}} mois",
|
|
3571
|
+
monthsAgo_other: "il y a {{count}} mois",
|
|
3123
3572
|
yearsAgo: "il y a {{count}} ans",
|
|
3573
|
+
yearsAgo_one: "il y a {{count}} an",
|
|
3574
|
+
yearsAgo_many: "il y a {{count}} ans",
|
|
3575
|
+
yearsAgo_other: "il y a {{count}} ans",
|
|
3124
3576
|
},
|
|
3125
3577
|
},
|
|
3126
|
-
approvals: {
|
|
3127
|
-
approve: 'Approuver',
|
|
3128
|
-
reject: 'Rejeter',
|
|
3129
|
-
comment: 'Commentaire (facultatif)',
|
|
3130
|
-
approveSuccess: 'Approuvé',
|
|
3131
|
-
rejectSuccess: 'Rejeté',
|
|
3132
|
-
rejectConfirm: 'Rejeter cette demande d’approbation ?',
|
|
3133
|
-
},
|
|
3134
3578
|
approvalsInbox: {
|
|
3579
|
+
recordUnresolvable: 'Cet enregistrement ne peut pas être ouvert',
|
|
3135
3580
|
loadMore: 'Charger plus',
|
|
3136
3581
|
loadingMore: 'Chargement…',
|
|
3137
3582
|
loadedOf: '{{loaded}} sur {{total}} chargées',
|
|
@@ -3150,6 +3595,9 @@ const fr = {
|
|
|
3150
3595
|
requestInfoSent: 'Renvoyée au demandeur pour complément',
|
|
3151
3596
|
remindBtn: 'Relancer',
|
|
3152
3597
|
remindSuccess: 'Relance envoyée à {{count}} approbateur(s)',
|
|
3598
|
+
remindSuccess_one: 'Relance envoyée à {{count}} approbateur',
|
|
3599
|
+
remindSuccess_many: "Relance envoyée à {{count}} d'approbateurs",
|
|
3600
|
+
remindSuccess_other: 'Relance envoyée à {{count}} approbateurs',
|
|
3153
3601
|
remindThrottled: 'Une relance a déjà été envoyée récemment — réessayez plus tard.',
|
|
3154
3602
|
replyPlaceholder: 'Répondre sur cette demande…',
|
|
3155
3603
|
slaRemaining: 'SLA : {{dur}} restants',
|
|
@@ -3166,6 +3614,9 @@ const fr = {
|
|
|
3166
3614
|
progressApprovals: 'Approbations — {{got}} sur {{need}}',
|
|
3167
3615
|
progressGroups: 'Avancement des visas — {{got}} sur {{need}} groupes',
|
|
3168
3616
|
progressEligible: '{{count}} approbateur(s) éligible(s)',
|
|
3617
|
+
progressEligible_one: '{{count}} approbateur éligible',
|
|
3618
|
+
progressEligible_many: "{{count}} d'approbateurs éligibles",
|
|
3619
|
+
progressEligible_other: '{{count}} approbateurs éligibles',
|
|
3169
3620
|
progressBar: 'Avancement de la décision',
|
|
3170
3621
|
declaredActions: 'Actions',
|
|
3171
3622
|
attachmentChip: 'Pièce jointe',
|
|
@@ -3197,6 +3648,9 @@ const fr = {
|
|
|
3197
3648
|
filterCount: '{{shown}} sur {{total}}',
|
|
3198
3649
|
selected: 'sélectionnées',
|
|
3199
3650
|
actionableCount: '({{count}} actionnables)',
|
|
3651
|
+
actionableCount_one: '({{count}} actionnable)',
|
|
3652
|
+
actionableCount_many: '({{count}} actionnables)',
|
|
3653
|
+
actionableCount_other: '({{count}} actionnables)',
|
|
3200
3654
|
selectAll: 'Tout sélectionner',
|
|
3201
3655
|
selectRow: 'Sélectionner la demande',
|
|
3202
3656
|
colRequest: 'Demande',
|
|
@@ -3237,12 +3691,19 @@ const fr = {
|
|
|
3237
3691
|
submittedAgo: 'Soumise {{when}}',
|
|
3238
3692
|
completedAt: 'Terminée {{when}}',
|
|
3239
3693
|
waitingOn: 'En attente de',
|
|
3694
|
+
approverNameSeparator: ', ',
|
|
3695
|
+
approverUnstaffed: '{{seat}} (poste actuellement vacant)',
|
|
3240
3696
|
history: 'Activité',
|
|
3241
3697
|
noActions: 'Aucune action pour le moment.',
|
|
3242
3698
|
actSubmit: 'Soumise',
|
|
3243
3699
|
actApprove: 'Approuvée',
|
|
3244
3700
|
actReject: 'Rejetée',
|
|
3245
3701
|
actRecall: 'Retirée',
|
|
3702
|
+
overrideActionLabel: '{{action}} (dérogation)',
|
|
3703
|
+
overrideNotice: "Vous n'occupez aucun poste d'approbateur à cette étape. En continuant, votre dérogation d'administrateur sera utilisée : l'étape est finalisée immédiatement et tout approbateur n'ayant pas encore statué est contourné. La décision est enregistrée comme une dérogation d'administrateur.",
|
|
3704
|
+
overrideNoticeWho: "Vous n'occupez aucun poste d'approbateur à cette étape. En continuant, votre dérogation d'administrateur sera utilisée : l'étape est finalisée immédiatement et les approbateurs n'ayant pas encore statué sont contournés — {{who}}. La décision est enregistrée comme une dérogation d'administrateur.",
|
|
3705
|
+
viaOverrideChip: 'Dérogation administrateur',
|
|
3706
|
+
viaOverrideHint: "L'auteur n'occupait aucun poste d'approbateur à cette étape — admis par la voie de dérogation administrateur.",
|
|
3246
3707
|
rawData: 'Données brutes (JSON)',
|
|
3247
3708
|
copy: 'Copier',
|
|
3248
3709
|
copied: 'Copié',
|
|
@@ -3263,11 +3724,23 @@ const fr = {
|
|
|
3263
3724
|
approveN: 'Approuver {{count}}',
|
|
3264
3725
|
rejectN: 'Rejeter {{count}}',
|
|
3265
3726
|
bulkApproveTitle: 'Approuver {{count}} demandes ?',
|
|
3727
|
+
bulkApproveTitle_one: 'Approuver {{count}} demande ?',
|
|
3728
|
+
bulkApproveTitle_many: 'Approuver {{count}} de demandes ?',
|
|
3729
|
+
bulkApproveTitle_other: 'Approuver {{count}} demandes ?',
|
|
3266
3730
|
bulkApproveBody: 'Chaque demande est approuvée avec votre identité et son flux continue sur la branche d\'approbation.',
|
|
3267
3731
|
bulkRejectTitle: 'Rejeter {{count}} demandes ?',
|
|
3732
|
+
bulkRejectTitle_one: 'Rejeter {{count}} demande ?',
|
|
3733
|
+
bulkRejectTitle_many: 'Rejeter {{count}} de demandes ?',
|
|
3734
|
+
bulkRejectTitle_other: 'Rejeter {{count}} demandes ?',
|
|
3268
3735
|
bulkRejectBody: 'Les demandes sélectionnées seront rejetées et leurs demandeurs notifiés.',
|
|
3269
3736
|
bulkApproved: '{{count}} demandes approuvées',
|
|
3737
|
+
bulkApproved_one: '{{count}} demande approuvée',
|
|
3738
|
+
bulkApproved_many: '{{count}} de demandes approuvées',
|
|
3739
|
+
bulkApproved_other: '{{count}} demandes approuvées',
|
|
3270
3740
|
bulkRejected: '{{count}} demandes rejetées',
|
|
3741
|
+
bulkRejected_one: '{{count}} demande rejetée',
|
|
3742
|
+
bulkRejected_many: '{{count}} de demandes rejetées',
|
|
3743
|
+
bulkRejected_other: '{{count}} demandes rejetées',
|
|
3271
3744
|
bulkPartial: '{{ok}} réussies, {{fail}} échouées : {{which}}',
|
|
3272
3745
|
rejectOneTitle: 'Rejeter « {{title}} » ?',
|
|
3273
3746
|
rejectOneBody: 'La demande sera rejetée et le demandeur notifié.',
|
|
@@ -3292,8 +3765,17 @@ const fr = {
|
|
|
3292
3765
|
alreadyDecided: 'Cette demande a déjà été traitée. Actualisez la liste.',
|
|
3293
3766
|
justNow: 'à l\'instant',
|
|
3294
3767
|
minutesAgo: 'il y a {{count}} min',
|
|
3768
|
+
minutesAgo_one: 'il y a {{count}} min',
|
|
3769
|
+
minutesAgo_many: 'il y a {{count}} min',
|
|
3770
|
+
minutesAgo_other: 'il y a {{count}} min',
|
|
3295
3771
|
hoursAgo: 'il y a {{count}} h',
|
|
3772
|
+
hoursAgo_one: 'il y a {{count}} h',
|
|
3773
|
+
hoursAgo_many: 'il y a {{count}} h',
|
|
3774
|
+
hoursAgo_other: 'il y a {{count}} h',
|
|
3296
3775
|
daysAgo: 'il y a {{count}} jours',
|
|
3776
|
+
daysAgo_one: 'il y a {{count}} jour',
|
|
3777
|
+
daysAgo_many: 'il y a {{count}} jours',
|
|
3778
|
+
daysAgo_other: 'il y a {{count}} jours',
|
|
3297
3779
|
},
|
|
3298
3780
|
preview: {
|
|
3299
3781
|
empty: {
|
|
@@ -3328,7 +3810,18 @@ const fr = {
|
|
|
3328
3810
|
detailNone: 'Aucune différence détectée — le brouillon correspond à la version publiée.',
|
|
3329
3811
|
detailChangedKeys: 'Également modifié :',
|
|
3330
3812
|
confirmNote: 'La publication libère atomiquement les {{count}} brouillons en attente de ce paquet.',
|
|
3813
|
+
confirmNote_one: 'La publication libère atomiquement {{count}} brouillon en attente de ce paquet.',
|
|
3814
|
+
confirmNote_many: 'La publication libère atomiquement les {{count}} de brouillons en attente de ce paquet.',
|
|
3815
|
+
confirmNote_other: 'La publication libère atomiquement les {{count}} brouillons en attente de ce paquet.',
|
|
3331
3816
|
publishConfirm: 'Tout publier',
|
|
3817
|
+
// [`7a90afdf9`] Pre-publish security-posture findings, shown next to
|
|
3818
|
+
// the confirm button so a refusal the door would issue is read BEFORE
|
|
3819
|
+
// the click rather than as a toast after the batch rolled back.
|
|
3820
|
+
securityBlockTitle: 'La publication sera refusée — {{count}} élément(s) nécessitent d’abord une décision',
|
|
3821
|
+
securityBlockTitle_one: 'La publication sera refusée — {{count}} élément nécessite d’abord une décision',
|
|
3822
|
+
securityBlockTitle_many: 'La publication sera refusée — {{count}} d’éléments nécessitent d’abord une décision',
|
|
3823
|
+
securityBlockTitle_other: 'La publication sera refusée — {{count}} éléments nécessitent d’abord une décision',
|
|
3824
|
+
securityBlockWhere: 'Corrigez-le sur l’objet dans Paramètres → Partage d’enregistrements, puis publiez à nouveau.',
|
|
3332
3825
|
},
|
|
3333
3826
|
// ADR-0045 — the materialized-but-unlisted app banner
|
|
3334
3827
|
// (UnpublishedAppBar.tsx), sibling of draftBar above.
|
|
@@ -3352,7 +3845,7 @@ const fr = {
|
|
|
3352
3845
|
revertLabel: 'Modification annulée',
|
|
3353
3846
|
applyLabel: 'Modification de génération',
|
|
3354
3847
|
revert: 'annulation',
|
|
3355
|
-
items: '
|
|
3848
|
+
items: 'Éléments : {{count}}',
|
|
3356
3849
|
revertAction: 'Annuler',
|
|
3357
3850
|
reverted: 'Annulé — la modification a été retirée.',
|
|
3358
3851
|
revertFailed: 'Échec de l\'annulation',
|
|
@@ -3375,22 +3868,33 @@ const fr = {
|
|
|
3375
3868
|
noResults: "Aucun résultat",
|
|
3376
3869
|
searchField: "Rechercher {{label}}…",
|
|
3377
3870
|
enterId: "Saisir l'ID {{label}}",
|
|
3871
|
+
addValue: "Saisir une valeur, puis Entrée",
|
|
3872
|
+
removeValue: "Supprimer {{value}}",
|
|
3873
|
+
rangeStart: "De",
|
|
3874
|
+
rangeEnd: "À",
|
|
3378
3875
|
operators: {
|
|
3379
3876
|
equals: "Égal à",
|
|
3380
|
-
|
|
3877
|
+
not_equals: "Différent de",
|
|
3381
3878
|
contains: "Contient",
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3879
|
+
icontains: "Contient (ignorer la casse)",
|
|
3880
|
+
not_contains: "Ne contient pas",
|
|
3881
|
+
is_empty: "Est vide",
|
|
3882
|
+
is_not_empty: "N'est pas vide",
|
|
3883
|
+
greater_than: "Supérieur à",
|
|
3884
|
+
less_than: "Inférieur à",
|
|
3885
|
+
greater_than_or_equal: "Supérieur ou égal",
|
|
3886
|
+
less_than_or_equal: "Inférieur ou égal",
|
|
3389
3887
|
before: "Avant",
|
|
3390
3888
|
after: "Après",
|
|
3391
3889
|
between: "Entre",
|
|
3392
3890
|
in: "Dans",
|
|
3393
|
-
|
|
3891
|
+
not_in: "Pas dans",
|
|
3892
|
+
starts_with: "Commence par",
|
|
3893
|
+
ends_with: "Se termine par",
|
|
3894
|
+
is_null: "Est null",
|
|
3895
|
+
is_not_null: "N'est pas null",
|
|
3896
|
+
exists: "Est défini",
|
|
3897
|
+
notExists: "N'est pas défini",
|
|
3394
3898
|
},
|
|
3395
3899
|
},
|
|
3396
3900
|
sortBuilder: {
|
|
@@ -3404,7 +3908,9 @@ const fr = {
|
|
|
3404
3908
|
},
|
|
3405
3909
|
collaboration: {
|
|
3406
3910
|
commentCount: "{{count}} commentaires",
|
|
3407
|
-
|
|
3911
|
+
commentCount_one: "{{count}} commentaire",
|
|
3912
|
+
commentCount_many: "{{count}} de commentaires",
|
|
3913
|
+
commentCount_other: "{{count}} commentaires",
|
|
3408
3914
|
resolvedSuffix: " · Résolu",
|
|
3409
3915
|
sortComments: "Trier les commentaires",
|
|
3410
3916
|
sortOldest: "Plus anciens",
|
|
@@ -3413,11 +3919,22 @@ const fr = {
|
|
|
3413
3919
|
reopen: "Rouvrir",
|
|
3414
3920
|
justNow: "à l'instant",
|
|
3415
3921
|
minutesAgo: "il y a {{count}} min",
|
|
3922
|
+
minutesAgo_one: "il y a {{count}} min",
|
|
3923
|
+
minutesAgo_many: "il y a {{count}} min",
|
|
3924
|
+
minutesAgo_other: "il y a {{count}} min",
|
|
3416
3925
|
hoursAgo: "il y a {{count}} h",
|
|
3926
|
+
hoursAgo_one: "il y a {{count}} h",
|
|
3927
|
+
hoursAgo_many: "il y a {{count}} h",
|
|
3928
|
+
hoursAgo_other: "il y a {{count}} h",
|
|
3417
3929
|
daysAgo: "il y a {{count}} j",
|
|
3930
|
+
daysAgo_one: "il y a {{count}} j",
|
|
3931
|
+
daysAgo_many: "il y a {{count}} j",
|
|
3932
|
+
daysAgo_other: "il y a {{count}} j",
|
|
3418
3933
|
edited: "(modifié)",
|
|
3419
3934
|
reactionCount: "{{count}} réactions",
|
|
3420
|
-
|
|
3935
|
+
reactionCount_one: "{{count}} réaction",
|
|
3936
|
+
reactionCount_many: "{{count}} de réactions",
|
|
3937
|
+
reactionCount_other: "{{count}} réactions",
|
|
3421
3938
|
addThumbsUp: "Ajouter un pouce levé",
|
|
3422
3939
|
reply: "Répondre",
|
|
3423
3940
|
reactThumbsUp: "Réagir avec un pouce levé",
|
|
@@ -3428,9 +3945,13 @@ const fr = {
|
|
|
3428
3945
|
commentPlaceholder: "Ajouter un commentaire… (utilisez @ pour mentionner)",
|
|
3429
3946
|
send: "Envoyer",
|
|
3430
3947
|
presentUserCount: "{{count}} utilisateurs présents",
|
|
3431
|
-
|
|
3948
|
+
presentUserCount_one: "{{count}} utilisateur présent",
|
|
3949
|
+
presentUserCount_many: "{{count}} d'utilisateurs présents",
|
|
3950
|
+
presentUserCount_other: "{{count}} utilisateurs présents",
|
|
3432
3951
|
moreUserCount: "{{count}} autres utilisateurs",
|
|
3433
|
-
|
|
3952
|
+
moreUserCount_one: "{{count}} autre utilisateur",
|
|
3953
|
+
moreUserCount_many: "{{count}} d'autres utilisateurs",
|
|
3954
|
+
moreUserCount_other: "{{count}} autres utilisateurs",
|
|
3434
3955
|
userStatusTitle: "{{name}} ({{status}})",
|
|
3435
3956
|
statusActive: "actif",
|
|
3436
3957
|
statusIdle: "inactif",
|
|
@@ -3438,6 +3959,18 @@ const fr = {
|
|
|
3438
3959
|
},
|
|
3439
3960
|
wizard: {
|
|
3440
3961
|
missingRequired: "Veuillez renseigner les champs obligatoires : {{fields}}",
|
|
3962
|
+
back: "Retour",
|
|
3963
|
+
submitting: "Envoi…",
|
|
3964
|
+
stepFallback: "Étape {{n}}",
|
|
3965
|
+
progressLabel: "Progression",
|
|
3966
|
+
emptyStep: "Aucun champ configuré pour cette étape",
|
|
3967
|
+
},
|
|
3968
|
+
flowRunner: {
|
|
3969
|
+
title: 'Saisie',
|
|
3970
|
+
submitting: 'Envoi…',
|
|
3971
|
+
saveAndContinue: 'Enregistrer et continuer',
|
|
3972
|
+
nextStep: 'Enregistré — étape suivante',
|
|
3973
|
+
completed: 'Flux « {{flow}} » terminé',
|
|
3441
3974
|
},
|
|
3442
3975
|
appManagement: {
|
|
3443
3976
|
title: "Applications",
|
|
@@ -3488,5 +4021,49 @@ const fr = {
|
|
|
3488
4021
|
bulkOperationFailed: "Échec de l'opération groupée : {{reason}}",
|
|
3489
4022
|
},
|
|
3490
4023
|
},
|
|
4024
|
+
// objectui#6301 — Configuration › Automatisation des packages (ADR-0126
|
|
4025
|
+
// §7.4). Terminologie du pack : `common.package` = Package,
|
|
4026
|
+
// `flowRunner.completed` = Flux, guillemets « … ». ⛔ Aucune formulation
|
|
4027
|
+
// d'ascendance ou de dérive dans ce groupe (§9).
|
|
4028
|
+
packagedAutomation: {
|
|
4029
|
+
title: "Automatisation des packages",
|
|
4030
|
+
subtitle: "Flux et actions fournis par les packages installés. Désactivez-en un pour ce déploiement, ou clonez un flux sous un nouveau nom pour le personnaliser. La modification se fait dans Studio.",
|
|
4031
|
+
refresh: "Actualiser",
|
|
4032
|
+
flowsHeading: "Flux des packages",
|
|
4033
|
+
actionsHeading: "Actions des packages",
|
|
4034
|
+
colFlow: "Flux",
|
|
4035
|
+
colActivation: "Activation",
|
|
4036
|
+
colActions: "Actions",
|
|
4037
|
+
toggleLabel: "Activation de {{label}}",
|
|
4038
|
+
on: "Activé",
|
|
4039
|
+
off: "Désactivé",
|
|
4040
|
+
clone: "Cloner",
|
|
4041
|
+
cloneTitle: "Cloner le flux du package",
|
|
4042
|
+
cloneBody: "La copie reprend toute la définition et exige un nouveau nom machine et un nouveau libellé. Modifiez la copie dans Studio.",
|
|
4043
|
+
cloneName: "Nouveau nom machine",
|
|
4044
|
+
cloneLabel: "Nouveau libellé",
|
|
4045
|
+
cancel: "Annuler",
|
|
4046
|
+
cloneConfirm: "Créer le clone",
|
|
4047
|
+
cloneCreated: "Flux « {{name}} » créé.",
|
|
4048
|
+
emptyTitle: "Aucun flux de package",
|
|
4049
|
+
emptyBody: "Aucun package installé ne fournit de flux d'automatisation sur ce déploiement. Les flux que vous créez vous-même se trouvent dans Studio.",
|
|
4050
|
+
loadFailed: "Impossible de charger l'automatisation des packages.",
|
|
4051
|
+
toggleFailedHttp: "Impossible de modifier l'activation (HTTP {{status}}).",
|
|
4052
|
+
toggleFailed: "Impossible de modifier l'activation.",
|
|
4053
|
+
cloneFailedHttp: "Impossible de cloner ce flux (HTTP {{status}}).",
|
|
4054
|
+
cloneFailed: "Impossible de cloner ce flux.",
|
|
4055
|
+
actionsSubtitle: "Actions fournies par les packages installés. Désactivez-en une pour ce déploiement et elle cesse de s'exécuter partout où elle est proposée. Vous pouvez toujours créer votre propre action à côté, dans Studio.",
|
|
4056
|
+
colAction: "Action",
|
|
4057
|
+
colObject: "Objet",
|
|
4058
|
+
actionToggleLabel: "Activation de {{label}} sur {{object}}",
|
|
4059
|
+
actionsEmptyTitle: "Aucune action de package",
|
|
4060
|
+
actionsEmptyBody: "Aucun package installé ne déclare d'action sur ce déploiement. Les actions que vous créez vous-même se trouvent dans Studio.",
|
|
4061
|
+
actionsLoadFailed: "Impossible de charger les actions des packages.",
|
|
4062
|
+
},
|
|
4063
|
+
element: {
|
|
4064
|
+
number: {
|
|
4065
|
+
noObject: "Aucun objet indiqué : définissez object ou dataSource.object.",
|
|
4066
|
+
},
|
|
4067
|
+
},
|
|
3491
4068
|
};
|
|
3492
4069
|
export default fr;
|