iobroker.poolcontrol 1.2.13 → 1.2.14

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 CHANGED
@@ -189,6 +189,10 @@ New features are added regularly – please refer to the changelog.
189
189
 
190
190
  ## Changelog
191
191
 
192
+ ### 1.2.14
193
+ Release: 22.03.2026
194
+ - ### add i18n support for chemistry help texts
195
+
192
196
  ### 1.2.13
193
197
  Release: 22.03.2026
194
198
  - Added multilingual state names and descriptions (DE/EN)
package/io-package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "poolcontrol",
4
- "version": "1.2.13",
4
+ "version": "1.2.14",
5
5
  "news": {
6
- "1.2.13": {
7
- "en": "Added multilingual state names and descriptions (DE/EN). Improved consistency of all state texts. Internal cleanup and stability improvements.",
8
- "de": "Mehrsprachige State-Namen und Beschreibungen (DE/EN) ergänzt. Einheitliche Benennung aller Datenpunkte. Interne Verbesserungen und Stabilität optimiert.",
9
- "ru": "Добавлены многоязычные названия и описания штатов (DE/EN). Улучшена согласованность всех текстов состояний. Внутренняя очистка и улучшения стабильности.",
10
- "pt": "Adicionados nomes e descrições de estados multilíngues (DE/EN). Melhor consistência de todos os textos estaduais. Limpeza interna e melhorias de estabilidade.",
11
- "nl": "Meertalige namen en beschrijvingen van staten toegevoegd (DE/EN). Verbeterde consistentie van alle staatsteksten. Interne opschoning en stabiliteitsverbeteringen.",
12
- "fr": "Ajout de noms et de descriptions d'état multilingues (DE/EN). Amélioration de la cohérence de tous les textes étatiques. Améliorations du nettoyage interne et de la stabilité.",
13
- "it": "Aggiunti nomi e descrizioni degli stati multilingue (DE/EN). Maggiore coerenza di tutti i testi statali. Miglioramenti della pulizia interna e della stabilità.",
14
- "es": "Se agregaron nombres y descripciones de estados multilingües (DE/EN). Coherencia mejorada de todos los textos estatales. Mejoras en la limpieza interna y la estabilidad.",
15
- "pl": "Dodano wielojęzyczne nazwy i opisy stanów (DE/EN). Poprawiona spójność wszystkich tekstów stanowych. Wewnętrzne porządki i ulepszenia stabilności.",
16
- "uk": "Додано багатомовні назви та описи штатів (DE/EN). Покращена узгодженість усіх державних текстів. Внутрішнє очищення та покращення стабільності.",
17
- "zh-cn": "添加了多语言状态名称和描述(德语/英语)。提高了所有国家文本的一致性。内部清理和稳定性改进。"
6
+ "1.2.14": {
7
+ "en": "Add i18n support for chemistry help (common.states and help texts), fix React issues caused by invalid translations, and improve multilingual user guidance.",
8
+ "de": "i18n-Unterstützung für Chemie-Hilfe hinzugefügt (common.states und Hilfetexte), React-Fehler durch fehlerhafte Übersetzungen behoben und mehrsprachige Benutzerführung verbessert.",
9
+ "ru": "Добавьте поддержку i18n для справки по химии (common.states и справочные тексты), исправьте проблемы React, вызванные неверными переводами, и улучшите многоязычное руководство пользователя.",
10
+ "pt": "Adicione suporte i18n para ajuda química (common.states e textos de ajuda), corrija problemas do React causados ​​por traduções inválidas e melhore a orientação multilíngue do usuário.",
11
+ "nl": "Voeg i18n-ondersteuning toe voor scheikundige hulp (common.states en helpteksten), repareer React-problemen veroorzaakt door ongeldige vertalingen en verbeter de meertalige gebruikersbegeleiding.",
12
+ "fr": "Ajoutez la prise en charge d'i18n pour l'aide chimique (common.states et textes d'aide), corrigez les problèmes de React causés par des traductions non valides et améliorez le guidage utilisateur multilingue.",
13
+ "it": "Aggiungi il supporto i18n per la guida in chimica (common.states e testi di aiuto), risolvi i problemi di React causati da traduzioni non valide e migliora la guida utente multilingue.",
14
+ "es": "Agregue soporte i18n para ayuda sobre química (estados comunes y textos de ayuda), solucione problemas de React causados ​​por traducciones no válidas y mejore la guía del usuario multilingüe.",
15
+ "pl": "Dodaj obsługę i18n dla pomocy chemicznej (stany wspólne i teksty pomocy), rozwiąż problemy z React spowodowane nieprawidłowymi tłumaczeniami i ulepsz wielojęzyczne wskazówki dla użytkownika.",
16
+ "uk": "Додайте підтримку i18n для довідки з хімії (common.states і тексти довідки), виправте проблеми з React, викликані недійсними перекладами, і покращте багатомовні інструкції для користувачів.",
17
+ "zh-cn": "添加对化学帮助(common.states 和帮助文本)的 i18n 支持,修复无效翻译导致的 React 问题,并改进多语言用户指南。"
18
18
  },
19
19
  "1.2.12": {
20
20
  "en": "Repository cleanup and fixes for ioBroker repository checker. Restored required native object in io-package.json, removed invalid properties and updated README.",
@@ -67,19 +67,6 @@
67
67
  "pl": "Poprawione definicje ról dla stanów zapisywalnych zgodnie z wytycznymi ioBroker.",
68
68
  "uk": "Виправлено визначення ролей для записуваних станів відповідно до вказівок ioBroker.",
69
69
  "zh-cn": "根据 ioBroker 指南更正了可写状态的角色定义。"
70
- },
71
- "1.2.6": {
72
- "en": "Fixed adapter checker issues, converted remaining log messages to English, updated release-script plugins and dependabot configuration.",
73
- "de": "Adapter-Checker-Probleme behoben, verbleibende Logmeldungen auf Englisch umgestellt, release-script Plugins und Dependabot-Konfiguration aktualisiert.",
74
- "ru": "Исправлены проблемы с проверкой адаптера, преобразованы оставшиеся сообщения журнала на английский язык, обновлены плагины сценариев выпуска и конфигурация зависимостей.",
75
- "pt": "Corrigidos problemas do verificador do adaptador, convertidas mensagens de log restantes para inglês, plug-ins de script de lançamento atualizados e configuração do dependabot.",
76
- "nl": "Problemen met de adaptercontrole opgelost, resterende logberichten naar het Engels geconverteerd, release-scriptplug-ins en dependabot-configuratie bijgewerkt.",
77
- "fr": "Correction des problèmes de vérification d'adaptateur, conversion des messages de journal restants en anglais, mise à jour des plugins de script de version et configuration des dépendances.",
78
- "it": "Risolti i problemi di controllo dell'adattatore, convertiti i messaggi di registro rimanenti in inglese, aggiornati i plugin degli script di rilascio e la configurazione di dependabot.",
79
- "es": "Se solucionaron problemas del verificador de adaptadores, se convirtieron los mensajes de registro restantes al inglés, se actualizaron los complementos del script de lanzamiento y la configuración del dependabot.",
80
- "pl": "Naprawiono problemy z modułem sprawdzania adaptera, przekonwertowano pozostałe komunikaty dziennika na język angielski, zaktualizowano wtyczki skryptu wydania i konfigurację zależnego bota.",
81
- "uk": "Виправлено проблеми перевірки адаптера, перетворено решту повідомлень журналу на англійську мову, оновлено плагіни сценарію випуску та конфігурацію dependabot.",
82
- "zh-cn": "修复了适配器检查器问题,将剩余日志消息转换为英语,更新了发布脚本插件和 dependentabot 配置。"
83
70
  }
84
71
  },
85
72
  "titleLang": {
@@ -146,8 +133,7 @@
146
133
  {
147
134
  "admin": ">=7.6.20"
148
135
  }
149
- ],
150
- "installedFrom": "file:///opt/iobroker/ioBroker.poolcontrol"
136
+ ]
151
137
  },
152
138
  "native": {},
153
139
  "objects": [],
@@ -1,4 +1,7 @@
1
1
  'use strict';
2
+
3
+ const { I18n } = require('@iobroker/adapter-core');
4
+
2
5
  /* eslint-disable jsdoc/require-param-description */
3
6
  /* eslint-disable jsdoc/require-returns-description */
4
7
 
@@ -150,40 +153,40 @@ const aiChemistryHelpHelper = {
150
153
  */
151
154
  _getHelpText(issue) {
152
155
  const commonFooter =
153
- '\n\nWichtig:\n' +
154
- ' Immer schrittweise vorgehen: erst messenklein korrigierenumwälzen lassenerneut messen.\n' +
155
- ' Angaben auf dem Produkt beachten (Konzentration/Beckenvolumen unterscheiden sich).\n' +
156
- ' Wenn du unsicher bist: lieber langsamer korrigieren als „mit Gewalt“.\n';
156
+ `\n\n${I18n.t('Important:')}\n` +
157
+ `• ${I18n.t('Always proceed step by step: measure firstcorrect in small steps let the water circulate measure again.')}\n` +
158
+ `• ${I18n.t('Always follow the product instructions (concentration and pool volume may differ).')}\n` +
159
+ `• ${I18n.t('If you are unsure, correct more slowly rather than forcing it.')}\n`;
157
160
 
158
161
  const map = {
159
162
  // ----------------------------------------------------------
160
163
  // pH
161
164
  // ----------------------------------------------------------
162
165
  ph_low:
163
- `Problem: pH-Wert ist zu niedrig (Wasser ist „zu sauer“).\n\n` +
164
- `Was das bedeutet:\n` +
165
- `Ein zu niedriger pH-Wert kann Material (Metalle/Einbauteile) stärker angreifen und Badereizungen begünstigen. Außerdem kann die Wasserbalance insgesamt instabil werden.\n\n` +
166
- `Häufige Ursachen:\n` +
167
- `• Viel Regen-/Frischwasser (kann das Wasser „ansäuern“)\n` +
168
- `• Niedrige Alkalinität (Puffer fehlt → pH fällt schneller)\n` +
169
- `• Häufige Korrekturen/Backwash/Wasserwechsel\n\n` +
170
- `Übliche Lösungsrichtung:\n` +
171
- `• pH mit einem pH-Plus“/pH-Heber schrittweise anheben.\n` +
172
- `• Wenn der pH ständig wieder fällt: Totalalkalinität/„Puffer“ mit prüfen, weil sonst jede pH-Korrektur nur kurz hält.\n${
166
+ `${I18n.t('Problem: pH value is too low (water is too acidic).')}\n\n` +
167
+ `${I18n.t('What this means:')}\n` +
168
+ `${I18n.t('A pH value that is too low can attack materials (metals / built-in parts) more strongly and can increase irritation during bathing. It can also make the overall water balance unstable.')}\n\n` +
169
+ `${I18n.t('Common causes:')}\n` +
170
+ `• ${I18n.t('A lot of rainwater / fresh water (can acidify the water)')}\n` +
171
+ `• ${I18n.t('Low alkalinity (buffer missing → pH drops faster)')}\n` +
172
+ `• ${I18n.t('Frequent corrections / backwashing / water changes')}\n\n` +
173
+ `${I18n.t('Typical corrective direction:')}\n` +
174
+ `• ${I18n.t('Raise the pH gradually with a pH increaser / pH plus product.')}\n` +
175
+ `• ${I18n.t('If the pH keeps dropping again, also check total alkalinity / the buffer, otherwise every pH correction will only hold for a short time.')}\n${
173
176
  commonFooter
174
177
  }`,
175
178
 
176
179
  ph_high:
177
- `Problem: pH-Wert ist zu hoch (Wasser ist „zu basisch“).\n\n` +
178
- `Was das bedeutet:\n` +
179
- `Bei zu hohem pH-Wert arbeitet Chlor/Desinfektion oft schlechter, und es kann leichter zu Trübungen/Ausfällungen kommen (z. B. Kalk). Außerdem können Augen/Haut gereizt sein.\n\n` +
180
- `Häufige Ursachen:\n` +
181
- `• Starkes „Ausgasen“/viel Sprudel (CO₂ entweicht → pH steigt)\n` +
182
- `• Hartes Wasser / hohe Alkalinität\n` +
183
- `• Manche Becken/Materialien können anfangs pH nach oben ziehen\n\n` +
184
- `Übliche Lösungsrichtung:\n` +
185
- `• pH mit pH-Minus“/pH-Senker in kleinen Schritten senken.\n` +
186
- `• Bei wiederkehrend hohem pH: Alkalinität/Wasserhärte mit betrachten, weil das die Stabilität stark beeinflusst.\n${
180
+ `${I18n.t('Problem: pH value is too high (water is too alkaline).')}\n\n` +
181
+ `${I18n.t('What this means:')}\n` +
182
+ `${I18n.t('If the pH value is too high, chlorine / disinfection often works less effectively and cloudiness / precipitation (for example lime) can occur more easily. Eyes and skin may also become irritated.')}\n\n` +
183
+ `${I18n.t('Common causes:')}\n` +
184
+ `• ${I18n.t('Strong outgassing / a lot of bubbling (CO₂ escapes → pH rises)')}\n` +
185
+ `• ${I18n.t('Hard water / high alkalinity')}\n` +
186
+ `• ${I18n.t('Some pools / materials can initially push the pH upward')}\n\n` +
187
+ `${I18n.t('Typical corrective direction:')}\n` +
188
+ `• ${I18n.t('Lower the pH in small steps with a pH reducer / pH minus product.')}\n` +
189
+ `• ${I18n.t('If the pH repeatedly rises again, also consider alkalinity / water hardness, because this strongly affects stability.')}\n${
187
190
  commonFooter
188
191
  }`,
189
192
 
@@ -191,118 +194,118 @@ const aiChemistryHelpHelper = {
191
194
  // Chlor
192
195
  // ----------------------------------------------------------
193
196
  chlor_low:
194
- `Problem: Chlorwert ist zu niedrig.\n\n` +
195
- `Was das bedeutet:\n` +
196
- `Zu wenig wirksames Chlor kann dazu führen, dass sich Keime/Algen leichter vermehren. Häufig sieht man dann zuerst „müdes“ Wasser: weniger klar, mehr Geruch, schneller Belag.\n\n` +
197
- `Häufige Ursachen:\n` +
198
- `• Viel Sonne/UV (Chlor wird schneller abgebaut)\n` +
199
- `• Hohe Badebelastung (Schweiß/Organik „verbraucht“ Chlor)\n` +
200
- `• pH-Wert ungünstig (Chlor wirkt schlechter)\n\n` +
201
- `Übliche Lösungsrichtung:\n` +
202
- `• Desinfektion wieder in einen normalen Bereich bringen und parallel pH kontrollieren.\n` +
203
- `• Wenn Chlor dauerhaft „wegbricht“: Ursachen wie organische Belastung/Filterzustand/Umwälzung mit prüfen.\n${
197
+ `${I18n.t('Problem: Chlorine level is too low.')}\n\n` +
198
+ `${I18n.t('What this means:')}\n` +
199
+ `${I18n.t('Too little effective chlorine can allow germs and algae to multiply more easily. Often the first signs are tired-looking water: less clarity, more odor, and deposits forming faster.')}\n\n` +
200
+ `${I18n.t('Common causes:')}\n` +
201
+ `• ${I18n.t('A lot of sun / UV exposure (chlorine breaks down faster)')}\n` +
202
+ `• ${I18n.t('High bathing load (sweat / organic matter consumes chlorine)')}\n` +
203
+ `• ${I18n.t('Unfavorable pH value (chlorine works less effectively)')}\n\n` +
204
+ `${I18n.t('Typical corrective direction:')}\n` +
205
+ `• ${I18n.t('Bring disinfection back into a normal range and check the pH in parallel.')}\n` +
206
+ `• ${I18n.t('If chlorine keeps dropping permanently, also check causes such as organic load, filter condition, and circulation.')}\n${
204
207
  commonFooter
205
208
  }`,
206
209
 
207
210
  chlor_high:
208
- `Problem: Chlorwert ist zu hoch.\n\n` +
209
- `Was das bedeutet:\n` +
210
- `Zu hoher Chlorwert kann Augen/Haut reizen, starken Geruch verursachen und Material/Abdeckungen stärker belasten. In diesem Zustand ist „mehr Chemie“ fast nie die richtige Richtung.\n\n` +
211
- `Häufige Ursachen:\n` +
212
- `• Zu viel nachdosiert / Schockbehandlung zu hoch\n` +
213
- `• Zu wenig Abbau (Abdeckung drauf + wenig Sonne)\n\n` +
214
- `Übliche Lösungsrichtung:\n` +
215
- `• Keine weitere Chlorzugabe.\n` +
216
- `• Zeit wirken lassen (Sonne/UV baut Chlor ab) und gut umwälzen.\n` +
217
- `• Erst wenn Chlor wieder im normalen Bereich ist, weitere Korrekturen (z. B. pH) sinnvoll bewerten.\n${
211
+ `${I18n.t('Problem: Chlorine level is too high.')}\n\n` +
212
+ `${I18n.t('What this means:')}\n` +
213
+ `${I18n.t('A chlorine level that is too high can irritate eyes and skin, cause strong odor, and put more stress on materials and covers. In this situation, adding even more chemicals is almost never the right direction.')}\n\n` +
214
+ `${I18n.t('Common causes:')}\n` +
215
+ `• ${I18n.t('Too much chlorine added / shock treatment too high')}\n` +
216
+ `• ${I18n.t('Too little natural breakdown (cover on + little sun)')}\n\n` +
217
+ `${I18n.t('Typical corrective direction:')}\n` +
218
+ `• ${I18n.t('Do not add more chlorine.')}\n` +
219
+ `• ${I18n.t('Let time do the work (sun / UV reduces chlorine) and keep the water circulating well.')}\n` +
220
+ `• ${I18n.t('Only evaluate further corrections (for example pH) once chlorine is back in a normal range.')}\n${
218
221
  commonFooter
219
222
  }`,
220
223
 
221
224
  chlor_no_effect:
222
- `Problem: „Chlor steigt trotz Zugabe nicht“.\n\n` +
223
- `Was das bedeutet:\n` +
224
- `Das passiert häufig, wenn das Wasser eine hohe „Chlornachfrage“ hat: Das zugegebene Chlor wird sofort verbraucht, bevor ein stabiler freier Chlorwert messbar bleibt.\n\n` +
225
- `Häufige Ursachen:\n` +
226
- `• Hohe organische Belastung (Schmutz, Biofilm, starke Nutzung)\n` +
227
- `• Beginnender/unsichtbarer Algenbefall\n` +
228
- `• Stark falscher pH-Wert (Wirkung eingeschränkt)\n\n` +
229
- `Übliche Lösungsrichtung:\n` +
230
- `• Erst Grundwerte prüfen (pH, Filter/Umwälzung, Sichtprüfung auf Beläge).\n` +
231
- `• Wasser „sauber bekommen“ (Filter reinigen/rückspülen, Becken bürsten), damit Chlor nicht nur „verbraucht“ wird.\n` +
232
- `• Wenn dauerhaft keine Wirkung messbar ist, liegt oft ein „oxidativer Bedarf“ vor (Chlor wird sofort gebunden/abgebaut) – dann hilft nur konsequent Ursachen reduzieren und danach erneut messen.\n${
225
+ `${I18n.t('Problem: Chlorine level does not rise despite dosing.')}\n\n` +
226
+ `${I18n.t('What this means:')}\n` +
227
+ `${I18n.t('This often happens when the water has a high chlorine demand: the added chlorine is consumed immediately before a stable free chlorine level can remain measurable.')}\n\n` +
228
+ `${I18n.t('Common causes:')}\n` +
229
+ `• ${I18n.t('High organic load (dirt, biofilm, heavy use)')}\n` +
230
+ `• ${I18n.t('Early / invisible algae growth')}\n` +
231
+ `• ${I18n.t('Strongly incorrect pH value (effectiveness reduced)')}\n\n` +
232
+ `${I18n.t('Typical corrective direction:')}\n` +
233
+ `• ${I18n.t('First check the basic values (pH, filter / circulation, visual inspection for deposits).')}\n` +
234
+ `• ${I18n.t('Get the water clean again (clean / backwash the filter, brush the pool), so chlorine is not only being consumed immediately.')}\n` +
235
+ `• ${I18n.t('If no effect can be measured permanently, there is often an oxidative demand present (chlorine is immediately bound / broken down) – then only consistent reduction of the causes and measuring again will help.')}\n${
233
236
  commonFooter
234
237
  }`,
235
238
 
236
239
  chlor_smell:
237
- `Problem: Starker „Chlorgeruch“ trotz Messwert.\n\n` +
238
- `Was das bedeutet:\n` +
239
- `Der typische „Hallenbad-Geruch“ kommt oft nicht von „zu viel gutem Chlor“, sondern von gebundenen Chlorverbindungen (Chloramine). Diese entstehen, wenn Chlor sich mit Stickstoff-/Organik aus Schweiß/Urinfrachten verbindet.\n\n` +
240
- `Häufige Ursachen:\n` +
241
- `• Hohe Badebelastung / organische Einträge\n` +
242
- `• Zu wenig Frischwasser/Abbau/Filterpflege\n` +
243
- `• Schlechte Lüftung (bei Indoor-Pools) verstärkt die Wahrnehmung\n\n` +
244
- `Übliche Lösungsrichtung:\n` +
245
- `• Ziel ist, gebundene Belastung zu reduzieren: gute Umwälzung/Filtration, Beckenreinigung, ggf. Frischwasseranteil.\n` +
246
- `• Parallel pH prüfen, weil falscher pH die Desinfektion zusätzlich verschlechtert.\n${commonFooter}`,
240
+ `${I18n.t('Problem: Strong chlorine smell despite the measured value.')}\n\n` +
241
+ `${I18n.t('What this means:')}\n` +
242
+ `${I18n.t('The typical indoor pool smell often does not come from too much good chlorine, but from bound chlorine compounds (chloramines). These are formed when chlorine combines with nitrogen / organic matter from sweat and similar contamination.')}\n\n` +
243
+ `${I18n.t('Common causes:')}\n` +
244
+ `• ${I18n.t('High bathing load / organic input')}\n` +
245
+ `• ${I18n.t('Too little fresh water / breakdown / filter care')}\n` +
246
+ `• ${I18n.t('Poor ventilation (for indoor pools) increases the perceived smell')}\n\n` +
247
+ `${I18n.t('Typical corrective direction:')}\n` +
248
+ `• ${I18n.t('The goal is to reduce bound contamination: good circulation / filtration, pool cleaning, and possibly a fresh water share.')}\n` +
249
+ `• ${I18n.t('Also check the pH in parallel, because an incorrect pH further reduces disinfection performance.')}\n${commonFooter}`,
247
250
 
248
251
  // ----------------------------------------------------------
249
252
  // Wasserbild / Optik
250
253
  // ----------------------------------------------------------
251
254
  water_green:
252
- `Problem: Wasser ist grün.\n\n` +
253
- `Was das bedeutet:\n` +
254
- `Grünes Wasser ist sehr häufig ein Hinweis auf Algenwachstum (oft ausgelöst durch zu wenig wirksames Chlor und/oder schlechte Umwälzung).\n\n` +
255
- `Häufige Ursachen:\n` +
256
- `• Freies Chlor zu niedrig oder „verbraucht“\n` +
257
- `• pH zu hochChlor wirkt deutlich schlechter\n` +
258
- `• Filter/Umwälzung unzureichend oder Filter verschmutzt\n` +
259
- `• Hohe Temperatur + Sonne (Algenwachstum wird begünstigt)\n\n` +
260
- `Übliche Lösungsrichtung:\n` +
261
- `• Wasserwerte prüfen (insb. pH und Chlor) und Umwälzung/Filterzustand verbessern.\n` +
262
- `• Becken gründlich bürsten/absaugen, damit Beläge nicht „überleben“.\n` +
263
- `• Danach geduldig filtern lassen, bis das Wasser wieder klar wird.\n${commonFooter}`,
255
+ `${I18n.t('Problem: Water is green.')}\n\n` +
256
+ `${I18n.t('What this means:')}\n` +
257
+ `${I18n.t('Green water is very often a sign of algae growth (often caused by too little effective chlorine and / or poor circulation).')}\n\n` +
258
+ `${I18n.t('Common causes:')}\n` +
259
+ `• ${I18n.t('Free chlorine too low or already consumed')}\n` +
260
+ `• ${I18n.t('pH too highchlorine works much less effectively')}\n` +
261
+ `• ${I18n.t('Insufficient filter / circulation or dirty filter')}\n` +
262
+ `• ${I18n.t('High temperature + sun (algae growth is encouraged)')}\n\n` +
263
+ `${I18n.t('Typical corrective direction:')}\n` +
264
+ `• ${I18n.t('Check the water values (especially pH and chlorine) and improve circulation / filter condition.')}\n` +
265
+ `• ${I18n.t('Brush / vacuum the pool thoroughly so deposits do not survive.')}\n` +
266
+ `• ${I18n.t('Then let the filter run patiently until the water becomes clear again.')}\n${commonFooter}`,
264
267
 
265
268
  water_cloudy:
266
- `Problem: Wasser ist trüb / grau / milchig.\n\n` +
267
- `Was das bedeutet:\n` +
268
- `Trübes Wasser entsteht oft durch feine Schwebstoffe oder chemische Ungleichgewichte (z. B. pH/Alkalinität/Kalk), die der Filter nicht gut „packt“.\n\n` +
269
- `Häufige Ursachen:\n` +
270
- `• Filter verschmutzt/zu kurze Filterlaufzeit\n` +
271
- `• pH/Alkalinität außerhalb des stabilen Bereichs\n` +
272
- `• Hohe Wasserhärte (Kalk) – besonders in Kombination mit hohem pH\n` +
273
- `• Zu wenig Desinfektionbiologische Trübung möglich\n\n` +
274
- `Übliche Lösungsrichtung:\n` +
275
- `• Filterzustand prüfen (Reinigung/Rückspülen) und ausreichend umwälzen.\n` +
276
- `• Grundwerte pH/Chlor prüfen und stabilisieren.\n` +
277
- `• Wenn die Trübung „mineralisch“ wirkt (milchig/weiß): Wasserhärte/Balance mit betrachten.\n${
269
+ `${I18n.t('Problem: Water is cloudy / gray / milky.')}\n\n` +
270
+ `${I18n.t('What this means:')}\n` +
271
+ `${I18n.t('Cloudy water is often caused by fine suspended particles or chemical imbalances (for example pH / alkalinity / lime) that the filter cannot handle well.')}\n\n` +
272
+ `${I18n.t('Common causes:')}\n` +
273
+ `• ${I18n.t('Dirty filter / filter runtime too short')}\n` +
274
+ `• ${I18n.t('pH / alkalinity outside the stable range')}\n` +
275
+ `• ${I18n.t('High water hardness (lime) – especially together with high pH')}\n` +
276
+ `• ${I18n.t('Too little disinfectionbiological cloudiness is possible')}\n\n` +
277
+ `${I18n.t('Typical corrective direction:')}\n` +
278
+ `• ${I18n.t('Check the filter condition (cleaning / backwashing) and ensure sufficient circulation.')}\n` +
279
+ `• ${I18n.t('Check the basic values pH / chlorine and stabilize them.')}\n` +
280
+ `• ${I18n.t('If the cloudiness looks mineral (milky / white), also consider water hardness / balance.')}\n${
278
281
  commonFooter
279
282
  }`,
280
283
 
281
284
  algae_visible:
282
- `Problem: Algen an Wänden oder Boden sichtbar.\n\n` +
283
- `Was das bedeutet:\n` +
284
- `Sichtbare Algen sind ein klares Zeichen, dass die Desinfektion/Umwälzung nicht ausreichend war oder lokal tote Zonen entstehen (Ecken/Leitungen).\n\n` +
285
- `Häufige Ursachen:\n` +
286
- `• Chlor zu niedrig oder „verbraucht“\n` +
287
- `• pH zu hoch (Chlor wirkt schlechter)\n` +
288
- `• Zu wenig Bürsten/Beckenpflege, schlechte Zirkulation\n\n` +
289
- `Übliche Lösungsrichtung:\n` +
290
- `• Mechanik zuerst: konsequent bürsten/absaugen, Filterpflege.\n` +
291
- `• Werte (pH/Chlor) danach stabilisieren und Umwälzung verbessern.\n` +
292
- `• Ziel ist, Algen nicht nur „chemisch“, sondern auch mechanisch zu entfernen.\n${commonFooter}`,
285
+ `${I18n.t('Problem: Algae visible on walls or floor.')}\n\n` +
286
+ `${I18n.t('What this means:')}\n` +
287
+ `${I18n.t('Visible algae are a clear sign that disinfection / circulation was not sufficient or that local dead zones are forming (corners / pipes).')}\n\n` +
288
+ `${I18n.t('Common causes:')}\n` +
289
+ `• ${I18n.t('Chlorine too low or already consumed')}\n` +
290
+ `• ${I18n.t('pH too high (chlorine works less effectively)')}\n` +
291
+ `• ${I18n.t('Too little brushing / pool care, poor circulation')}\n\n` +
292
+ `${I18n.t('Typical corrective direction:')}\n` +
293
+ `• ${I18n.t('Mechanics first: brush / vacuum consistently, maintain the filter.')}\n` +
294
+ `• ${I18n.t('Then stabilize the values (pH / chlorine) and improve circulation.')}\n` +
295
+ `• ${I18n.t('The goal is to remove algae not only chemically, but also mechanically.')}\n${commonFooter}`,
293
296
 
294
297
  foam_on_surface:
295
- `Problem: Schaumbildung auf der Wasseroberfläche.\n\n` +
296
- `Was das bedeutet:\n` +
297
- `Schaum entsteht oft durch Tenside/Organik (Sonnencreme, Körperpflege, Reinigungsreste), manche Algenmittel/Polymere oder auch Luft im System. Es ist meist kein „Chlor-Problem“, sondern ein „Stoffe-im-Wasser“-Problem.\n\n` +
298
- `Häufige Ursachen:\n` +
299
- `• Viele Lotionen/Öle im Wasser, hohe organische Belastung\n` +
300
- `• Bestimmte algenhemmende Mittel können Schaum begünstigen\n` +
301
- `• Luft zieht ins System (kleine Undichtigkeiten) → Schaum wirkt stärker\n\n` +
302
- `Übliche Lösungsrichtung:\n` +
303
- `• Oberfläche abschöpfen, Filter sauber halten, organische Einträge reduzieren.\n` +
304
- `• pH/Chlor im Blick behalten (stabile Werte helfen, Organik schneller abzubauen).\n` +
305
- `• Wenn Schaum dauerhaft bleibt: Quelle (Produkte/Einträge/Technik) systematisch eingrenzen.\n${
298
+ `${I18n.t('Problem: Foam on the water surface.')}\n\n` +
299
+ `${I18n.t('What this means:')}\n` +
300
+ `${I18n.t('Foam is often caused by surfactants / organic matter (sunscreen, body care products, cleaning residues), some algaecides / polymers, or also air in the system. It is usually not a chlorine problem, but rather a substances-in-the-water problem.')}\n\n` +
301
+ `${I18n.t('Common causes:')}\n` +
302
+ `• ${I18n.t('A lot of lotions / oils in the water, high organic load')}\n` +
303
+ `• ${I18n.t('Certain anti-algae products can promote foam')}\n` +
304
+ `• ${I18n.t('Air entering the system (small leaks) → foam appears stronger')}\n\n` +
305
+ `${I18n.t('Typical corrective direction:')}\n` +
306
+ `• ${I18n.t('Skim off the surface, keep the filter clean, and reduce organic input.')}\n` +
307
+ `• ${I18n.t('Keep an eye on pH / chlorine as well (stable values help break down organic matter faster).')}\n` +
308
+ `• ${I18n.t('If foam remains permanently, systematically narrow down the source (products / contamination / technology).')}\n${
306
309
  commonFooter
307
310
  }`,
308
311
 
@@ -310,40 +313,40 @@ const aiChemistryHelpHelper = {
310
313
  // Badegefühl / Stabilität
311
314
  // ----------------------------------------------------------
312
315
  skin_eye_irritation:
313
- `Problem: Haut- oder Augenreizungen beim Baden.\n\n` +
314
- `Was das bedeutet:\n` +
315
- `Reizungen können verschiedene Ursachen haben: zu hoher oder sehr niedriger pH, zu hohe Desinfektionskonzentration, oder gebundene Chlorverbindungen (Chloramine) bei organischer Belastung.\n\n` +
316
- `Häufige Ursachen:\n` +
317
- `• pH außerhalb des Wohlfühlbereichs\n` +
318
- `• Chlor deutlich zu hoch\n` +
319
- `• „Chlorgeruch“/Chloramine durch starke organische Einträge\n\n` +
320
- `Übliche Lösungsrichtung:\n` +
321
- `• Zuerst messen (pH & Chlor) und Werte wieder in einen normalen Bereich bringen.\n` +
322
- `• Becken/Filter sauber halten, damit organische Belastung nicht in „gebundene“ Formen kippt.\n` +
323
- `• Bei starken Beschwerden: Baden pausieren, bis Wasserwerte stabil sind.\n${commonFooter}`,
316
+ `${I18n.t('Problem: Skin or eye irritation while swimming.')}\n\n` +
317
+ `${I18n.t('What this means:')}\n` +
318
+ `${I18n.t('Irritation can have several causes: pH that is too high or very low, too high a disinfectant concentration, or bound chlorine compounds (chloramines) caused by organic contamination.')}\n\n` +
319
+ `${I18n.t('Common causes:')}\n` +
320
+ `• ${I18n.t('pH outside the comfortable range')}\n` +
321
+ `• ${I18n.t('Chlorine clearly too high')}\n` +
322
+ `• ${I18n.t('Chlorine smell / chloramines caused by strong organic input')}\n\n` +
323
+ `${I18n.t('Typical corrective direction:')}\n` +
324
+ `• ${I18n.t('Measure first (pH and chlorine) and bring the values back into a normal range.')}\n` +
325
+ `• ${I18n.t('Keep the pool / filter clean so that organic contamination does not turn into bound compounds.')}\n` +
326
+ `• ${I18n.t('If irritation is strong, pause swimming until the water values are stable.')}\n${commonFooter}`,
324
327
 
325
328
  values_unstable:
326
- `Problem: Wasserwerte sind häufig instabil (kippen schnell).\n\n` +
327
- `Was das bedeutet:\n` +
328
- `Wenn pH/Chlor ständig stark schwanken, fehlt oft „Stabilität“ im Wasser: Puffer (Alkalinität) zu niedrig/zu hoch, wechselnde Belastung, oder die Umwälzung/Filtration ist nicht konstant genug.\n\n` +
329
- `Häufige Ursachen:\n` +
330
- `• Totalalkalinität zu niedrig → pH springt/kippt schnell\n` +
331
- `• Viele kleine Korrekturen ohne ausreichende Umwälzzeit\n` +
332
- `• Filterzustand schlecht / zu kurze Filterzeiten\n` +
333
- `• Starke externe Einflüsse (Regen, Hitze, hohe Nutzung)\n\n` +
334
- `Übliche Lösungsrichtung:\n` +
335
- `• Einmal „Basis“ stabil bekommen (Puffer/Filter/Regelmäßigkeit), dann erst fein korrigieren.\n` +
336
- `• Korrigieren immer in kleinen Schritten und mit Zeit zum Durchmischen.\n${commonFooter}`,
329
+ `${I18n.t('Problem: Water values are often unstable (change quickly).')}\n\n` +
330
+ `${I18n.t('What this means:')}\n` +
331
+ `${I18n.t('If pH / chlorine fluctuate strongly all the time, the water often lacks stability: the buffer (alkalinity) is too low / too high, the load changes frequently, or circulation / filtration is not constant enough.')}\n\n` +
332
+ `${I18n.t('Common causes:')}\n` +
333
+ `• ${I18n.t('Total alkalinity too low → pH jumps / tips over quickly')}\n` +
334
+ `• ${I18n.t('Many small corrections without enough circulation time')}\n` +
335
+ `• ${I18n.t('Poor filter condition / filter times too short')}\n` +
336
+ `• ${I18n.t('Strong external influences (rain, heat, heavy use)')}\n\n` +
337
+ `${I18n.t('Typical corrective direction:')}\n` +
338
+ `• ${I18n.t('First get the basics stable (buffer / filter / regularity), then only fine-tune.')}\n` +
339
+ `• ${I18n.t('Always correct in small steps and allow enough time for mixing.')}\n${commonFooter}`,
337
340
 
338
341
  unknown_problem:
339
- `Problem: Unklar, was genau los ist.\n\n` +
340
- `Vorgehen (minimal & sinnvoll):\n` +
341
- `1) Sichtcheck: Grün? Trüb? Beläge? Schaum?\n` +
342
- `2) Zwei Messwerte reichen für den Start: pH + freies Chlor.\n` +
343
- `3) Technik prüfen: Läuft die Umwälzung? Filter sauber? Rückspülen nötig?\n\n` +
344
- `Typische Faustregel:\n` +
345
- `• Optik-Probleme (grün/trüb) sind sehr oft eine Kombination aus Desinfektion + pH + Filterung.\n` +
346
- `• „Geruch/Reizung“ ist oft nicht „zu viel Chlor“, sondern „falsch gebunden/organisch belastet“.\n${
342
+ `${I18n.t('Problem: It is unclear what exactly is wrong.')}\n\n` +
343
+ `${I18n.t('Procedure (minimal and sensible):')}\n` +
344
+ `1) ${I18n.t('Visual check: Green? Cloudy? Deposits? Foam?')}\n` +
345
+ `2) ${I18n.t('Two measured values are enough for the start: pH + free chlorine.')}\n` +
346
+ `3) ${I18n.t('Check the technology: Is circulation running? Is the filter clean? Is backwashing needed?')}\n\n` +
347
+ `${I18n.t('Typical rule of thumb:')}\n` +
348
+ `• ${I18n.t('Visual problems (green / cloudy) are very often a combination of disinfection + pH + filtration.')}\n` +
349
+ `• ${I18n.t('Odor / irritation is often not too much chlorine, but incorrectly bound / organically loaded water.')}\n${
347
350
  commonFooter
348
351
  }`,
349
352
  };
@@ -354,8 +357,8 @@ const aiChemistryHelpHelper = {
354
357
 
355
358
  // Fallback
356
359
  return (
357
- `Hinweis: Dieses Problem ist (noch) nicht bekannt.\n\n` +
358
- `Bitte wähle einen der vorhandenen Punkte aus oder nutze „Problem unklar / nicht eindeutig“.\n${
360
+ `${I18n.t('Note: This problem is not known yet.')}\n\n` +
361
+ `${I18n.t('Please select one of the existing items or use "Issue unclear / not specific".')}\n${
359
362
  commonFooter
360
363
  }`
361
364
  );
@@ -0,0 +1,69 @@
1
+ {
2
+ "No issue selected": "Kein Problem ausgewählt",
3
+ "pH is too low": "pH-Wert zu niedrig",
4
+ "pH is too high": "pH-Wert zu hoch",
5
+ "Chlorine is too low": "Chlorwert zu niedrig",
6
+ "Chlorine is too high": "Chlorwert zu hoch",
7
+ "Chlorine does not rise despite dosing": "Chlorwert steigt trotz Dosierung nicht",
8
+ "Strong chlorine smell despite reading": "Starker Chlorgeruch trotz Messwert",
9
+ "Water is green": "Wasser ist grün",
10
+ "Water is cloudy / gray / milky": "Wasser ist trüb / grau / milchig",
11
+ "Algae visible on walls or floor": "Algen sichtbar an Wänden oder Boden",
12
+ "Foam on the water surface": "Schaum auf der Wasseroberfläche",
13
+ "Skin or eye irritation when swimming": "Haut- oder Augenreizungen beim Schwimmen",
14
+ "Water values are often unstable": "Wasserwerte sind häufig instabil",
15
+ "Issue unclear / not specific": "Problem unklar / nicht eindeutig",
16
+
17
+ "Important:": "Wichtig:",
18
+ "Always proceed step by step: measure first → correct in small steps → let the water circulate → measure again.": "Immer schrittweise vorgehen: erst messen → klein korrigieren → umwälzen lassen → erneut messen.",
19
+ "Always follow the product instructions (concentration and pool volume may differ).": "Immer die Angaben auf dem Produkt beachten (Konzentration und Beckenvolumen können abweichen).",
20
+ "If you are unsure, correct more slowly rather than forcing it.": "Wenn du unsicher bist: lieber langsamer korrigieren als mit Gewalt.",
21
+
22
+ "Problem: pH value is too low (water is too acidic).": "Problem: pH-Wert ist zu niedrig (Wasser ist zu sauer).",
23
+ "What this means:": "Was das bedeutet:",
24
+ "A pH value that is too low can attack materials (metals / built-in parts) more strongly and can increase irritation during bathing. It can also make the overall water balance unstable.": "Ein zu niedriger pH-Wert kann Materialien (Metalle / Einbauteile) stärker angreifen und Reizungen beim Baden begünstigen. Außerdem kann die Wasserbalance instabil werden.",
25
+ "Common causes:": "Häufige Ursachen:",
26
+ "A lot of rainwater / fresh water (can acidify the water)": "Viel Regen- oder Frischwasser (kann das Wasser ansäuern)",
27
+ "Low alkalinity (buffer missing → pH drops faster)": "Niedrige Alkalinität (Puffer fehlt → pH fällt schneller)",
28
+ "Frequent corrections / backwashing / water changes": "Häufige Korrekturen / Rückspülen / Wasserwechsel",
29
+ "Typical corrective direction:": "Übliche Lösungsrichtung:",
30
+ "Raise the pH gradually with a pH increaser / pH plus product.": "pH-Wert schrittweise mit pH-Plus anheben.",
31
+ "If the pH keeps dropping again, also check total alkalinity / the buffer, otherwise every pH correction will only hold for a short time.": "Wenn der pH-Wert immer wieder fällt, auch die Alkalinität prüfen, sonst hält die Korrektur nicht lange.",
32
+
33
+ "Problem: pH value is too high (water is too alkaline).": "Problem: pH-Wert ist zu hoch (Wasser ist zu basisch).",
34
+ "If the pH value is too high, chlorine / disinfection often works less effectively and cloudiness / precipitation (for example lime) can occur more easily. Eyes and skin may also become irritated.": "Bei zu hohem pH-Wert wirkt Chlor schlechter und es kann zu Trübungen oder Ausfällungen (z. B. Kalk) kommen. Auch Augen und Haut können gereizt werden.",
35
+ "Strong outgassing / a lot of bubbling (CO₂ escapes → pH rises)": "Starkes Ausgasen / viel Sprudel (CO₂ entweicht → pH steigt)",
36
+ "Hard water / high alkalinity": "Hartes Wasser / hohe Alkalinität",
37
+ "Some pools / materials can initially push the pH upward": "Einige Becken oder Materialien können den pH-Wert anfangs erhöhen",
38
+ "Lower the pH in small steps with a pH reducer / pH minus product.": "pH-Wert in kleinen Schritten mit pH-Minus senken.",
39
+ "If the pH repeatedly rises again, also consider alkalinity / water hardness, because this strongly affects stability.": "Wenn der pH-Wert immer wieder steigt, auch Alkalinität und Wasserhärte prüfen.",
40
+
41
+ "Problem: Chlorine level is too low.": "Problem: Chlorwert ist zu niedrig.",
42
+ "Too little effective chlorine can allow germs and algae to multiply more easily. Often the first signs are tired-looking water: less clarity, more odor, and deposits forming faster.": "Zu wenig wirksames Chlor lässt Keime und Algen leichter wachsen. Erste Anzeichen sind oft trübes Wasser, Geruch und schnellerer Belag.",
43
+ "A lot of sun / UV exposure (chlorine breaks down faster)": "Viel Sonne / UV (Chlor baut sich schneller ab)",
44
+ "High bathing load (sweat / organic matter consumes chlorine)": "Hohe Badebelastung (Schweiß / organische Stoffe verbrauchen Chlor)",
45
+ "Unfavorable pH value (chlorine works less effectively)": "Ungünstiger pH-Wert (Chlor wirkt schlechter)",
46
+ "Bring disinfection back into a normal range and check the pH in parallel.": "Desinfektion wieder in den Normalbereich bringen und pH prüfen.",
47
+ "If chlorine keeps dropping permanently, also check causes such as organic load, filter condition, and circulation.": "Wenn Chlor dauerhaft sinkt, Ursachen wie Belastung, Filterzustand und Umwälzung prüfen.",
48
+
49
+ "Problem: Chlorine level is too high.": "Problem: Chlorwert ist zu hoch.",
50
+ "A chlorine level that is too high can irritate eyes and skin, cause strong odor, and put more stress on materials and covers. In this situation, adding even more chemicals is almost never the right direction.": "Zu viel Chlor kann Augen und Haut reizen, starken Geruch verursachen und Materialien belasten. Mehr Chemie ist hier fast nie sinnvoll.",
51
+ "Too much chlorine added / shock treatment too high": "Zu viel Chlor zugegeben / Schockbehandlung zu hoch",
52
+ "Too little natural breakdown (cover on + little sun)": "Zu wenig Abbau (Abdeckung drauf + wenig Sonne)",
53
+ "Do not add more chlorine.": "Kein weiteres Chlor zugeben.",
54
+ "Let time do the work (sun / UV reduces chlorine) and keep the water circulating well.": "Zeit wirken lassen (Sonne / UV baut Chlor ab) und gut umwälzen.",
55
+ "Only evaluate further corrections (for example pH) once chlorine is back in a normal range.": "Weitere Korrekturen erst vornehmen, wenn Chlor wieder im Normalbereich ist.",
56
+
57
+ "Problem: Water is green.": "Problem: Wasser ist grün.",
58
+ "Green water is very often a sign of algae growth (often caused by too little effective chlorine and / or poor circulation).": "Grünes Wasser ist meist ein Zeichen für Algenwachstum (oft durch zu wenig Chlor oder schlechte Umwälzung).",
59
+ "Free chlorine too low or already consumed": "Freies Chlor zu niedrig oder bereits verbraucht",
60
+ "pH too high → chlorine works much less effectively": "pH zu hoch → Chlor wirkt schlechter",
61
+ "Insufficient filter / circulation or dirty filter": "Zu wenig Umwälzung oder verschmutzter Filter",
62
+ "High temperature + sun (algae growth is encouraged)": "Hohe Temperatur + Sonne fördern Algenwachstum",
63
+ "Check the water values (especially pH and chlorine) and improve circulation / filter condition.": "Wasserwerte prüfen (pH und Chlor) und Umwälzung / Filter verbessern.",
64
+ "Brush / vacuum the pool thoroughly so deposits do not survive.": "Becken gründlich bürsten / absaugen.",
65
+ "Then let the filter run patiently until the water becomes clear again.": "Dann geduldig filtern lassen, bis das Wasser wieder klar ist.",
66
+
67
+ "Note: This problem is not known yet.": "Hinweis: Dieses Problem ist noch nicht bekannt.",
68
+ "Please select one of the existing items or use \"Issue unclear / not specific\".": "Bitte einen vorhandenen Punkt auswählen oder \"Problem unklar\" nutzen."
69
+ }