From 109586b8bfdef8a46ae13a55a194da2a40cdff3f Mon Sep 17 00:00:00 2001 From: Bhargav Date: Fri, 30 Oct 2026 11:45:09 +0000 Subject: [PATCH] fix(i18n): polish French save, PromQL and search labels (#15472) --- web/src/locales/languages/fr-FR.json | 110 +++++++++++++-------------- web/src/locales/menuTerms.spec.ts | 4 +- 2 files changed, 58 insertions(+), 56 deletions(-) diff --git a/web/src/locales/languages/fr-FR.json b/web/src/locales/languages/fr-FR.json index 079d711cd9..b45f8d45bb 100644 --- a/web/src/locales/languages/fr-FR.json +++ b/web/src/locales/languages/fr-FR.json @@ -64,7 +64,7 @@ "noPatterns": { "title": "Aucun motif n'a été trouvé", "description": "Essayez d'augmenter la plage de temps ou de sélectionner un autre flux contenant davantage de données de journal. L'extraction de motifs fonctionne mieux avec au moins 1 000 journaux.", - "logsAnalyzed": "Seuls {count} logs ont été analysés." + "logsAnalyzed": "Seuls {count} journaux ont été analysés." }, "noStreamSelected": { "title": "Sélectionnez un stream pour commencer", @@ -1358,7 +1358,7 @@ "scannedSoFar": "{size} analysés", "resultsProgressLabel": "Progression de la recherche", "histogramTitleError": "Erreur lors de la génération du titre de l'histogramme.", - "selectLogStream": "Sélectionnez le flux de journaux", + "selectLogStream": "Sélectionnez le flux de logs", "searchInspect": "Rechercher Inspect", "vrlOnlyForTableWarning": "La fonction VRL n'est prise en charge que pour les graphiques tabulaires.", "customDownloadTitle": "Téléchargement personnalisé", @@ -2593,7 +2593,7 @@ "invalid": "Cet entonnoir enregistré n'est pas valide", "sqlTooLarge": "Le SQL de cet entonnoir dépasse 64 Ko, trop volumineux pour être enregistré. Utilisez moins d'étapes ou des étapes plus courtes.", "loadFailed": "Les entonnoirs enregistrés n'ont pas pu être chargés", - "saveFailed": "L'entonnoir enregistré n'a pas pu être sauvegardé", + "saveFailed": "L'entonnoir enregistré n'a pas pu être enregistré", "deleteFailed": "L'entonnoir enregistré n'a pas pu être supprimé", "unknownEvent": "Un événement nommé de cet entonnoir n'existe plus ; supprimez d'abord son étape", "needsTwoSteps": "Ajoutez au moins 2 étapes pour enregistrer un entonnoir", @@ -3188,7 +3188,7 @@ "confirmDeleteHead": "Supprimer un utilisateur", "confirmDeleteMsg": "Voulez-vous vraiment supprimer l’utilisateur {name} ?", "cancel": "Annuler", - "save": "Sauver", + "save": "Enregistrer", "ok": "Ok", "sendInvite": "Envoyer une invitation", "inviteByEmail": "Invitez par e-mail. Plusieurs e-mails séparés par un point-virgule (;) ou une virgule (,)", @@ -3962,7 +3962,7 @@ "updateOrganization": "Mettre à jour l'organisation", "makeBilledMember": "Ajouter cette organisation en tant que membre facturant de l'organisation actuelle.", "add": "Ajouter une organisation", - "save": "Sauver", + "save": "Enregistrer", "cancel": "Annuler", "search": "Rechercher une organisation", "id": "ID de l'organisation", @@ -4547,7 +4547,7 @@ "sqlQueryRequired": "Pipeline - {index} : la requête SQL est requise", "timezoneRequired": "Pipeline - {index} : le fuseau horaire est requis", "orgIdInvalid": "Pipeline - {index} : l'identifiant de l'organisation est obligatoire, doit exister dans la liste des organisations et doit être égal à {orgId} ", - "functionNameRequired": "Pipeline - {index}, Fonction-{counter} : le nom de la fonction est requis et doit soit exister dans cette organisation, soit être inclus dans le fichier d'export", + "functionNameRequired": "Pipeline - {index}, Function-{counter} : le nom de la fonction est requis et doit soit exister dans cette organisation, soit être inclus dans le fichier d'export", "functionCreated": "Pipeline - {index} : fonction « {name} » créée", "functionCreatedCopy": "Pipeline - {index} : la fonction « {name} » existe déjà avec une logique différente, « {copy} » a été créée", "functionReusedCopy": "Pipeline - {index} : la fonction « {name} » existe déjà avec une logique différente, la copie correspondante « {copy} » a été réutilisée", @@ -4737,14 +4737,14 @@ "value": "Valeur", "fieldRequired": "Ce champ est obligatoire !", "sqlQuery": "Requête SQL", - "promqlQuery": "Requête ProMQL", + "promqlQuery": "Requête PromQL", "output": "sortie", "validating": "Validation...", "validateAndClose": "Valider et fermer", "editPipelineJson": "Modifier le fichier Json du pipeline", "editPipelineJSON": "Modifier le JSON du pipeline", "savePipeline": "Enregistrer le pipeline", - "savePipelineConfirm": "Êtes-vous sûr de vouloir sauver ce pipeline, car cela n'a aucun impact ?", + "savePipelineConfirm": "Êtes-vous sûr de vouloir enregistrer ce pipeline, car cela n'a aucun impact ?", "sourceStreamTooltip": "Source : Stream Node", "sourceQueryTooltip": "Source : Query Node", "functionTooltip": "Nœud de fonction", @@ -4755,10 +4755,10 @@ "pipelineNameRequired": "Le nom du pipeline est obligatoire", "sourceNodeRequired": "Le nœud source est requis", "destinationNodeRequired": "Le nœud de destination est requis", - "connectAllNodes": "Veuillez connecter tous les nœuds avant de sauvegarder", + "connectAllNodes": "Veuillez connecter tous les nœuds avant d'enregistrer", "connectAllNodesShort": "Veuillez connecter tous les nœuds", "enrichmentTablesScheduledOnly": "Les tables d'enrichissement en tant que flux de destination ne sont disponibles que pour les pipelines planifiés", - "savingPipeline": "Sauver un pipeline...", + "savingPipeline": "Enregistrement du pipeline...", "pipelineUpdated": "Mise à jour réussie du pipeline", "pipelineSaved": "Pipeline enregistré avec succès", "errorSavingPipeline": "Erreur lors de l'enregistrement du pipeline", @@ -4770,7 +4770,7 @@ "chooseSource": "Choisir une source", "sourceStreamDesc": "Traiter les données en temps réel lors de leur ingestion dans un flux", "sourceQueryDesc": "Exécuter une requête selon un planning et traiter ses résultats", - "promqlOnlyForMetrics": "ProMQL n'est disponible que pour le type de flux de métriques", + "promqlOnlyForMetrics": "PromQL n'est disponible que pour le type de flux de métriques", "invalidCronExpression": "Expression cron non valide", "cronRequired": "L'expression cron est obligatoire", "destResourceNameInvalid": "Les caractères comme :, ?, /, # et les espaces ne sont pas autorisés.", @@ -4962,7 +4962,7 @@ "search": "Rechercher une fonction", "name": "Nom", "renameHint": "Cliquez pour renommer cette fonction", - "save": "Sauver", + "save": "Enregistrer", "jsfunction": "Fonction", "actions": "Des actions", "cancel": "Annuler", @@ -6539,7 +6539,7 @@ "noFavoritesTitle": "Aucun tableau de bord favori pour l'instant", "noFavoritesMessage": "Cliquez sur l'icône étoile sur n'importe quel tableau de bord pour le voir ici, dans tous les dossiers.", "moreActions": "Plus d'actions", - "save": "Sauver", + "save": "Enregistrer", "cancel": "Annuler", "delete": "Supprimer le tableau de bord", "deleteDashboardConfirmTitle": "Supprimer le tableau de bord", @@ -7032,7 +7032,7 @@ "searchAcross": "Recherche dans les dossiers", "folder": "Dossier", "folders": "Dossiers", - "searchFolder": "Dossier de recherche", + "searchFolder": "Rechercher un dossier", "folderIcon": "Icône", "folderIconAria": "Choisissez une icône de dossier", "deleteFolder": "Supprimer le dossier", @@ -7140,7 +7140,7 @@ "mapsMapType": "Type de carte", "tableAggregations": "Agrégations de tableaux", "tableCellDrilldownTooltip": "Explorer les journaux correspondants", - "promqlTableMode": "Mode Tableau ProMQL", + "promqlTableMode": "Mode Tableau PromQL", "visibleColumns": "Colonnes visibles", "hiddenColumns": "Colonnes masquées", "stickyFirstColumn": "Première colonne collante", @@ -7332,7 +7332,7 @@ "expandAllSections": "Développer toutes les sections", "collapseAllSections": "Réduire toutes les sections", "configSectionGeneral": "Général", - "configSectionPromqlTable": "Mode Tableau ProMQL", + "configSectionPromqlTable": "Mode Tableau PromQL", "configSectionGeographic": "Configuration géographique", "configSectionLegend": "Légende", "configSectionData": "Données", @@ -7354,7 +7354,7 @@ "valueMappingTo": "À", "valueMappingDisplayValue": "Valeur d'affichage", "valueMappingAddNew": "+ Ajouter un nouveau mappage", - "valueMappingApply": "Postulez", + "valueMappingApply": "Appliquer", "valueMappingTypeValue": "Égal à", "valueMappingTypeRange": "Entre", "valueMappingTypeRegex": "Correspond à l'expression régulière", @@ -7458,7 +7458,7 @@ "seriesStyleHideChart": "Graphique", "seriesStyleHideLegend": "Légende", "seriesStyleHideTooltip": "Info-bulle", - "configPanelSearchPlaceholder": "Configuration de recherche...", + "configPanelSearchPlaceholder": "Rechercher une configuration...", "configPanelNoResultsFound": "Aucun paramètre n'a été trouvé pour « {query} »", "intervalInputPlaceholder": "p. ex., {example}", "placeholderAll": "TOUS", @@ -7902,8 +7902,8 @@ "panelMoved": "Panneau déplacé avec succès !", "panelMoveFailed": "Échec du déplacement du panneau", "failedToFetchReports": "Échec de la récupération des rapports", - "failedToUpdateJson": "Échec de la mise à jour du JSON du tableau de bord : méthode de sauvegarde non disponible", - "failedToSaveChanges": "Échec de la sauvegarde des modifications du tableau de bord" + "failedToUpdateJson": "Échec de la mise à jour du JSON du tableau de bord : méthode d'enregistrement non disponible", + "failedToSaveChanges": "Échec de l'enregistrement des modifications du tableau de bord" }, "dynamicFunctionPopUp": { "property": "Propriété", @@ -8233,7 +8233,7 @@ "failedToCancelRunningQuery": "Échec de l'annulation de la requête en cours d'exécution", "failedToDownloadCsv": "Échec du téléchargement des données au format CSV", "failedToDownloadJson": "Échec du téléchargement des données au format JSON", - "failedToNavigateToLogs": "Échec de la navigation vers les journaux", + "failedToNavigateToLogs": "Échec de la navigation vers Logs", "invalidColumns": "Colonnes invalides", "noDataAvailableToDownload": "Aucune donnée disponible à télécharger", "noPermissionHomeDashboard": "Vous n'avez pas la permission de modifier le tableau de bord d'accueil", @@ -8653,7 +8653,7 @@ "singlequote": "Guillemets simples : {example}" }, "add": "Ajouter un panneau", - "save": "Sauver", + "save": "Enregistrer", "cancel": "Annuler", "name": "Nom du panel", "options": "Options", @@ -8710,7 +8710,7 @@ "valueFields": "Champs de valeur", "noData": "Aucune donnée", "logExplorer": { - "title": "Explorateur de logs", + "title": "Explorateur de Logs", "openInLogs": "Ouvrir dans Logs", "invalidParams": "Paramètres d'exploration invalides", "noEvents": "Aucun événement ne correspond à ce filtre", @@ -8865,7 +8865,7 @@ "emptyActionAlerts": "Afficher les règles d'alerte", "emptyActionAlertsDesc": "Passez en revue les alertes et les seuils configurés", "emptyActionLogs": "Explorez les journaux", - "emptyActionLogsDesc": "Recherchez et filtrez vos flux de journaux", + "emptyActionLogsDesc": "Recherchez et filtrez vos flux de logs", "emptyActionTraces": "Explorer les traces", "emptyActionTracesDesc": "Inspectez les traces distribuées et la latence des services", "anomalyDetectedTitle": "Anomalie détectée — {name}", @@ -9081,7 +9081,7 @@ "vrlParseJson": "Écrire VRL pour analyser le JSON à partir de mes journaux nginx", "regexRedact": "Générez un motif regex pour expurger les e-mails", "mapStreamSchema": "Mapper mon schéma de flux « par défaut »", - "promqlCpu": "Écrivez ProMQL pour les pods utilisant > 80 % du processeur", + "promqlCpu": "Écrivez PromQL pour les pods utilisant > 80 % du processeur", "datadogToO2": "Convertissez cette requête Datadog en OpenObserve SQL", "lastAlertFired": "Pourquoi ma dernière alerte a-t-elle été déclenchée ?" }, @@ -9828,7 +9828,7 @@ "frequencyHelp": "Entre 1 heure et 30 jours.", "window": "Fenêtre d'analyse", "windowHelp": "Période remontée par chaque exécution, entre 1 minute et 90 jours. Une fenêtre plus longue que la cadence fait se chevaucher les exécutions consécutives, qui signalent alors à nouveau les mêmes constats.", - "noConfig": "Cette organisation n'a pas encore de réglages de calibration des alertes. Les valeurs ci-dessous sont les valeurs par défaut enregistrées lors de votre première sauvegarde.", + "noConfig": "Cette organisation n'a pas encore de réglages de calibration des alertes. Les valeurs ci-dessous sont les valeurs par défaut enregistrées lors de votre premier enregistrement.", "warnGap": "S'exécute toutes les {every} mais ne remonte que sur {window} : la période entre les fenêtres n'est jamais analysée.", "warnStarved": "Une fenêtre de {window} est trop courte pour {rules} ; chaque exécution les écarte donc pour toutes les alertes.", "ruleNeeds": "{rule} (nécessite {duration})", @@ -10041,7 +10041,7 @@ "guidelinesLabel": "Directives :", "selectStreamGuideline": "Sélectionnez un flux existant dans la liste ou saisissez le nom pour en créer un nouveau", "enrichmentTablesTerm": "Enrichment_tables", - "enrichmentTablesDestinationNote": "comme flux de destination n'est disponible que pour les pipelines planifiés", + "enrichmentTablesDestinationNote": "comme flux de destination ne sont disponibles que pour les pipelines planifiés", "useCurlyBracesNote": "Utiliser des accolades", "configureStreamNameDynamicNote": "pour configurer dynamiquement le nom du flux, p. ex.", "staticTextBeforeAfterNote": ". Texte statique avant/après", @@ -10181,7 +10181,7 @@ "addConditions": "Ajouter des conditions", "addCondition": "Ajouter une condition", "sqlEditor": "Éditeur SQL", - "promqlEditor": "Éditeur ProMQL", + "promqlEditor": "Éditeur PromQL", "conditionOf": "de", "matchingTypeFound": "{type} correspondant trouvé", "matchingMetricsFound": "mesures correspondantes trouvées", @@ -10197,7 +10197,7 @@ "runQuery": "Exécuter une requête", "runQueryForOutput": "Cliquez sur Exécuter la requête pour voir le résultat", "applyVRLForOutput": "Cliquez sur Appliquer VRL pour voir la sortie combinée", - "save": "Sauver", + "save": "Enregistrer", "actions": "Des actions", "cancel": "Annuler", "delete": "Supprimer", @@ -11018,7 +11018,7 @@ "sql": "SQL", "rowsSeparator": "lignes ·", "sqlQuery": "Requête SQL", - "promqlQuery": "Requête ProMQL", + "promqlQuery": "Requête PromQL", "conditions": "Conditions", "copy": "Copier", "noCondition": "Aucune condition", @@ -13111,7 +13111,7 @@ "alerts": "Alertes ({count})", "slos": "SLO ({count})", "pipelines": "Pipelines planifiés ({count})", - "empty": "Aucun tableau de bord, aucune alerte, aucun SLO ni aucun pipeline planifié que vous pouvez voir n'utilise cette métrique.", + "empty": "Aucun tableau de bord, aucune alerte, aucun SLO ni aucun pipeline planifié que vous pouvez voir n'utilise cette métrique", "error": "Impossible de déterminer où cette métrique est utilisée", "unparsed": "{count} requête n'a pas pu être analysée et a été mise en correspondance par nom | {count} requêtes n'ont pas pu être analysées et ont été mises en correspondance par nom", "textMatch": "Correspondance par nom", @@ -13599,8 +13599,8 @@ "scrapeIntervalPositive": "L'intervalle de raclage doit être un nombre positif", "scrapeIntervalDescription": "L'intervalle de scrape est la fréquence, en secondes, à laquelle le système de surveillance collecte les métriques.", "maxSeriesPerQueryLabel": "Nombre maximum de séries par requête", - "maxSeriesPerQueryDescription": "Nombre maximum de séries pouvant être renvoyées à partir d'une seule requête ProMQL. Aide à prévenir le gel de l'interface utilisateur en cas de grands ensembles de résultats. Laissez ce champ vide pour utiliser la valeur par défaut du système (40 000).", - "maxSeriesPerQueryTooltip": "Lorsqu'une requête ProMQL telle que « count (metric) by (label) » renvoie trop de séries, elle peut geler l'interface utilisateur. Cette limite empêche cela. Définissez la valeur par défaut du système sur null ou spécifiez une valeur comprise entre 1 000 et 1 000 000.", + "maxSeriesPerQueryDescription": "Nombre maximum de séries pouvant être renvoyées à partir d'une seule requête PromQL. Aide à prévenir le gel de l'interface utilisateur en cas de grands ensembles de résultats. Laissez ce champ vide pour utiliser la valeur par défaut du système (40 000).", + "maxSeriesPerQueryTooltip": "Lorsqu'une requête PromQL telle que « count (metric) by (label) » renvoie trop de séries, elle peut geler l'interface utilisateur. Cette limite empêche cela. Définissez la valeur par défaut du système sur null ou spécifiez une valeur comprise entre 1 000 et 1 000 000.", "maxSeriesPerQueryValidation": "La valeur doit être comprise entre 1 000 et 1 000 000, ou laisser vide par défaut", "systemDefault": "défaut du système", "manageTheme": "Gérer le thème", @@ -14504,7 +14504,7 @@ "backToLogs": "Retour aux Logs", "openInTraces": "Ouvrir dans Traces", "loadingStream": "Chargement du flux...", - "noLogsAvailableForService": "Aucun log disponible pour ce service", + "noLogsAvailableForService": "Aucun journal disponible pour ce service", "noCorrelatedLogsFound": "Aucun log corrélé trouvé pour ce span", "spanHasNoLogsShowingTrace": "Ce span n'a aucun log. Affichage des logs pour toute la trace.", "noData": { @@ -14642,7 +14642,7 @@ "viewPretty": "Joli", "rail": { "slowestTurns": "Virages les plus lents", - "costHotspots": "Points chauds de coût", + "costHotspots": "Principaux postes de coût", "toolHotspots": "Hotspots d'outils", "call": "{n} appel | {n} appels", "usedIn": "Utilisé dans", @@ -15284,7 +15284,7 @@ "closewaitLabel": "Fermer Attendre", "waittimeLabel": "Temps d'attente", "applyFilter": "Appliquer des filtres", - "searchCluster": "Cluster de recherche", + "searchCluster": "Rechercher un cluster", "searchRegion": "Rechercher une région" }, "regex_patterns": { @@ -15411,7 +15411,7 @@ "allValues": "Toutes les valeurs", "loading": "Chargement de journaux corrélés...", "errorDetails": "Une erreur s'est produite lors de la récupération des données de log. Veuillez réessayer.", - "noData": "Aucun log trouvé", + "noData": "Aucun journal trouvé", "noDataDetails": "Aucun journal correspondant aux filtres de corrélation n'a été trouvé.", "unstableDimension": "Dimension instable : peut changer au redémarrage du pod", "resultsCount": "{count} journaux trouvés dans {stream} ({time} ms)", @@ -15421,7 +15421,7 @@ } }, "loadingLogs": "Chargement des journaux...", - "noLogsFound": "Aucun log trouvé", + "noLogsFound": "Aucun journal trouvé", "noDataFound": "Aucune donnée trouvée", "noLogsDescription": "Aucun journal n'a été trouvé pour cette corrélation dans la plage de temps sélectionnée.", "correlatedTracesFor": "Traces corrélées pour le service : {service}", @@ -15607,7 +15607,7 @@ "currencySymbol": "$", "header": "Tarification du modèle LLM", "matchingPriorityTooltip": "Priorité de correspondance des modèles : Votre organisation > Global > Intégré", - "searchPlaceholder": "Modèles de recherche...", + "searchPlaceholder": "Rechercher des modèles...", "syncBuiltInPrices": "Synchroniser les prix intégrés", "importBtn": "Importer", "newModel": "Nouveau modèle", @@ -19093,7 +19093,7 @@ "buildManually": "Construire manuellement", "continue": "Continuer", "gateDescription": "Dites-nous par où commencer -- vous enregistrerez le parcours ensuite. Tout le reste (planification, alertes, RUM) sera configuré après.", - "gateFooter": "C'est tout ce dont nous avons besoin pour commencer. Après l'enregistrement, vous pouvez le rejouer ici, puis sauvegarder pour configurer la planification, les alertes et plus encore.", + "gateFooter": "C'est tout ce dont nous avons besoin pour commencer. Après l'enregistrement, vous pouvez le rejouer ici, puis enregistrer pour configurer la planification, les alertes et plus encore.", "loadFailed": "Échec du chargement de la configuration de la vérification.", "loadFailedTitle": "Échec du chargement", "loading": "Chargement de la vérification…", @@ -19838,7 +19838,7 @@ "colStep": "Étape", "colDuration": "Durée", "filterAll": "All", - "firstPartyOnly": "Ressources propriétaires uniquement", + "firstPartyOnly": "Ressources du domaine uniquement", "noEventsInStep": "Aucun événement dans la fenêtre de cette étape.", "noEvents": "Aucun événement de console, de réseau ou de page n'a été capturé.", "unattributed": "Non attribué à une étape", @@ -20499,7 +20499,7 @@ "escKey": "Échap", "title": "Raccourcis clavier", "subtitle": "Presse ? n'importe où · cliquez sur n'importe quelle ligne pour déclencher", - "search": "Raccourcis de recherche...", + "search": "Rechercher des raccourcis...", "noResults": "Aucun raccourci n'a été trouvé", "footerClose": "proche", "footerReopen": "rouvrir", @@ -20517,7 +20517,7 @@ "reports": "Rapports", "iam": "GIA", "settings": "Réglages", - "onlineEvals": "Evaluations en ligne", + "onlineEvals": "Évaluations en ligne", "actions": "Actions", "rum": "RHUM", "runningQueries": "Exécution de requêtes", @@ -20565,11 +20565,11 @@ "searchSchedulers": "Planificateurs de recherche", "searchHistory": "Historique d'utilisation et de coûts", "sessions": "Séances", - "evalTemplates": "Evaluations en ligne — Modèles", + "evalTemplates": "Évaluations en ligne — Modèles", "scorers": "Évaluations en ligne — Évaluateurs", - "evalJobs": "Evals en ligne — Offres d'emploi", - "quality": "Evals en ligne — Qualité", - "scoreConfigs": "Evaluations en ligne — Configurations des scores", + "evalJobs": "Évaluations en ligne — Tâches d'évaluation", + "quality": "Évaluations en ligne — Qualité", + "scoreConfigs": "Évaluations en ligne — Configurations des scores", "actions": "Actions", "llmProviders": "Fournisseurs de LLM", "aiToolsets": "Ensembles d'outils d'IA", @@ -20620,7 +20620,7 @@ "panelDuplicate": "Dupliquer le panneau", "panelDelete": "Supprimer le panneau", "panelEditorQueryInspector": "Ouvrez l'inspecteur de requêtes", - "metricsRunQuery": "Exécuter une requête ProMQL", + "metricsRunQuery": "Exécuter une requête PromQL", "metricsRefresh": "Actualiser", "metricsAddToDashboard": "Ajouter au tableau de bord", "metricsCopyUrl": "Copier le lien de partage", @@ -21645,7 +21645,7 @@ "title": "SLOs", "notFound": "SLO introuvable", "notFoundDescription": "Ce SLO n'existe plus, ou vous n'y avez pas accès. Il a peut-être été supprimé.", - "subtitle": "Objectifs de niveau de service : cibles, budgets d'erreur, alertes de taux d'épuisement.", + "subtitle": "Objectifs de niveau de service : cibles, budgets d'erreur, alertes de taux d'épuisement", "new": "Nouveau SLO", "newTitle": "Nouveau SLO", "editTitle": "Modifier le SLO", @@ -25029,7 +25029,7 @@ "handoffHint": "Transférer la propriété à une autre équipe. Elle est alertée selon sa propre rotation et son planning.", "escalateVsHandoff": "L'escalade : vous restez propriétaire. Le transfert : l'autre équipe devient propriétaire.", "escalated": "Escaladé au sein de {team} — vous êtes toujours le propriétaire.", - "escalatedTo": "{who} a été contacté — vous restez le propriétaire pour {team}.", + "escalatedTo": "{who} a été contacté — vous restez le propriétaire pour {team}", "statReachedRung": "Échelon actuel", "statReachedRungOf": "{n} sur {total}", "escalatedNobody": "Escaladé au sein de {team}, mais cet échelon n'a atteint personne.", @@ -25322,7 +25322,7 @@ "teamSubtitleFull": "{tz} · {members} · {rules}", "attentionOpenPolicy": "Ouvrir l'escalade", "attentionOpenRouting": "Ouvrir le routage", - "attentionNoTransport": "Aucun transport n'est configuré — aucune notification de ce déploiement n'atteint qui que ce soit.", + "attentionNoTransport": "Aucun transport n'est configuré — aucune notification de ce déploiement n'atteint qui que ce soit", "escalationTab": "Politiques d'escalade", "contactReadinessTitle": "Préparation des contacts", "contactReadinessHint": "Une notification arriverait-elle réellement ?", @@ -25330,7 +25330,7 @@ "contactUnreachable": "Injoignable", "contactNoTransport": "Aucun transport n'est configuré sur ce déploiement, donc aucune notification ne peut être envoyée à qui que ce soit.", "contactNoMembers": "Cette équipe n'a pas encore de membres.", - "contactNoChannel": "Aucun canal ne peut acheminer de notification.", + "contactNoChannel": "Aucun canal ne peut acheminer de notification", "contactAffects": "concerne {names}", "contactAndMore": "{names} et {count} autres", "loadBalanceTitle": "Répartition de charge sur les {days} derniers jours", @@ -25598,8 +25598,8 @@ "section_snoozed": "En pause", "section_handled": "Pris en charge", "section_resolved": "Résolus", - "sectionHint_ringing": "Personne n'a accusé réception — les notifications continuent.", - "sectionHint_snoozed": "Notifications en pause — elles reprennent automatiquement.", + "sectionHint_ringing": "Personne n'a accusé réception — les notifications continuent", + "sectionHint_snoozed": "Notifications en pause — elles reprennent automatiquement", "sectionHint_handled": "Pris en charge — une personne est responsable de chacun.", "sectionHint_resolved": "Clôturés — conservés pour les archives.", "lastAlertAt": "Créé", @@ -25630,7 +25630,7 @@ "routingDetails": "Détails de routage", "whatFired": "Déclencheur", "alertId": "ID d'alerte", - "historyFirstPage": "Première notification pour ce sujet.", + "historyFirstPage": "Première notification pour ce sujet", "historyFirings": "{count} déclenchement antérieur | {count} déclenchements antérieurs", "responseSubtitle": "{team} · déclenché {firing} · ouvert {opened}", "onCallNowCount": "Équipes d'astreinte ({count})", diff --git a/web/src/locales/menuTerms.spec.ts b/web/src/locales/menuTerms.spec.ts index bd2be28f3d..61ffc793ee 100644 --- a/web/src/locales/menuTerms.spec.ts +++ b/web/src/locales/menuTerms.spec.ts @@ -200,7 +200,9 @@ describe("menu terms (AC-12)", () => { expect(fr.common.logs).toBe("Logs"); expect(fr.menu.downtimes).toBe("Périodes de maintenance"); expect(fr.settings.lightMode).toBe("Mode clair"); - expect(read("fr-FR")).not.toMatch(/[Cc]analisation|[Ii]ndisponibilit|[Bb]uteur/); + expect(read("fr-FR")).not.toMatch( + /[Cc]analisation|[Ii]ndisponibilit|[Bb]uteur|[Cc]ombustion|[Gg]rumes|[Ss]urveillance réelle|[Pp]ériode d'arrêt/, + ); }); it("de-DE says Alarme in the header and the menu, like its items", () => {