Files
meshtastic-web/apps/web/public/i18n/locales/fr-FR/moduleConfig.json
T
Ben MeadorsandGitHub bbe9a0d5cd feat(protobufs): sync to firmware-current and consume workspace package (#1097)
* feat(protobufs): sync to firmware-current and consume workspace package

Sync the vendored .proto sources to firmware-current (v2.7.25+48), regenerate the v2 TS bindings, and consume the workspace @meshtastic/protobufs (workspace:*) in place of the stale JSR 2.7.20 — finishing the monorepo migration (core was already workspace:*).

Includes the one required breaking-change fix: admin nodedb_reset changed int32 to bool, so resetNodes() now sends value: true.

* build(protobufs): vendor generated bindings for workspace consumers

The package is consumed via workspace:* — its exports point at the TS source, which imports ./dist/meshtastic/*_pb.ts — so the generated output must exist at build time. CI builds web/core with no codegen step and the runners have no buf CLI, so the bindings are vendored here (kept gitignored; lint/format skip them). Regenerate with: pnpm --filter @meshtastic/protobufs gen

* fix(protobufs): clean script removes the actual generated output dir

buf writes bindings to packages/ts/dist, but clean was removing a non-existent root dist — so it never cleaned stale output. Addresses Copilot review feedback.

* refactor: move web app packages/web -> apps/web

Aligns the web app with the apps/web layout (matching the Vercel web-test Root Directory and the SDK-migration direction). Pure directory move plus root config: pnpm-workspace (adds apps/*), vitest projects, root tsconfig reference, and the pr/release-web/nightly workflows. vercel.json moved with the app. Build + 36 validation tests green.

* feat: config fields, module pages, key verification, telemetry capture

Incorporates the firmware-current feature work onto the protobuf foundation: new config fields (Display message bubbles; LoRa fem_lna_mode + serial_hal_only; Telemetry air_quality_screen_enabled); 4 new ModuleConfig pages (TrafficManagement, StatusMessage, TAK, RemoteHardware); the manual Key Verification flow (sendKeyVerification + ClientNotificationDialog stages + Verify Key button); live telemetry capture (nodeDB addDeviceMetrics) and admin hardening (toggleMutedNode, graceful PortNum default); plus the sdk-preview ConfigEditor demo and store/config tests. Build + lint + format + 131 tests green.

* chore: drop #1062 (unsaved-change-detection) to match upstream revert

#1062 was merged to main by accident (per @danditomaso) and is being reverted. Reverse-applied its diff here via 3-way so #1097 stays consistent with where main is headed, while keeping the feature changes layered on the same files (deviceStore/changeRegistry). Build + 131 tests + lint + format green.

* fix(nodes): clean up SNR display in node table and map popup

SNR is a ratio measured in dB, not dBm (which is absolute power); the
node table and map popup both mislabeled it and crammed three values
together: '0dBm/50%/50raw'. The trailing '%/raw' pair was the same
heuristic ((snr+10)*5) shown twice — once clamped, once not.

Render SNR in dB rounded to one decimal, color-coded by a 0-100%
signal-quality heuristic (green/yellow/red), with the quality percentage
as a muted secondary. Drop the redundant raw value. Adds unit.db; this
matches the existing SNRTooltip, which already renders dB.
2026-06-15 13:23:28 -05:00

449 lines
16 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"page": {
"tabAmbientLighting": "Lumière ambiante",
"tabAudio": "Audio",
"tabCannedMessage": "Message pré-enregistré",
"tabDetectionSensor": "Capteur de détection",
"tabExternalNotification": "Notification externe",
"tabMqtt": "MQTT",
"tabNeighborInfo": "Informations sur les voisins",
"tabPaxcounter": "Paxcounter",
"tabRangeTest": "Test de portée",
"tabSerial": "Série",
"tabStoreAndForward": "Stocker & Relayer",
"tabTelemetry": "Télémetrie (Capteurs)"
},
"ambientLighting": {
"title": "Paramètres de l’éclairage ambiant",
"description": "Paramètres du module d’éclairage ambiant",
"ledState": {
"label": "État des LED",
"description": "Définit les LED sur allumées ou éteintes"
},
"current": {
"label": "Actif",
"description": "Définit le courant de sortie des LED. Par défaut : 10"
},
"red": {
"label": "Rouge",
"description": "Définit le niveau de LED rouge (valeurs 0–255)"
},
"green": {
"label": "Vert",
"description": "Définit le niveau de LED vert (valeurs 0–255)"
},
"blue": {
"label": "Bleu",
"description": "Définit le niveau de LED bleu (valeurs 0–255)"
}
},
"audio": {
"title": "Paramètres audio",
"description": "Paramètres du module audio",
"codec2Enabled": {
"label": "Codec 2 activé",
"description": "Active l'encodage audio Codec 2"
},
"pttPin": {
"label": "Broche PTT",
"description": "Broche GPIO utilisée pour le PTT"
},
"bitrate": {
"label": "Débit",
"description": "Débit utilisé pour l’encodage audio"
},
"i2sWs": {
"label": "i2S WS",
"description": "Broche GPIO utilisée pour i2S WS"
},
"i2sSd": {
"label": "i2S SD",
"description": "Broche GPIO utilisée pour i2S SD"
},
"i2sDin": {
"label": "i2S DIN",
"description": "Broche GPIO utilisée pour i2S DIN"
},
"i2sSck": {
"label": "i2S SCK",
"description": "Broche GPIO utilisée pour i2S SCK"
}
},
"cannedMessage": {
"title": "Paramètres des messages pré-enregistrés",
"description": "Paramètres du module de messages pré-enregistrés\n",
"moduleEnabled": {
"label": "Module activé",
"description": "Active les messages pré-enregistrés"
},
"rotary1Enabled": {
"label": "Encodeur rotatif #1 activé",
"description": "Active l’encodeur rotatif"
},
"inputbrokerPinA": {
"label": "Broche A de l’encodeur",
"description": "Valeur GPIO (1-39) pour le port A de l’encodeur"
},
"inputbrokerPinB": {
"label": "Broche B de l’encodeur",
"description": "Valeur GPIO (1-39) pour le port B de l’encodeur"
},
"inputbrokerPinPress": {
"label": "Broche de pression de l’encodeur",
"description": "Valeur GPIO (1-39) pour la pression sur l’encodeur"
},
"inputbrokerEventCw": {
"label": "Événement horaire",
"description": "Sélectionner l’événement d’entrée"
},
"inputbrokerEventCcw": {
"label": "Événement antihoraire",
"description": "Sélectionner l’événement d’entrée"
},
"inputbrokerEventPress": {
"label": "Événement pression",
"description": "Sélectionner l’événement d’entrée"
},
"updown1Enabled": {
"label": "Encodeur haut/bas activé",
"description": "Active l’encodeur haut/bas"
},
"allowInputSource": {
"label": "Autoriser la source d’entrée",
"description": "Sélectionner parmi : '_any', 'rotEnc1', 'upDownEnc1', 'cardkb'"
},
"sendBell": {
"label": "Envoyer un bip",
"description": "Envoie un caractère de cloche avec chaque message"
}
},
"detectionSensor": {
"title": "Paramètres du capteur de détection",
"description": "Paramètres du module de capteur de détection",
"enabled": {
"label": "Activé",
"description": "Activer ou désactiver le module de détection"
},
"minimumBroadcastSecs": {
"label": "Intervalle minimum d’émission (s)",
"description": "L'intervalle en secondes de la fréquence à laquelle nous pouvons envoyer un message au maillage quand un changement d'état est détecté"
},
"stateBroadcastSecs": {
"label": "Intervalle d’état (s)",
"description": "Temps entre deux messages d’état envoyés, même sans changement"
},
"sendBell": {
"label": "Envoyer un bip",
"description": "Envoyer un caractère ASCII 'bell' avec le message d’alerte"
},
"name": {
"label": "Nom convivial",
"description": "Utilisé pour formater le message envoyé au réseau, max. 20 caractères"
},
"monitorPin": {
"label": "Broche de monitoring",
"description": "Broche GPIO pour surveiller les changements d'état"
},
"detectionTriggerType": {
"label": "Type du déclencheur de détection",
"description": "Le type d'événement déclencheur à utiliser"
},
"usePullup": {
"label": "Utiliser Pullup",
"description": "Utiliser ou non le mode INPUT_PULLUP pour la broche GPIO"
}
},
"externalNotification": {
"title": "Paramètres de la notification extérieure",
"description": "Configurer le module de notification externe",
"enabled": {
"label": "Module activé",
"description": "Activer les notifications externes"
},
"outputMs": {
"label": "Sortie MS",
"description": "Sortie MS"
},
"output": {
"label": "Sortie",
"description": "Sortie"
},
"outputVibra": {
"label": "Sortie vibreur",
"description": "Sortie vibreur"
},
"outputBuzzer": {
"label": "Sortie buzzer",
"description": "Sortie buzzer"
},
"active": {
"label": "Actif",
"description": "Actif"
},
"alertMessage": {
"label": "Message d'alerte",
"description": "Message d'alerte"
},
"alertMessageVibra": {
"label": "Message d'alerte vibreur",
"description": "Message d'alerte vibreur"
},
"alertMessageBuzzer": {
"label": "Message d'alerte buzzer",
"description": "Message d'alerte buzzer"
},
"alertBell": {
"label": "Bip d'alerte",
"description": "Une alerte doit-elle être déclenchée lors de la réception d'un bip entrant ?"
},
"alertBellVibra": {
"label": "Bip d'alerte vibreur",
"description": "Bip d'alerte vibreur"
},
"alertBellBuzzer": {
"label": "Bip d'alerte buzzer",
"description": "Bip d'alerte buzzer"
},
"usePwm": {
"label": "Utiliser PWM",
"description": "Utiliser PWM"
},
"nagTimeout": {
"label": "Délai d'expiration du message",
"description": "Délai d'expiration du message"
},
"useI2sAsBuzzer": {
"label": "Utiliser la broche I2S comme Buzzer",
"description": "Désigner la broche I2S comme sortie Buzzer"
}
},
"mqtt": {
"title": "Paramètres MQTT",
"description": "Paramètres du module MQTT",
"enabled": {
"label": "Activé",
"description": "Activer ou désactiver MQTT"
},
"address": {
"label": "Adresse du serveur MQTT",
"description": "Adresse du serveur MQTT à utiliser pour les serveurs par défaut/personnalisés"
},
"username": {
"label": "Nom d'utilisateur MQTT",
"description": "Nom d'utilisateur MQTT à utiliser pour les serveurs par défaut/personnalisés"
},
"password": {
"label": "Mot de passe MQTT",
"description": "Mot de passe MQTT à utiliser pour les serveurs par défaut/personnalisés"
},
"encryptionEnabled": {
"label": "Chiffrement activé",
"description": "Activer ou désactiver le chiffrement MQTT. Remarque : Tous les messages sont envoyés au broker MQTT non chiffré si cette option n'est pas activée, même si vos canaux uplink ont des clés de chiffrement. Cela inclut les données de position."
},
"jsonEnabled": {
"label": "JSON activé",
"description": "S'il faut envoyer/consommer des paquets JSON sur MQTT"
},
"tlsEnabled": {
"label": "TLS activé",
"description": "Activer ou désactiver TLS"
},
"root": {
"label": "Sujet principal",
"description": "Sujet racine MQTT à utiliser pour les serveurs par défaut/personnalisés"
},
"proxyToClientEnabled": {
"label": "Proxy client MQTT activé",
"description": "Utilise la connexion réseau pour transmettre les messages MQTT au client."
},
"mapReportingEnabled": {
"label": "Rapport cartographique activé",
"description": "Votre nœud enverra périodiquement un paquet de rapport de position non chiffré au serveur MQTT configuré. Ce paquet inclut l'identifiant, les noms long et court, la position approximative, le modèle matériel, le rôle, la version du micrologiciel, la région LoRa, le préréglage du modem et le nom du canal principal."
},
"mapReportSettings": {
"publishIntervalSecs": {
"label": "Intervalles de publication du rapport de carte",
"description": "Intervalle en secondes pour publier les rapports de carte"
},
"positionPrecision": {
"label": "Position approximative",
"description": "La position partagée sera précise dans cette distance",
"options": {
"metric_km23": "A moins de 23 km",
"metric_km12": "A moins de 12 km",
"metric_km5_8": "A moins de 5.8 km",
"metric_km2_9": "A moins de 2.9 km",
"metric_km1_5": "A moins de 1.5 km",
"metric_m700": "A moins de 700 m",
"metric_m350": "A moins de 350 m",
"metric_m200": "À moins de 200 m",
"metric_m90": "A moins de 90 m",
"metric_m50": "A moins de 50 m",
"imperial_mi15": "À moins de 15 miles",
"imperial_mi7_3": "À moins de 7,3 miles",
"imperial_mi3_6": "À moins de 3,6 miles",
"imperial_mi1_8": "À moins de 1,8 miles",
"imperial_mi0_9": "À moins de 0,9 miles",
"imperial_mi0_5": "À moins de 0,5 miles",
"imperial_mi0_2": "À moins de 0,2 miles",
"imperial_ft600": "À moins de 600 pieds",
"imperial_ft300": "À moins de 300 pieds",
"imperial_ft150": "À moins de 150 pieds"
}
}
}
},
"neighborInfo": {
"title": "Paramètres des informations du voisinage",
"description": "Paramètres pour le module informations du voisinage",
"enabled": {
"label": "Activé",
"description": "Activer ou désactiver le module informations du voisinage"
},
"updateInterval": {
"label": "Intervalle de mise à jour",
"description": "Intervalle en secondes de la fréquence à laquelle nous devrions essayer d'envoyer nos informations de Voisinage au maillage"
}
},
"paxcounter": {
"title": "Paramètres Paxcounter",
"description": "Paramètres du module Paxcounter",
"enabled": {
"label": "Module activé",
"description": "Activer Paxcounter"
},
"paxcounterUpdateInterval": {
"label": "Intervalle de mise à jour (secondes)",
"description": "Durée d'attente entre l'envoi de paquets paxcounter"
},
"wifiThreshold": {
"label": "Seuil RSSI WiFi",
"description": "A quel niveau de WiFi RSSI devrait augmenter le compteur. Par défaut, -80."
},
"bleThreshold": {
"label": "Seuil RSSI BLE",
"description": "A quel niveau de BLE RSSI devrait augmenter le compteur. Par défaut, -80."
}
},
"rangeTest": {
"title": "Paramètres de test de portée",
"description": "Paramètres du module de test de portée",
"enabled": {
"label": "Module activé",
"description": "Activer le test de portée"
},
"sender": {
"label": "Intervalle de message",
"description": "Durée d'attente entre l'envoi de paquets de test"
},
"save": {
"label": "Enregistrer le CSV dans le stockage",
"description": "ESP32 seulement"
}
},
"serial": {
"title": "Paramètres série",
"description": "Paramètres du module série",
"enabled": {
"label": "Module activé",
"description": "Activer la sortie série"
},
"echo": {
"label": "Écho",
"description": "Tous les paquets que vous envoyez seront renvoyés vers votre appareil"
},
"rxd": {
"label": "Broche de réception",
"description": "Réglez la broche GPIO sur la broche RXD que vous avez configurée."
},
"txd": {
"label": "Broche de transmission",
"description": "Réglez la broche GPIO sur la broche TXD que vous avez configurée."
},
"baud": {
"label": "Vitesse en bauds",
"description": "Vitesse de transmission série"
},
"timeout": {
"label": "Délai d'expiration",
"description": "Secondes à attendre avant de considérer votre paquet comme \"fini\""
},
"mode": {
"label": "Mode",
"description": "Sélection de mode"
},
"overrideConsoleSerialPort": {
"label": "Outrepasser le port série de la console",
"description": "Si vous avez un port série connecté à la console, cela va le remplacer."
}
},
"storeForward": {
"title": "Paramètres de stockage et transfert",
"description": "Paramètres du module stockage et transfert",
"enabled": {
"label": "Module activé",
"description": "Activer stockage et transfert"
},
"heartbeat": {
"label": "Pulsations activées",
"description": "Activer les pulsations stockage et transfert"
},
"records": {
"label": "Nombre d'enregistrements",
"description": "Nombre d'enregistrements à stocker"
},
"historyReturnMax": {
"label": "Limite d’historique renvoyé",
"description": "Nombre maximum d'enregistrements à retourner"
},
"historyReturnWindow": {
"label": "Fenêtre de retour d'historique",
"description": "Retourner les enregistrements de cette fenêtre de temps (minutes)"
}
},
"telemetry": {
"title": "Paramètres de télémétrie",
"description": "Paramètres du module télémétrie",
"deviceUpdateInterval": {
"label": "Métriques de l’appareil",
"description": "Intervalle de mise à jour des métriques de l'appareil (secondes)"
},
"environmentUpdateInterval": {
"label": "Intervalle de mise à jour des métriques d'environnement (secondes)",
"description": ""
},
"environmentMeasurementEnabled": {
"label": "Module activé",
"description": "Activer la télémétrie d'environnement"
},
"environmentScreenEnabled": {
"label": "Affiché à l'écran",
"description": "Afficher le module de télémétrie sur OLED"
},
"environmentDisplayFahrenheit": {
"label": "Afficher en Fahrenheit",
"description": "Afficher la température en Fahrenheit"
},
"airQualityEnabled": {
"label": "Qualité de l'air activée",
"description": "Activer la télémétrie de qualité de l'air"
},
"airQualityInterval": {
"label": "Intervalle de mise à jour de la qualité de l'air",
"description": "Fréquence d'envoi des données de qualité de l'air sur le maillage"
},
"powerMeasurementEnabled": {
"label": "Mesure de puissance activée",
"description": "Activer la télémétrie de mesure d'énergie"
},
"powerUpdateInterval": {
"label": "Intervalle de mise à jour de l'alimentation",
"description": "Fréquence d'envoi de données d'alimentation sur le maillage"
},
"powerScreenEnabled": {
"label": "Écran d'alimentation activé",
"description": "Activer l'écran de télémétrie d'alimentation"
}
}
}