iobroker.waip-web 0.7.26 → 0.7.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.de.md CHANGED
@@ -255,10 +255,15 @@ Wird nur geprüft, falls der Dekoder auf dem Tab
255
255
  [Rettungsdienst-Stichwörter](#rettungsdienst-stichwörter) nicht gegriffen
256
256
  hat: eine Liste von `{Stichwort-Muster, Beschreibung, Abgleich-Typ}`-Zeilen
257
257
  – Abgleich-Typ ist `beginnt mit` oder `enthält`, der Vergleich ist
258
- case-insensitiv, und passen mehrere Zeilen, gewinnt automatisch das
259
- **spezifischste (längste) Muster** – die Zeilenreihenfolge hat keinen
260
- Einfluss auf den Abgleich, die Tabelle kann also gefahrlos nach jeder
261
- Spalte sortiert werden (Klick auf die Spaltenüberschrift). Die Tabelle ist mit
258
+ case-insensitiv und behandelt Leerzeichen und Bindestriche als
259
+ gleichwertig (jede Folge aus beidem wird vor dem Vergleich zu einem
260
+ Leerzeichen zusammengefasst) – z.B. matchen `H:VU mit P`,
261
+ `H:VU-mit-P` und `H:VU - mit - P` dieselbe Zeile, es muss also keine
262
+ eigene Zeile pro Schreibvariante gepflegt werden. Passen mehrere
263
+ Zeilen, gewinnt automatisch das **spezifischste (längste) Muster** –
264
+ die Zeilenreihenfolge hat keinen Einfluss auf den Abgleich, die
265
+ Tabelle kann also gefahrlos nach jeder Spalte sortiert werden (Klick
266
+ auf die Spaltenüberschrift). Die Tabelle ist mit
262
267
  einer beispielhaften Feuerwehr-/Rettungsdienst-Stichwortliste
263
268
  (`B:...`/`H:...`) als Startpunkt vorbefüllt – das ist **nicht** für
264
269
  irgendeine bestimmte Leitstelle bestätigt, bei Bedarf anpassen oder
package/README.md CHANGED
@@ -254,10 +254,13 @@ multi-language and these labels aren't translated automatically:
254
254
  Checked only if the decoder on the [Rescue-service keywords](#rescue-service-keywords)
255
255
  tab didn't match: a list of `{keyword pattern, description, match type}`
256
256
  rows – match type is `starts with` or `contains`, comparison is
257
- case-insensitive, and if several rows match, the **most specific
258
- (longest) pattern wins automatically** – row order has no effect on
259
- matching, so the table can be freely sorted by any column (click the
260
- column header) without changing behavior. The table is pre-filled
257
+ case-insensitive and treats spaces and hyphens as equivalent (any run
258
+ of either collapses to one before comparing), so e.g. `H:VU mit P`,
259
+ `H:VU-mit-P` and `H:VU - mit - P` all match the same row – no need to
260
+ add a separate row per spelling variant. If several rows match, the
261
+ **most specific (longest) pattern wins automatically** – row order has
262
+ no effect on matching, so the table can be freely sorted by any column
263
+ (click the column header) without changing behavior. The table is pre-filled
261
264
  with an example fire/rescue keyword list (`B:...`/`H:...`) as a
262
265
  starting point only – it is **not** confirmed to match any specific
263
266
  dispatch center's real catalog, edit or fully replace it as needed.
@@ -408,6 +411,18 @@ example.
408
411
 
409
412
  ## Changelog
410
413
 
414
+ ### 0.7.27 (2026-08-23)
415
+
416
+ - [Keyword table](#keyword-descriptions) matching now treats spaces
417
+ and hyphens as equivalent (any run of either collapses to one
418
+ before comparing) - e.g. `H:VU mit P` and `H:VU-mit-P` now match
419
+ the same row, so dispatch-center spelling variants no longer need a
420
+ separate row each. Removed the now-redundant `B:Gebäude-Groß`/
421
+ `B:Gebäude-Klein` rows added in 0.7.24 (the existing `B:Gebäude
422
+ groß`/`B:Gebäude klein` rows already cover them). Comparison was
423
+ already case-insensitive before this change. Admin UI help text
424
+ updated accordingly.
425
+
411
426
  ### 0.7.26 (2026-08-23)
412
427
 
413
428
  - [Keyword descriptions](#keyword-descriptions) tab: `Description` and
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Bezeichnung für Suffix f (First Responder)",
14
14
  "Label for suffix p (polytrauma)": "Bezeichnung für Suffix p (Polytrauma)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Wird live von der /waip/-Übersichtsseite des konfigurierten Servers geladen - Auswahl nach Leitstelle, Kreis, Träger oder Wache, oder 'Alle Wachalarme' (ID 0) für jeden Einsatz. Ist der Server nicht erreichbar, kann die ID weiterhin manuell eingegeben werden.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Ordnet einsatz.stichwort eine Beschreibung für einsatz.beschreibung zu. Passen mehrere Zeilen, gewinnt automatisch das spezifischste (längste) Muster - die Zeilenreihenfolge hat keinen Einfluss auf den Abgleich, die Tabelle kann also frei nach jeder Spalte sortiert werden. Vorbefüllt mit einer beispielhaften Feuerwehr-/Rettungsdienst-Stichwortliste als Startpunkt - nicht bestätigt für eure eigene Leitstelle, bei Bedarf anpassen/ersetzen. Zum Sichern/Übertragen dieser Tabelle die Standard-Instanzkonfiguration von ioBroker exportieren/importieren (JSON). Nach einem solchen Import die Admin-Seite neu laden, bevor du diese Tabelle prüfst - der offene Konfigurationsdialog aktualisiert sie bei einem externen Import nicht automatisch (eine State-Sync-Einschränkung der Admin-Tabellenkomponente selbst).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Ordnet einsatz.stichwort eine Beschreibung für einsatz.beschreibung zu. Der Vergleich ist case-insensitiv und behandelt Leerzeichen/Bindestriche als gleichwertig (jede Folge aus beidem wird vor dem Vergleich zu einem Leerzeichen zusammengefasst), sodass z.B. \"H:VU mit P\" und \"H:VU-mit-P\" dieselbe Zeile matchen - keine eigene Zeile pro Schreibvariante nötig. Passen mehrere Zeilen, gewinnt automatisch das spezifischste (längste) Muster - die Zeilenreihenfolge hat keinen Einfluss auf den Abgleich, die Tabelle kann also frei nach jeder Spalte sortiert werden. Vorbefüllt mit einer beispielhaften Feuerwehr-/Rettungsdienst-Stichwortliste als Startpunkt - nicht bestätigt für eure eigene Leitstelle, bei Bedarf anpassen/ersetzen. Zum Sichern/Übertragen dieser Tabelle die Standard-Instanzkonfiguration von ioBroker exportieren/importieren (JSON). Nach einem solchen Import die Admin-Seite neu laden, bevor du diese Tabelle prüfst - der offene Konfigurationsdialog aktualisiert sie bei einem externen Import nicht automatisch (eine State-Sync-Einschränkung der Admin-Tabellenkomponente selbst).",
17
17
  "Match": "Abgleich",
18
18
  "Monitor ID": "Monitor-ID",
19
19
  "Reconnect delay (s)": "Wiederverbindungs-Verzögerung (s)",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Label for suffix f (first responder)",
14
14
  "Label for suffix p (polytrauma)": "Label for suffix p (polytrauma)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).",
17
17
  "Match": "Match",
18
18
  "Monitor ID": "Monitor ID",
19
19
  "Reconnect delay (s)": "Reconnect delay (s)",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Etiqueta para el sufijo f (primer interviniente)",
14
14
  "Label for suffix p (polytrauma)": "Etiqueta para el sufijo p (politraumatismo)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Cargado en vivo desde la página de descripción general /waip/ del servidor configurado: elija Leitstelle, Kreis, Träger o Wache, o elija 'Alle Wachalarme' (ID 0) para cada incidente. Si no se puede acceder al servidor, aún se puede ingresar una identificación manualmente.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Asigna einsatz.stichwort a einsatz.beschreibung. Si varias filas coinciden, el patrón más específico (el más largo) gana automáticamente; el orden de las filas no tiene ningún efecto en la coincidencia, ordene libremente por cualquier columna. Precompletado con una lista de palabras clave de ejemplo de incendio/rescate como punto de partida; no se confirma que coincida con las palabras clave reales de su propio centro de despacho, edite/reemplace según sea necesario. Para hacer una copia de seguridad o transferir esta tabla, utilice la exportación/importación estándar de la configuración de instancia de ioBroker (JSON). Después de usar esa importación estándar, recargue la página de administración antes de comprobar esta tabla - el cuadro de diálogo de configuración abierto no la actualiza automáticamente desde una importación externa (una limitación de sincronización de estado del propio componente de tabla de administración).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Asigna einsatz.stichwort a einsatz.beschreibung. La comparación no distingue mayúsculas/minúsculas y trata los espacios/guiones como equivalentes (cualquier secuencia de ambos se reduce a uno antes de comparar), de modo que, por ejemplo, \"H:VU mit P\" y \"H:VU-mit-P\" coinciden con la misma fila - no es necesaria una fila separada por cada variante de escritura. Si varias filas coinciden, el patrón más específico (el más largo) gana automáticamente; el orden de las filas no tiene ningún efecto en la coincidencia, ordene libremente por cualquier columna. Precompletado con una lista de palabras clave de ejemplo de incendio/rescate como punto de partida; no se confirma que coincida con las palabras clave reales de su propio centro de despacho, edite/reemplace según sea necesario. Para hacer una copia de seguridad o transferir esta tabla, utilice la exportación/importación estándar de la configuración de instancia de ioBroker (JSON). Después de usar esa importación estándar, recargue la página de administración antes de comprobar esta tabla - el cuadro de diálogo de configuración abierto no la actualiza automáticamente desde una importación externa (una limitación de sincronización de estado del propio componente de tabla de administración).",
17
17
  "Match": "Fósforo",
18
18
  "Monitor ID": "Identificador del monitor",
19
19
  "Reconnect delay (s)": "Retardo(s) de reconexión",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Étiquette pour le suffixe f (premier intervenant)",
14
14
  "Label for suffix p (polytrauma)": "Étiquette pour le suffixe p (polytraumatisme)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Chargé en direct depuis la page de présentation /waip/ du serveur configuré - choisissez par Leitstelle, Kreis, Träger ou Wache, ou choisissez 'Alle Wachalarme' (ID 0) pour chaque incident. Si le serveur n'est pas accessible, un identifiant peut toujours être saisi manuellement.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Mappe einsatz.stichwort à einsatz.beschreibung. Si plusieurs lignes correspondent, le modèle le plus spécifique (le plus long) l'emporte automatiquement - l'ordre des lignes n'a aucun effet sur la correspondance, triez-la librement par n'importe quelle colonne. Pré-rempli avec un exemple de liste de mots-clés d'incendie/sauvetage comme point de départ - il n'est pas confirmé qu'il correspond aux mots-clés réels de votre propre centre de répartition, modifiez/remplacez si nécessaire. Pour sauvegarder ou transférer ce tableau, utilisez l'export/import standard de la configuration d'instance d'ioBroker (JSON). Après avoir utilisé cet import standard, rechargez la page Admin avant de vérifier ce tableau - la boîte de dialogue de configuration ouverte ne l'actualise pas automatiquement après un import externe (une limitation de synchronisation d'état du composant de tableau Admin lui-même).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Mappe einsatz.stichwort à einsatz.beschreibung. La comparaison ne tient pas compte de la casse et traite les espaces/tirets comme équivalents (toute suite de l'un ou l'autre est ramenée à un seul avant la comparaison), de sorte que par exemple \"H:VU mit P\" et \"H:VU-mit-P\" correspondent à la même ligne - pas besoin d'une ligne distincte par variante d'orthographe. Si plusieurs lignes correspondent, le modèle le plus spécifique (le plus long) l'emporte automatiquement - l'ordre des lignes n'a aucun effet sur la correspondance, triez-la librement par n'importe quelle colonne. Pré-rempli avec un exemple de liste de mots-clés d'incendie/sauvetage comme point de départ - il n'est pas confirmé qu'il correspond aux mots-clés réels de votre propre centre de répartition, modifiez/remplacez si nécessaire. Pour sauvegarder ou transférer ce tableau, utilisez l'export/import standard de la configuration d'instance d'ioBroker (JSON). Après avoir utilisé cet import standard, rechargez la page Admin avant de vérifier ce tableau - la boîte de dialogue de configuration ouverte ne l'actualise pas automatiquement après un import externe (une limitation de synchronisation d'état du composant de tableau Admin lui-même).",
17
17
  "Match": "Correspondre",
18
18
  "Monitor ID": "ID du moniteur",
19
19
  "Reconnect delay (s)": "Délai(s) de reconnexion",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Etichetta per il suffisso f (primo soccorritore)",
14
14
  "Label for suffix p (polytrauma)": "Etichetta per il suffisso p (politrauma)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Caricato in tempo reale dalla pagina di panoramica /waip/ del server configurato: scegli Leitstelle, Kreis, Träger o Wache oppure seleziona \"Alle Wachalarme\" (ID 0) per ogni incidente. Se il server non è raggiungibile, è comunque possibile inserire manualmente un ID.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Mappa einsatz.stichwort su einsatz.beschreibung. Se più righe corrispondono, il modello più specifico (più lungo) vince automaticamente: l'ordine delle righe non ha alcun effetto sulla corrispondenza, ordinala liberamente per qualsiasi colonna. Precompilato con un esempio di elenco di parole chiave per vigili del fuoco/soccorso come punto di partenza: non è confermato che corrisponda alle parole chiave effettive del tuo centro di spedizione, modifica/sostituisci secondo necessità. Per eseguire il backup o trasferire questa tabella, utilizza l'esportazione/importazione standard della configurazione dell'istanza di ioBroker (JSON). Dopo aver utilizzato quell'importazione standard, ricarica la pagina di amministrazione prima di controllare questa tabella - la finestra di configurazione aperta non la aggiorna automaticamente da un'importazione esterna (una limitazione di sincronizzazione dello stato del componente tabella di amministrazione stesso).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Mappa einsatz.stichwort su einsatz.beschreibung. Il confronto non distingue tra maiuscole e minuscole e tratta spazi/trattini come equivalenti (qualsiasi sequenza dell'uno o dell'altro viene ridotta a uno solo prima del confronto), quindi ad es. \"H:VU mit P\" e \"H:VU-mit-P\" corrispondono alla stessa riga - non serve una riga separata per ogni variante di scrittura. Se più righe corrispondono, il modello più specifico (più lungo) vince automaticamente: l'ordine delle righe non ha alcun effetto sulla corrispondenza, ordinala liberamente per qualsiasi colonna. Precompilato con un esempio di elenco di parole chiave per vigili del fuoco/soccorso come punto di partenza: non è confermato che corrisponda alle parole chiave effettive del tuo centro di spedizione, modifica/sostituisci secondo necessità. Per eseguire il backup o trasferire questa tabella, utilizza l'esportazione/importazione standard della configurazione dell'istanza di ioBroker (JSON). Dopo aver utilizzato quell'importazione standard, ricarica la pagina di amministrazione prima di controllare questa tabella - la finestra di configurazione aperta non la aggiorna automaticamente da un'importazione esterna (una limitazione di sincronizzazione dello stato del componente tabella di amministrazione stesso).",
17
17
  "Match": "Incontro",
18
18
  "Monitor ID": "Monitorare l'identità",
19
19
  "Reconnect delay (s)": "Ritardo/i di riconnessione",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Label voor achtervoegsel f (eerstehulpverlener)",
14
14
  "Label for suffix p (polytrauma)": "Label voor achtervoegsel p (polytrauma)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Live geladen vanaf de /waip/ overzichtspagina van de geconfigureerde server - kies voor Leitstelle, Kreis, Träger of Wache, of kies 'Alle Wachalarme' (ID 0) voor elk incident. Als de server niet bereikbaar is, kan er alsnog handmatig een ID worden ingevoerd.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Kaarten einsatz.stichwort naar einsatz.beschreibung. Als meerdere rijen overeenkomen, wint het meest specifieke (langste) patroon automatisch. De rijvolgorde heeft geen invloed op het matchen, sorteer vrij op elke kolom. Vooraf ingevuld met een voorbeeldlijst met trefwoorden voor brand/redding als uitgangspunt. Er is niet bevestigd dat deze overeenkomt met de daadwerkelijke trefwoorden van uw eigen meldkamer. Bewerk/vervang indien nodig. Gebruik voor het back-uppen of overzetten van deze tabel de standaard export/import van de ioBroker-instantieconfiguratie (JSON). Herlaad na het gebruik van die standaardimport de Admin-pagina voordat u deze tabel controleert - de geopende configuratiedialoog wordt niet automatisch bijgewerkt na een externe import (een status-synchronisatiebeperking van de Admin-tabelcomponent zelf).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Kaarten einsatz.stichwort naar einsatz.beschreibung. De vergelijking is niet hoofdlettergevoelig en behandelt spaties/koppeltekens als gelijkwaardig (elke reeks van beide wordt vóór de vergelijking teruggebracht tot één spatie), zodat bijv. \"H:VU mit P\" en \"H:VU-mit-P\" dezelfde rij matchen - geen aparte rij per schrijfwijze nodig. Als meerdere rijen overeenkomen, wint het meest specifieke (langste) patroon automatisch. De rijvolgorde heeft geen invloed op het matchen, sorteer vrij op elke kolom. Vooraf ingevuld met een voorbeeldlijst met trefwoorden voor brand/redding als uitgangspunt. Er is niet bevestigd dat deze overeenkomt met de daadwerkelijke trefwoorden van uw eigen meldkamer. Bewerk/vervang indien nodig. Gebruik voor het back-uppen of overzetten van deze tabel de standaard export/import van de ioBroker-instantieconfiguratie (JSON). Herlaad na het gebruik van die standaardimport de Admin-pagina voordat u deze tabel controleert - de geopende configuratiedialoog wordt niet automatisch bijgewerkt na een externe import (een status-synchronisatiebeperking van de Admin-tabelcomponent zelf).",
17
17
  "Match": "Overeenkomst",
18
18
  "Monitor ID": "Monitor-ID",
19
19
  "Reconnect delay (s)": "Vertraging(en) opnieuw verbinden",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Etykieta przyrostka f (pierwsza pomoc)",
14
14
  "Label for suffix p (polytrauma)": "Etykieta przyrostka p (uraz wielonarządowy)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Ładowane na żywo ze strony przeglądu /waip/ skonfigurowanego serwera - wybierz Leitstelle, Kreis, Träger lub Wache lub wybierz „Alle Wachalarme” (ID 0) dla każdego zdarzenia. Jeśli serwer jest nieosiągalny, identyfikator można wprowadzić ręcznie.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Mapuje einsatz.stichwort na einsatz.beschreibung. Jeśli pasuje kilka wierszy, automatycznie wygrywa najbardziej konkretny (najdłuższy) wzór - kolejność wierszy nie ma wpływu na dopasowanie, sortuj dowolnie według dowolnej kolumny. Wstępnie wypełniona przykładową listą słów kluczowych dotyczących straży pożarnej/ratownictwa jako punkt wyjścia — nie potwierdzono, że jest zgodna z rzeczywistymi słowami kluczowymi Twojego centrum dyspozytorskiego, edytuj/zamień w razie potrzeby. Aby wykonać kopię zapasową lub przenieść tę tabelę, użyj standardowego eksportu/importu konfiguracji instancji ioBroker (JSON). Po użyciu tego standardowego importu odśwież stronę administracyjną przed sprawdzeniem tej tabeli - otwarte okno konfiguracji nie odświeża się automatycznie po zewnętrznym imporcie (ograniczenie synchronizacji stanu samego komponentu tabeli administracyjnej).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Mapuje einsatz.stichwort na einsatz.beschreibung. Porównanie nie uwzględnia wielkości liter i traktuje spacje/myślniki jako równoważne (dowolny ciąg jednego lub drugiego jest sprowadzany do jednej spacji przed porównaniem), więc np. \"H:VU mit P\" i \"H:VU-mit-P\" pasują do tego samego wiersza - nie trzeba dodawać osobnego wiersza dla każdej odmiany pisowni. Jeśli pasuje kilka wierszy, automatycznie wygrywa najbardziej konkretny (najdłuższy) wzór - kolejność wierszy nie ma wpływu na dopasowanie, sortuj dowolnie według dowolnej kolumny. Wstępnie wypełniona przykładową listą słów kluczowych dotyczących straży pożarnej/ratownictwa jako punkt wyjścia — nie potwierdzono, że jest zgodna z rzeczywistymi słowami kluczowymi Twojego centrum dyspozytorskiego, edytuj/zamień w razie potrzeby. Aby wykonać kopię zapasową lub przenieść tę tabelę, użyj standardowego eksportu/importu konfiguracji instancji ioBroker (JSON). Po użyciu tego standardowego importu odśwież stronę administracyjną przed sprawdzeniem tej tabeli - otwarte okno konfiguracji nie odświeża się automatycznie po zewnętrznym imporcie (ograniczenie synchronizacji stanu samego komponentu tabeli administracyjnej).",
17
17
  "Match": "Mecz",
18
18
  "Monitor ID": "Identyfikator monitora",
19
19
  "Reconnect delay (s)": "Opóźnienie ponownego podłączenia",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Rótulo para sufixo f (socorrista)",
14
14
  "Label for suffix p (polytrauma)": "Etiqueta para sufixo p (politrauma)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Carregado ao vivo da página /waip/viewview do servidor configurado - escolha por Leitstelle, Kreis, Träger ou Wache, ou escolha 'Alle Wachalarme' (ID 0) para cada incidente. Se o servidor não puder ser acessado, um ID ainda poderá ser inserido manualmente.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Mapeia einsatz.stichwort para einsatz.beschreibung. Se várias linhas corresponderem, o padrão mais específico (mais longo) vencerá automaticamente - a ordem das linhas não tem efeito na correspondência, classifique livremente por qualquer coluna. Pré-preenchido com um exemplo de lista de palavras-chave de incêndio/resgate como ponto de partida - não está confirmado que corresponda às palavras-chave reais do seu próprio centro de despacho, edite/substitua conforme necessário. Para fazer backup ou transferir esta tabela, use a exportação/importação padrão da configuração da instância do ioBroker (JSON). Depois de usar essa importação padrão, recarregue a página de administração antes de verificar esta tabela - a caixa de diálogo de configuração aberta não a atualiza automaticamente a partir de uma importação externa (uma limitação de sincronização de estado do próprio componente de tabela de administração).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Mapeia einsatz.stichwort para einsatz.beschreibung. A comparação não diferencia maiúsculas/minúsculas e trata espaços/hífens como equivalentes (qualquer sequência de um ou outro é reduzida a um único espaço antes da comparação), de modo que, por exemplo, \"H:VU mit P\" e \"H:VU-mit-P\" correspondem à mesma linha - não é necessária uma linha separada para cada variante de escrita. Se várias linhas corresponderem, o padrão mais específico (mais longo) vencerá automaticamente - a ordem das linhas não tem efeito na correspondência, classifique livremente por qualquer coluna. Pré-preenchido com um exemplo de lista de palavras-chave de incêndio/resgate como ponto de partida - não está confirmado que corresponda às palavras-chave reais do seu próprio centro de despacho, edite/substitua conforme necessário. Para fazer backup ou transferir esta tabela, use a exportação/importação padrão da configuração da instância do ioBroker (JSON). Depois de usar essa importação padrão, recarregue a página de administração antes de verificar esta tabela - a caixa de diálogo de configuração aberta não a atualiza automaticamente a partir de uma importação externa (uma limitação de sincronização de estado do próprio componente de tabela de administração).",
17
17
  "Match": "Corresponder",
18
18
  "Monitor ID": "ID do monitor",
19
19
  "Reconnect delay (s)": "Atraso(s) de reconexão",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Метка для суффикса f (первый ответчик)",
14
14
  "Label for suffix p (polytrauma)": "Этикетка для суффикса p (политравма)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Загружается в реальном времени со страницы обзора настроенного сервера /waip/ — выберите Leitstelle, Kreis, Träger или Wache или выберите «Alle Wachalarme» (ID 0) для каждого инцидента. Если доступ к серверу недоступен, идентификатор все равно можно ввести вручную.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Сопоставляет einsatz.stichwort с einsatz.beschreibung. Если совпадают несколько строк, автоматически выигрывает наиболее конкретный (самый длинный) шаблон — порядок строк не влияет на совпадение, сортировка возможна свободно по любому столбцу. Предварительно заполнен пример списка ключевых слов пожарной/спасательной службы в качестве отправной точки. Его соответствие фактическим ключевым словам вашего диспетчерского центра не подтверждено. При необходимости отредактируйте/замените его. Для резервного копирования или переноса этой таблицы используйте стандартный экспорт/импорт конфигурации инстанса ioBroker (JSON). После использования этого стандартного импорта перезагрузите страницу администратора, прежде чем проверять эту таблицу - открытый диалог конфигурации не обновляет её автоматически после внешнего импорта (ограничение синхронизации состояния самого компонента таблицы администратора).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Сопоставляет einsatz.stichwort с einsatz.beschreibung. Сравнение не учитывает регистр и рассматривает пробелы/дефисы как эквивалентные (любая последовательность из них сводится к одному пробелу перед сравнением), поэтому, например, \"H:VU mit P\" и \"H:VU-mit-P\" совпадают с одной и той же строкой - отдельная строка для каждого варианта написания не нужна. Если совпадают несколько строк, автоматически выигрывает наиболее конкретный (самый длинный) шаблон — порядок строк не влияет на совпадение, сортировка возможна свободно по любому столбцу. Предварительно заполнен пример списка ключевых слов пожарной/спасательной службы в качестве отправной точки. Его соответствие фактическим ключевым словам вашего диспетчерского центра не подтверждено. При необходимости отредактируйте/замените его. Для резервного копирования или переноса этой таблицы используйте стандартный экспорт/импорт конфигурации инстанса ioBroker (JSON). После использования этого стандартного импорта перезагрузите страницу администратора, прежде чем проверять эту таблицу - открытый диалог конфигурации не обновляет её автоматически после внешнего импорта (ограничение синхронизации состояния самого компонента таблицы администратора).",
17
17
  "Match": "Соответствовать",
18
18
  "Monitor ID": "Идентификатор монитора",
19
19
  "Reconnect delay (s)": "Задержка повторного подключения (с)",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "Мітка для суфікса f (перша відповідь)",
14
14
  "Label for suffix p (polytrauma)": "Мітка для суфікса p (політравма)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Завантажується в реальному часі зі сторінки огляду /waip/ налаштованого сервера - виберіть Leitstelle, Kreis, Träger або Wache або виберіть Alle Wachalarme (ID 0) для кожного інциденту. Якщо сервер недоступний, ідентифікатор можна ввести вручну.",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Зіставляє einsatz.stichwort на einsatz.beschreibung. Якщо збігається кілька рядків, автоматично виграє найконкретніший (найдовший) шаблон - порядок рядків не впливає на збіг, сортуйте вільно за будь-яким стовпцем. Попередньо заповнений прикладом списку ключових слів пожежної/рятувальної служби як відправної точки - не підтверджено, що він відповідає фактичним ключовим словам вашого власного диспетчерського центру, відредагуйте/замініть за потреби. Для резервного копіювання або перенесення цієї таблиці використовуйте стандартний експорт/імпорт конфігурації екземпляра ioBroker (JSON). Після використання цього стандартного імпорту перезавантажте сторінку адміністрування, перш ніж перевіряти цю таблицю - відкритий діалог конфігурації не оновлює її автоматично після зовнішнього імпорту (обмеження синхронізації стану самого компонента таблиці адміністрування).",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Зіставляє einsatz.stichwort на einsatz.beschreibung. Порівняння не враховує регістр і розглядає пробіли/дефіси як еквівалентні (будь-яка послідовність з них зводиться до одного пробілу перед порівнянням), тому, наприклад, \"H:VU mit P\" і \"H:VU-mit-P\" збігаються з тим самим рядком - окремий рядок для кожного варіанта написання не потрібен. Якщо збігається кілька рядків, автоматично виграє найконкретніший (найдовший) шаблон - порядок рядків не впливає на збіг, сортуйте вільно за будь-яким стовпцем. Попередньо заповнений прикладом списку ключових слів пожежної/рятувальної служби як відправної точки - не підтверджено, що він відповідає фактичним ключовим словам вашого власного диспетчерського центру, відредагуйте/замініть за потреби. Для резервного копіювання або перенесення цієї таблиці використовуйте стандартний експорт/імпорт конфігурації екземпляра ioBroker (JSON). Після використання цього стандартного імпорту перезавантажте сторінку адміністрування, перш ніж перевіряти цю таблицю - відкритий діалог конфігурації не оновлює її автоматично після зовнішнього імпорту (обмеження синхронізації стану самого компонента таблиці адміністрування).",
17
17
  "Match": "Матч",
18
18
  "Monitor ID": "ID монітора",
19
19
  "Reconnect delay (s)": "Затримка повторного підключення (с)",
@@ -13,7 +13,7 @@
13
13
  "Label for suffix f (first responder)": "后缀 f 的标签(第一响应者)",
14
14
  "Label for suffix p (polytrauma)": "后缀 p 的标签(多发伤)",
15
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "从配置的服务器的 /waip/ 概述页面实时加载 - 按 Leitstelle、Kreis、Träger 或 Wache 进行选择,或为每个事件选择“Alle Wachalarme”(ID 0)。如果无法连接到服务器,仍然可以手动输入 ID。",
16
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "将 einsatz.stichwort 映射到 einsatz.beschreibung。如果多行匹配,则最具体(最长)的模式自动获胜 - 行顺序对匹配没有影响,可按任意列自由排序。预先填充示例消防/救援关键字列表作为起点 - 尚未确认是否与您自己的调度中心的实际关键字匹配,请根据需要进行编辑/替换。 如需备份或迁移此表,请使用 ioBroker 标准的实例配置导出/导入(JSON)。 使用该标准导入后,请在检查此表之前重新加载管理页面 - 打开的配置对话框不会在外部导入后自动刷新该表(这是管理表格组件自身的状态同步限制)。",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "将 einsatz.stichwort 映射到 einsatz.beschreibung。比较不区分大小写,并将空格/连字符视为等效(比较前任意一串空格或连字符都会归并为一个空格),因此例如 \"H:VU mit P\" 和 \"H:VU-mit-P\" 会匹配同一行 - 不需要为每种拼写变体单独添加一行。如果多行匹配,则最具体(最长)的模式自动获胜 - 行顺序对匹配没有影响,可按任意列自由排序。预先填充示例消防/救援关键字列表作为起点 - 尚未确认是否与您自己的调度中心的实际关键字匹配,请根据需要进行编辑/替换。 如需备份或迁移此表,请使用 ioBroker 标准的实例配置导出/导入(JSON)。 使用该标准导入后,请在检查此表之前重新加载管理页面 - 打开的配置对话框不会在外部导入后自动刷新该表(这是管理表格组件自身的状态同步限制)。",
17
17
  "Match": "匹配",
18
18
  "Monitor ID": "显示器ID",
19
19
  "Reconnect delay (s)": "重新连接延迟(秒)",
@@ -139,7 +139,7 @@
139
139
  "items": {
140
140
  "stichwortMappingHelp": {
141
141
  "type": "staticText",
142
- "text": "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).",
142
+ "text": "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).",
143
143
  "newLine": true,
144
144
  "xs": 12,
145
145
  "sm": 12,
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "waip-web",
4
- "version": "0.7.26",
4
+ "version": "0.7.27",
5
5
  "news": {
6
+ "0.7.27": {
7
+ "en": "Keyword table matching now treats spaces and hyphens as equivalent (any run of either collapses to one before comparing) - e.g. \"H:VU mit P\" and \"H:VU-mit-P\" now match the same table row, so dispatch-center spelling variants no longer need a separate row each. Removed the now-redundant B:Gebäude-Groß/B:Gebäude-Klein rows added in 0.7.24 (the existing B:Gebäude groß/B:Gebäude klein rows already cover them). Comparison was already case-insensitive before this change. Admin UI help text and both READMEs updated accordingly.",
8
+ "de": "Der Abgleich der Stichwort-Tabelle behandelt Leerzeichen und Bindestriche jetzt als gleichwertig (jede Folge aus beidem wird vor dem Vergleich zu einem Leerzeichen zusammengefasst) - z.B. matchen \"H:VU mit P\" und \"H:VU-mit-P\" jetzt dieselbe Tabellenzeile, Leitstellen-Schreibvarianten benötigen also keine eigene Zeile mehr. Die in 0.7.24 ergänzten, jetzt redundanten Zeilen B:Gebäude-Groß/B:Gebäude-Klein entfernt (die bestehenden Zeilen B:Gebäude groß/B:Gebäude klein decken sie bereits ab). Der Abgleich war schon vor dieser Änderung case-insensitiv. Admin-UI-Hilfetext und beide READMEs entsprechend angepasst.",
9
+ "es": "El emparejamiento de la tabla de palabras clave ahora trata los espacios y guiones como equivalentes (cualquier secuencia de ambos se reduce a uno antes de comparar) - p. ej. \"H:VU mit P\" y \"H:VU-mit-P\" ahora coinciden con la misma fila de la tabla, por lo que las variantes ortográficas de las centrales de despacho ya no necesitan una fila separada cada una. Se eliminaron las filas B:Gebäude-Groß/B:Gebäude-Klein añadidas en la 0.7.24, ahora redundantes (las filas existentes B:Gebäude groß/B:Gebäude klein ya las cubren). La comparación ya no distinguía mayúsculas/minúsculas antes de este cambio. Se actualizó el texto de ayuda de la interfaz de administración y ambos README en consecuencia.",
10
+ "fr": "La correspondance de la table de mots-clés traite désormais les espaces et les tirets comme équivalents (toute suite de l'un ou l'autre est ramenée à un seul avant la comparaison) - par ex. \"H:VU mit P\" et \"H:VU-mit-P\" correspondent désormais à la même ligne de tableau, les variantes orthographiques des centres de répartition n'ont donc plus besoin chacune d'une ligne distincte. Suppression des lignes B:Gebäude-Groß/B:Gebäude-Klein ajoutées en 0.7.24, désormais redondantes (les lignes existantes B:Gebäude groß/B:Gebäude klein les couvrent déjà). La comparaison ne tenait déjà pas compte de la casse avant ce changement. Le texte d'aide de l'interface d'administration et les deux README ont été mis à jour en conséquence.",
11
+ "it": "La corrispondenza della tabella delle parole chiave ora tratta spazi e trattini come equivalenti (qualsiasi sequenza dell'uno o dell'altro viene ridotta a uno solo prima del confronto) - ad es. \"H:VU mit P\" e \"H:VU-mit-P\" ora corrispondono alla stessa riga della tabella, quindi le varianti ortografiche delle centrali operative non necessitano più ciascuna di una riga separata. Rimosse le righe B:Gebäude-Groß/B:Gebäude-Klein aggiunte nella 0.7.24, ora ridondanti (le righe esistenti B:Gebäude groß/B:Gebäude klein le coprono già). Il confronto non distingueva già tra maiuscole e minuscole prima di questa modifica. Il testo di aiuto dell'interfaccia di amministrazione ed entrambi i README sono stati aggiornati di conseguenza.",
12
+ "nl": "Het matchen van de trefwoordentabel behandelt spaties en koppeltekens nu als gelijkwaardig (elke reeks van beide wordt vóór de vergelijking teruggebracht tot één spatie) - bijv. \"H:VU mit P\" en \"H:VU-mit-P\" matchen nu dezelfde tabelrij, zodat meldkamer-schrijfwijzen niet langer elk een aparte rij nodig hebben. De in 0.7.24 toegevoegde, nu overbodige rijen B:Gebäude-Groß/B:Gebäude-Klein verwijderd (de bestaande rijen B:Gebäude groß/B:Gebäude klein dekken deze al). De vergelijking was al vóór deze wijziging niet hoofdlettergevoelig. Admin-UI-helptekst en beide READMEs dienovereenkomstig bijgewerkt.",
13
+ "pl": "Dopasowywanie tabeli słów kluczowych traktuje teraz spacje i myślniki jako równoważne (dowolny ciąg jednego lub drugiego jest sprowadzany do jednej spacji przed porównaniem) - np. \"H:VU mit P\" i \"H:VU-mit-P\" pasują teraz do tego samego wiersza tabeli, dzięki czemu warianty pisowni central dyspozytorskich nie wymagają już osobnego wiersza każdy. Usunięto dodane w wersji 0.7.24, obecnie zbędne wiersze B:Gebäude-Groß/B:Gebäude-Klein (istniejące wiersze B:Gebäude groß/B:Gebäude klein już je obejmują). Porównanie już wcześniej nie uwzględniało wielkości liter. Odpowiednio zaktualizowano tekst pomocy interfejsu administracyjnego oraz oba pliki README.",
14
+ "pt": "A correspondência da tabela de palavras-chave agora trata espaços e hífens como equivalentes (qualquer sequência de um ou outro é reduzida a um único espaço antes da comparação) - por exemplo, \"H:VU mit P\" e \"H:VU-mit-P\" agora correspondem à mesma linha da tabela, portanto as variantes ortográficas das centrais de despacho não precisam mais de uma linha separada cada. Removidas as linhas B:Gebäude-Groß/B:Gebäude-Klein adicionadas na 0.7.24, agora redundantes (as linhas existentes B:Gebäude groß/B:Gebäude klein já as cobrem). A comparação já não diferenciava maiúsculas/minúsculas antes desta alteração. Texto de ajuda da interface de administração e ambos os README atualizados de acordo.",
15
+ "ru": "Сопоставление таблицы ключевых слов теперь рассматривает пробелы и дефисы как эквивалентные (любая последовательность из них сводится к одному пробелу перед сравнением) - например, \"H:VU mit P\" и \"H:VU-mit-P\" теперь совпадают с одной и той же строкой таблицы, поэтому варианты написания диспетчерских больше не требуют отдельной строки для каждого. Удалены добавленные в версии 0.7.24, ставшие теперь избыточными строки B:Gebäude-Groß/B:Gebäude-Klein (существующие строки B:Gebäude groß/B:Gebäude klein уже их покрывают). Сравнение и раньше не учитывало регистр. Текст справки интерфейса администратора и оба README обновлены соответственно.",
16
+ "uk": "Зіставлення таблиці ключових слів тепер розглядає пробіли та дефіси як еквівалентні (будь-яка послідовність з них зводиться до одного пробілу перед порівнянням) - наприклад, \"H:VU mit P\" і \"H:VU-mit-P\" тепер збігаються з тим самим рядком таблиці, тому варіанти написання диспетчерських більше не потребують окремого рядка кожен. Видалено додані у версії 0.7.24, тепер зайві рядки B:Gebäude-Groß/B:Gebäude-Klein (наявні рядки B:Gebäude groß/B:Gebäude klein вже їх охоплюють). Порівняння й раніше не враховувало регістр. Текст довідки інтерфейсу адміністратора та обидва README відповідно оновлено.",
17
+ "zh-cn": "关键字表匹配现在将空格和连字符视为等效(比较前任意一串空格或连字符都会归并为一个空格)——例如 \"H:VU mit P\" 和 \"H:VU-mit-P\" 现在会匹配同一张表格行,因此调度中心的拼写变体不再需要各自单独一行。删除了 0.7.24 中新增、现已冗余的 B:Gebäude-Groß/B:Gebäude-Klein 行(现有的 B:Gebäude groß/B:Gebäude klein 行已经覆盖它们)。此更改之前比较就已经不区分大小写。相应更新了管理界面帮助文本和两个 README 文件。"
18
+ },
6
19
  "0.7.26": {
7
20
  "en": "Keyword table (Brandenburg source, v7.1/v2.7 catalogs): added H:Person-TMR and 29 K/V/M/S rescue-service keywords (Krankentransport, Verlegung, MANV, Sonderstichwörter), added two B:Gebäude spelling variants (hyphen vs. space), and corrected 3 entries whose pattern didn't match the real dispatch keyword (H:Flugunfall -> H:Flugzeugunfall, H:Öl Wasser -> H:Öl auf Wasser, H:Rettung aus Höhen/Tiefen -> H:Rettung aus Höhen und Tiefen). Fixed decodeRettungsdienstStichwort() to also accept the IRLS Brandenburg modifier spelling with a space (\"R1N1 p\", \"R1N0 nt\"), not just the Leitstelle Lausitz spelling (\"R1N1p\", \"R1N0-NT\") - admin UI text and both READMEs updated to match. Keyword descriptions tab: Description and Match columns are now sortable too, and the table's help text was moved above the table instead of below. Only affects the shipped example table/decoder logic for new installs - existing configured tables are untouched.",
8
21
  "de": "Stichwort-Tabelle (Quelle: Brandenburg-Kataloge v7.1/v2.7): H:Person-TMR sowie 29 Rettungsdienst-Stichworte (K/V/M/S: Krankentransport, Verlegung, MANV, Sonderstichwörter) ergänzt, zwei B:Gebäude-Schreibvarianten (Bindestrich/Leerzeichen) hinzugefügt und 3 Einträge korrigiert, deren Muster nicht zum echten Leitstellen-Stichwort passte (H:Flugunfall -> H:Flugzeugunfall, H:Öl Wasser -> H:Öl auf Wasser, H:Rettung aus Höhen/Tiefen -> H:Rettung aus Höhen und Tiefen). decodeRettungsdienstStichwort() akzeptiert jetzt zusätzlich zur Lausitz-Schreibweise (\"R1N1p\", \"R1N0-NT\") auch die IRLS-Brandenburg-Schreibweise mit Leerzeichen (\"R1N1 p\", \"R1N0 nt\") - Admin-UI-Texte und beide READMEs entsprechend angepasst. Tab Stichwort-Stammdaten: Die Spalten Description und Match sind jetzt ebenfalls sortierbar, und der Hilfetext zur Tabelle steht jetzt oberhalb statt unterhalb der Tabelle. Betrifft nur die mitgelieferte Beispieltabelle/Dekoder-Logik bei Neuinstallationen - bereits konfigurierte Tabellen bleiben unverändert.",
@@ -147,16 +160,6 @@
147
160
  "beschreibung": "Garage, Schuppen, Bungalow, elektrische Anlage, Trafo",
148
161
  "matchType": "startsWith"
149
162
  },
150
- {
151
- "stichwort": "B:Gebäude-Groß",
152
- "beschreibung": "Zimmer-, Keller-, Dach- oder landwirtschaftlicher Gebäudebrand",
153
- "matchType": "startsWith"
154
- },
155
- {
156
- "stichwort": "B:Gebäude-Klein",
157
- "beschreibung": "Garage, Schuppen, Bungalow, elektrische Anlage, Trafo",
158
- "matchType": "startsWith"
159
- },
160
163
  {
161
164
  "stichwort": "B:Gefahrgut",
162
165
  "beschreibung": "Gefahrgut-Brand",
package/main.js CHANGED
@@ -698,6 +698,27 @@ function decodeHtmlEntities(str) {
698
698
  .trim();
699
699
  }
700
700
 
701
+ /* DE: Normalisiert ein Stichwort/Muster für den Abgleich in lookupStichwortBeschreibung():
702
+ lowercase, getrimmt, und jede Folge aus Leerzeichen und/oder Bindestrichen wird zu genau
703
+ einem Leerzeichen zusammengefasst. Dadurch werden Leitstellen-Schreibvarianten wie
704
+ "H:VU mit P", "H:VU-mit-P" und "H:VU - mit - P" als identisch behandelt, ohne dass für
705
+ jede Variante eine eigene Tabellenzeile gepflegt werden muss. Wird sowohl beim Aufbau von
706
+ this.stichwortMapping (auf das Tabellen-Muster) als auch bei jedem Lookup (auf das
707
+ eingehende Stichwort) angewendet, damit beide Seiten konsistent normalisiert sind.
708
+ EN: Normalizes a keyword/pattern for the comparison in lookupStichwortBeschreibung():
709
+ lowercase, trimmed, and any run of spaces and/or hyphens is collapsed to a single space.
710
+ This makes dispatch-center spelling variants like "H:VU mit P", "H:VU-mit-P" and
711
+ "H:VU - mit - P" compare as identical, without needing a separate table row per variant.
712
+ Applied both when building this.stichwortMapping (to the table pattern) and on every
713
+ lookup (to the incoming keyword), so both sides are normalized consistently. */
714
+ function normalizeStichwortForMatch(value) {
715
+ return String(value || '')
716
+ .trim()
717
+ .toLowerCase()
718
+ .replace(/[\s-]+/g, ' ')
719
+ .trim();
720
+ }
721
+
701
722
  class WaipWeb extends utils.Adapter {
702
723
  constructor(options) {
703
724
  super({
@@ -768,21 +789,22 @@ class WaipWeb extends utils.Adapter {
768
789
  f: (this.config.rdLabelF || '').trim() || DEFAULT_RD_LABEL_F,
769
790
  nt: (this.config.rdLabelNT || '').trim() || DEFAULT_RD_LABEL_NT,
770
791
  };
771
- // DE: Normalisiert einmalig beim Start (statt bei jedem Lookup): trim + lowercase für den
772
- // späteren case-insensitiven Vergleich, alphabetisch nach Muster sortiert. Die Reihenfolge
773
- // hat für lookupStichwortBeschreibung() selbst keine Bedeutung mehr (dort gewinnt das
792
+ // DE: Normalisiert einmalig beim Start (statt bei jedem Lookup): normalizeStichwortForMatch()
793
+ // sorgt für case-insensitiven Vergleich UND behandelt Leerzeichen/Bindestriche als identisch
794
+ // (siehe deren Kommentar), alphabetisch nach Muster sortiert. Die Reihenfolge hat für
795
+ // lookupStichwortBeschreibung() selbst keine Bedeutung mehr (dort gewinnt das
774
796
  // längste/spezifischste passende Muster, nicht die Tabellenposition) - die Sortierung
775
797
  // dient nur der Übersichtlichkeit/Nachvollziehbarkeit.
776
- // EN: Normalized once at startup (instead of on every lookup): trim + lowercase for
777
- // the later case-insensitive comparison, sorted alphabetically by pattern. The order
778
- // no longer matters to lookupStichwortBeschreibung() itself (there, the
779
- // longest/most specific matching pattern wins, not the table position) - the sort
780
- // is purely for readability/traceability.
798
+ // EN: Normalized once at startup (instead of on every lookup): normalizeStichwortForMatch()
799
+ // handles case-insensitive comparison AND treats spaces/hyphens as equivalent (see its
800
+ // comment), sorted alphabetically by pattern. The order no longer matters to
801
+ // lookupStichwortBeschreibung() itself (there, the longest/most specific matching pattern
802
+ // wins, not the table position) - the sort is purely for readability/traceability.
781
803
  this.stichwortMapping = Array.isArray(this.config.stichwortMapping)
782
804
  ? this.config.stichwortMapping
783
805
  .filter(e => e && typeof e.stichwort === 'string' && e.stichwort.trim() !== '')
784
806
  .map(e => ({
785
- pattern: e.stichwort.trim().toLowerCase(),
807
+ pattern: normalizeStichwortForMatch(e.stichwort),
786
808
  beschreibung: typeof e.beschreibung === 'string' ? e.beschreibung : '',
787
809
  matchType: e.matchType === 'contains' ? 'contains' : 'startsWith',
788
810
  }))
@@ -1584,20 +1606,22 @@ class WaipWeb extends utils.Adapter {
1584
1606
 
1585
1607
  /* DE: Ermittelt die Beschreibung zu einem Stichwort: zuerst die Rettungsdienst-Dekodierung (falls
1586
1608
  aktiviert und das Muster passt), sonst die manuelle Stammdaten-Tabelle (this.stichwortMapping,
1587
- case-insensitiv, startsWith/contains je Eintrag). Bei mehreren passenden Einträgen gewinnt
1588
- der mit dem LÄNGSTEN Muster (spezifischste Übereinstimmung) - unabhängig von der
1589
- Tabellenreihenfolge, damit die Admin-Tabelle gefahrlos alphabetisch sortiert werden kann
1590
- (z.B. "B:Wald groß/WSP" schlägt automatisch das kürzere "B:Wald", ganz gleich welche der
1591
- beiden Zeilen zuerst in der Tabelle steht). Bei gleicher Musterlänge entscheidet die
1592
- Tabellenreihenfolge als Tiebreaker. Liefert null, wenn nichts passt (kein Fehler).
1609
+ case-insensitiv, Leerzeichen/Bindestriche äquivalent - siehe normalizeStichwortForMatch(),
1610
+ startsWith/contains je Eintrag). Bei mehreren passenden Einträgen gewinnt der mit dem
1611
+ LÄNGSTEN Muster (spezifischste Übereinstimmung) - unabhängig von der Tabellenreihenfolge,
1612
+ damit die Admin-Tabelle gefahrlos alphabetisch sortiert werden kann (z.B. "B:Wald groß/WSP"
1613
+ schlägt automatisch das kürzere "B:Wald", ganz gleich welche der beiden Zeilen zuerst in der
1614
+ Tabelle steht). Bei gleicher Musterlänge entscheidet die Tabellenreihenfolge als Tiebreaker.
1615
+ Liefert null, wenn nichts passt (kein Fehler).
1593
1616
  EN: Determines the description for a keyword: first the rescue-service decoder (if
1594
1617
  enabled and the pattern matches), otherwise the manual keyword table
1595
- (this.stichwortMapping, case-insensitive, startsWith/contains per entry). If several
1596
- entries match, the one with the LONGEST pattern (most specific match) wins -
1597
- independent of table order, so the admin table can be sorted alphabetically without
1598
- risk (e.g. "B:Wald groß/WSP" automatically beats the shorter "B:Wald", regardless of
1599
- which of the two rows comes first in the table). If patterns tie in length, table
1600
- order decides as a tiebreaker. Returns null if nothing matches (not an error). */
1618
+ (this.stichwortMapping, case-insensitive, spaces/hyphens equivalent - see
1619
+ normalizeStichwortForMatch(), startsWith/contains per entry). If several entries match,
1620
+ the one with the LONGEST pattern (most specific match) wins - independent of table order,
1621
+ so the admin table can be sorted alphabetically without risk (e.g. "B:Wald groß/WSP"
1622
+ automatically beats the shorter "B:Wald", regardless of which of the two rows comes first
1623
+ in the table). If patterns tie in length, table order decides as a tiebreaker. Returns
1624
+ null if nothing matches (not an error). */
1601
1625
  lookupStichwortBeschreibung(stichwort) {
1602
1626
  if (!stichwort) {
1603
1627
  return null;
@@ -1608,7 +1632,7 @@ class WaipWeb extends utils.Adapter {
1608
1632
  return decoded;
1609
1633
  }
1610
1634
  }
1611
- const value = String(stichwort).trim().toLowerCase();
1635
+ const value = normalizeStichwortForMatch(stichwort);
1612
1636
  if (!value) {
1613
1637
  return null;
1614
1638
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.waip-web",
3
- "version": "0.7.26",
3
+ "version": "0.7.27",
4
4
  "description": "Wachalarm IP-Web (WAIP) Adapter für ioBroker – bindet Alarmierungen, Rückmeldungen, Routen und TTS-Ansagen per Socket.IO an ioBroker an.",
5
5
  "author": {
6
6
  "name": "rnc11",