iobroker.zeptrion 1.0.12 → 1.0.13
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.md +5 -4
- package/i18n/de.json +1 -1
- package/i18n/es.json +1 -1
- package/i18n/fr.json +1 -1
- package/i18n/it.json +1 -1
- package/i18n/nl.json +1 -1
- package/i18n/pl.json +1 -1
- package/i18n/pt.json +1 -1
- package/io-package.json +14 -14
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -176,6 +176,10 @@ npm run test:integration # starts a real js-controller (takes longer)
|
|
|
176
176
|
|
|
177
177
|
## Changelog
|
|
178
178
|
|
|
179
|
+
### 1.0.13 (2026-08-11)
|
|
180
|
+
|
|
181
|
+
- Fix E5606 (untranslated i18n entries): testDeviceOk was never actually translated for de/es/it/nl/pl/pt (silently kept the English copy). Also fixed the identical issue in fr, missed by the checker's exact-match heuristic due to a spacing difference. Verified with a full sweep of all 11 i18n files against the English source - no other matches found.
|
|
182
|
+
|
|
179
183
|
### 1.0.12 (2026-08-10)
|
|
180
184
|
|
|
181
185
|
- Fix a real i18n gap found during independent end-to-end testing of v1.0.11: embedded field-validation messages in the CSV import report stayed English even in the localized report. validateDeviceRow() now returns structured {key, args} entries with two explicit renderers: always-English for logs, I18n.translate() for the UI. Added 13 new i18n keys across all 11 languages. Also added the missing README_de.md to package.json's "files" allowlist - npm auto-includes README.md in every package but NOT README_de.md, so it was silently absent from the published tarball. Verified end-to-end: loaded the real I18n module directly, confirmed log output stays English regardless of active UI language across EN/DE/FR/ZH, and downloaded + extracted the real published npm tarball to confirm packaging.
|
|
@@ -197,10 +201,7 @@ npm run test:integration # starts a real js-controller (takes longer)
|
|
|
197
201
|
### 1.0.7 (2026-07-22)
|
|
198
202
|
- Enable global i18n support (jsonConfig i18n: true) with translation files under admin/i18n/ for all 11 supported languages, resolving the checker's i18n warnings the correct way (validatorErrorText stays a plain string per schema; ioBroker resolves the translation via the files, falling back to the English text if no entry is found). Added @iobroker/adapter-dev and @alcalzone/release-script as devDependencies with translate/release npm scripts. (Migrating to @iobroker/eslint-config was evaluated but reverted: its eslint-plugin-import dependency does not yet support eslint 10.x, which broke npm install.)
|
|
199
203
|
|
|
200
|
-
### 1.0.6
|
|
201
|
-
- Fix: reverted validatorErrorText for id/host/travelTimeSecCh back to plain strings - the admin jsonConfig schema requires validatorErrorText to be a string, not an i18n object (E5512). The i18n conversion in 1.0.5 passed lint but failed schema validation.
|
|
202
|
-
|
|
203
|
-
### 1.0.5 and older
|
|
204
|
+
### 1.0.6 and older
|
|
204
205
|
|
|
205
206
|
Older changelog entries can be found in [CHANGELOG_OLD.md](CHANGELOG_OLD.md).
|
|
206
207
|
|
package/i18n/de.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"noDevicesWithHost": "Keine Geräte mit Host in der Tabelle.",
|
|
10
10
|
"testInvalidIp": "❌ %s (%s): ungültige IP-Adresse",
|
|
11
11
|
"testChannelsSuffix": ", %s Kanäle",
|
|
12
|
-
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s,
|
|
12
|
+
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s, Seriennr. %s",
|
|
13
13
|
"testNotZeptrion": "⚠️ %s (%s): antwortet, aber KEIN zeptrion-Gerät (sys=\"%s\")",
|
|
14
14
|
"testUnreachable": "❌ %s (%s): nicht erreichbar (%s)",
|
|
15
15
|
"discoveryFinished": "Suche abgeschlossen: %s Gerät(e) im Netz gefunden, %s neu (deaktiviert) übernommen. Instanz-Konfiguration schliessen und neu öffnen, um sie in der Tabelle zu sehen und zu aktivieren.",
|
package/i18n/es.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"noDevicesWithHost": "No hay dispositivos con host en la tabla.",
|
|
10
10
|
"testInvalidIp": "❌ %s (%s): dirección IP no válida",
|
|
11
11
|
"testChannelsSuffix": ", %s canales",
|
|
12
|
-
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s,
|
|
12
|
+
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s, N.º Serie %s",
|
|
13
13
|
"testNotZeptrion": "⚠️ %s (%s): responde, pero NO es un dispositivo zeptrion (sys=\"%s\")",
|
|
14
14
|
"testUnreachable": "❌ %s (%s): inaccesible (%s)",
|
|
15
15
|
"discoveryFinished": "Búsqueda finalizada: %s dispositivo(s) encontrado(s) en la red, %s añadido(s) recientemente (desactivado). Cierre y vuelva a abrir la configuración de la instancia para verlos en la tabla y activarlos.",
|
package/i18n/fr.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"noDevicesWithHost": "Aucun appareil avec un hôte dans le tableau.",
|
|
10
10
|
"testInvalidIp": "❌ %s (%s) : adresse IP invalide",
|
|
11
11
|
"testChannelsSuffix": ", %s canaux",
|
|
12
|
-
"testDeviceOk": "✅ %s (%s) : zeptrion %s%s, SW %s,
|
|
12
|
+
"testDeviceOk": "✅ %s (%s) : zeptrion %s%s, SW %s, N° série %s",
|
|
13
13
|
"testNotZeptrion": "⚠️ %s (%s) : répond, mais n'est PAS un appareil zeptrion (sys=\"%s\")",
|
|
14
14
|
"testUnreachable": "❌ %s (%s) : injoignable (%s)",
|
|
15
15
|
"discoveryFinished": "Recherche terminée : %s appareil(s) trouvé(s) sur le réseau, %s nouvellement ajouté(s) (désactivé(s)). Fermez et rouvrez la configuration de l'instance pour les voir dans le tableau et les activer.",
|
package/i18n/it.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"noDevicesWithHost": "Nessun dispositivo con host nella tabella.",
|
|
10
10
|
"testInvalidIp": "❌ %s (%s): indirizzo IP non valido",
|
|
11
11
|
"testChannelsSuffix": ", %s canali",
|
|
12
|
-
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s,
|
|
12
|
+
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s, N. Serie %s",
|
|
13
13
|
"testNotZeptrion": "⚠️ %s (%s): risponde, ma NON è un dispositivo zeptrion (sys=\"%s\")",
|
|
14
14
|
"testUnreachable": "❌ %s (%s): non raggiungibile (%s)",
|
|
15
15
|
"discoveryFinished": "Ricerca completata: %s dispositivo/i trovato/i sulla rete, %s aggiunto/i di recente (disattivato/i). Chiudere e riaprire la configurazione dell'istanza per vederli nella tabella e attivarli.",
|
package/i18n/nl.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"noDevicesWithHost": "Geen apparaten met een host in de tabel.",
|
|
10
10
|
"testInvalidIp": "❌ %s (%s): ongeldig IP-adres",
|
|
11
11
|
"testChannelsSuffix": ", %s kanalen",
|
|
12
|
-
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s,
|
|
12
|
+
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s, Serienr. %s",
|
|
13
13
|
"testNotZeptrion": "⚠️ %s (%s): reageert, maar is GEEN zeptrion-apparaat (sys=\"%s\")",
|
|
14
14
|
"testUnreachable": "❌ %s (%s): onbereikbaar (%s)",
|
|
15
15
|
"discoveryFinished": "Zoeken voltooid: %s apparaat/apparaten gevonden op het netwerk, %s nieuw toegevoegd (uitgeschakeld). Sluit en heropen de instantieconfiguratie om ze in de tabel te zien en in te schakelen.",
|
package/i18n/pl.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"noDevicesWithHost": "Brak urządzeń z hostem w tabeli.",
|
|
10
10
|
"testInvalidIp": "❌ %s (%s): nieprawidłowy adres IP",
|
|
11
11
|
"testChannelsSuffix": ", %s kanałów",
|
|
12
|
-
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s,
|
|
12
|
+
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s, Nr seryjny %s",
|
|
13
13
|
"testNotZeptrion": "⚠️ %s (%s): odpowiada, ale NIE jest urządzeniem zeptrion (sys=\"%s\")",
|
|
14
14
|
"testUnreachable": "❌ %s (%s): niedostępny (%s)",
|
|
15
15
|
"discoveryFinished": "Wyszukiwanie zakończone: znaleziono %s urządzenie(a) w sieci, dodano %s nowych (wyłączonych). Zamknij i otwórz ponownie konfigurację instancji, aby zobaczyć je w tabeli i je włączyć.",
|
package/i18n/pt.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"noDevicesWithHost": "Nenhum dispositivo com host na tabela.",
|
|
10
10
|
"testInvalidIp": "❌ %s (%s): endereço IP inválido",
|
|
11
11
|
"testChannelsSuffix": ", %s canais",
|
|
12
|
-
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s,
|
|
12
|
+
"testDeviceOk": "✅ %s (%s): zeptrion %s%s, SW %s, N.º Série %s",
|
|
13
13
|
"testNotZeptrion": "⚠️ %s (%s): responde, mas NÃO é um dispositivo zeptrion (sys=\"%s\")",
|
|
14
14
|
"testUnreachable": "❌ %s (%s): inacessível (%s)",
|
|
15
15
|
"discoveryFinished": "Descoberta concluída: %s dispositivo(s) encontrado(s) na rede, %s adicionado(s) recentemente (desativado). Feche e reabra a configuração da instância para os ver na tabela e ativá-los.",
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "zeptrion",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.13",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.0.13": {
|
|
7
|
+
"en": "Fix E5606 (untranslated i18n entries): the testDeviceOk template was never actually translated for de/es/it/nl/pl/pt (only ru/uk/zh-cn had proper translations, while these six silently kept the English copy). Translated the SW/SN abbreviations appropriately for each language. Also fixed the identical issue in fr, which the checker's exact-match heuristic missed due to a spacing difference before the colon but had the same untranslated content. Verified with a full sweep comparing every key across all 11 i18n files against the English source for any other >5-word identical matches - none found.",
|
|
8
|
+
"de": "Behebt E5606 (unübersetzte i18n-Einträge): die testDeviceOk-Vorlage wurde für de/es/it/nl/pl/pt nie tatsächlich übersetzt (nur ru/uk/zh-cn hatten korrekte Übersetzungen, diese sechs behielten still die englische Kopie). SW/SN-Abkürzungen für jede Sprache passend übersetzt. Zudem denselben Fehler in fr behoben, den die Exakt-Match-Heuristik des Checkers wegen eines Leerzeichen-Unterschieds vor dem Doppelpunkt übersehen hatte, der aber denselben unübersetzten Inhalt hatte. Verifiziert mit einem vollständigen Abgleich aller Keys in allen 11 i18n-Dateien gegen die englische Quelle auf weitere >5-Wort-identische Treffer - keine gefunden.",
|
|
9
|
+
"ru": "Исправлена ошибка E5606 (непереведённые записи i18n): шаблон testDeviceOk был переведён для всех языков, кроме de/es/it/nl/pl/pt, которые сохраняли английскую копию.",
|
|
10
|
+
"pt": "Corrigido E5606 (entradas i18n não traduzidas): o modelo testDeviceOk nunca foi traduzido para de/es/it/nl/pl/pt.",
|
|
11
|
+
"nl": "E5606 opgelost (onvertaalde i18n-items): de testDeviceOk-sjabloon was nooit vertaald voor de/es/it/nl/pl/pt.",
|
|
12
|
+
"fr": "Correction de E5606 (entrées i18n non traduites) : le modèle testDeviceOk n'avait jamais été traduit pour de/es/it/nl/pl/pt.",
|
|
13
|
+
"it": "Corretto E5606 (voci i18n non tradotte): il modello testDeviceOk non era mai stato tradotto per de/es/it/nl/pl/pt.",
|
|
14
|
+
"es": "Corregido E5606 (entradas i18n no traducidas): la plantilla testDeviceOk nunca se tradujo para de/es/it/nl/pl/pt.",
|
|
15
|
+
"pl": "Naprawiono E5606 (nieprzetłumaczone wpisy i18n): szablon testDeviceOk nigdy nie został przetłumaczony dla de/es/it/nl/pl/pt.",
|
|
16
|
+
"uk": "Виправлено E5606 (неперекладені записи i18n): шаблон testDeviceOk ніколи не був перекладений для de/es/it/nl/pl/pt.",
|
|
17
|
+
"zh-cn": "修复了 E5606(未翻译的 i18n 条目):testDeviceOk 模板从未针对 de/es/it/nl/pl/pt 进行翻译。"
|
|
18
|
+
},
|
|
6
19
|
"1.0.12": {
|
|
7
20
|
"en": "Fix a real i18n gap found during independent end-to-end testing of v1.0.11: the CSV import report wrapper text (csvRowError) was localized via I18n.translate(), but the embedded field-validation messages from validateDeviceRow() (host missing, invalid IP, etc.) were still hard-coded English strings from v1.0.10, producing a mixed-language sentence for non-English admin users (e.g. \"Zeile 3: Host missing\" in German). validateDeviceRow() now returns structured {key, args} entries instead of pre-rendered strings, with two explicit renderers: one that always renders English (for this.log.*() call sites, which must stay English regardless of system language) and one that uses I18n.translate() (for the localized CSV import UI report). Added 13 new i18n keys across all 11 languages. Also added the missing README_de.md entry to package.json's \"files\" allowlist - npm auto-includes README.md in every published package, but NOT README_de.md, so it was silently absent from the published npm tarball despite being present in the GitHub repo. Verified end-to-end by loading the actual @iobroker/adapter-core I18n module directly and calling I18n.translate() with real interpolated values in English, German, French, and Chinese, confirming log output stays English regardless of the active UI language, and by downloading and extracting the real published npm tarball to confirm both i18n/ and admin/i18n/ ship correctly.",
|
|
8
21
|
"de": "Behebt eine echte i18n-Lücke, gefunden bei einem unabhängigen End-to-End-Test von v1.0.11: Der Wrapper-Text des CSV-Import-Berichts (csvRowError) war über I18n.translate() lokalisiert, aber die eingebetteten Feld-Validierungsmeldungen aus validateDeviceRow() (Host fehlt, ungültige IP, etc.) waren noch die hartcodierten englischen Strings aus v1.0.10 - das ergab einen sprachlich gemischten Satz für nicht-englische Admin-Nutzer (z. B. \"Zeile 3: Host missing\" auf Deutsch). validateDeviceRow() gibt jetzt strukturierte {key, args}-Einträge statt fertiger Strings zurück, mit zwei expliziten Renderern: einer rendert immer Englisch (für this.log.*()-Aufrufstellen, die unabhängig von der Systemsprache Englisch bleiben müssen), einer nutzt I18n.translate() (für den lokalisierten CSV-Import-UI-Bericht). 13 neue i18n-Keys in allen 11 Sprachen ergänzt. Zudem den fehlenden README_de.md-Eintrag in package.json's \"files\"-Allowlist ergänzt - npm packt README.md automatisch in jedes veröffentlichte Paket, aber NICHT README_de.md, weshalb diese trotz Vorhandensein im GitHub-Repo im veröffentlichten npm-Tarball stillschweigend fehlte. End-to-End verifiziert durch direktes Laden des echten @iobroker/adapter-core I18n-Moduls und Aufrufe von I18n.translate() mit echten interpolierten Werten auf Englisch, Deutsch, Französisch und Chinesisch, bestätigt dass Log-Ausgabe unabhängig von der aktiven UI-Sprache Englisch bleibt, sowie durch Herunterladen und Entpacken des echten veröffentlichten npm-Tarballs zur Bestätigung, dass sowohl i18n/ als auch admin/i18n/ korrekt mitgeliefert werden.",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "Włączono globalną obsługę i18n (jsonConfig i18n: true) z plikami tłumaczeń w admin/i18n/ dla wszystkich 11 obsługiwanych języków. Dodano @iobroker/adapter-dev i @alcalzone/release-script.",
|
|
81
94
|
"uk": "Увімкнено глобальну підтримку i18n (jsonConfig i18n: true) з файлами перекладу в admin/i18n/ для всіх 11 підтримуваних мов. Додано @iobroker/adapter-dev і @alcalzone/release-script.",
|
|
82
95
|
"zh-cn": "启用全局 i18n 支持(jsonConfig i18n: true),在 admin/i18n/ 下为所有 11 种支持的语言提供翻译文件。新增 @iobroker/adapter-dev 和 @alcalzone/release-script。"
|
|
83
|
-
},
|
|
84
|
-
"1.0.6": {
|
|
85
|
-
"en": "Fix: reverted validatorErrorText for id/host/travelTimeSecCh back to plain strings - the admin jsonConfig schema requires validatorErrorText to be a string, not an i18n object (E5512). The i18n conversion in 1.0.5 passed lint but failed schema validation.",
|
|
86
|
-
"de": "Fix: validatorErrorText für id/host/travelTimeSecCh wieder auf einfache Strings zurückgesetzt - das Admin-jsonConfig-Schema verlangt für validatorErrorText zwingend einen String, kein i18n-Objekt (E5512). Die i18n-Umstellung in 1.0.5 bestand den Linter, aber nicht die Schema-Validierung.",
|
|
87
|
-
"ru": "Исправление: validatorErrorText для id/host/travelTimeSecCh снова стали простыми строками - схема admin jsonConfig требует, чтобы validatorErrorText был строкой, а не объектом i18n (E5512). Преобразование в i18n в версии 1.0.5 прошло линтер, но не прошло проверку схемы.",
|
|
88
|
-
"pt": "Correção: validatorErrorText para id/host/travelTimeSecCh revertido para strings simples - o esquema admin jsonConfig exige que validatorErrorText seja uma string, não um objeto i18n (E5512). A conversão para i18n na 1.0.5 passou no lint mas falhou na validação do esquema.",
|
|
89
|
-
"nl": "Fix: validatorErrorText voor id/host/travelTimeSecCh teruggezet naar gewone strings - het admin jsonConfig-schema vereist dat validatorErrorText een string is, geen i18n-object (E5512). De i18n-conversie in 1.0.5 kwam door de linter maar niet door de schemavalidatie.",
|
|
90
|
-
"fr": "Correction : validatorErrorText pour id/host/travelTimeSecCh remis en chaînes simples - le schéma admin jsonConfig exige que validatorErrorText soit une chaîne, pas un objet i18n (E5512). La conversion i18n dans la 1.0.5 passait le lint mais pas la validation du schéma.",
|
|
91
|
-
"it": "Correzione: validatorErrorText per id/host/travelTimeSecCh riportato a semplici stringhe - lo schema admin jsonConfig richiede che validatorErrorText sia una stringa, non un oggetto i18n (E5512). La conversione i18n nella 1.0.5 superava il lint ma non la validazione dello schema.",
|
|
92
|
-
"es": "Corrección: validatorErrorText para id/host/travelTimeSecCh revertido a cadenas simples - el esquema admin jsonConfig exige que validatorErrorText sea una cadena, no un objeto i18n (E5512). La conversión a i18n en 1.0.5 pasaba el lint pero no la validación del esquema.",
|
|
93
|
-
"pl": "Poprawka: validatorErrorText dla id/host/travelTimeSecCh przywrócono do zwykłych ciągów znaków - schemat admin jsonConfig wymaga, aby validatorErrorText był ciągiem znaków, a nie obiektem i18n (E5512). Konwersja i18n w 1.0.5 przechodziła linter, ale nie walidację schematu.",
|
|
94
|
-
"uk": "Виправлення: validatorErrorText для id/host/travelTimeSecCh повернуто до звичайних рядків - схема admin jsonConfig вимагає, щоб validatorErrorText був рядком, а не об'єктом i18n (E5512). Перетворення на i18n у версії 1.0.5 проходило лінтер, але не проходило валідацію схеми.",
|
|
95
|
-
"zh-cn": "修复:将 id/host/travelTimeSecCh 的 validatorErrorText 恢复为普通字符串——管理端 jsonConfig 架构要求 validatorErrorText 必须是字符串,而非 i18n 对象(E5512)。1.0.5 中的 i18n 转换通过了 lint 检查,但未通过架构校验。"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.zeptrion",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
4
|
"description": "ioBroker Adapter für Feller zeptrion / zApp WLAN-Aktoren (WLAN-Nebenstelle 4K, WLAN-Zwischenmodul 2K) über die zrap Webservice API - inkl. Sammelbefehlen für Hagelalarm und mDNS-Discovery",
|
|
5
5
|
"author": "Stefan Bühler",
|
|
6
6
|
"license": "MIT",
|