Files
meshtastic-web/apps/web/public/i18n/locales/fr-FR/dialog.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

239 lines
11 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.
{
"deleteMessages": {
"description": "Cette action effacera tout l’historique des messages. Cette opération est irréversible. Voulez-vous vraiment continuer ?",
"title": "Supprimer tous les messages"
},
"import": {
"description": "La configuration LoRa actuelle sera écrasée.",
"error": {
"invalidUrl": "URL Meshtastic invalide"
},
"channelPrefix": "Canal: ",
"primary": "Primary ",
"doNotImport": "No not import",
"channelName": "Nom",
"channelSlot": "Emplacement",
"channelSetUrl": "URL du set de canaux ou du QR code",
"useLoraConfig": "Import LoRa Config",
"presetDescription": "The current LoRa Config will be replaced.",
"title": "Importer un ensemble de canaux"
},
"locationResponse": {
"title": "Position : {{identifier}}",
"altitude": "Altitude: ",
"coordinates": "Coordonnées : ",
"noCoordinates": "Pas de coordonnées"
},
"pkiRegenerateDialog": {
"title": "Régénérer la clé pré-partagée ?",
"description": "Êtes-vous sûr de vouloir régénérer la clé pré-partagée ?",
"regenerate": "Régénérer"
},
"addConnection": {
"title": "Add connection",
"description": "Choose a connection type and fill in the details",
"validation": {
"requiresWebBluetooth": "Ce type de connexion nécessite <0>Web Bluetooth</0>. Veuillez utiliser un navigateur compatible, comme Chrome ou Edge.<0>",
"requiresWebSerial": "Ce type de connexion nécessite <0>Web Serial</0>. Veuillez utiliser un navigateur compatible, comme Chrome ou Edge.",
"requiresSecureContext": "Cette application nécessite un <0>contexte sécurisé</0>. Veuillez vous connecter via HTTPS ou localhost.",
"additionallyRequiresSecureContext": "Elle nécessite également un <0>contexte sécurisé</0>. Veuillez vous connecter via HTTPS ou localhost."
},
"bluetoothConnection": {
"namePlaceholder": "My Bluetooth Node",
"supported": {
"title": "Web Bluetooth supported"
},
"notSupported": {
"title": "Web Bluetooth not supported",
"description": "Your browser or device does not support Web Bluetooth"
},
"short": "BT: {{deviceName}}",
"long": "Bluetooth Device",
"device": "Appareil",
"selectDevice": "Select device",
"selected": "Bluetooth device selected",
"notSelected": "No device selected",
"helperText": "Uses the Meshtastic Bluetooth service for discovery."
},
"serialConnection": {
"namePlaceholder": "My Serial Node",
"helperText": "Selecting a port grants permission so the app can open it to connect.",
"supported": {
"title": "Web Serial supported"
},
"notSupported": {
"title": "Web Serial not supported",
"description": "Your browser or device does not support Web Serial"
},
"portSelected": {
"title": "Serial port selected",
"description": "Port permissions granted."
},
"port": "Port",
"selectPort": "Select port",
"deviceName": "USB {{vendorId}}:{{productId}}",
"notSelected": "No port selected"
},
"httpConnection": {
"namePlaceholder": "My HTTP Node",
"inputPlaceholder": "192.168.1.10 or meshtastic.local",
"heading": "URL or IP",
"useHttps": "Use HTTPS",
"invalidUrl": {
"title": "Invalid URL",
"description": "Please enter a valid HTTP or HTTPS URL."
},
"connectionTest": {
"description": "Test the connetion before saving to verify the device is reachable.",
"button": {
"loading": "Testing...",
"label": "Test connection"
},
"reachable": "Reachable",
"notReachable": "Not reachable",
"success": {
"title": "Connection test successful",
"description": "The device appears to be reachable."
},
"failure": {
"title": "Connection test failed",
"description": "Could not reach the device. Check the URL and try again."
}
}
}
},
"nodeDetails": {
"message": "Message",
"requestPosition": "Demander la position",
"traceRoute": "Tracer la route",
"airTxUtilization": "Utilisation TX sur l’air",
"allRawMetrics": "Toutes les métriques brutes :",
"batteryLevel": "Niveau de batterie",
"channelUtilization": "Utilisation du canal",
"details": "Détails :",
"deviceMetrics": "Métriques de l’appareil :",
"hardware": "Matériel : ",
"lastHeard": "Dernière écoute: ",
"nodeHexPrefix": "Hex du nœud: ",
"nodeNumber": "Numéro de nœud: ",
"position": "Position:",
"role": "Rôle: ",
"uptime": "Temps de fonctionnement :",
"voltage": "Tension",
"title": "Détails du nœud pour {{identifier}}",
"ignoreNode": "Ignorer le nœud",
"removeNode": "Supprimer le nœud",
"unignoreNode": "Ne plus ignorer le nœud",
"security": "Sécurité:",
"publicKey": "Clé publique: ",
"messageable": "Messageable ",
"KeyManuallyVerifiedTrue": "La clé publique a été vérifiée manuellement",
"KeyManuallyVerifiedFalse": "La clé publique n'est pas vérifiée manuellement"
},
"pkiBackup": {
"loseKeysWarning": "Si vous perdez vos clés, vous devrez réinitialiser votre appareil.",
"secureBackup": "Il est important de sauvegarder vos clés publique et privée, et de stocker cette sauvegarde en lieu sûr !",
"footer": "=== FIN DES CLÉS ===",
"header": "=== CLÉS MESHTASTIC POUR {{longName}} ({{shortName}}) ===",
"privateKey": "Clé privée :",
"publicKey": "Clé publique :",
"fileName": "meshtastic_cles_{{longName}}_{{shortName}}.txt",
"title": "Sauvegarder les clés"
},
"pkiBackupReminder": {
"description": "Nous vous recommandons de sauvegarder régulièrement vos clés. Souhaitez-vous effectuer une sauvegarde maintenant ?",
"title": "Rappel de sauvegarde",
"remindLaterPrefix": "Me le rappeler dans",
"remindNever": "Ne plus me le rappeler",
"backupNow": "Sauvegarder maintenant"
},
"pkiRegenerate": {
"description": "Êtes-vous sûr de vouloir régénérer la paire de clés ?",
"title": "Régénérer la paire de clés"
},
"qr": {
"addChannels": "Ajouter des canaux",
"replaceChannels": "Remplacer les canaux",
"description": "La configuration LoRa actuelle sera également partagée.",
"sharableUrl": "URL partageable",
"title": "Générer un QR Code"
},
"reboot": {
"title": "Redémarrer l'appareil",
"description": "Redémarrez maintenant ou programmez un redémarrage du nœud connecté. Vous pouvez éventuellement choisir de redémarrer en mode OTA (Over-the-Air).",
"ota": "Redémarrer en mode OTA",
"enterDelay": "Entrez le délai",
"scheduled": "Le redémarrage a été programmé",
"schedule": "Programmer le redémarrage",
"now": "Redémarrer maintenant",
"cancel": "Annuler le redémarrage planifié"
},
"refreshKeys": {
"description": {
"acceptNewKeys": "Cela supprimera le nœud de l’appareil et demandera de nouvelles clés.",
"keyMismatchReasonSuffix": ". Cela est dû au fait que la clé publique actuelle du nœud distant ne correspond pas à celle précédemment enregistrée pour ce nœud.",
"unableToSendDmPrefix": "Accepter les nouvelles clés"
},
"acceptNewKeys": "Accepter les nouvelles clés",
"title": "Clés non concordantes – {{identifier}}"
},
"removeNode": {
"description": "Êtes-vous sûr de vouloir supprimer ce nœud ?",
"title": "Supprimer le nœud ?"
},
"shutdown": {
"title": "Programmer un arrêt",
"description": "Éteindre le nœud connecté après x minutes."
},
"traceRoute": {
"routeToDestination": "Route vers la destination :",
"routeBack": "Route de retour :"
},
"tracerouteResponse": {
"title": "Traceroute : {{identifier}}"
},
"unsafeRoles": {
"confirmUnderstanding": "Oui, je sais ce que je fais",
"conjunction": " et l’article de blog sur le ",
"postamble": " et je comprends les implications du changement de rôle.",
"preamble": "J'ai lu les",
"choosingRightDeviceRole": "Choisir le rôle d’appareil approprié",
"deviceRoleDocumentation": "Documentation sur les rôles d’appareil",
"title": "Êtes-vous sûr ?"
},
"managedMode": {
"confirmUnderstanding": "Oui, je sais ce que je fais",
"title": "Êtes-vous sûr ?",
"description": "Activer le mode géré empêche les applications clientes (y compris l’interface web) de modifier la configuration d’une radio. Une fois activé, la configuration ne peut être changée que via des messages d’administration à distance. Ce paramètre n’est pas nécessaire pour l’administration distante des nœuds."
},
"clientNotification": {
"title": "Notification client",
"TraceRoute can only be sent once every 30 seconds": "TraceRoute ne peut être envoyée qu'une fois toutes les 30 secondes",
"Compromised keys were detected and regenerated.": "Les clés compromises ont été détectées et régénérées."
},
"resetNodeDb": {
"title": "Reset Node Database",
"description": "This will clear all nodes from the connected device's node database and clear all message history in the client. This cannot be undone. Are you sure you want to continue?",
"confirm": "Reset Node Database",
"failedTitle": "There was an error resetting the Node DB. Please try again."
},
"clearAllStores": {
"title": "Clear All Local Storage",
"description": "This will clear all locally stored data, including message history and node databases for all previously connected devices. This will require you to reconnect to your node once complete and cannot be undone. Are you sure you want to continue?",
"confirm": "Clear all local storage",
"failedTitle": "There was an error clearing local storage. Please try again."
},
"factoryResetDevice": {
"title": "Réinitialisation d'usine de l'appareil",
"description": "This will factory reset the connected device, erasing all configurations and data on the device as well as all nodes and messages saved in the client. This cannot be undone. Are you sure you want to continue?",
"confirm": "Réinitialisation d'usine de l'appareil",
"failedTitle": "There was an error performing the factory reset. Please try again."
},
"factoryResetConfig": {
"title": "Réinitialisation d'usine de la config",
"description": "This will factory reset the configuration on the connected device, erasing all configurations on the device. This cannot be undone. Are you sure you want to continue?",
"confirm": "Réinitialisation d'usine de la config",
"failedTitle": "There was an error performing the factory reset. Please try again."
}
}