#### Example Usage: AI-Powered Predictive Maintenance
This example demonstrates how to use the AI request node to analyze telemetry from rotating equipment for a predictive maintenance use case.
##### Scenario
Assume you’re monitoring a centrifugal pump that streams vibration, temperature, and acoustic readings.
To catch problems early and avoid downtime, you can use AI to analyze the telemetry for signs of **Bearing Wear**, **Misalignment**, **Overheating**, or **Imbalance** and return an alarm object if found. Downstream nodes can use it to create a ThingsBoard alarm and notify the maintenance team.
1. **Incoming message structure**
First, we need to collect telemetry readings. This can be achieved either by configuring a Calculated Field with the “Time series rolling” arguments to gather recent samples,
or by running a periodic check using nodes like "generator" and "originator telemetry" to fetch the latest samples and assemble the payload.
As a second step, we need to explain the task to AI model. Describe the context of your device and the desired response format (in this case, minimal ThingsBoard alarm JSON object) in the system prompt. We will also put the task description in the system prompt since it does not change depending on a message. In the user prompt, we will use templates to dynamically inject telemetry data produced by the device.
**System prompt**
```
You are an AI predictive maintenance assistant that detects alarm conditions in telemetry data of industrial devices based on incident patterns.
Output JSON only. If an alarm condition is detected, output:
- Bearing Wear: gradual vibration rise + temperature spike.
- Misalignment: sudden vibration spike without temperature change.
- Imbalance: rising vibration + irregular acoustics; temperature near normal.
- Overheating: temperature >85 °C ≥10 min or Δtemp ≥10 °C/10 min with Δvib <1.0mm/s;or75–85°C≥30minwithnormalvib/acoustic.
Severity policy:
- Start with the max of per-signal severities; if ≥2 signals are abnormal, escalate one level (cap at CRITICAL).
- Ignore very brief blips (<2samplesjustoveraboundary)unlessstronglypattern-matched.
- Be conservative; use input units.
```
**User prompt**
```
Analyze telemetry from a "${deviceType}" named "${deviceName}".
Data:
$[*]
```
3. **Response format** (optional)
In the previous step, we described desired response format in the system prompt, but it is possible to enforce format with JSON Schema if model you are using supports it. We recommend using JSON Schema if possible. Here is the example of response schema you can use (if using JSON Schema, in the system prompt just say that model output should be in JSON format):
"description": "2–3 sentences in plain English of concise, plain-language summary for maintenance teams; include units when citing values."
}
}
}
}
}
```
4. **How it works**
When the message containing sample data from **Pump-103** is processed, the templates are substituted:
* `${deviceName}` → `"Pump-103"`
* `${deviceType}` → `"CentrifugalPump"`
* `$[*]` → the entire message payload JSON (e.g. telemetry data we collected in step 1)
> **Tip:**`${*}` can substitute the entire metadata JSON if needed.
The final instruction sent to the model is the System prompt plus the substituted User prompt. AI response will be placed in outgoing message payload.
5. **Expected AI output**
Given the sample data from step 1, the AI will likely output something like this:
```json
{
"type": "Bearing Wear",
"severity": "CRITICAL",
"details": {
"summary": "Pump-103 showed a vibration spike from 4.2 to 8.0 mm/s with continued elevated levels (6.2–7.2 mm/s), along with a temperature spike to 86 °C and recurrent 84 °C. With acoustics only in the WARNING band (~17–18%), this pattern indicates bearing wear; inspect and replace the bearing promptly to prevent failure."
}
}
```
6. **Next steps**
Check the AI response: if it’s a non-empty object, it’s ready-to-use alarm JSON. Route it directly to the "create alarm" node to create an alarm. If it is empty, just ignore the output as everything is normal.
#### Example Usage: AI-Powered Alarm Analysis
#### Example Usage: AI-Powered Alarm Analysis
This example demonstrates how to use the AI node to automatically analyze a new device alarm, generate a human-readable summary, and suggest troubleshooting steps.
This example demonstrates how to use the AI node to automatically analyze a new device alarm, generate a human-readable summary, and suggest troubleshooting steps.
"notification-requests-per-rule":"Benachrichtigungsanforderungen pro Regel",
"notification-requests-per-rule":"Benachrichtigungsanfragen pro Regel",
"rest-api-requests":"REST-API-Anfragen",
"rest-api-requests":"REST-API-Anfragen",
"rest-api-requests-per-customer":"REST-API-Anfragen pro Kunde",
"rest-api-requests-per-customer":"REST-API-Anfragen pro Kunde",
"transport-messages":"Transportnachrichten",
"transport-messages":"Transportnachrichten",
"transport-messages-per-device":"Transportnachrichten pro Gerät",
"transport-messages-per-device":"Transportnachrichten pro Gerät",
"transport-messages-per-gateway":"Transportnachrichten pro Gateway",
"transport-messages-per-gateway":"Transportnachrichten pro Gateway",
"transport-messages-per-gateway-device":"Transportnachrichten pro Gateway-Gerät",
"transport-messages-per-gateway-device":"Transportnachrichten pro Gateway-Gerät",
"ws-updates-per-session":"WebSocket-Aktualisierungen pro Sitzung",
"ws-updates-per-session":"WS-Updates pro Sitzung",
"edge-events":"Edge-Ereignisse",
"edge-events":"Edge-Ereignisse",
"edge-events-per-edge":"Edge-Ereignisse pro Edge",
"edge-events-per-edge":"Edge-Ereignisse pro Edge",
"edge-uplink-messages":"Edge-Uplink-Nachrichten",
"edge-uplink-messages":"Edge-Uplink-Nachrichten",
@ -1057,6 +1069,7 @@
"delete-multiple-title":"Möchten Sie { count, plural, =1 {1 berechnetes Feld} other {# berechnete Felder} } wirklich löschen?",
"delete-multiple-title":"Möchten Sie { count, plural, =1 {1 berechnetes Feld} other {# berechnete Felder} } wirklich löschen?",
"delete-multiple-text":"Vorsicht, nach der Bestätigung werden alle ausgewählten berechneten Felder entfernt und alle zugehörigen Daten unwiederbringlich gelöscht.",
"delete-multiple-text":"Vorsicht, nach der Bestätigung werden alle ausgewählten berechneten Felder entfernt und alle zugehörigen Daten unwiederbringlich gelöscht.",
"test-with-this-message":"Mit dieser Nachricht testen",
"test-with-this-message":"Mit dieser Nachricht testen",
"arguments-simple-with-rolling":"Einfacher Feldtyp darf keine Schlüssel mit Zeitreihen-Rollup-Typ enthalten.",
"arguments-simple-with-rolling":"Einfacher Feldtyp darf keine Schlüssel mit Zeitreihen-Rollup-Typ enthalten.",
"arguments-empty":"Argumente dürfen nicht leer sein.",
"arguments-empty":"Argumente dürfen nicht leer sein.",
@ -1072,9 +1085,87 @@
"max-args":"Maximale Anzahl an Argumenten erreicht.",
"max-args":"Maximale Anzahl an Argumenten erreicht.",
"decimals-range":"Standard-Dezimalstellen sollten eine Zahl zwischen 0 und 15 sein.",
"decimals-range":"Standard-Dezimalstellen sollten eine Zahl zwischen 0 und 15 sein.",
"expression":"Standardausdruck demonstriert, wie eine Temperatur von Fahrenheit in Celsius umgewandelt wird.",
"expression":"Standardausdruck demonstriert, wie eine Temperatur von Fahrenheit in Celsius umgewandelt wird.",
"arguments-entity-not-found":"Zielentität des Arguments nicht gefunden."
"arguments-entity-not-found":"Zielentität des Arguments nicht gefunden.",
"use-latest-timestamp":"Wenn aktiviert, wird der berechnete Wert mit dem neuesten Zeitstempel aus der Telemetrie der Argumente gespeichert, anstatt mit der Serverzeit."
}
}
},
},
"ai-models":{
"ai-models":"KI-Modelle",
"ai-model":"KI-Modell",
"model":"Modell",
"name":"Name",
"ai-provider":"KI-Anbieter",
"no-found":"Keine KI-Modelle gefunden",
"list":"{ count, plural, =1 {Ein Modell} other {Liste von # Modellen} }",
"personal-access-token-required":"Persönlicher Zugriffstoken ist erforderlich.",
"configuration":"Konfiguration",
"model-id":"Modell-ID",
"model-id-required":"Modell-ID ist erforderlich.",
"deployment-name":"Bereitstellungsname",
"deployment-name-required":"Bereitstellungsname ist erforderlich.",
"set":"Festlegen",
"region":"Region",
"region-required":"Region ist erforderlich.",
"access-key-id":"Access Key ID",
"access-key-id-required":"Access Key ID ist erforderlich.",
"secret-access-key":"Secret Access Key",
"secret-access-key-required":"Secret Access Key ist erforderlich.",
"temperature":"Temperatur",
"temperature-hint":"Reguliert den Grad der Zufälligkeit im Modellausgang. Höhere Werte erhöhen die Zufälligkeit, niedrigere verringern sie.",
"temperature-min":"Muss 0 oder größer sein.",
"top-p":"Top P",
"top-p-hint":"Erstellt einen Pool der wahrscheinlichsten Tokens, aus denen das Modell auswählt. Höhere Werte erweitern den Pool, niedrigere verkleinern ihn.",
"top-p-min-max":"Muss größer als 0 und maximal 1 sein.",
"top-k":"Top K",
"top-k-hint":"Begrenzt die Auswahl des Modells auf die „K“ wahrscheinlichsten Tokens.",
"top-k-min":"Muss 0 oder größer sein.",
"presence-penalty":"Strafe für Anwesenheit",
"presence-penalty-hint":"Wendet eine feste Strafe auf die Wahrscheinlichkeit eines Tokens an, wenn es bereits im Text erschienen ist.",
"frequency-penalty":"Strafe für Häufigkeit",
"frequency-penalty-hint":"Verringert die Wahrscheinlichkeit eines Tokens basierend auf seiner Häufigkeit im Text.",
"max-output-tokens":"Maximale Ausgabetokens",
"max-output-tokens-min":"Muss größer als 0 sein.",
"max-output-tokens-hint":"Legt die maximale Anzahl an Tokens fest, die das Modell in einer Antwort generieren kann.",
"endpoint":"Endpunkt",
"endpoint-required":"Endpunkt ist erforderlich.",
"service-version":"Service-Version",
"check-connectivity":"Konnektivität prüfen",
"check-connectivity-success":"Testanfrage war erfolgreich",
"clear-form-prompt":"Möchten Sie wirklich alle Formulareigenschaften entfernen?",
"clear-form-prompt":"Möchten Sie wirklich alle Formulareigenschaften entfernen?",
@ -1911,6 +2004,7 @@
"mqtt-use-json-format-for-default-downlink-topics-hint":"Wenn aktiviert, wird das JSON-Format für die Standard-Downlink-Themen verwendet, z.B.: <b>v1/devices/me/attributes/response/$request_id</b>. Neue v2-Themen sind davon nicht betroffen.",
"mqtt-use-json-format-for-default-downlink-topics-hint":"Wenn aktiviert, wird das JSON-Format für die Standard-Downlink-Themen verwendet, z.B.: <b>v1/devices/me/attributes/response/$request_id</b>. Neue v2-Themen sind davon nicht betroffen.",
"mqtt-send-ack-on-validation-exception":"PUBACK bei Validierungsfehler senden",
"mqtt-send-ack-on-validation-exception":"PUBACK bei Validierungsfehler senden",
"mqtt-send-ack-on-validation-exception-hint":"Standardmäßig wird die Sitzung bei einem Validierungsfehler geschlossen. Wenn aktiviert, wird stattdessen eine Bestätigung gesendet.",
"mqtt-send-ack-on-validation-exception-hint":"Standardmäßig wird die Sitzung bei einem Validierungsfehler geschlossen. Wenn aktiviert, wird stattdessen eine Bestätigung gesendet.",
"mqtt-protocol-version":"Protokollversion",
"snmp-add-mapping":"SNMP-Zuordnung hinzufügen",
"snmp-add-mapping":"SNMP-Zuordnung hinzufügen",
"snmp-mapping-not-configured":"Keine Zuordnung für OID zu Zeitreihen/Telemetrie konfiguriert",
"snmp-mapping-not-configured":"Keine Zuordnung für OID zu Zeitreihen/Telemetrie konfiguriert",
"snmp-timseries-or-attribute-name":"Zeitreihe/Attributname für Zuordnung",
"snmp-timseries-or-attribute-name":"Zeitreihe/Attributname für Zuordnung",
"single-description":"Eine Beobachtungsanfrage pro Ressource (höhere Präzision, mehr Netzwerkverkehr)",
"composite-all":"Komplett zusammengefasst",
"composite-all-description":"Alle Ressourcen werden mit einer einzigen zusammengefassten Beobachtungsanfrage überwacht (effizienter, weniger flexibel)",
"composite-by-object-description":"Ressourcen werden nach Objekttyp gruppiert und mit separaten zusammengefassten Beobachtungsanfragen überwacht (ausgewogener Ansatz)"
"custom-label-hint":"Aktivieren Sie diese Option, um ein eigenes Label für den Filter festzulegen. Wenn deaktiviert, wird automatisch ein Label generiert.",
"prepare-environment-text":"Für die ThingsBoard Flutter Mobile App wird das Flutter SDK benötigt. Folgen Sie den Anweisungen zur Einrichtung des Flutter SDK.",
"prepare-environment-text":"Die Flutter ThingsBoard Mobile App erfordert das Flutter SDK. Befolgen Sie die Anweisungen zur Einrichtung des Flutter SDK.",
"get-source-code-title":"Quellcode der App erhalten",
"get-source-code-title":"App-Quellcode beziehen",
"get-source-code-text":"Sie können den Quellcode der ThingsBoard Flutter Mobile App durch Klonen des GitHub-Repositories erhalten:",
"get-source-code-text":"Sie können den Quellcode der Flutter ThingsBoard Mobile App durch Klonen aus dem GitHub-Repository beziehen:",
"configure-api-text":"Öffnen Sie das Projekt 'flutter_thingsboard_pe_app' in Ihrem Editor/IDE. Bearbeiten Sie:",
"configure-app-settings-text":"Laden Sie die Konfigurationsdatei herunter und platzieren Sie sie im Stammverzeichnis des Projekts, das Sie im vorherigen Schritt geklont haben.",
"configure-api-hint":"Setzen Sie den Wert der Konstante 'thingsBoardApiEndpoint' entsprechend dem API-Endpunkt Ihrer ThingsBoard-Instanz. Verwenden Sie keine Hostnamen wie „localhost“ oder „127.0.0.1“.",
"download-file":"Datei herunterladen",
"run-app-title":"App ausführen",
"run-app-title":"App ausführen",
"run-app-text":"Führen Sie die App wie in Ihrer IDE beschrieben aus.\nWenn Sie das Terminal verwenden, führen Sie folgenden Befehl aus:",
"run-app-text":"Führen Sie die App wie in Ihrer IDE beschrieben aus.\nWenn Sie das Terminal verwenden, führen Sie die App mit folgendem Befehl aus:",
"more-information":"Detaillierte Informationen finden Sie in unserer Einstiegsdokumentation.",
"more-information":"Detaillierte Informationen finden Sie in unserer Erste-Schritte-Dokumentation.",
"invalid-additional-info":"Zusätzliche Info-JSON kann nicht geparst werden.",
"invalid-additional-info":"Zusätzliche Info-JSON kann nicht geparst werden.",
"no-relations-text":"Keine Beziehungen gefunden",
"no-relations-text":"Keine Beziehungen gefunden",
@ -4635,7 +4759,7 @@
"copy-from":"Kopieren von",
"copy-from":"Kopieren von",
"data-to-metadata":"Daten zu Metadaten",
"data-to-metadata":"Daten zu Metadaten",
"metadata-to-data":"Metadaten zu Daten",
"metadata-to-data":"Metadaten zu Daten",
"use-regular-expression-hint":"Verwenden Sie reguläre Ausdrücke zum Kopieren nach Muster.\n\nTipps:\nEnter = Eingabe abschließen\nBackspace = löschen\nMehrere Felder erlaubt.",
"use-regular-expression-hint":"Verwenden Sie reguläre Ausdrücke, um Schlüssel anhand eines Musters zu kopieren.\n\nTipps & Tricks:\nDrücken Sie 'Enter', um die Eingabe des Feldnamens abzuschließen.\nDrücken Sie 'Rücktaste', um den Feldnamen zu löschen. Mehrere Feldnamen werden unterstützt.",
"interval":"Intervall",
"interval":"Intervall",
"interval-required":"Intervall ist erforderlich",
"interval-required":"Intervall ist erforderlich",
"interval-hint":"Deduplizierungsintervall in Sekunden.",
"interval-hint":"Deduplizierungsintervall in Sekunden.",
@ -4889,9 +5013,9 @@
"connect-timeout-required":"Verbindungs-Timeout ist erforderlich.",
"connect-timeout-required":"Verbindungs-Timeout ist erforderlich.",
"connect-timeout-range":"Verbindungs-Timeout muss im Bereich von 1 bis 200 liegen.",
"connect-timeout-range":"Verbindungs-Timeout muss im Bereich von 1 bis 200 liegen.",
"client-id":"Client-ID",
"client-id":"Client-ID",
"client-id-hint":"Optional. Leer lassen für automatisch generierte Client-ID. Vorsicht beim Festlegen der Client-ID: Die meisten MQTT-Broker erlauben keine mehrfachen Verbindungen mit derselben Client-ID. Um mit solchen Brokern zu verbinden, muss deine MQTT-Client-ID eindeutig sein. Wenn die Plattform im Microservice-Modus betrieben wird, wird eine Kopie des Regelknotens in jedem Microservice gestartet. Dies führt automatisch zu mehreren MQTT-Clients mit derselben ID und kann zu Fehlern führen. Um dies zu vermeiden, aktiviere die Option „Dienst-ID als Suffix zur Client-ID hinzufügen“ unten.",
"client-id-hint":"Optional. Leer lassen für automatisch generierte Client-ID. Vorsicht beim Festlegen der Client-ID: Die meisten MQTT-Broker erlauben keine mehrfachen Verbindungen mit derselben Client-ID. Um mit solchen Brokern zu verbinden, muss deine MQTT-Client-ID eindeutig sein. Wenn die Plattform im Microservice-Modus betrieben wird, wird eine Kopie des Regelknotens in jedem Microservice gestartet. Dies führt automatisch zu mehreren MQTT-Clients mit derselben ID und kann zu Fehlern führen. Um dies zu vermeiden, aktiviere die Option \"Dienst-ID als Suffix zur Client-ID hinzufügen\" unten.",
"append-client-id-suffix":"Dienst-ID als Suffix zur Client-ID hinzufügen",
"append-client-id-suffix":"Dienst-ID als Suffix zur Client-ID hinzufügen",
"client-id-suffix-hint":"Optional. Wird angewendet, wenn die „Client-ID“ explizit angegeben wurde. Falls ausgewählt, wird die Dienst-ID als Suffix zur Client-ID hinzugefügt. Hilft Fehler zu vermeiden, wenn die Plattform im Microservice-Modus läuft.",
"client-id-suffix-hint":"Optional. Wird angewendet, wenn die \"Client ID\" explizit angegeben ist. Falls ausgewählt, wird die Service-ID als Suffix zur Client-ID hinzugefügt. Dies hilft, Fehler zu vermeiden, wenn die Plattform im Microservices-Modus betrieben wird.",
"device-id":"Geräte-ID",
"device-id":"Geräte-ID",
"device-id-required":"Geräte-ID ist erforderlich.",
"device-id-required":"Geräte-ID ist erforderlich.",
"clean-session":"Saubere Sitzung",
"clean-session":"Saubere Sitzung",
@ -5304,6 +5428,36 @@
"html-text-description":"Ermöglicht HTML-Tags zur Formatierung, für Links und Bilder im Nachrichtentext.",
"html-text-description":"Ermöglicht HTML-Tags zur Formatierung, für Links und Bilder im Nachrichtentext.",
"dynamic-text-description":"Erlaubt die dynamische Verwendung von reinem Text oder HTML basierend auf der Templating-Funktion.",
"dynamic-text-description":"Erlaubt die dynamische Verwendung von reinem Text oder HTML basierend auf der Templating-Funktion.",
"after-template-evaluation-hint":"Nach der Template-Auswertung muss der Wert true für HTML und false für reinen Text sein."
"after-template-evaluation-hint":"Nach der Template-Auswertung muss der Wert true für HTML und false für reinen Text sein."
},
"ai":{
"ai-model":"KI-Modell",
"model":"Modell",
"ai-model-hint":"Wählen Sie das vorkonfigurierte KI-Modell zur Verarbeitung der von diesem Rule Node gesendeten Anfragen aus, oder verwenden Sie „Neu erstellen“, um ein neues zu konfigurieren.",
"prompt-settings":"Prompt-Einstellungen",
"prompt-settings-hint":"Der optionale System-Prompt definiert die allgemeine Rolle und Einschränkungen der KI, während der Benutzer-Prompt die spezifische Aufgabe beschreibt. Beide Felder unterstützen auch die Verwendung von Templates.",
"system-prompt":"System-Prompt",
"system-prompt-max-length":"Der System-Prompt darf maximal 500.000 Zeichen lang sein.",
"system-prompt-blank":"Der System-Prompt darf nicht leer sein.",
"user-prompt":"Benutzer-Prompt",
"user-prompt-required":"Benutzer-Prompt ist erforderlich.",
"user-prompt-max-length":"Der Benutzer-Prompt darf maximal 500.000 Zeichen lang sein.",
"user-prompt-blank":"Der Benutzer-Prompt darf nicht leer sein.",
"response-format":"Antwortformat",
"response-text":"Text",
"response-json":"JSON",
"response-json-schema":"JSON-Schema",
"response-format-hint-TEXT":"Erlaubt dem Modell, beliebigen Text zu generieren, der möglicherweise kein gültiges JSON-Objekt ist. Ist die Ausgabe kein gültiges JSON, wird sie automatisch in ein JSON-Objekt unter dem Schlüssel \"response\" eingebettet.",
"response-format-hint-JSON":"Das Modell muss eine gültige JSON-Antwort erzeugen. Ist die Ausgabe kein gültiges JSON-Objekt, wird sie automatisch unter dem Schlüssel \"response\" eingebettet.",
"response-format-hint-JSON_SCHEMA":"Das Modell muss ein JSON erzeugen, das der im bereitgestellten Schema definierten Struktur und den Datentypen entspricht. Ist das Ergebnis kein gültiges JSON-Objekt, wird es automatisch unter dem Schlüssel \"response\" eingebettet.",
"response-json-schema-hint":"Obwohl jedes gültige JSON-Schema eingegeben werden kann, unterstützt dieser Rule Node nur einen begrenzten Funktionsumfang. Details finden Sie in der Dokumentation des Nodes.",
"response-json-schema-required":"JSON-Schema ist erforderlich",
"advanced-settings":"Erweiterte Einstellungen",
"timeout":"Zeitüberschreitung",
"timeout-hint":"Maximale Zeit, die auf eine Antwort \nvom KI-Modell gewartet wird, bevor die Anfrage abgebrochen wird.",
"timeout-required":"Zeitüberschreitung ist erforderlich",
"timeout-validation":"Muss zwischen 1 Sekunde und 10 Minuten liegen.",
"force-acknowledgement":"Erzwinge Bestätigung",
"force-acknowledgement-hint":"Wenn aktiviert, wird die eingehende Nachricht sofort bestätigt. Die Antwort des Modells wird dann als separate, neue Nachricht eingereiht."
}
}
},
},
"timezone":{
"timezone":{
@ -5625,7 +5779,10 @@
"too-small-value-zero":"Der Wert muss größer als 0 sein",
"too-small-value-zero":"Der Wert muss größer als 0 sein",
"too-small-value-one":"Der Wert muss größer als 1 sein",
"too-small-value-one":"Der Wert muss größer als 1 sein",
"queue-size-is-limited-by-system-configuration":"Die Größe der Warteschlange ist auch durch die Systemkonfiguration begrenzt.",
"queue-size-is-limited-by-system-configuration":"Die Größe der Warteschlange ist auch durch die Systemkonfiguration begrenzt.",
"cassandra-tenant-limits-configuration":"Cassandra-Abfrage für Mieter",
"source-unit-hint":"Dies ist die Einheit des gespeicherten Wertes. Die Einheit, aus der konvertiert wird. Geben Sie das Symbol ein, das Ihre Quelldaten verwenden (z. B. m, km, ft, in).",
"target-metric-unit":"Ziel-Metrikeinheit",
"target-metric-unit-hint":"Wählen Sie die Metrikeinheit (SI), in die Ihr Quellwert umgerechnet werden soll (z. B. cm, mm, km).",
"target-imperial-unit":"Ziel-Imperialeinheit",
"target-imperial-unit-hint":"Wählen Sie die Imperialeinheit, in die Ihr Quellwert umgerechnet werden soll (z. B. in, ft, yd).",
"target-hybrid-unit":"Ziel-Hybrideinheit",
"target-hybrid-unit-hint":"Wählen Sie die Hybrideinheit, in die Ihr Quellwert umgerechnet werden soll (z. B. cm, in, km). Hybride Einheiten kombinieren metrische oder imperiale Einheiten.",
"enable-unit-conversion-hint":"Aktivieren Sie diese Option, um die Umrechnung zu aktivieren. Wenn deaktiviert, wird der Quellwert unverändert übernommen. Deaktiviert, wenn es in der entsprechenden Messeinheitsgruppe nur eine Einheit gibt (z. B. Lichtstrom, AQI)."
"no-data-display-message":"Alternative Nachricht bei fehlenden Daten",
"no-data-display-message":"Alternative Meldung für \"Keine Daten zur Anzeige\"",
"data-page-size":"Maximale Anzahl von Entitäten pro Datenquelle",
"data-page-size":"Maximale Entitäten pro Datenquelle",
"settings-component-not-found":"Einstellungsformular-Komponente für Selector '{{selector}}' nicht gefunden",
"settings-component-not-found":"Einstellungsformular-Komponente für Selektor '{{selector}}' nicht gefunden",
"preview":"Vorschau",
"preview":"Vorschau",
"set":"Festlegen",
"set":"Festlegen",
"set-message":"Nachricht festlegen",
"set-message":"Nachricht festlegen",
@ -7774,6 +8089,18 @@
"fill-area-opacity":"Füllbereichsdeckkraft",
"fill-area-opacity":"Füllbereichsdeckkraft",
"range-chart-style":"Stil des Bereichsdiagramms"
"range-chart-style":"Stil des Bereichsdiagramms"
},
},
"knob":{
"behavior":"Verhalten",
"initial-value":"Anfangswert",
"initial-value-hint":"Aktion zum Abrufen des Anfangswerts des Reglers.",
"on-value-change":"Beim Wertwechsel",
"on-value-change-hint":"Aktion, die ausgelöst wird, wenn der Reglerwert geändert wird.",
"range":"Bereich",
"min":"min",
"max":"max",
"value":"Wert",
"fallback-initial-value":"Ausweich-Anfangswert"
},
"rpc":{
"rpc":{
"value-settings":"Werteinstellungen",
"value-settings":"Werteinstellungen",
"initial-value":"Anfangswert",
"initial-value":"Anfangswert",
@ -7830,9 +8157,7 @@
"led-status-value-timeseries":"Zeitreihe des Geräts mit LED-Statuswert",
"led-status-value-timeseries":"Zeitreihe des Geräts mit LED-Statuswert",
"check-status-method":"RPC-Methode zur Geräteprüfung",
"check-status-method":"RPC-Methode zur Geräteprüfung",
"parse-led-status-value-function":"Funktion zum Parsen des LED-Statuswerts",
"parse-led-status-value-function":"Funktion zum Parsen des LED-Statuswerts",
"knob-title":"Drehregler-Titel",
"knob-title":"Drehregler-Titel"
"min-value":"Minimalwert",
"max-value":"Maximalwert"
},
},
"maps":{
"maps":{
"map-type":{
"map-type":{
@ -8676,18 +9001,22 @@
"pie-chart-card-style":"Kreisdiagramm-Kartenstil"
"pie-chart-card-style":"Kreisdiagramm-Kartenstil"
},
},
"radar-chart":{
"radar-chart":{
"radar-appearance":"Radar-Diagramm",
"radar-appearance":"Radar-Darstellung",
"shape":"Form",
"shape":"Form",
"shape-polygon":"Polygon",
"shape-polygon":"Polygon",
"shape-circle":"Kreis",
"shape-circle":"Kreis",
"color":"Farbe",
"color":"Farbe",
"line":"Linie",
"line":"Linie",
"points":"Punkte",
"points":"Punkte",
"points-label":"Punktebezeichnung",
"points-label":"Punktebeschriftung",
"radar-axis":"Radar-Achse",
"radar-axis":"Radar-Achse",
"axis-label":"Achsenbeschriftung",
"axis-label":"Achsenbeschriftung",
"ticks-label":"Skalenbeschriftung",
"ticks-label":"Teilstrichbeschriftung",
"radar-chart-style":"Radar-Diagrammstil"
"radar-chart-style":"Radar-Diagramm-Stil",
"max-axes-scaling":"Maximale Achsenskalierung",
"max-axes-scaling-hint":"Wählen Sie, ob jede Radarachse ihren eigenen Maximalwert hat (Separat) oder ob alle Achsen den höchsten Wert aus dem Widget-Datensatz gemeinsam nutzen (Gemeinsam).",
"prompt-settings-hint":"The optional system prompt sets the AI's general role and constraints, while the user prompt defines the specific task to perform. Both fields also support templatization.",
"prompt-settings-hint":"The optional system prompt sets the AI's general role and constraints, while the user prompt defines the specific task to perform. Both fields also support templatization.",
"system-prompt":"System prompt",
"system-prompt":"System prompt",
"system-prompt-max-length":"System prompt must be 10000 characters or less.",
"system-prompt-max-length":"System prompt must be 500000 characters or less.",
"system-prompt-blank":"System prompt must not be blank.",
"system-prompt-blank":"System prompt must not be blank.",
"user-prompt":"User prompt",
"user-prompt":"User prompt",
"user-prompt-required":"User prompt is required.",
"user-prompt-required":"User prompt is required.",
"user-prompt-max-length":"User prompt must be 10000 characters or less.",
"user-prompt-max-length":"User prompt must be 500000 characters or less.",
"user-prompt-blank":"User prompt must not be blank.",
"user-prompt-blank":"User prompt must not be blank.",
"cassandra-read-queries-monolith":"Requêtes de lecture Cassandra monolithiques (télémétrie)",
"entity-version-creation":"Création de version d'entité",
"entity-version-creation":"Création de version d'entité",
"entity-version-load":"Chargement de version d'entité",
"entity-version-load":"Chargement de version d'entité",
"notification-requests":"Requêtes de notification",
"notification-requests":"Requêtes de notification",
"notification-requests-per-rule":"Requêtes de notification par règle",
"notification-requests-per-rule":"Requêtes de notification par règle",
"rest-api-requests":"Requêtes REST API",
"rest-api-requests":"Requêtes API REST",
"rest-api-requests-per-customer":"Requêtes REST API par client",
"rest-api-requests-per-customer":"Requêtes API REST par client",
"transport-messages":"Messages de transport",
"transport-messages":"Messages de transport",
"transport-messages-per-device":"Messages de transport par appareil",
"transport-messages-per-device":"Messages de transport par appareil",
"transport-messages-per-gateway":"Messages de transport par passerelle",
"transport-messages-per-gateway":"Messages de transport par passerelle",
"transport-messages-per-gateway-device":"Messages de transport par appareil de passerelle",
"transport-messages-per-gateway-device":"Messages de transport par appareil de passerelle",
"ws-updates-per-session":"Mises à jour WS par session",
"ws-updates-per-session":"Mises à jour WS par session",
"edge-events":"Événements Edge",
"edge-events":"Événements Edge",
"edge-events-per-edge":"Événements Edge par instance",
"edge-events-per-edge":"Événements Edge par instance Edge",
"edge-uplink-messages":"Messages montants Edge",
"edge-uplink-messages":"Messages montants Edge",
"edge-uplink-messages-per-edge":"Messages montants Edge par instance"
"edge-uplink-messages-per-edge":"Messages montants Edge par instance Edge"
},
},
"audit-log":{
"audit-log":{
"audit":"Audit",
"audit":"Audit",
@ -996,9 +1008,9 @@
"failures":"Échecs",
"failures":"Échecs",
"entity":"entité",
"entity":"entité",
"hint":{
"hint":{
"main-limited":"Pas plus de {{msg}} messages de débogage de {{entity}} par {{time}} ne seront enregistrés.",
"main-limited":"Pas plus de {{msg}} messages de débogage pour {{entity}} toutes les {{time}} seront enregistrés.",
"on-failure":"Enregistrer uniquement les messages d'erreur.",
"on-failure":"Journaliser uniquement les messages d'erreur.",
"all-messages":"Enregistrer tous les messages de débogage."
"all-messages":"Journaliser tous les messages de débogage."
}
}
},
},
"calculated-fields":{
"calculated-fields":{
@ -1018,13 +1030,13 @@
"add-argument":"Ajouter un argument",
"add-argument":"Ajouter un argument",
"test-script-function":"Tester la fonction script",
"test-script-function":"Tester la fonction script",
"no-arguments":"Aucun argument configuré",
"no-arguments":"Aucun argument configuré",
"argument-settings":"Paramètres de l'argument",
"argument-settings":"Paramètres des arguments",
"argument-current":"Entité actuelle",
"argument-current":"Entité actuelle",
"argument-current-tenant":"Tenant actuel",
"argument-current-tenant":"Locataire actuel",
"argument-device":"Appareil",
"argument-device":"Appareil",
"argument-asset":"Actif",
"argument-asset":"Actif",
"argument-customer":"Client",
"argument-customer":"Client",
"argument-tenant":"Tenant actuel",
"argument-tenant":"Locataire actuel",
"argument-type":"Type d'argument",
"argument-type":"Type d'argument",
"see-debug-events":"Voir les événements de débogage",
"see-debug-events":"Voir les événements de débogage",
"attribute":"Attribut",
"attribute":"Attribut",
@ -1057,24 +1069,103 @@
"delete-multiple-title":"Êtes-vous sûr de vouloir supprimer { count, plural, =1 {1 champ calculé} other {# champs calculés} } ?",
"delete-multiple-title":"Êtes-vous sûr de vouloir supprimer { count, plural, =1 {1 champ calculé} other {# champs calculés} } ?",
"delete-multiple-text":"Attention, après confirmation tous les champs calculés sélectionnés seront supprimés et toutes les données associées seront irrécupérables.",
"delete-multiple-text":"Attention, après confirmation tous les champs calculés sélectionnés seront supprimés et toutes les données associées seront irrécupérables.",
"test-with-this-message":"Tester avec ce message",
"test-with-this-message":"Tester avec ce message",
"use-latest-timestamp":"Utiliser l'horodatage le plus récent",
"hint":{
"hint":{
"arguments-simple-with-rolling":"Le type simple de champ calculé ne doit pas contenir de clés avec un rolling de séries temporelles.",
"arguments-simple-with-rolling":"Un champ calculé de type simple ne doit pas contenir de clés avec type de séries temporelles roulantes.",
"arguments-empty":"Les arguments ne doivent pas être vides.",
"arguments-empty":"Les arguments ne doivent pas être vides.",
"expression-required":"L'expression est requise.",
"expression-required":"Une expression est requise.",
"expression-invalid":"L'expression est invalide",
"expression-invalid":"L'expression est invalide",
"expression-max-length":"La longueur de l'expression doit être inférieure à 255 caractères.",
"expression-max-length":"La longueur de l'expression doit être inférieure à 255 caractères.",
"argument-name-required":"Le nom de l'argument est requis.",
"argument-name-required":"Le nom de l'argument est requis.",
"argument-name-pattern":"Le nom de l'argument est invalide.",
"argument-name-pattern":"Le nom de l'argument est invalide.",
"argument-name-duplicate":"Un argument portant ce nom existe déjà.",
"argument-name-duplicate":"Un argument portant ce nom existe déjà.",
"argument-name-max-length":"Le nom de l'argument doit contenir moins de 256 caractères.",
"argument-name-max-length":"Le nom de l'argument doit comporter moins de 256 caractères.",
"argument-name-forbidden":"Le nom de l'argument est réservé et ne peut pas être utilisé.",
"argument-name-forbidden":"Ce nom d'argument est réservé et ne peut pas être utilisé.",
"argument-type-required":"Le type d'argument est requis.",
"argument-type-required":"Le type d'argument est requis.",
"max-args":"Nombre maximum d'arguments atteint.",
"max-args":"Nombre maximal d'arguments atteint.",
"decimals-range":"Les décimales par défaut doivent être un nombre entre 0 et 15.",
"decimals-range":"Les décimales par défaut doivent être un nombre entre 0 et 15.",
"expression":"L'expression par défaut montre comment transformer une température de Fahrenheit en Celsius.",
"expression":"L'expression par défaut montre comment convertir une température de Fahrenheit en Celsius.",
"arguments-entity-not-found":"L'entité cible de l'argument est introuvable."
"arguments-entity-not-found":"Entité cible de l'argument introuvable.",
"use-latest-timestamp":"Si activé, la valeur calculée sera enregistrée avec l'horodatage le plus récent des télémétries des arguments, au lieu de l'heure du serveur."
}
}
},
},
"ai-models":{
"ai-models":"Modèles IA",
"ai-model":"Modèle IA",
"model":"Modèle",
"name":"Nom",
"ai-provider":"Fournisseur IA",
"no-found":"Aucun modèle IA trouvé",
"list":"{ count, plural, =1 {Un modèle} other {Liste de # modèles} }",
"delete-model-title":"Êtes-vous sûr de vouloir supprimer le modèle '{{modelName}}' ?",
"delete-model-text":"Attention, après confirmation, le modèle et toutes les données associées seront irrécupérables.",
"delete-models-title":"Êtes-vous sûr de vouloir supprimer { count, plural, =1 {1 modèle} other {# modèles} } ?",
"delete-models-text":"Attention, après confirmation, tous les modèles sélectionnés seront supprimés et toutes les données associées deviendront irrécupérables.",
"ai-providers":{
"openai":"OpenAI",
"azure-openai":"Azure OpenAI",
"google-ai-gemini":"Google AI Gemini",
"google-vertex-ai-gemini":"Google Vertex AI Gemini",
"mistral-ai":"Mistral AI",
"anthropic":"Anthropic",
"amazon-bedrock":"Amazon Bedrock",
"github-models":"Modèles GitHub"
},
"name-required":"Le nom est requis.",
"name-max-length":"Le nom doit comporter 255 caractères ou moins.",
"provider":"Fournisseur",
"api-key":"Clé API",
"api-key-required":"La clé API est requise.",
"project-id":"ID de projet",
"project-id-required":"L'ID de projet est requis.",
"location":"Emplacement",
"location-required":"L'emplacement est requis.",
"service-account-key-file":"Fichier de clé du compte de service",
"service-account-key-file-required":"Le fichier de clé du compte de service est requis.",
"no-file":"Aucun fichier sélectionné.",
"drop-file":"Déposez un fichier ou cliquez pour en sélectionner un à téléverser.",
"personal-access-token-required":"Le jeton d'accès personnel est requis.",
"configuration":"Configuration",
"model-id":"ID du modèle",
"model-id-required":"L'ID du modèle est requis.",
"deployment-name":"Nom du déploiement",
"deployment-name-required":"Le nom du déploiement est requis.",
"set":"Définir",
"region":"Région",
"region-required":"La région est requise.",
"access-key-id":"ID de la clé d'accès",
"access-key-id-required":"L'ID de la clé d'accès est requis.",
"secret-access-key":"Clé d'accès secrète",
"secret-access-key-required":"La clé d'accès secrète est requise.",
"temperature":"Température",
"temperature-hint":"Ajuste le niveau d'aléatoire dans la sortie du modèle. Des valeurs plus élevées augmentent l'aléatoire, tandis que des valeurs plus faibles la réduisent.",
"temperature-min":"Doit être supérieur ou égal à 0.",
"top-p":"Top P",
"top-p-hint":"Crée un ensemble des jetons les plus probables pour que le modèle puisse choisir. Des valeurs plus élevées créent un ensemble plus large et diversifié, tandis que des valeurs plus faibles le réduisent.",
"top-p-min-max":"Doit être supérieur à 0 et inférieur ou égal à 1.",
"top-k":"Top K",
"top-k-hint":"Limite les choix du modèle à un ensemble fixe des \"K\" jetons les plus probables.",
"top-k-min":"Doit être supérieur ou égal à 0.",
"presence-penalty":"Pénalité de présence",
"presence-penalty-hint":"Applique une pénalité fixe à la probabilité d’un jeton s’il est déjà apparu dans le texte.",
"frequency-penalty":"Pénalité de fréquence",
"frequency-penalty-hint":"Applique une pénalité à la probabilité d’un jeton qui augmente avec sa fréquence dans le texte.",
"max-output-tokens":"Nombre maximum de jetons en sortie",
"max-output-tokens-min":"Doit être supérieur à 0.",
"max-output-tokens-hint":"Définit le nombre maximal de jetons que le modèle peut générer en une seule réponse.",
"endpoint":"Point de terminaison",
"endpoint-required":"Le point de terminaison est requis.",
"service-version":"Version du service",
"check-connectivity":"Vérifier la connectivité",
"check-connectivity-success":"La requête de test a réussi",
"check-connectivity-failed":"La requête de test a échoué",
"no-model-matching":"Aucun modèle correspondant à '{{entity}}' trouvé.",
"model-required":"Le modèle est requis.",
"no-model-text":"Aucun modèle trouvé."
},
"confirm-on-exit":{
"confirm-on-exit":{
"message":"Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir quitter cette page ?",
"message":"Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir quitter cette page ?",
"html-message":"Vous avez des modifications non enregistrées.<br/>Êtes-vous sûr de vouloir quitter cette page ?",
"html-message":"Vous avez des modifications non enregistrées.<br/>Êtes-vous sûr de vouloir quitter cette page ?",
"support-unit-conversion":"Prise en charge de la conversion d'unités"
},
},
"clear-form":"Effacer le formulaire",
"clear-form":"Effacer le formulaire",
"clear-form-prompt":"Êtes-vous sûr de vouloir supprimer toutes les propriétés du formulaire ?",
"clear-form-prompt":"Êtes-vous sûr de vouloir supprimer toutes les propriétés du formulaire ?",
@ -1911,6 +2004,7 @@
"mqtt-use-json-format-for-default-downlink-topics-hint":"Utilise JSON pour les sujets : <b>v1/devices/me/attributes/response/$request_id</b>, etc. Ne s'applique pas aux sujets v2.",
"mqtt-use-json-format-for-default-downlink-topics-hint":"Utilise JSON pour les sujets : <b>v1/devices/me/attributes/response/$request_id</b>, etc. Ne s'applique pas aux sujets v2.",
"mqtt-send-ack-on-validation-exception":"Envoyer PUBACK en cas d'échec de validation",
"mqtt-send-ack-on-validation-exception":"Envoyer PUBACK en cas d'échec de validation",
"mqtt-send-ack-on-validation-exception-hint":"Par défaut, la session MQTT est fermée sur erreur. Si activé, envoie un accusé de réception PUBACK à la place.",
"mqtt-send-ack-on-validation-exception-hint":"Par défaut, la session MQTT est fermée sur erreur. Si activé, envoie un accusé de réception PUBACK à la place.",
"mqtt-protocol-version":"Version du protocole",
"snmp-add-mapping":"Ajouter un mappage SNMP",
"snmp-add-mapping":"Ajouter un mappage SNMP",
"snmp-mapping-not-configured":"Aucun mappage OID vers série temporelle ou attribut configuré",
"snmp-mapping-not-configured":"Aucun mappage OID vers série temporelle ou attribut configuré",
"snmp-timseries-or-attribute-name":"Nom de série temporelle/attribut pour le mappage",
"snmp-timseries-or-attribute-name":"Nom de série temporelle/attribut pour le mappage",
@ -2171,6 +2265,9 @@
"add-lwm2m-server-config":"Ajouter un serveur LwM2M",
"add-lwm2m-server-config":"Ajouter un serveur LwM2M",
"no-config-servers":"Aucun serveur configuré",
"no-config-servers":"Aucun serveur configuré",
"others-tab":"Autres paramètres",
"others-tab":"Autres paramètres",
"ota-update":"Mise à jour OTA",
"use-object-19-for-ota-update":"Utiliser l'objet 19 pour les métadonnées de fichier OTA (checksum, taille, version, nom)",
"use-object-19-for-ota-update-hint":"Utiliser l'objet ressource avec ObjectId = 19 pour les mises à jour OTA : FirmWare → InstanceId = 65534, SoftWare → InstanceId = 65535. Le format des données est du JSON encodé en Base64. Ce JSON contient les métadonnées du fichier OTA : \"Checksum\" (SHA256). Champs supplémentaires : \"Title\" (nom de la mise à jour OTA), \"Version\" (version OTA), \"File Name\" (nom du fichier pour le stockage OTA côté client), \"File Size\" (taille OTA en octets).",
"client-strategy":"Stratégie client lors de la connexion",
"client-strategy":"Stratégie client lors de la connexion",
"client-strategy-label":"Stratégie",
"client-strategy-label":"Stratégie",
"client-strategy-only-observe":"Envoyer uniquement la requête d’observation après connexion initiale",
"client-strategy-only-observe":"Envoyer uniquement la requête d’observation après connexion initiale",
@ -2201,7 +2298,17 @@
"default-object-id":"Version par défaut de l'objet (Attribut)",
"default-object-id":"Version par défaut de l'objet (Attribut)",
"default-object-id-ver":{
"default-object-id-ver":{
"v1-0":"1.0",
"v1-0":"1.0",
"v1-1":"1.1"
"v1-1":"1.1",
"v1-2":"1.2"
},
"observe-strategy":{
"observe-strategy":"Stratégie d'observation",
"single":"Unique",
"single-description":"Une requête Observe par ressource (plus grande précision, plus de trafic réseau)",
"composite-all":"Composé - tout",
"composite-all-description":"Toutes les ressources sont observées avec une seule requête Composite Observe (plus efficace, moins flexible)",
"composite-by-object":"Composé par objets",
"composite-by-object-description":"Les ressources sont regroupées par type d'objet et observées via des requêtes Composite Observe distinctes (approche équilibrée)"
"list-of-widgets-bundles":"{ count, plural, =1 {Un pack de widgets} other {Liste de # packs de widgets} }",
"list-of-widgets-bundles":"{ count, plural, =1 {Un pack de widgets} other {Liste de # packs de widgets} }",
@ -2553,6 +2662,8 @@
"type-tb-resources":"Ressources",
"type-tb-resources":"Ressources",
"list-of-tb-resources":"{ count, plural, =1 {Une ressource} other {Liste de # ressources} }",
"list-of-tb-resources":"{ count, plural, =1 {Une ressource} other {Liste de # ressources} }",
"type-ota-package":"Paquet OTA",
"type-ota-package":"Paquet OTA",
"type-ota-packages":"Packages OTA",
"list-of-ota-packages":"{ count, plural, =1 {Un package OTA} other {Liste de # packages OTA} }",
"type-rpc":"RPC",
"type-rpc":"RPC",
"type-queue":"File d'attente",
"type-queue":"File d'attente",
"type-queue-stats":"Statistiques de file d'attente",
"type-queue-stats":"Statistiques de file d'attente",
@ -2938,6 +3049,7 @@
"missing-key-filters-error":"Les filtres clés sont manquants pour le filtre '{{filter}}'.",
"missing-key-filters-error":"Les filtres clés sont manquants pour le filtre '{{filter}}'.",
"filter":"Filtre",
"filter":"Filtre",
"editable":"Éditable",
"editable":"Éditable",
"editable-hint":"Autoriser l'utilisateur à modifier la valeur du filtre dans les tableaux de bord.",
"no-filters-found":"Aucun filtre trouvé.",
"no-filters-found":"Aucun filtre trouvé.",
"no-filter-text":"Aucun filtre spécifié",
"no-filter-text":"Aucun filtre spécifié",
"add-filter-prompt":"Veuillez ajouter un filtre",
"add-filter-prompt":"Veuillez ajouter un filtre",
@ -2977,6 +3089,8 @@
"filter-user-params":"Paramètres utilisateur du prédicat du filtre",
"filter-user-params":"Paramètres utilisateur du prédicat du filtre",
"user-parameters":"Paramètres utilisateur",
"user-parameters":"Paramètres utilisateur",
"display-label":"Libellé à afficher",
"display-label":"Libellé à afficher",
"custom-label":"Libellé personnalisé",
"custom-label-hint":"Activer pour définir votre propre étiquette pour le filtre. Si désactivé, une étiquette sera générée automatiquement.",
"order-priority":"Priorité d'ordre des champs",
"order-priority":"Priorité d'ordre des champs",
"key-filter":"Filtre par clé",
"key-filter":"Filtre par clé",
"key-filters":"Filtres par clé",
"key-filters":"Filtres par clé",
@ -3021,7 +3135,8 @@
"switch-to-dynamic-value":"Basculer vers la valeur dynamique",
"switch-to-dynamic-value":"Basculer vers la valeur dynamique",
"switch-to-default-value":"Basculer vers la valeur par défaut",
"switch-to-default-value":"Basculer vers la valeur par défaut",
"inherit-owner":"Hériter du propriétaire",
"inherit-owner":"Hériter du propriétaire",
"source-attribute-not-set":"Si l'attribut source n'est pas défini"
"source-attribute-not-set":"Si l'attribut source n'est pas défini",
"unit":"Unité"
},
},
"fullscreen":{
"fullscreen":{
"expand":"Agrandir en plein écran",
"expand":"Agrandir en plein écran",
@ -3406,6 +3521,7 @@
"power-button-background":"Arrière-plan du bouton de mise sous tension",
"power-button-background":"Arrière-plan du bouton de mise sous tension",
"value-box-background":"Arrière-plan de la boîte de valeur",
"value-box-background":"Arrière-plan de la boîte de valeur",
"value-units":"Unités de valeur",
"value-units":"Unités de valeur",
"enable-units-scale":"Activer les unités sur l'échelle",
"filtration-mode":"Mode de filtration",
"filtration-mode":"Mode de filtration",
"filtration-mode-hint":"Valeur entière indiquant le mode de filtration actuel.",
"filtration-mode-hint":"Valeur entière indiquant le mode de filtration actuel.",
"filtration-mode-update":"État de mise à jour du mode de filtration",
"filtration-mode-update":"État de mise à jour du mode de filtration",
@ -3718,10 +3834,12 @@
"min-version":"Version minimale",
"min-version":"Version minimale",
"invalid-version-pattern":"Format de version invalide. Veuillez utiliser le format : majeur.mineur.correctif (ex. : 1.0.0).",
"invalid-version-pattern":"Format de version invalide. Veuillez utiliser le format : majeur.mineur.correctif (ex. : 1.0.0).",
"mobile-center":"Centre mobile",
"mobile-center":"Centre mobile",
"mobile-package":"Paquet de l'application",
"mobile-package":"Package de l'application",
"mobile-package-max-length":"Le paquet de l'application doit contenir moins de 256 caractères",
"mobile-package-max-length":"Le package de l'application doit contenir moins de 256 caractères",
"mobile-package-required":"Le paquet de l'application est requis.",
"mobile-package-required":"Le package de l'application est requis.",
"mobile-package-pattern":"Format du paquet de l'application invalide",
"mobile-package-pattern":"Format du package de l'application invalide",
"mobile-package-title":"Titre de l'application",
"mobile-package-title-max-length":"Le titre de l'application doit contenir moins de 256 caractères",
"no-application":"Aucune application trouvée",
"no-application":"Aucune application trouvée",
"no-bundles":"Aucun bundle trouvé",
"no-bundles":"Aucun bundle trouvé",
"platform-type":"Type de plateforme",
"platform-type":"Type de plateforme",
@ -3805,17 +3923,13 @@
"prepare-environment-text":"L'application mobile Flutter ThingsBoard nécessite le SDK Flutter. Suivez les instructions pour configurer le SDK Flutter.",
"prepare-environment-text":"L'application mobile Flutter ThingsBoard nécessite le SDK Flutter. Suivez les instructions pour configurer le SDK Flutter.",
"get-source-code-title":"Obtenir le code source de l'application",
"get-source-code-title":"Obtenir le code source de l'application",
"get-source-code-text":"Vous pouvez obtenir le code source de l'application mobile Flutter ThingsBoard en le clonant depuis le dépôt GitHub :",
"get-source-code-text":"Vous pouvez obtenir le code source de l'application mobile Flutter ThingsBoard en le clonant depuis le dépôt GitHub :",
"configure-api-title":"Configurer le point de terminaison de l'API ThingsBoard",
"configure-app-settings-title":"Configurer les paramètres de l'application",
"configure-api-text":"Ouvrez le projet flutter_thingsboard_pe_app dans votre éditeur/IDE. Modifiez :",
"configure-app-settings-text":"Téléchargez le fichier de configuration et placez-le dans le répertoire racine du projet que vous avez cloné à l'étape précédente.",
"configure-api-hint":"Définissez la valeur de la constante thingsBoardApiEndpoint pour correspondre au point de terminaison API de votre instance ThingsBoard. N'utilisez pas les noms d'hôte “localhost” ou “127.0.0.1”.",
"download-file":"Télécharger le fichier",
"run-app-title":"Lancer l'application",
"run-app-title":"Exécuter l'application",
"run-app-text":"Lancez l'application comme décrit dans votre IDE.\nSi vous utilisez le terminal, exécutez l'application avec la commande suivante :",
"run-app-text":"Exécutez l'application comme décrit dans votre IDE.\nSi vous utilisez le terminal, exécutez l'application avec la commande suivante :",
"more-information":"Des informations détaillées sont disponibles dans notre documentation de démarrage.",
"more-information":"Des informations détaillées sont disponibles dans notre documentation de démarrage.",
"getting-started":"Commencer",
"getting-started":"Démarrage"
"configure-package-title":"Configurer le paquet de l'application",
"configure-package-text":"Vous pouvez modifier manuellement le paquet de l'application ou utiliser un outil CLI tiers.",
"configure-package-text-install":"Pour installer l'outil Rename CLI, exécutez la commande suivante :",
"configure-package-run-commands":"Exécutez ces commandes dans le répertoire racine de votre projet :"
}
}
},
},
"notification":{
"notification":{
@ -3839,6 +3953,7 @@
"new-platform-version-trigger-settings":"Paramètres du déclencheur de nouvelle version de la plateforme",
"new-platform-version-trigger-settings":"Paramètres du déclencheur de nouvelle version de la plateforme",
"rate-limits-trigger-settings":"Paramètres du déclencheur de dépassement de limites",
"rate-limits-trigger-settings":"Paramètres du déclencheur de dépassement de limites",
"task-processing-failure-trigger-settings":"Paramètres du déclencheur d'échec du traitement de tâche",
"task-processing-failure-trigger-settings":"Paramètres du déclencheur d'échec du traitement de tâche",
"resources-shortage-trigger-settings":"Paramètres de déclenchement de pénurie de ressources",
"at-least-one-should-be-selected":"Au moins un élément doit être sélectionné",
"at-least-one-should-be-selected":"Au moins un élément doit être sélectionné",
"basic-settings":"Paramètres de base",
"basic-settings":"Paramètres de base",
"button-text":"Texte du bouton",
"button-text":"Texte du bouton",
@ -3853,6 +3968,7 @@
"create-new":"Créer nouveau",
"create-new":"Créer nouveau",
"created":"Créé",
"created":"Créé",
"customize-messages":"Personnaliser les messages",
"customize-messages":"Personnaliser les messages",
"cpu-threshold":"Seuil CPU",
"delete-notification-text":"Attention, après confirmation, la notification sera irrécupérable.",
"delete-notification-text":"Attention, après confirmation, la notification sera irrécupérable.",
"delete-notification-title":"Êtes-vous sûr de vouloir supprimer la notification ?",
"delete-notification-title":"Êtes-vous sûr de vouloir supprimer la notification ?",
"delete-notifications-text":"Attention, après confirmation, les notifications seront irrécupérables.",
"delete-notifications-text":"Attention, après confirmation, les notifications seront irrécupérables.",
@ -3919,6 +4035,7 @@
"input-fields-support-templatization":"Les champs de saisie prennent en charge la templatisation.",
"input-fields-support-templatization":"Les champs de saisie prennent en charge la templatisation.",
"link":"Lien",
"link":"Lien",
"link-required":"Le lien est requis",
"link-required":"Le lien est requis",
"link-max-length":"Le lien doit comporter au maximum {{ length }} caractères",
"rule-engine-lifecycle-event":"Événement du cycle de vie du moteur de règles",
"rule-engine-lifecycle-event":"Événement du cycle de vie du moteur de règles",
"new-platform-version":"Nouvelle version de la plateforme",
"new-platform-version":"Nouvelle version de la plateforme",
"rate-limits":"Limites de taux dépassées",
"rate-limits":"Limites de débit dépassées",
"edge-connection":"Connexion Edge",
"edge-connection":"Connexion Edge",
"edge-communication-failure":"Échec de communication avec l'Edge",
"edge-communication-failure":"Échec de communication Edge",
"task-processing-failure":"Échec de traitement de tâche",
"task-processing-failure":"Échec du traitement de la tâche",
"resources-shortage":"Pénurie de ressources",
"trigger":"Déclencheur",
"trigger":"Déclencheur",
"trigger-required":"Le déclencheur est requis"
"trigger-required":"Le déclencheur est requis"
},
},
@ -4119,6 +4241,7 @@
"checksum-copied-message":"La somme de contrôle du paquet a été copiée dans le presse-papiers",
"checksum-copied-message":"La somme de contrôle du paquet a été copiée dans le presse-papiers",
"change-firmware":"Changer le micrologiciel peut entraîner la mise à jour de { count, plural, =1 {1 appareil} other {# appareils} }.",
"change-firmware":"Changer le micrologiciel peut entraîner la mise à jour de { count, plural, =1 {1 appareil} other {# appareils} }.",
"change-software":"Changer le logiciel peut entraîner la mise à jour de { count, plural, =1 {1 appareil} other {# appareils} }.",
"change-software":"Changer le logiciel peut entraîner la mise à jour de { count, plural, =1 {1 appareil} other {# appareils} }.",
"change-ota-setting-title":"Êtes-vous sûr de vouloir modifier les paramètres OTA ?",
"chose-compatible-device-profile":"Le paquet téléchargé ne sera disponible que pour les appareils ayant le profil choisi.",
"chose-compatible-device-profile":"Le paquet téléchargé ne sera disponible que pour les appareils ayant le profil choisi.",
"chose-firmware-distributed-device":"Choisissez le micrologiciel à distribuer aux appareils",
"chose-firmware-distributed-device":"Choisissez le micrologiciel à distribuer aux appareils",
"chose-software-distributed-device":"Choisissez le logiciel à distribuer aux appareils",
"chose-software-distributed-device":"Choisissez le logiciel à distribuer aux appareils",
@ -4314,6 +4437,7 @@
"add-relation-filter":"Ajouter un filtre de relation",
"add-relation-filter":"Ajouter un filtre de relation",
"any-relation":"Toute relation",
"any-relation":"Toute relation",
"relation-filters":"Filtres de relation",
"relation-filters":"Filtres de relation",
"relation-filter":"Filtre de relation",
"additional-info":"Infos supplémentaires (JSON)",
"additional-info":"Infos supplémentaires (JSON)",
"invalid-additional-info":"Impossible d'analyser le JSON des infos supplémentaires.",
"invalid-additional-info":"Impossible d'analyser le JSON des infos supplémentaires.",
"no-relations-text":"Aucune relation trouvée",
"no-relations-text":"Aucune relation trouvée",
@ -5174,12 +5298,12 @@
"skip-empty-fields-tooltip":"Les champs vides ne seront pas ajoutés au message de sortie ou aux métadonnées de sortie.",
"skip-empty-fields-tooltip":"Les champs vides ne seront pas ajoutés au message de sortie ou aux métadonnées de sortie.",
"fetch-interval":"Intervalle de récupération",
"fetch-interval":"Intervalle de récupération",
"fetch-strategy":"Stratégie de récupération",
"fetch-strategy":"Stratégie de récupération",
"fetch-timeseries-from-to":"Récupérer les séries temporelles de {{startInterval}} {{startIntervalTimeUnit}} à {{endInterval}} {{endIntervalTimeUnit}}.",
"fetch-timeseries-from-to":"Récupérer les séries temporelles de {{startInterval}} {{startIntervalTimeUnit}} en arrière jusqu'à {{endInterval}} {{endIntervalTimeUnit}} en arrière.",
"fetch-timeseries-from-to-invalid":"Récupération des séries invalide (« Début de l'intervalle » doit être inférieur à « Fin de l'intervalle »).",
"fetch-timeseries-from-to-invalid":"Récupération des séries temporelles invalide (\"Début de l'intervalle\" doit être inférieur à \"Fin de l'intervalle\").",
"use-metadata-dynamic-interval-tooltip":"Utilise un intervalle dynamique basé sur le message et les métadonnées si activé.",
"use-metadata-dynamic-interval-tooltip":"Si cette option est sélectionnée, le nœud de règle utilisera un intervalle dynamique basé sur le message et les modèles de métadonnées.",
"all-mode-hint":"En mode « Tout », récupère la télémétrie selon l'intervalle et les paramètres définis.",
"all-mode-hint":"Si le mode de récupération \"Tout\" est sélectionné, le nœud de règle récupérera la télémétrie de l'intervalle de récupération avec des paramètres de requête configurables.",
"first-mode-hint":"Récupère la télémétrie la plus proche du début de l'intervalle.",
"first-mode-hint":"Si le mode de récupération \"Premier\" est sélectionné, le nœud de règle récupérera la télémétrie la plus proche du début de l'intervalle.",
"last-mode-hint":"Récupère la télémétrie la plus proche de la fin de l'intervalle.",
"last-mode-hint":"Si le mode de récupération \"Dernier\" est sélectionné, le nœud de règle récupérera la télémétrie la plus proche de la fin de l'intervalle.",
"ascending":"Croissant",
"ascending":"Croissant",
"descending":"Décroissant",
"descending":"Décroissant",
"min":"Minimum",
"min":"Minimum",
@ -5304,6 +5428,36 @@
"html-text-description":"Permet d'utiliser des balises HTML pour la mise en forme, les liens et les images dans le corps du message.",
"html-text-description":"Permet d'utiliser des balises HTML pour la mise en forme, les liens et les images dans le corps du message.",
"dynamic-text-description":"Permet d'utiliser dynamiquement le texte brut ou HTML selon le modèle.",
"dynamic-text-description":"Permet d'utiliser dynamiquement le texte brut ou HTML selon le modèle.",
"after-template-evaluation-hint":"Après évaluation du modèle, la valeur doit être true pour HTML, et false pour Texte brut."
"after-template-evaluation-hint":"Après évaluation du modèle, la valeur doit être true pour HTML, et false pour Texte brut."
},
"ai":{
"ai-model":"Modèle IA",
"model":"Modèle",
"ai-model-hint":"Sélectionnez le modèle IA préconfiguré pour traiter les requêtes envoyées par ce nœud de règle, ou utilisez \"Créer un nouveau\" pour en configurer un nouveau.",
"prompt-settings":"Paramètres de prompt",
"prompt-settings-hint":"Le prompt système optionnel définit le rôle général et les contraintes de l'IA, tandis que le prompt utilisateur précise la tâche à exécuter. Les deux champs prennent en charge la modélisation par modèle (templatization).",
"system-prompt":"Prompt système",
"system-prompt-max-length":"Le prompt système doit comporter 500 000 caractères ou moins.",
"system-prompt-blank":"Le prompt système ne doit pas être vide.",
"user-prompt":"Prompt utilisateur",
"user-prompt-required":"Le prompt utilisateur est requis.",
"user-prompt-max-length":"Le prompt utilisateur doit comporter 500 000 caractères ou moins.",
"user-prompt-blank":"Le prompt utilisateur ne doit pas être vide.",
"response-format":"Format de réponse",
"response-text":"Texte",
"response-json":"JSON",
"response-json-schema":"Schéma JSON",
"response-format-hint-TEXT":"Permet au modèle de générer un texte libre, qui peut ou non être un objet JSON valide. Si la sortie n’est pas un objet JSON valide, elle sera automatiquement encapsulée dans un objet JSON sous la clé \"response\".",
"response-format-hint-JSON":"Le modèle doit générer une réponse sous forme de JSON valide. Si la sortie n’est pas un objet JSON valide, elle sera automatiquement encapsulée dans un objet JSON sous la clé \"response\".",
"response-format-hint-JSON_SCHEMA":"Le modèle doit générer un JSON conforme à la structure et aux types de données définis dans le schéma fourni. Si la sortie n’est pas un objet JSON valide, elle sera automatiquement encapsulée dans un objet JSON sous la clé \"response\".",
"response-json-schema-hint":"Bien que tout schéma JSON valide puisse être saisi, ce nœud de règle ne prend en charge qu’un sous-ensemble limité de ses fonctionnalités. Consultez la documentation du nœud pour plus de détails.",
"response-json-schema-required":"Le schéma JSON est requis",
"advanced-settings":"Paramètres avancés",
"timeout":"Délai d'attente",
"timeout-hint":"Temps maximal d’attente d’une réponse \nde la part du modèle IA avant l’arrêt de la requête.",
"timeout-required":"Le délai d'attente est requis",
"timeout-validation":"Doit être compris entre 1 seconde et 10 minutes.",
"force-acknowledgement":"Forcer l’accusé de réception",
"force-acknowledgement-hint":"Si activé, le message entrant est accusé immédiatement. La réponse du modèle est ensuite mise en file d’attente comme un nouveau message distinct."
}
}
},
},
"timezone":{
"timezone":{
@ -5625,7 +5779,10 @@
"too-small-value-zero":"La valeur doit être supérieure à 0",
"too-small-value-zero":"La valeur doit être supérieure à 0",
"too-small-value-one":"La valeur doit être supérieure à 1",
"too-small-value-one":"La valeur doit être supérieure à 1",
"queue-size-is-limited-by-system-configuration":"La taille de la file d’attente est également limitée par la configuration système.",
"queue-size-is-limited-by-system-configuration":"La taille de la file d’attente est également limitée par la configuration système.",
"cassandra-tenant-limits-configuration":"Requête Cassandra pour le locataire",
"cassandra-write-tenant-core-limits-configuration":"Requêtes d’écriture Cassandra via l’API REST",
"cassandra-read-tenant-core-limits-configuration":"Requêtes de lecture Cassandra via l’API REST et WS (télémétrie)",
"cassandra-write-tenant-rule-engine-limits-configuration":"Requêtes d’écriture Cassandra du moteur de règles (télémétrie)",
"cassandra-read-tenant-rule-engine-limits-configuration":"Requêtes de lecture Cassandra du moteur de règles (télémétrie)",
"ws-limit-max-sessions-per-tenant":"Nombre maximal de sessions par locataire",
"ws-limit-max-sessions-per-tenant":"Nombre maximal de sessions par locataire",
"ws-limit-max-sessions-per-customer":"Nombre maximal de sessions par client",
"ws-limit-max-sessions-per-customer":"Nombre maximal de sessions par client",
"ws-limit-max-sessions-per-regular-user":"Nombre maximal de sessions par utilisateur régulier",
"ws-limit-max-sessions-per-regular-user":"Nombre maximal de sessions par utilisateur régulier",
@ -5638,26 +5795,30 @@
"ws-limit-updates-per-session":"Mises à jour WS par session",
"ws-limit-updates-per-session":"Mises à jour WS par session",
"rate-limits":{
"rate-limits":{
"add-limit":"Ajouter une limite",
"add-limit":"Ajouter une limite",
"and-also-less-than":"et aussi inférieur à",
"advanced-settings":"Paramètres avancés",
"advanced-settings":"Paramètres avancés",
"edit-limit":"Modifier la limite",
"edit-limit":"Modifier la limite",
"calculated-field-debug-event-rate-limit":"Événements de débogage des champs calculés",
"calculated-field-debug-event-rate-limit":"Événements de débogage des champs calculés",
"edit-calculated-field-debug-event-rate-limit":"Modifier la limite des événements de débogage de champ calculé",
"edit-calculated-field-debug-event-rate-limit":"Modifier les limites de débit des événements de débogage des champs calculés",
"edit-transport-tenant-msg-title":"Modifier les limites de messages de transport du locataire",
"edit-transport-tenant-msg-title":"Modifier les limites de débit des messages transport du locataire",
"edit-transport-tenant-telemetry-msg-title":"Modifier les limites des messages de télémétrie du locataire",
"edit-transport-tenant-telemetry-msg-title":"Modifier les limites de débit des messages de télémétrie transport du locataire",
"edit-transport-tenant-telemetry-data-points-title":"Modifier les limites des points de données de télémétrie du locataire",
"edit-transport-tenant-telemetry-data-points-title":"Modifier les limites de débit des points de données de télémétrie transport du locataire",
"edit-transport-device-msg-title":"Modifier les limites des messages de l’appareil",
"edit-transport-device-msg-title":"Modifier les limites de débit des messages transport de l'appareil",
"edit-transport-device-telemetry-msg-title":"Modifier les limites des messages de télémétrie de l’appareil",
"edit-transport-device-telemetry-msg-title":"Modifier les limites de débit des messages de télémétrie transport de l'appareil",
"edit-transport-device-telemetry-data-points-title":"Modifier les limites des points de données de télémétrie de l’appareil",
"edit-transport-device-telemetry-data-points-title":"Modifier les limites de débit des points de données de télémétrie transport de l'appareil",
"edit-transport-gateway-msg-title":"Modifier les limites des messages de la passerelle",
"edit-transport-gateway-msg-title":"Modifier les limites de débit des messages transport de la passerelle",
"edit-transport-gateway-telemetry-msg-title":"Modifier les limites des messages de télémétrie de la passerelle",
"edit-transport-gateway-telemetry-msg-title":"Modifier les limites de débit des messages de télémétrie transport de la passerelle",
"edit-transport-gateway-telemetry-data-points-title":"Modifier les limites des points de données de télémétrie de la passerelle",
"edit-transport-gateway-telemetry-data-points-title":"Modifier les limites de débit des points de données de télémétrie transport de la passerelle",
"edit-transport-gateway-device-msg-title":"Modifier les limites des messages des appareils de la passerelle",
"edit-transport-gateway-device-msg-title":"Modifier les limites de débit des messages transport des appareils de la passerelle",
"edit-transport-gateway-device-telemetry-msg-title":"Modifier les limites des messages de télémétrie des appareils de la passerelle",
"edit-transport-gateway-device-telemetry-msg-title":"Modifier les limites de débit des messages de télémétrie transport des appareils de la passerelle",
"edit-transport-gateway-device-telemetry-data-points-title":"Modifier les limites des points de données de télémétrie des appareils de la passerelle",
"edit-transport-gateway-device-telemetry-data-points-title":"Modifier les limites de débit des points de données de télémétrie transport des appareils de la passerelle",
"edit-tenant-rest-limits-title":"Modifier les limites des requêtes REST du locataire",
"edit-tenant-rest-limits-title":"Modifier les limites de débit des requêtes REST du locataire",
"edit-customer-rest-limits-title":"Modifier les limites des requêtes REST du client",
"edit-customer-rest-limits-title":"Modifier les limites de débit des requêtes REST du client",
"edit-ws-limit-updates-per-session-title":"Modifier les limites des mises à jour WS par session",
"edit-ws-limit-updates-per-session-title":"Modifier les limites de débit des mises à jour WS par session",
"edit-cassandra-tenant-limits-configuration-title":"Modifier les limites des requêtes Cassandra du locataire",
"edit-cassandra-write-tenant-core-limits-configuration":"Modifier les requêtes d’écriture Cassandra via l’API REST",
"edit-cassandra-read-tenant-core-limits-configuration":"Modifier les requêtes de lecture Cassandra via l’API REST et WS (télémétrie)",
"edit-cassandra-write-tenant-rule-engine-limits-configuration":"Modifier les requêtes d’écriture Cassandra du moteur de règles (télémétrie)",
"edit-cassandra-read-tenant-rule-engine-limits-configuration":"Modifier les requêtes de lecture Cassandra du moteur de règles (télémétrie)",
"edit-tenant-entity-export-rate-limit-title":"Modifier les limites de création de version d’entité",
"edit-tenant-entity-export-rate-limit-title":"Modifier les limites de création de version d’entité",
"edit-tenant-entity-import-rate-limit-title":"Modifier les limites de chargement de version d’entité",
"edit-tenant-entity-import-rate-limit-title":"Modifier les limites de chargement de version d’entité",
"edit-tenant-notification-request-rate-limit-title":"Modifier les limites des requêtes de notification",
"edit-tenant-notification-request-rate-limit-title":"Modifier les limites des requêtes de notification",
@ -5679,6 +5840,7 @@
"per-seconds":"Par secondes",
"per-seconds":"Par secondes",
"per-seconds-required":"La durée est requise.",
"per-seconds-required":"La durée est requise.",
"per-seconds-min":"La valeur minimale est 1.",
"per-seconds-min":"La valeur minimale est 1.",
"per-seconds-duplicate":"Taux de temps en double. Chaque intervalle de temps doit être unique.",
"rate-limits":"Limites de débit",
"rate-limits":"Limites de débit",
"remove-limit":"Supprimer la limite",
"remove-limit":"Supprimer la limite",
"transport-tenant-msg":"Messages de transport du locataire",
"transport-tenant-msg":"Messages de transport du locataire",
@ -5768,11 +5930,11 @@
"sec":"{{ sec }} sec",
"sec":"{{ sec }} sec",
"sec-short":"{{ sec }}s",
"sec-short":"{{ sec }}s",
"short":{
"short":{
"years":"{ years, plural, =1 {1 année } other {# années } }",
"years":"{ years, plural, =1 {1 an } other {# ans } }",
"days":"{ days, plural, =1 {1 jour } other {# jours } }",
"days":"{ days, plural, =1 {1 jour } other {# jours } }",
"show-date-time-interval-hint":"Afficher l’intervalle date/heure selon l’agrégation des données.",
"show-date-time-interval-hint":"Afficher l’intervalle date/heure en fonction de l’agrégation des données.",
"hide-zero-tooltip-values":"Masquer les valeurs nulles",
"background-color":"Couleur d’arrière-plan",
"background-color":"Couleur d’arrière-plan",
"background-blur":"Flou d’arrière-plan"
"background-blur":"Flou d’arrière-plan"
},
},
"unit":{
"unit":{
"set-unit-conversion":"Définir la conversion d’unités",
"unit-settings":{
"unit-settings":"Paramètres d’unité",
"source-unit":"Unité source",
"source-unit-hint":"Il s’agit de l’unité de la valeur stockée. L’unité à partir de laquelle vous effectuez la conversion. Entrez le symbole utilisé par vos données sources (ex. : m, km, ft, in).",
"target-metric-unit":"Unité métrique cible",
"target-metric-unit-hint":"Choisissez l’unité métrique (SI) vers laquelle vous souhaitez convertir votre valeur source (ex. : cm, mm, km).",
"target-imperial-unit":"Unité impériale cible",
"target-imperial-unit-hint":"Choisissez l’unité impériale vers laquelle vous souhaitez convertir votre valeur source (ex. : in, ft, yd).",
"target-hybrid-unit":"Unité hybride cible",
"target-hybrid-unit-hint":"Choisissez l’unité hybride vers laquelle vous souhaitez convertir votre valeur source (ex. : cm, in, km). Les unités hybrides combinent des unités métriques ou impériales.",
"enable-unit-conversion":"Activer la conversion d’unités",
"enable-unit-conversion-hint":"Activez cette option pour appliquer la conversion. Si désactivée, votre valeur source sera transmise sans modification. Désactivée s’il n’existe qu’une seule unité dans le groupe de mesure correspondant (ex. : flux lumineux, AQI)."
"check-status-method":"Méthode RPC de vérification de l’état de l’appareil",
"check-status-method":"Méthode RPC de vérification de l’état de l’appareil",
"parse-led-status-value-function":"Fonction d’analyse de l’état LED",
"parse-led-status-value-function":"Fonction d’analyse de l’état LED",
"knob-title":"Titre du bouton rotatif",
"knob-title":"Titre du bouton rotatif"
"min-value":"Valeur minimale",
"max-value":"Valeur maximale"
},
},
"maps":{
"maps":{
"map-type":{
"map-type":{
@ -8683,11 +9008,15 @@
"color":"Couleur",
"color":"Couleur",
"line":"Ligne",
"line":"Ligne",
"points":"Points",
"points":"Points",
"points-label":"Libellé des points",
"points-label":"Étiquette des points",
"radar-axis":"Axe radar",
"radar-axis":"Axe radar",
"axis-label":"Libellé de l'axe",
"axis-label":"Étiquette des axes",
"ticks-label":"Libellé des graduations",
"ticks-label":"Étiquette des graduations",
"radar-chart-style":"Style du graphique radar"
"radar-chart-style":"Style du graphique radar",
"max-axes-scaling":"Échelle maximale des axes",
"max-axes-scaling-hint":"Choisissez si chaque axe radar a sa propre valeur maximale (Séparée) ou partage la valeur maximale parmi toutes les axes en fonction des données du widget (Commune).",