@object-ui/i18n 17.5.0 → 17.6.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.
@@ -82,6 +82,7 @@ const fr = {
82
82
  removeFromFavorites: "Retirer des favoris",
83
83
  loading: "Chargement…",
84
84
  save: "Enregistrer",
85
+ discard: "Abandonner",
85
86
  cancel: "Annuler",
86
87
  delete: "Supprimer",
87
88
  edit: "Modifier",
@@ -261,6 +262,14 @@ const fr = {
261
262
  tags: {
262
263
  placeholder: "Saisissez puis appuyez sur Entrée pour ajouter…",
263
264
  },
265
+ // objectui#4028 — `AddressField`'s five sub-labels.
266
+ address: {
267
+ street: "Adresse (rue)",
268
+ city: "Ville",
269
+ state: "État / Province",
270
+ postalCode: "Code postal",
271
+ country: "Pays",
272
+ },
264
273
  textarea: {
265
274
  characterCount: "Nombre de caractères : {{count}} sur {{max}}",
266
275
  charactersRemaining: "Caractères restants : {{count}}",
@@ -895,6 +904,10 @@ const fr = {
895
904
  attachmentDownloadDenied: "Vous n'avez pas accès pour télécharger cette pièce jointe.",
896
905
  attachmentAuthRequired: "Veuillez vous connecter pour télécharger cette pièce jointe.",
897
906
  attachmentPermissionDenied: "Vous n'avez pas la permission de faire cela.",
907
+ attachmentsAccessDenied: "Vous n'avez pas accès à ces pièces jointes.",
908
+ attachmentsLoadFailed: "Impossible de charger les pièces jointes de cet enregistrement.",
909
+ attachmentsApiUnavailable: "La liste des pièces jointes n'est pas disponible sur cet objet.",
910
+ retryLoadAttachments: "Réessayer",
898
911
  unifiedDiff: "Vue unifiée",
899
912
  sideBySideDiff: "Vue côte à côte",
900
913
  noChanges: "Aucune modification",
@@ -946,6 +959,8 @@ const fr = {
946
959
  writeStrippedTitle: "Enregistré — mais certains champs n'ont pas été appliqués",
947
960
  writeStrippedReadonly: "En lecture seule, donc non appliqué : {{fields}}",
948
961
  writeStrippedByState: "Non modifiable dans l'état actuel de cet enregistrement, donc non appliqué : {{fields}}",
962
+ writeStrippedPrimaryKey: "L'identifiant de l'enregistrement ne peut pas être modifié lors d'un enregistrement, donc non appliqué : {{fields}}",
963
+ writeStrippedUnknownReason: "Non appliqué par le serveur : {{fields}}",
949
964
  approvalPendingEditable: "En approbation · modifiable",
950
965
  approvalPendingTooltip: "Cet enregistrement a une demande d'approbation en attente ; cette étape autorise encore la modification",
951
966
  approvalProgress: "Approbations — {{got}} sur {{need}}",
@@ -958,6 +973,13 @@ const fr = {
958
973
  cancelApprovalTooltipUnlocked: "Annuler la demande d'approbation en attente",
959
974
  cancelApprovalFailed: "Échec de l'annulation de l'approbation",
960
975
  cancelApprovalUnavailable: "L'annulation des approbations n'est pas prise en charge par cette source de données",
976
+ pathLabel: "Parcours de l'enregistrement",
977
+ pathStageCompleted: '{{stage}}, terminée',
978
+ pathStageCurrent: '{{stage}}, étape actuelle',
979
+ pathStageUpcoming: '{{stage}}, à venir',
980
+ pathStageLostCurrent: '{{stage}}, perdue, étape actuelle',
981
+ pathStageLostUpcoming: '{{stage}}, perdue, non atteinte',
982
+ pathStageWonUpcoming: '{{stage}}, étape objectif, non atteinte',
961
983
  linkCopied: "Lien copié dans le presse-papiers",
962
984
  linkCopyFailed: "Impossible de copier le lien",
963
985
  cancel: "Annuler",
@@ -1016,66 +1038,6 @@ const fr = {
1016
1038
  invalidCoordinates: "{{count}} enregistrement avec des coordonnées manquantes ou invalides exclu de la carte.",
1017
1039
  invalidCoordinatesPlural: "{{count}} enregistrements avec des coordonnées manquantes ou invalides exclus de la carte.",
1018
1040
  },
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",
1078
- },
1079
1041
  dashboard: {
1080
1042
  noRows: "Aucune ligne",
1081
1043
  loading: "Chargement…",
@@ -1115,6 +1077,105 @@ const fr = {
1115
1077
  total: "Total",
1116
1078
  noDataAvailable: "Aucune donnée disponible",
1117
1079
  noDataSourceFor: "Aucune source de données pour",
1080
+ config: {
1081
+ breadcrumb: {
1082
+ dashboard: "Tableau de bord",
1083
+ configuration: "Configuration",
1084
+ widget: "Widget",
1085
+ chart: "Graphique",
1086
+ table: "Tableau",
1087
+ pivotTable: "Tableau croisé",
1088
+ },
1089
+ section: {
1090
+ general: "Général",
1091
+ layout: "Disposition",
1092
+ data: "Données",
1093
+ dataBinding: "Liaison de données",
1094
+ appearance: "Apparence",
1095
+ },
1096
+ field: {
1097
+ title: "Titre",
1098
+ description: "Description",
1099
+ columns: "Colonnes",
1100
+ gap: "Espacement",
1101
+ rowHeight: "Hauteur de ligne (px)",
1102
+ autoRefresh: "Actualisation automatique",
1103
+ showDescription: "Afficher la description",
1104
+ theme: "Thème",
1105
+ widgetType: "Type de widget",
1106
+ colorVariant: "Variante de couleur",
1107
+ dataset: "Jeu de données",
1108
+ dimensions: "Dimensions",
1109
+ values: "Valeurs",
1110
+ width: "Largeur (colonnes)",
1111
+ height: "Hauteur (lignes)",
1112
+ },
1113
+ placeholder: {
1114
+ dashboardTitle: "Titre du tableau de bord",
1115
+ dashboardDescription: "Résumé court affiché sous le titre",
1116
+ widgetTitle: "Titre du widget",
1117
+ widgetDescription: "Description du widget",
1118
+ datasetName: "Nom du jeu de données",
1119
+ selectDataset: "Sélectionner un jeu de données…",
1120
+ searchDatasets: "Rechercher des jeux de données…",
1121
+ addDimension: "Ajouter une dimension…",
1122
+ addMeasure: "Ajouter une mesure…",
1123
+ searchMembers: "Rechercher…",
1124
+ },
1125
+ empty: {
1126
+ datasets: "Aucun jeu de données trouvé.",
1127
+ dimensions: "Aucune dimension sélectionnée.",
1128
+ measures: "Aucune mesure sélectionnée.",
1129
+ nothingToAdd: "Plus rien à ajouter.",
1130
+ },
1131
+ help: {
1132
+ dataset: "Le jeu de données de la couche sémantique auquel ce widget est lié (ADR-0021).",
1133
+ dimensions: "Grouper/diviser les valeurs selon ces dimensions du jeu de données.",
1134
+ dimensionsPivot: "Champs de groupement/division. La dernière dimension se déploie en colonnes.",
1135
+ values: "Mesures du jeu de données à afficher (au moins une).",
1136
+ },
1137
+ action: {
1138
+ add: "Ajouter",
1139
+ remove: "Supprimer {{name}}",
1140
+ },
1141
+ refresh: {
1142
+ off: "Désactivé",
1143
+ every30s: "Toutes les 30 s",
1144
+ every1m: "Toutes les minutes",
1145
+ every5m: "Toutes les 5 min",
1146
+ every15m: "Toutes les 15 min",
1147
+ every30m: "Toutes les 30 min",
1148
+ every1h: "Toutes les heures",
1149
+ },
1150
+ themeOption: {
1151
+ light: "Clair",
1152
+ dark: "Sombre",
1153
+ auto: "Automatique",
1154
+ },
1155
+ widgetType: {
1156
+ metric: "Indicateur",
1157
+ bar: "Graphique à barres",
1158
+ horizontalBar: "Barres horizontales",
1159
+ line: "Graphique en courbes",
1160
+ pie: "Graphique circulaire",
1161
+ donut: "Graphique en anneau",
1162
+ area: "Graphique en aires",
1163
+ scatter: "Nuage de points",
1164
+ funnel: "Entonnoir",
1165
+ table: "Tableau",
1166
+ pivot: "Tableau croisé",
1167
+ },
1168
+ color: {
1169
+ default: "Par défaut",
1170
+ blue: "Bleu",
1171
+ teal: "Sarcelle",
1172
+ orange: "Orange",
1173
+ purple: "Violet",
1174
+ success: "Succès",
1175
+ warning: "Avertissement",
1176
+ danger: "Danger",
1177
+ },
1178
+ },
1118
1179
  trend: {
1119
1180
  vsLastQuarter: "vs. trimestre dernier",
1120
1181
  vsLastMonth: "vs. mois dernier",
@@ -1124,24 +1185,6 @@ const fr = {
1124
1185
  vsPreviousPeriod: "vs. période précédente",
1125
1186
  },
1126
1187
  },
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
1188
  appDesigner: {
1146
1189
  createApp: "Créer une application",
1147
1190
  editApp: "Modifier l'application",
@@ -1192,8 +1235,6 @@ const fr = {
1192
1235
  showSort: "Afficher le tri",
1193
1236
  appearance: "Apparence",
1194
1237
  rowHeight: "Hauteur de ligne",
1195
- stripedRows: "Lignes alternées",
1196
- bordered: "Avec bordure",
1197
1238
  livePreview: "Aperçu en direct",
1198
1239
  stepBasicDesc: "Nom, titre et mise en page",
1199
1240
  stepObjectsDesc: "Sélectionner les objets métier",
@@ -1307,7 +1348,6 @@ const fr = {
1307
1348
  unique: "Unique",
1308
1349
  readOnly: "Lecture seule",
1309
1350
  hidden: "Masqué",
1310
- indexed: "Indexé",
1311
1351
  externalId: "ID externe",
1312
1352
  trackHistory: "Suivre l'historique",
1313
1353
  defaultValue: "Valeur par défaut",
@@ -1381,6 +1421,13 @@ const fr = {
1381
1421
  passwordsDownload: "Télécharger le CSV",
1382
1422
  },
1383
1423
  ai: {
1424
+ pendingDrafts: {
1425
+ count: "{{count}} modification(s) ne sont pas encore publiée(s) — les utilisateurs ne peuvent pas les voir.",
1426
+ publish: "Publier",
1427
+ published: "Toutes les modifications en attente sont actives.",
1428
+ failed: "Échec de la publication.",
1429
+ publishedWithFindings: "Publié, mais les contrôles d'exécution ont signalé des problèmes : {{detail}}",
1430
+ },
1384
1431
  usage: {
1385
1432
  title: "Utilisation de l'IA",
1386
1433
  meterBuild: "Créer",
@@ -1516,6 +1563,11 @@ const fr = {
1516
1563
  changesConfirmed: "Confirmé",
1517
1564
  changesConfirm: "Confirmer",
1518
1565
  changesConfirmHint: "Répondez pour confirmer ou ajuster cette modification.",
1566
+ changesApplying: "Application…",
1567
+ changesApplied: "Appliqué",
1568
+ changesDrafted: "Enregistré comme brouillon",
1569
+ changesFailed: "Non appliqué",
1570
+ discussing: "Sujet : {{target}}",
1519
1571
  changeVerb: {
1520
1572
  createObject: "Créer un objet",
1521
1573
  addField: "Ajouter un champ",
@@ -1715,101 +1767,31 @@ const fr = {
1715
1767
  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
1768
  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
1769
  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
1770
  new: "Nouveau",
1725
1771
  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
1772
  toolbar: "Barre d'outils",
1733
- toolbarHint: "Recherche, filtre, tri, regroupement et bascule de densité",
1734
1773
  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
1774
  searchFields: "Rechercher des champs…",
1744
1775
  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
1776
  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
1777
  recordCount: "{{count}} enregistrements",
1767
- noDescription: "Aucune description",
1768
- none: "Aucun",
1769
- columnsConfigured: "{{count}} colonnes",
1770
1778
  save: "Enregistrer",
1771
1779
  discard: "Annuler",
1772
1780
  createView: "Créer une vue",
1773
1781
  newView: "Nouvelle vue",
1774
- typeOptions: "Options de type",
1775
1782
  groupByField: "Champ de regroupement",
1776
1783
  startDateField: "Champ de date de début",
1777
1784
  titleField: "Champ de titre",
1778
1785
  latitudeField: "Champ de latitude",
1779
1786
  longitudeField: "Champ de longitude",
1780
1787
  imageField: "Champ d'image",
1781
- dateField: "Champ de date",
1782
1788
  selectField: "Sélectionner un champ…",
1783
- gridOptionsHint: "La vue grille utilise les colonnes configurées ci-dessus.",
1784
1789
  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
1790
  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
1791
  import: "Importer",
1808
1792
  importTitle: "Importer depuis CSV",
1809
1793
  importedToast: "{{count}} ligne(s) importée(s).",
1810
1794
  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
1795
  createViewDesc: "Choisissez un type de vue et donnez-lui un nom. Tous les paramètres peuvent être modifiés ensuite.",
1814
1796
  cancel: "Annuler",
1815
1797
  create: "Créer",
@@ -1857,58 +1839,9 @@ const fr = {
1857
1839
  xAxisFieldHelp: "La dimension catégorielle ou temporelle.",
1858
1840
  yAxisField: "Champ axe Y",
1859
1841
  yAxisFieldHelp: "Le champ numérique à agréger.",
1860
- selectionMode: "Mode de sélection",
1861
- selectionNone: "Aucun",
1862
- selectionSingle: "Unique",
1863
- selectionMultiple: "Multiple",
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",
1893
1842
  ufTabs: "Onglets",
1894
- ufToggle: "Bascule",
1895
1843
  ufAddField: "+ Ajouter un champ de filtre…",
1896
- ufNoFields: "Aucun champ disponible",
1897
- ufAddTab: "+ Ajouter un onglet",
1898
- ufTabLabel: "Étiquette",
1899
1844
  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
1845
  },
1913
1846
  localeSwitcher: {
1914
1847
  label: "Langue",
@@ -2010,7 +1943,7 @@ const fr = {
2010
1943
  submitButton: "Envoyer le lien de réinitialisation",
2011
1944
  submittingButton: "Envoi en cours…",
2012
1945
  successTitle: "Vérifiez vos e-mails",
2013
- successDescription: "Nous avons envoyé un lien de réinitialisation du mot de passe à {{email}}. Veuillez vérifier votre boîte de réception.",
1946
+ successDescription: "Nous avons envoyé un lien de réinitialisation du mot de passe à {email}. Veuillez vérifier votre boîte de réception.",
2014
1947
  backToSignInText: "Retour à la connexion",
2015
1948
  rememberPasswordText: "Vous vous souvenez de votre mot de passe ?",
2016
1949
  signInText: "Se connecter",
@@ -2285,10 +2218,12 @@ const fr = {
2285
2218
  build: {
2286
2219
  title: "Créer une application",
2287
2220
  subtitle: "Partir de zéro — concevez les objets, formulaires, automatisations et interfaces.",
2221
+ 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
2222
  },
2289
2223
  template: {
2290
2224
  title: "Partir d'un modèle",
2291
2225
  subtitle: "Installez une application modèle depuis la place de marché et personnalisez-la.",
2226
+ 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
2227
  },
2293
2228
  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
2229
  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.",
@@ -2471,21 +2406,6 @@ const fr = {
2471
2406
  recordNotFound: "Enregistrement introuvable",
2472
2407
  recordNotFoundDescription: "L'enregistrement que vous recherchez n'existe pas ou a peut-être été supprimé.",
2473
2408
  },
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
2409
  actionDialog: {
2490
2410
  title: "Paramètres d'action",
2491
2411
  description: "Veuillez saisir les informations requises pour continuer.",
@@ -2585,17 +2505,17 @@ const fr = {
2585
2505
  },
2586
2506
  organizations: {
2587
2507
  create: "Créer un espace de travail",
2588
- mine: "Mes organisations",
2589
- title: "Organisations",
2590
- heading: "Vos organisations",
2591
- subtitle: "Sélectionnez une organisation pour continuer ou créez-en une nouvelle.",
2592
- searchPlaceholder: "Rechercher une organisation",
2593
- new: "Nouvelle organisation",
2594
- current: "Organisation actuelle",
2508
+ mine: "Mes espaces de travail",
2509
+ title: "Espaces de travail",
2510
+ heading: "Vos espaces de travail",
2511
+ subtitle: "Sélectionnez un espace de travail pour continuer ou créez-en un nouveau.",
2512
+ searchPlaceholder: "Rechercher un espace de travail",
2513
+ new: "Nouvel espace de travail",
2514
+ current: "Espace de travail actuel",
2595
2515
  manage: "Gérer",
2596
- emptyTitle: "Aucune organisation pour le moment",
2597
- emptyDescription: "Créez votre première organisation pour commencer.",
2598
- noMatches: "Aucune organisation ne correspond à votre recherche.",
2516
+ emptyTitle: "Aucun espace de travail pour le moment",
2517
+ emptyDescription: "Créez votre premier espace de travail pour commencer.",
2518
+ noMatches: "Aucun espace de travail ne correspond à votre recherche.",
2599
2519
  },
2600
2520
  organization: {
2601
2521
  roles: {
@@ -2724,6 +2644,9 @@ const fr = {
2724
2644
  declined: "Invitation refusée",
2725
2645
  declineFailed: "Impossible de refuser l'invitation",
2726
2646
  },
2647
+ current: {
2648
+ label: "Organisation actuelle",
2649
+ },
2727
2650
  switcher: {
2728
2651
  label: "Changer d'organisation",
2729
2652
  groupLabel: "Organisation de travail",
@@ -2771,52 +2694,6 @@ const fr = {
2771
2694
  consentRequired: "Veuillez accepter la politique de confidentialité pour continuer.",
2772
2695
  rateLimited: "Prenez un moment pour vérifier vos réponses avant d'envoyer.",
2773
2696
  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
2697
  },
2821
2698
  connectAgent: {
2822
2699
  disabled: {
@@ -2929,6 +2806,7 @@ const fr = {
2929
2806
  retry: "Réessayer",
2930
2807
  errors: {
2931
2808
  expired: "La demande a expiré avant d'être approuvée. Recommencez.",
2809
+ accessDenied: "La demande de connexion a été refusée. Recommencez.",
2932
2810
  bindFailed: "Échec de la liaison.",
2933
2811
  deviceCodeFailed: "Échec de la demande de code d'appareil.",
2934
2812
  },
@@ -2994,10 +2872,16 @@ const fr = {
2994
2872
  installedBadge: "Installé v{{version}}",
2995
2873
  load: {
2996
2874
  failed: "Impossible de charger le marketplace",
2997
- failedHint: "Par défaut, ce runtime pointe vers le cloud public ObjectStack. Assurez-vous que le runtime est en ligne.",
2875
+ 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.",
2876
+ failedHintSameOrigin: "Ce runtime sert lui-même le catalogue de la place de marché. Vérifiez qu'il est en ligne.",
2998
2877
  packageFailed: "Impossible de charger le paquet",
2999
2878
  notFound: "Introuvable.",
3000
2879
  },
2880
+ disabled: {
2881
+ title: "La place de marché des applications est désactivée",
2882
+ description: "Aucune place de marché n'est configurée pour ce runtime : il n'y a donc rien à parcourir ni à installer ici.",
2883
+ 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.",
2884
+ },
3001
2885
  detail: {
3002
2886
  homepage: "Page d'accueil",
3003
2887
  installedV: "Installé · v{{version}}",
@@ -3237,12 +3121,19 @@ const fr = {
3237
3121
  submittedAgo: 'Soumise {{when}}',
3238
3122
  completedAt: 'Terminée {{when}}',
3239
3123
  waitingOn: 'En attente de',
3124
+ approverNameSeparator: ', ',
3125
+ approverUnstaffed: '{{seat}} (poste actuellement vacant)',
3240
3126
  history: 'Activité',
3241
3127
  noActions: 'Aucune action pour le moment.',
3242
3128
  actSubmit: 'Soumise',
3243
3129
  actApprove: 'Approuvée',
3244
3130
  actReject: 'Rejetée',
3245
3131
  actRecall: 'Retirée',
3132
+ overrideActionLabel: '{{action}} (dérogation)',
3133
+ 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.",
3134
+ 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.",
3135
+ viaOverrideChip: 'Dérogation administrateur',
3136
+ viaOverrideHint: "L'auteur n'occupait aucun poste d'approbateur à cette étape — admis par la voie de dérogation administrateur.",
3246
3137
  rawData: 'Données brutes (JSON)',
3247
3138
  copy: 'Copier',
3248
3139
  copied: 'Copié',
@@ -3329,6 +3220,11 @@ const fr = {
3329
3220
  detailChangedKeys: 'Également modifié :',
3330
3221
  confirmNote: 'La publication libère atomiquement les {{count}} brouillons en attente de ce paquet.',
3331
3222
  publishConfirm: 'Tout publier',
3223
+ // [objectui#5418] Pre-publish security-posture findings, shown next to
3224
+ // the confirm button so a refusal the door would issue is read BEFORE
3225
+ // the click rather than as a toast after the batch rolled back.
3226
+ securityBlockTitle: 'La publication sera refusée — {{count}} élément(s) nécessitent d’abord une décision',
3227
+ securityBlockWhere: 'Corrigez-le sur l’objet dans Paramètres → Partage d’enregistrements, puis publiez à nouveau.',
3332
3228
  },
3333
3229
  // ADR-0045 — the materialized-but-unlisted app banner
3334
3230
  // (UnpublishedAppBar.tsx), sibling of draftBar above.
@@ -3375,10 +3271,15 @@ const fr = {
3375
3271
  noResults: "Aucun résultat",
3376
3272
  searchField: "Rechercher {{label}}…",
3377
3273
  enterId: "Saisir l'ID {{label}}",
3274
+ addValue: "Saisir une valeur, puis Entrée",
3275
+ removeValue: "Supprimer {{value}}",
3276
+ rangeStart: "De",
3277
+ rangeEnd: "À",
3378
3278
  operators: {
3379
3279
  equals: "Égal à",
3380
3280
  notEquals: "Différent de",
3381
3281
  contains: "Contient",
3282
+ containsCaseInsensitive: "Contient (ignorer la casse)",
3382
3283
  notContains: "Ne contient pas",
3383
3284
  isEmpty: "Est vide",
3384
3285
  isNotEmpty: "N'est pas vide",
@@ -3391,6 +3292,12 @@ const fr = {
3391
3292
  between: "Entre",
3392
3293
  in: "Dans",
3393
3294
  notIn: "Pas dans",
3295
+ startsWith: "Commence par",
3296
+ endsWith: "Se termine par",
3297
+ isNull: "Est null",
3298
+ isNotNull: "N'est pas null",
3299
+ exists: "Est défini",
3300
+ notExists: "N'est pas défini",
3394
3301
  },
3395
3302
  },
3396
3303
  sortBuilder: {
@@ -3439,6 +3346,13 @@ const fr = {
3439
3346
  wizard: {
3440
3347
  missingRequired: "Veuillez renseigner les champs obligatoires : {{fields}}",
3441
3348
  },
3349
+ flowRunner: {
3350
+ title: 'Saisie',
3351
+ submitting: 'Envoi…',
3352
+ saveAndContinue: 'Enregistrer et continuer',
3353
+ nextStep: 'Enregistré — étape suivante',
3354
+ completed: 'Flux « {{flow}} » terminé',
3355
+ },
3442
3356
  appManagement: {
3443
3357
  title: "Applications",
3444
3358
  subtitle: "Gérer toutes les applications configurées",