iobroker.assistant 1.0.1 → 1.0.2

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.
Files changed (42) hide show
  1. package/README.md +4 -0
  2. package/admin/custom/.vite/manifest.json +18 -18
  3. package/admin/custom/assets/Components-7BDDNrGP.js +1 -0
  4. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-DcAGnE2z.js +1 -0
  5. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-rncPQw0c.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-CMv8bcyA.js} +1 -1
  6. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare__shared-CY-9JaDr.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare__shared-3mzaJWDF.js} +1 -1
  7. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-O-DuGvHy.js → _virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-DS8oaQQt.js} +3 -3
  8. package/admin/custom/assets/{hostInit-YwaHm9Ht.js → hostInit-MshDicd1.js} +1 -1
  9. package/admin/custom/assets/{lib-mwVfdt2u.js → lib-DjwHKtRi.js} +1 -1
  10. package/admin/custom/assets/{mf-entry-bootstrap-0-0e37a5a4.js → mf-entry-bootstrap-0-7c1ddf47.js} +2 -2
  11. package/admin/custom/assets/{pendingShares-Bs_RxVcM.js → pendingShares-CaJDCKLB.js} +1 -1
  12. package/admin/custom/customComponents.js +2 -2
  13. package/admin/custom/i18n/es.json +1 -1
  14. package/admin/custom/i18n/fr.json +1 -1
  15. package/admin/custom/i18n/it.json +1 -1
  16. package/admin/custom/i18n/nl.json +1 -1
  17. package/admin/custom/i18n/pl.json +1 -1
  18. package/admin/custom/i18n/pt.json +1 -1
  19. package/admin/custom/i18n/ru.json +1 -1
  20. package/admin/custom/i18n/uk.json +1 -1
  21. package/admin/custom/i18n/zh-cn.json +1 -1
  22. package/admin/custom/index.html +2 -2
  23. package/admin/custom/mf-manifest.json +1 -1
  24. package/admin/custom/mf-stats.json +1 -1
  25. package/admin/i18n/de.json +3 -2
  26. package/admin/i18n/en.json +3 -2
  27. package/admin/i18n/es.json +42 -2
  28. package/admin/i18n/fr.json +42 -2
  29. package/admin/i18n/it.json +42 -2
  30. package/admin/i18n/nl.json +42 -2
  31. package/admin/i18n/pl.json +42 -2
  32. package/admin/i18n/pt.json +42 -2
  33. package/admin/i18n/ru.json +42 -2
  34. package/admin/i18n/uk.json +42 -2
  35. package/admin/i18n/zh-cn.json +42 -2
  36. package/admin/jsonConfig.json +371 -83
  37. package/build/main.js +25 -0
  38. package/build/main.js.map +1 -1
  39. package/io-package.json +26 -26
  40. package/package.json +5 -5
  41. package/admin/custom/assets/Components-B9RaGibX.js +0 -1
  42. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-CyY-cfOD.js +0 -1
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "A fired timer/alarm keeps ringing (looping the sound) for up to this long, or until you say 'stop'/'halt'/'aufhören'/'cancel' (or write the stopRinging state). 0 = play the sound once.": "Сработавший таймер/сигнал тревоги продолжает звучать (звук зацикливается) до указанного времени или до тех пор, пока вы не произнесете «стоп»/«остановка»/«отмена» (или не запишете состояние stopRinging). 0 = воспроизведение звука один раз.",
3
+ "A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.": "Фраза, запускающая список действий: \"Gute Nacht\" выключает пять устройств и отвечает один раз. Фразы: несколько через запятую (распознаются в любом месте предложения, регистр и умлауты не важны). Действия в формате JSON, как у триггера: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Ответ: что говорит ассистент (оставьте пустым, чтобы промолчать). Проверяется до офлайн-движка правил и до LLM, поэтому рутина никогда не будет истолкована иначе.",
4
+ "A successful switch command is confirmed by a short tone on the satellite instead of a spoken sentence - instant, where speaking costs a text-to-speech call. Questions, errors and the text channels are unaffected.": "Успешная команда переключения подтверждается коротким сигналом на сателлите вместо произнесённой фразы — мгновенно, тогда как речь требует вызова синтеза речи. Вопросы, ошибки и текстовые каналы это не затрагивает.",
5
+ "A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.": "Триггер следит за состояниями или временем, а затем говорит, записывает состояние или задаёт вам вопрос и действует по вашему ответу. Отдельные триггеры можно отключить во время работы через triggers.items.<id>.enabled, проверить кнопкой fire, а все сразу — через triggers.enabled.",
3
6
  "API key": "ключ API",
4
7
  "API password (usually empty)": "Пароль API (обычно пусто)",
5
8
  "API-key credential": "учетные данные API-ключа",
@@ -12,7 +15,9 @@
12
15
  "AWS secret access key": "Секретный ключ доступа AWS",
13
16
  "AWS speech": "выступление AWS",
14
17
  "Access / permissions": "Доступ / права доступа",
18
+ "Actions (JSON)": "Действия (JSON)",
15
19
  "Address (IP or host name)": "Адрес (IP или имя хоста)",
20
+ "After a switch command, wait up to 2 seconds for the device to acknowledge the new value (ack:true) and report \"did not respond\" if it never does. Leave this off for devices that never acknowledge (MQTT, scripts, 0_userdata) - every command would look failed.": "После команды переключения ждать до 2 секунд, пока устройство подтвердит новое значение (ack:true), и сообщать «не отвечает», если подтверждения нет. Не включайте для устройств, которые никогда не подтверждают (MQTT, скрипты, 0_userdata) — иначе каждая команда будет выглядеть неудачной.",
16
21
  "Alarm sound (mp3/wav, optional)": "Звуковой сигнал будильника (mp3/wav, по желанию)",
17
22
  "Allow changing objects and files (dangerous)": "Разрешить изменение объектов и файлов (опасно)",
18
23
  "Allow controlling states": "Разрешить управляющие состояния",
@@ -26,23 +31,30 @@
26
31
  "Also drive ESPHome voice satellites": "Также управлять голосовыми сателлитами ESPHome",
27
32
  "Announce when a timer expires": "Объявить об истечении времени таймера",
28
33
  "Announce when an alarm goes off": "Сообщать о срабатывании сигнализации",
34
+ "Announcement targets (groups and people)": "Цели объявлений (группы и люди)",
29
35
  "Answer simple commands locally (fast, offline)": "Отвечайте на простые команды локально (быстро, в автономном режиме).",
30
36
  "Anthropic (Claude)": "Антропический (Клод)",
31
37
  "Any object (get_object/search_objects)": "Любой объект (get_object/search_objects)",
38
+ "Ask": "Вопрос",
32
39
  "Azure Speech": "Azure Speech",
33
40
  "Azure credential": "учетные данные Azure",
34
41
  "Azure region": "регион Азур",
35
42
  "Azure subscription key": "ключ подписки Azure",
36
43
  "Azure voice (optional)": "Azure Voice (необязательно)",
37
44
  "Base URL (optional)": "Базовый URL (необязательно)",
45
+ "Before a trigger speaks, the model rewords its text so repeated announcements do not sound canned. Costs one small LLM call per announcement; the original text is used if it fails.": "Перед тем как триггер заговорит, модель перефразирует его текст, чтобы повторяющиеся объявления не звучали шаблонно. Стоит одного небольшого вызова LLM на объявление; при ошибке используется исходный текст.",
38
46
  "Bind address": "Адрес привязки",
39
47
  "Canonical term": "Канонический термин",
40
48
  "Central credential store": "Центральное хранилище удостоверений",
49
+ "Condition as JSON: {\"state\":\"javascript.0.window\",\"value\":true} or {\"time\":\"23:00\",\"days\":[1,2,3,4,5]}; add \"also\"/\"unless\" for extra or blocking conditions, or use a list for alternatives. Say = announcement, Ask = question (needs response rules, JSON: [{\"match\":\"agreement\",\"say\":\"Okay\",\"setState\":{\"id\":\"...\",\"value\":false}}]). Extra actions as JSON: [{\"setState\":{\"id\":\"...\",\"value\":false}}]. Delay waits before acting (90s/30m/5h), cooldown is the minimum gap between two firings in seconds (default 3600).": "Условие в JSON: {\"state\":\"javascript.0.window\",\"value\":true} или {\"time\":\"23:00\",\"days\":[1,2,3,4,5]}; добавьте \"also\"/\"unless\" для дополнительных или блокирующих условий либо используйте список для альтернатив. Say = объявление, Ask = вопрос (нужны правила ответа, JSON: [{\"match\":\"agreement\",\"say\":\"Okay\",\"setState\":{\"id\":\"...\",\"value\":false}}]). Дополнительные действия в JSON: [{\"setState\":{\"id\":\"...\",\"value\":false}}]. Задержка — ожидание перед выполнением (90s/30m/5h), пауза повтора — минимальный интервал между двумя срабатываниями в секундах (по умолчанию 3600).",
50
+ "Confirm switch commands with a beep": "Подтверждать команды переключения сигналом",
51
+ "Cooldown (s)": "Пауза повтора (с)",
41
52
  "Credential mode": "Режим учетных данных",
42
53
  "DeepSeek": "DeepSeek",
54
+ "Delay": "Задержка",
43
55
  "Devices": "Устройства",
44
56
  "Direct URL of a GGUF model. Leave empty for the default (Qwen2.5-1.5B-Instruct). Small models recommended on Raspberry Pi / arm64.": "Прямая ссылка на модель GGUF. Оставьте поле пустым для значения по умолчанию (Qwen2.5-1.5B-Instruct). Для небольших моделей рекомендуется использовать Raspberry Pi / arm64.",
45
- "Downloads the engine and model (several hundred MB). Watch the instance log for progress.": "Загружаются движок и модель (несколько сотен МБ). Следите за журналом выполнения, чтобы отслеживать ход загрузки.",
57
+ "Downloads the engine and model (several hundred MB). Progress is shown below.": "Загружает движок и модель (несколько сотен МБ). Ход загрузки отображается ниже.",
46
58
  "ESPHome satellites": "Сателлиты ESPHome",
47
59
  "ESPHome satellites do not get the reply over their API socket — they fetch it as a URL. This is the port that small HTTP server listens on.": "Сателлиты ESPHome получают ответ не через свой сокет API — они забирают его по URL. Это порт, на котором слушает этот небольшой HTTP-сервер.",
48
60
  "Empty = tts-1. Also: tts-1-hd, gpt-4o-mini-tts.": "Пусто = tts-1. Также: tts-1-hd, gpt-4o-mini-tts.",
@@ -51,18 +63,25 @@
51
63
  "Enable voice server (satellites)": "Включить голосовой сервер (спутники)",
52
64
  "Enables speech recognition/synthesis. ioBroker-native satellites reach it over the message bus — no port needed. Turn on the UDP server below only for ESP / Hannah satellites.": "Включает распознавание/синтез речи. Спутники, использующие ioBroker, получают к нему доступ через шину сообщений — порт не требуется. Включите UDP-сервер, указанный ниже, только для спутников ESP/Hannah.",
53
65
  "End of speech after (ms of silence)": "Конец речи после (мс тишины)",
66
+ "Extra actions (JSON)": "Дополнительные действия (JSON)",
67
+ "Give a set of satellites a name, so an announcement, a question or a trigger can address it: a group of rooms (\"Upstairs\") or the speakers that belong to one person (\"Denis\", so \"tell Denis dinner is ready\" reaches them). Members: satellite ids, room names or device names, separated by commas. Kind: empty or group, or person. A real satellite or room of the same name always wins, so a group can never make a speaker unreachable.": "Дайте набору сателлитов имя, чтобы к нему могли обращаться объявление, вопрос или триггер: группа комнат («Наверху») или динамики, принадлежащие одному человеку («Denis», чтобы «скажи Denis, что ужин готов» дошло до них). Участники: id сателлитов, названия комнат или устройств через запятую. Тип: пусто или group, либо person. Настоящий сателлит или комната с тем же именем всегда имеет приоритет, поэтому группа никогда не сделает динамик недоступным.",
54
68
  "Google Gemini": "Google Gemini",
55
69
  "Home Assistant Voice PE / wyoming-satellite / ESPHome voice devices can stream to this adapter over the Wyoming protocol.": "Устройства голосового управления Home Assistant Voice PE / wyoming-satellite / ESPHome могут передавать данные на этот адаптер по протоколу Wyoming.",
70
+ "Home value (empty = auto)": "Значение «дома» (пусто = авто)",
56
71
  "Host the satellites should fetch the audio from. Empty = use the address of each device connection automatically; set it only if the devices reach this machine under a different address (NAT, Docker, VLAN).": "Хост, с которого сателлиты должны забирать звук. Пусто = автоматически адрес соответствующего соединения с устройством; задавайте только если устройства достигают этой машины по другому адресу (NAT, Docker, VLAN).",
72
+ "Id": "ID",
57
73
  "If off, the assistant can only read states, not set_state.": "Если функция отключена, помощник может только считывать состояния, а не устанавливать состояние.",
58
74
  "Install local model": "Установите локальную модель",
59
75
  "Interface the UDP voice server listens on. 0.0.0.0 = all interfaces; pick a specific host IP so satellites on the LAN can reach it.": "Интерфейс, на котором работает UDP-сервер голосовой связи. 0.0.0.0 = все интерфейсы; выберите конкретный IP-адрес хоста, чтобы сателлиты в локальной сети могли с ним связаться.",
60
76
  "Interface the voice server listens on. 0.0.0.0 = all interfaces; pick a specific host IP so satellites on the LAN can reach it.": "Интерфейс, на котором работает голосовой сервер. 0.0.0.0 = все интерфейсы; выберите конкретный IP-адрес хоста, чтобы сателлиты в локальной сети могли с ним связаться.",
61
77
  "Keep the last few turns per source (chat, telegram, satellite) for a few minutes so follow-ups like 'and the kitchen too' work. In-memory only.": "Сохраняйте последние несколько ходов из каждого источника (чат, телеграмма, спутник) в течение нескольких минут, чтобы сработали последующие запросы типа «и на кухню тоже». Только в оперативной памяти.",
78
+ "Kind (group/person)": "Тип (group/person)",
79
+ "Kind (person/guest/pet)": "Тип (person/guest/pet)",
62
80
  "LLM assistant": "ассистент магистра права",
63
81
  "Language (empty = all)": "Язык (пусто = все)",
64
82
  "Language for speech recognition and the spoken reply.": "Язык для распознавания речи и устного ответа.",
65
83
  "Leave empty to reuse the main API key when the LLM provider is OpenAI; required otherwise.": "Оставьте поле пустым, чтобы повторно использовать основной ключ API, если поставщиком LLM является OpenAI; в противном случае он обязателен.",
84
+ "Let the LLM reword trigger texts": "Перефразировать тексты триггеров с помощью LLM",
66
85
  "Lets the assistant durably remember facts you tell it (names, preferences, where things are) and use them in later conversations. Stored in the memory.* states; the LLM gets remember/forget tools.": "Позволяет помощнику надолго запоминать сообщенные вами факты (имена, предпочтения, местоположение) и использовать их в последующих разговорах. Хранится в памяти.* Состояния; LLM получает инструменты запоминания/забывания.",
67
86
  "Loaded from Azure (instance must run); empty = pick by language. e.g. de-DE-KatjaNeural.": "Загружается из Azure (экземпляр должен быть запущен); пусто = выбор языка. Например, de-DE-KatjaNeural.",
68
87
  "Loaded from Polly (instance must run); empty = default per language. e.g. Vicki, Tatyana.": "Загружается из Polly (экземпляр должен быть запущен); пустое значение = значение по умолчанию для каждого языка. Например, Вики, Татьяна.",
@@ -77,6 +96,7 @@
77
96
  "Model": "Модель",
78
97
  "Model name from alphacephei.com/vosk/models, e.g. vosk-model-small-de-0.15. Empty = small default per language.": "Название модели взято с сайта alphacephei.com/vosk/models, например, vosk-model-small-de-0.15. Пустое поле означает, что значение по умолчанию для каждого языка будет небольшим.",
79
98
  "No sound": "Нет звука",
99
+ "None": "Нет",
80
100
  "Object read access": "доступ на чтение объекта",
81
101
  "One row per device. Port empty = 6053. The room is what the assistant treats the satellite as being in. Leave the password empty unless the device really has an API password set — table values are stored unencrypted.": "Одна строка на устройство. Пустой порт = 6053. Комната — та, в которой ассистент считает сателлит находящимся. Пароль заполняйте, только если на устройстве действительно задан пароль API — значения таблицы хранятся без шифрования.",
82
102
  "Only devices, rooms, functions": "Только устройства, помещения, функции",
@@ -90,27 +110,39 @@
90
110
  "OpenAI-compatible (custom)": "Совместимость с OpenAI (пользовательская настройка)",
91
111
  "Opens a UDP port for streaming microphone satellites (Hannah-compatible / ESP). Not needed for ioBroker-native satellites.": "Открывает UDP-порт для потоковой передачи данных с микрофонных спутников (совместимых с Hannah / ESP). Не требуется для спутников, изначально предназначенных для ioBroker.",
92
112
  "Override the endpoint, e.g. https://api.groq.com/openai/v1 for Groq. Leave empty for the provider default.": "Укажите конечную точку, например, https://api.groq.com/openai/v1 для Groq. Оставьте поле пустым для значения по умолчанию для поставщика.",
113
+ "Phrases (comma separated)": "Фразы (через запятую)",
93
114
  "Pick an installed weather adapter to answer weather questions from (Open-Meteo, Weather Underground, OpenWeatherMap are fully understood; others are read best-effort). Start that adapter once so its data/locations appear here.": "Выберите установленный погодный адаптер, чтобы получать ответы на вопросы о погоде (Open-Meteo, Weather Underground, OpenWeatherMap распознаются полностью; для остальных используется режим \"прочитано по мере возможности\"). Запустите этот адаптер один раз, чтобы его данные/местоположение отображались здесь.",
94
115
  "Piper (local)": "Пайпер (местный)",
95
116
  "Piper voice (optional)": "Голос Пайпер (по желанию)",
96
117
  "Play": "Играть",
97
118
  "Port": "Порт",
119
+ "Presence": "Присутствие",
120
+ "Proactive triggers": "Проактивные триггеры",
98
121
  "Provider": "Поставщик",
99
122
  "Remember the conversation (follow-up questions)": "Запомните разговор (дополнительные вопросы)",
123
+ "Reply": "Ответ",
124
+ "Response rules (JSON)": "Правила ответа (JSON)",
125
+ "Reword system notifications": "Перефразировать системные уведомления",
100
126
  "Rewrite spoken or typed variants to your device/room names before local matching, e.g. \"TV\" to \"Fernseher\". Leave the language empty to apply to all languages. Also used for the text channels.": "Перед локальным сопоставлением замените произносимые или набранные варианты названиями ваших устройств/комнат, например, «TV» на «Fernseher». Оставьте поле языка пустым, чтобы применить ко всем языкам. Также используется для текстовых каналов.",
101
127
  "Ring duration (seconds)": "Длительность звонка (в секундах)",
102
128
  "Room": "Комната",
129
+ "Routines": "Рутины",
103
130
  "Run the UDP voice server (ESP / Hannah satellites)": "Запустите UDP-сервер голосовой связи (спутники ESP/Hannah).",
104
131
  "Runs a small local model (node-llama-cpp) for general questions; escalates to the cloud LLM when it needs live device data. Install it with the button below.": "Запускает небольшую локальную модель (node-llama-cpp) для решения общих вопросов; при необходимости передает данные с устройства в режиме реального времени в облачную LLM. Установите ее с помощью кнопки ниже.",
105
132
  "Said or typed": "Сказано или напечатано",
106
133
  "Satellites": "Спутники",
134
+ "Satellites, rooms or devices (comma separated)": "Сателлиты, комнаты или устройства (через запятую)",
135
+ "Say": "Объявление",
107
136
  "Settings": "Настройки",
108
137
  "Speak an announcement on the satellite a countdown timer was set from (or on all satellites) when it runs out. Timers are always mirrored into the timers.* states for scripts and visualization.": "Произнесите объявление на спутнике, с которого был установлен таймер обратного отсчета (или на всех спутниках), когда он истечет. Таймеры всегда дублируются в состояниях timers.* для скриптов и визуализации.",
109
138
  "Speak an announcement when an alarm at a fixed clock time fires. Alarms are always mirrored into the alarms.* states for scripts and visualization.": "Произносите объявление при срабатывании будильника в заданное время. Сигналы будильника всегда дублируются в состояния alarms.* для скриптов и визуализации.",
110
139
  "Speech credential mode": "Режим голосовых учетных данных",
111
140
  "Speech-to-text and text-to-speech use OpenAI. Leave empty to reuse the main API key when the provider is OpenAI; required when the LLM provider is Anthropic or custom.": "Для преобразования речи в текст и текста в речь используется OpenAI. Оставьте поле пустым, чтобы повторно использовать основной ключ API, если поставщиком является OpenAI; он обязателен, если поставщиком LLM является Anthropic или используется собственный.",
141
+ "Speech-to-text fallback": "Резервное распознавание речи",
112
142
  "Speech-to-text provider": "Поставщик услуг преобразования речи в текст",
143
+ "Spoken system notifications (notify.text / the ioBroker notification manager) are reworded by the LLM into one natural sentence first - their raw texts are written for a log viewer. Costs one small LLM call per notification; the original text is spoken if it fails. Urgent ones (notify.alert) are announced even when Do-Not-Disturb is on.": "Озвучиваемые системные уведомления (notify.text / менеджер уведомлений ioBroker) сначала перефразируются LLM в одно естественное предложение — их исходные тексты написаны для просмотра журнала. Стоит одного небольшого вызова LLM на уведомление; при ошибке озвучивается исходный текст. Срочные (notify.alert) объявляются даже при включённом режиме «Не беспокоить».",
113
144
  "Starts a UDP server for microphone satellites (Hannah-compatible protocol).": "Запускает UDP-сервер для подключения микрофонных сателлитов (протокол, совместимый с Hannah).",
145
+ "State id": "ID состояния",
114
146
  "Store key in adapter": "Поместите ключ в адаптер.",
115
147
  "Store keys in adapter": "Храните ключи в адаптере.",
116
148
  "Synonym dictionary": "Словарь синонимов",
@@ -118,15 +150,20 @@
118
150
  "System prompt": "Системная подсказка",
119
151
  "TTS voice": "Голос TTS",
120
152
  "Test connection": "Проверить соединение",
153
+ "Text-to-speech fallback": "Резервный синтез речи",
121
154
  "Text-to-speech provider": "Поставщик услуг преобразования текста в речь",
122
155
  "These devices stream until the server stops them, so the adapter decides when you stopped talking. Raise it if replies cut you off, lower it if the assistant waits too long.": "Эти устройства передают поток, пока сервер их не остановит, поэтому момент окончания речи определяет адаптер. Увеличьте, если ответ перебивает вас; уменьшите, если ассистент слишком долго ждёт.",
123
156
  "ThirdReality Voice & Music Assistant, Home Assistant Voice PE, linux-voice-assistant. These devices listen on TCP 6053 and the adapter dials them, so no port is opened for the audio itself — only the media server below, which they fetch the spoken reply from.": "ThirdReality Voice & Music Assistant, Home Assistant Voice PE, linux-voice-assistant. Эти устройства слушают TCP 6053, и адаптер подключается к ним сам — поэтому для самого звука порт не открывается, только медиасервер ниже, с которого они забирают произнесённый ответ.",
124
157
  "Timer sound (mp3/wav, optional)": "Звук таймера (mp3/wav, по желанию)",
158
+ "Triggers": "Триггеры",
125
159
  "Try the built-in rule-based intent matching for turn on/off, dimming and status before calling the LLM.": "Перед вызовом LLM попробуйте использовать встроенные правила сопоставления намерений для включения/выключения, затемнения и состояния.",
126
160
  "Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.": "По умолчанию предустановлены два звука (timer.wav, alarm.wav) — выберите один из них ниже или загрузите свой собственный mp3/wav. Выбранный звук воспроизводится перед голосовым сообщением. Требуется ffmpeg на хосте и как минимум один сателлит.",
127
161
  "UDP port": "UDP-порт",
128
162
  "Upload mp3/wav jingles below; the selected sound plays before the spoken announcement. Needs ffmpeg installed on the host and at least one satellite.": "Загрузите джинглы в формате mp3/wav ниже; выбранный звук воспроизводится перед голосовым объявлением. Необходимо установить ffmpeg на хост-системе и иметь как минимум один спутник.",
129
163
  "Use a local LLM before the cloud (installed on demand)": "Используйте локальный LLM перед облаком (устанавливается по запросу).",
164
+ "Used when the provider above fails (outage, expired key, empty quota). A local engine keeps voice working without the internet.": "Используется, если указанный выше провайдер не работает (сбой, истёкший ключ, исчерпанная квота). Локальный движок сохраняет голосовое управление без интернета.",
165
+ "Used when the provider above fails. Piper keeps the assistant speaking without the internet.": "Используется, если указанный выше провайдер не работает. Piper позволяет ассистенту говорить без интернета.",
166
+ "Verify device feedback": "Проверять ответ устройства",
130
167
  "Voice": "Голос",
131
168
  "Voice language": "Язык голоса",
132
169
  "Voice satellites": "Голосовые спутники",
@@ -134,6 +171,8 @@
134
171
  "Vosk (local)": "Воск (местный)",
135
172
  "Vosk model (optional)": "Модель Vosk (опционально)",
136
173
  "Weather source": "Источник погоды",
174
+ "When (JSON)": "Когда (JSON)",
175
+ "Which states tell the assistant who is at home - one row per person. Any state works: the residents adapter, a phone ping like ping.0.phone-denis.alive, a router client state or your own flag. Kind: empty or person, guest, pet (a pet never makes the house occupied). Home value: leave empty for the usual forms (true, 1, \"home\", \"anwesend\"), or enter the exact value that means at home. Used to tell the LLM who is around, to hold back announcements to an empty house (notify with onlyWhenHome) and as a trigger source via presence.anyoneHome.": "Какие состояния сообщают ассистенту, кто дома, — одна строка на человека. Подходит любое состояние: адаптер residents, пинг телефона, например ping.0.phone-denis.alive, состояние клиента роутера или собственный флаг. Тип: пусто или person, guest, pet (питомец никогда не делает дом занятым). Значение «дома»: оставьте пустым для обычных форм (true, 1, \"home\", \"anwesend\") или введите точное значение, означающее «дома». Используется, чтобы сообщить LLM, кто рядом, чтобы не делать объявления в пустом доме (notify с onlyWhenHome) и как источник для триггеров через presence.anyoneHome.",
137
176
  "Wyoming TCP port": "TCP-порт Вайоминга",
138
177
  "e.g. Vicki (de), Tatyana (ru), Joanna (en). Empty = default per language.": "например Вики (де), Татьяна (ru), Джоанна (ан). Пусто = значение по умолчанию для каждого языка.",
139
178
  "e.g. de-DE-KatjaNeural, ru-RU-SvetlanaNeural. Empty = pick by language.": "Например, de-DE-KatjaNeural, ru-RU-SvetlanaNeural. Пусто = выбор по языку.",
@@ -142,5 +181,6 @@
142
181
  "e.g. gpt-4o-mini, gpt-4o, claude-sonnet-4-6": "например gpt-4o-mini, gpt-4o, Клод-сонет-4-6",
143
182
  "e.g. westeurope": "например, Западная Европа",
144
183
  "None (local only)": "Нет (только локально)",
145
- "Without an LLM provider only the local tiers answer: the rule-based commands, routines, timers and alarms, and the local model if enabled. Anything else gets a short \"I can't do that\" reply.": "Без LLM-провайдера отвечают только локальные уровни: команды на основе правил, рутины, таймеры и будильники, а также локальная модель, если она включена. На всё остальное будет короткий ответ «Этого я не умею»."
184
+ "Without an LLM provider only the local tiers answer: the rule-based commands, routines, timers and alarms, and the local model if enabled. Anything else gets a short \"I can't do that\" reply.": "Без LLM-провайдера отвечают только локальные уровни: команды на основе правил, рутины, таймеры и будильники, а также локальная модель, если она включена. На всё остальное будет короткий ответ «Этого я не умею».",
185
+ "Chat": "Чат"
146
186
  }
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "A fired timer/alarm keeps ringing (looping the sound) for up to this long, or until you say 'stop'/'halt'/'aufhören'/'cancel' (or write the stopRinging state). 0 = play the sound once.": "Увімкнений таймер/будильник дзвонить (зациклюється) протягом певного часу, або доки ви не скажете «стоп»/«зупинити»/«почути»/«скасувати» (або не запишете стан stopRinging). 0 = відтворити звук один раз.",
3
+ "A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.": "Фраза, яка запускає список дій: \"Gute Nacht\" вимикає п'ять пристроїв і відповідає один раз. Фрази: кілька через кому (розпізнаються будь-де в реченні, регістр і умлаути не мають значення). Дії у форматі JSON, як у тригера: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Відповідь: що каже асистент (залиште порожнім, щоб нічого не казати). Перевіряється до офлайн-рушія правил і до LLM, тому рутина ніколи не буде витлумачена інакше.",
4
+ "A successful switch command is confirmed by a short tone on the satellite instead of a spoken sentence - instant, where speaking costs a text-to-speech call. Questions, errors and the text channels are unaffected.": "Успішна команда перемикання підтверджується коротким сигналом на сателіті замість вимовленої фрази — миттєво, тоді як мовлення потребує виклику синтезу мовлення. Запитань, помилок і текстових каналів це не стосується.",
5
+ "A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.": "Тригер стежить за станами або часом, а потім говорить, записує стан або ставить вам запитання й діє відповідно до вашої відповіді. Окремі тригери можна вимкнути під час роботи через triggers.items.<id>.enabled, перевірити кнопкою fire, а всі разом — через triggers.enabled.",
3
6
  "API key": "Ключ API",
4
7
  "API password (usually empty)": "Пароль API (зазвичай порожній)",
5
8
  "API-key credential": "Облікові дані API-ключа",
@@ -12,7 +15,9 @@
12
15
  "AWS secret access key": "Секретний ключ доступу AWS",
13
16
  "AWS speech": "Промова AWS",
14
17
  "Access / permissions": "Доступ / дозволи",
18
+ "Actions (JSON)": "Дії (JSON)",
15
19
  "Address (IP or host name)": "Адреса (IP або імʼя хоста)",
20
+ "After a switch command, wait up to 2 seconds for the device to acknowledge the new value (ack:true) and report \"did not respond\" if it never does. Leave this off for devices that never acknowledge (MQTT, scripts, 0_userdata) - every command would look failed.": "Після команди перемикання чекати до 2 секунд, доки пристрій підтвердить нове значення (ack:true), і повідомляти «не відповідає», якщо підтвердження немає. Не вмикайте для пристроїв, які ніколи не підтверджують (MQTT, скрипти, 0_userdata) — інакше кожна команда виглядатиме невдалою.",
16
21
  "Alarm sound (mp3/wav, optional)": "Звук будильника (mp3/wav, необов'язково)",
17
22
  "Allow changing objects and files (dangerous)": "Дозволити зміну об'єктів та файлів (небезпечно)",
18
23
  "Allow controlling states": "Дозволити керування станами",
@@ -26,23 +31,30 @@
26
31
  "Also drive ESPHome voice satellites": "Також керувати голосовими сателітами ESPHome",
27
32
  "Announce when a timer expires": "Оголосити про закінчення часу таймера",
28
33
  "Announce when an alarm goes off": "Оголосити, коли спрацює будильник",
34
+ "Announcement targets (groups and people)": "Цілі оголошень (групи та люди)",
29
35
  "Answer simple commands locally (fast, offline)": "Відповідайте на прості команди локально (швидко, офлайн)",
30
36
  "Anthropic (Claude)": "Антропний (Клод)",
31
37
  "Any object (get_object/search_objects)": "Будь-який об'єкт (get_object/search_objects)",
38
+ "Ask": "Запитання",
32
39
  "Azure Speech": "Лазурна мова",
33
40
  "Azure credential": "Облікові дані Azure",
34
41
  "Azure region": "Лазурний регіон",
35
42
  "Azure subscription key": "Ключ підписки Azure",
36
43
  "Azure voice (optional)": "Голос Azure (необов'язково)",
37
44
  "Base URL (optional)": "Базова URL-адреса (необов'язково)",
45
+ "Before a trigger speaks, the model rewords its text so repeated announcements do not sound canned. Costs one small LLM call per announcement; the original text is used if it fails.": "Перш ніж тригер заговорить, модель перефразовує його текст, щоб повторювані оголошення не звучали шаблонно. Коштує одного невеликого виклику LLM на оголошення; у разі помилки використовується оригінальний текст.",
38
46
  "Bind address": "Прив’язана адреса",
39
47
  "Canonical term": "Канонічний термін",
40
48
  "Central credential store": "Центральне сховище посвідчень",
49
+ "Condition as JSON: {\"state\":\"javascript.0.window\",\"value\":true} or {\"time\":\"23:00\",\"days\":[1,2,3,4,5]}; add \"also\"/\"unless\" for extra or blocking conditions, or use a list for alternatives. Say = announcement, Ask = question (needs response rules, JSON: [{\"match\":\"agreement\",\"say\":\"Okay\",\"setState\":{\"id\":\"...\",\"value\":false}}]). Extra actions as JSON: [{\"setState\":{\"id\":\"...\",\"value\":false}}]. Delay waits before acting (90s/30m/5h), cooldown is the minimum gap between two firings in seconds (default 3600).": "Умова в JSON: {\"state\":\"javascript.0.window\",\"value\":true} або {\"time\":\"23:00\",\"days\":[1,2,3,4,5]}; додайте \"also\"/\"unless\" для додаткових або блокувальних умов або використайте список для альтернатив. Say = оголошення, Ask = запитання (потрібні правила відповіді, JSON: [{\"match\":\"agreement\",\"say\":\"Okay\",\"setState\":{\"id\":\"...\",\"value\":false}}]). Додаткові дії в JSON: [{\"setState\":{\"id\":\"...\",\"value\":false}}]. Затримка — очікування перед виконанням (90s/30m/5h), пауза повтору — мінімальний інтервал між двома спрацюваннями в секундах (типово 3600).",
50
+ "Confirm switch commands with a beep": "Підтверджувати команди перемикання сигналом",
51
+ "Cooldown (s)": "Пауза повтору (с)",
41
52
  "Credential mode": "Режим облікових даних",
42
53
  "DeepSeek": "Глибокий пошук",
54
+ "Delay": "Затримка",
43
55
  "Devices": "Пристрої",
44
56
  "Direct URL of a GGUF model. Leave empty for the default (Qwen2.5-1.5B-Instruct). Small models recommended on Raspberry Pi / arm64.": "Пряма URL-адреса моделі GGUF. Залиште поле порожнім для значення за замовчуванням (Qwen2.5-1.5B-Instruct). Рекомендовані невеликі моделі на Raspberry Pi / arm64.",
45
- "Downloads the engine and model (several hundred MB). Watch the instance log for progress.": "Завантажує рушій та модель (кілька сотень МБ). Слідкуйте за прогресом у журналі екземпляра.",
57
+ "Downloads the engine and model (several hundred MB). Progress is shown below.": "Завантажує рушій і модель (кілька сотень МБ). Перебіг завантаження показано нижче.",
46
58
  "ESPHome satellites": "Сателіти ESPHome",
47
59
  "ESPHome satellites do not get the reply over their API socket — they fetch it as a URL. This is the port that small HTTP server listens on.": "Сателіти ESPHome отримують відповідь не через свій сокет API — вони забирають її за URL. Це порт, на якому слухає цей невеликий HTTP-сервер.",
48
60
  "Empty = tts-1. Also: tts-1-hd, gpt-4o-mini-tts.": "Порожнє = tts-1. Також: tts-1-hd, gpt-4o-mini-tts.",
@@ -51,18 +63,25 @@
51
63
  "Enable voice server (satellites)": "Увімкнути голосовий сервер (супутники)",
52
64
  "Enables speech recognition/synthesis. ioBroker-native satellites reach it over the message bus — no port needed. Turn on the UDP server below only for ESP / Hannah satellites.": "Дозволяє розпізнавання/синтез мовлення. Супутники, сумісні з ioBroker, досягають його через шину повідомлень — порт не потрібен. Увімкніть UDP-сервер нижче лише для супутників ESP / Hannah.",
53
65
  "End of speech after (ms of silence)": "Кінець мовлення після (мс тиші)",
66
+ "Extra actions (JSON)": "Додаткові дії (JSON)",
67
+ "Give a set of satellites a name, so an announcement, a question or a trigger can address it: a group of rooms (\"Upstairs\") or the speakers that belong to one person (\"Denis\", so \"tell Denis dinner is ready\" reaches them). Members: satellite ids, room names or device names, separated by commas. Kind: empty or group, or person. A real satellite or room of the same name always wins, so a group can never make a speaker unreachable.": "Дайте набору сателітів назву, щоб до нього могли звертатися оголошення, запитання або тригер: група кімнат («Нагорі») або динаміки, що належать одній людині («Denis», щоб «скажи Denis, що вечеря готова» дійшло до них). Учасники: id сателітів, назви кімнат або пристроїв через кому. Тип: порожньо або group, або person. Справжній сателіт або кімната з такою самою назвою завжди має пріоритет, тож група ніколи не зробить динамік недоступним.",
54
68
  "Google Gemini": "Google Близнюки",
55
69
  "Home Assistant Voice PE / wyoming-satellite / ESPHome voice devices can stream to this adapter over the Wyoming protocol.": "Голосові пристрої Home Assistant Voice PE / wyoming-satellite / ESPHome можуть транслювати дані на цей адаптер через протокол Wyoming.",
70
+ "Home value (empty = auto)": "Значення «вдома» (порожньо = авто)",
56
71
  "Host the satellites should fetch the audio from. Empty = use the address of each device connection automatically; set it only if the devices reach this machine under a different address (NAT, Docker, VLAN).": "Хост, з якого сателіти мають забирати звук. Порожньо = автоматично адреса відповідного зʼєднання з пристроєм; задавайте, лише якщо пристрої досягають цієї машини за іншою адресою (NAT, Docker, VLAN).",
72
+ "Id": "ID",
57
73
  "If off, the assistant can only read states, not set_state.": "Якщо вимкнено, помічник може лише зчитувати стани, а не set_state.",
58
74
  "Install local model": "Встановити локальну модель",
59
75
  "Interface the UDP voice server listens on. 0.0.0.0 = all interfaces; pick a specific host IP so satellites on the LAN can reach it.": "Інтерфейс, на якому прослуховує голосовий сервер UDP. 0.0.0.0 = усі інтерфейси; виберіть певну IP-адресу хоста, щоб супутники локальної мережі могли до нього дістатися.",
60
76
  "Interface the voice server listens on. 0.0.0.0 = all interfaces; pick a specific host IP so satellites on the LAN can reach it.": "Інтерфейс, на якому прослуховує голосовий сервер. 0.0.0.0 = усі інтерфейси; виберіть певну IP-адресу хоста, щоб супутники локальної мережі могли до нього дістатися.",
61
77
  "Keep the last few turns per source (chat, telegram, satellite) for a few minutes so follow-ups like 'and the kitchen too' work. In-memory only.": "Останні кілька ходів для кожного джерела (чат, телеграм, супутник) слід приділяти по кілька хвилин, щоб подальші запитання на кшталт «і кухня теж» спрацювали. Тільки по пам'яті.",
78
+ "Kind (group/person)": "Тип (group/person)",
79
+ "Kind (person/guest/pet)": "Тип (person/guest/pet)",
62
80
  "LLM assistant": "Асистент магістра права",
63
81
  "Language (empty = all)": "Мова (порожньо = все)",
64
82
  "Language for speech recognition and the spoken reply.": "Мова для розпізнавання мовлення та усної відповіді.",
65
83
  "Leave empty to reuse the main API key when the LLM provider is OpenAI; required otherwise.": "Залиште поле порожнім, щоб повторно використовувати основний ключ API, коли постачальник LLM є OpenAI; в іншому випадку обов'язкове поле.",
84
+ "Let the LLM reword trigger texts": "Перефразовувати тексти тригерів за допомогою LLM",
66
85
  "Lets the assistant durably remember facts you tell it (names, preferences, where things are) and use them in later conversations. Stored in the memory.* states; the LLM gets remember/forget tools.": "Дозволяє помічнику надовго запам'ятовувати факти, які ви йому розповідаєте (імена, вподобання, де знаходяться речі), та використовувати їх у подальших розмовах. Зберігається в пам'яті.* стани; LLM отримує інструменти запам'ятовування/забуття.",
67
86
  "Loaded from Azure (instance must run); empty = pick by language. e.g. de-DE-KatjaNeural.": "Завантажено з Azure (екземпляр має бути запущений); порожнє = вибір за мовою. Наприклад, de-DE-KatjaNeural.",
68
87
  "Loaded from Polly (instance must run); empty = default per language. e.g. Vicki, Tatyana.": "Завантажено з Polly (екземпляр має бути запущений); порожнє = значення за замовчуванням для кожної мови. Наприклад, Вікі, Тетяна.",
@@ -77,6 +96,7 @@
77
96
  "Model": "Модель",
78
97
  "Model name from alphacephei.com/vosk/models, e.g. vosk-model-small-de-0.15. Empty = small default per language.": "Назва моделі з alphacephei.com/vosk/models, наприклад, vosk-model-small-de-0.15. Порожнє значення = мале значення за замовчуванням для кожної мови.",
79
98
  "No sound": "Без звуку",
99
+ "None": "Немає",
80
100
  "Object read access": "Доступ для читання об'єкта",
81
101
  "One row per device. Port empty = 6053. The room is what the assistant treats the satellite as being in. Leave the password empty unless the device really has an API password set — table values are stored unencrypted.": "Один рядок на пристрій. Порожній порт = 6053. Кімната — та, в якій асистент розміщує сателіт. Пароль заповнюйте, лише якщо на пристрої справді задано пароль API — значення таблиці зберігаються без шифрування.",
82
102
  "Only devices, rooms, functions": "Тільки пристрої, кімнати, функції",
@@ -90,27 +110,39 @@
90
110
  "OpenAI-compatible (custom)": "Сумісний з OpenAI (на замовлення)",
91
111
  "Opens a UDP port for streaming microphone satellites (Hannah-compatible / ESP). Not needed for ioBroker-native satellites.": "Відкриває UDP-порт для потокової передачі мікрофонних супутників (сумісних з Hannah / ESP). Не потрібен для супутників, нативних для ioBroker.",
92
112
  "Override the endpoint, e.g. https://api.groq.com/openai/v1 for Groq. Leave empty for the provider default.": "Перевизначте кінцеву точку, наприклад, https://api.groq.com/openai/v1 для Groq. Залиште порожнім для провайдера за замовчуванням.",
113
+ "Phrases (comma separated)": "Фрази (через кому)",
93
114
  "Pick an installed weather adapter to answer weather questions from (Open-Meteo, Weather Underground, OpenWeatherMap are fully understood; others are read best-effort). Start that adapter once so its data/locations appear here.": "Виберіть встановлений погодний адаптер, щоб відповідати на запитання про погоду (Open-Meteo, Weather Underground, OpenWeatherMap повністю зрозумілі; інші читаються максимально швидко). Запустіть цей адаптер один раз, щоб його дані/розташування відображалися тут.",
94
115
  "Piper (local)": "Пайпер (місцевий)",
95
116
  "Piper voice (optional)": "Голос волинщика (необов'язково)",
96
117
  "Play": "Грати",
97
118
  "Port": "Порт",
119
+ "Presence": "Присутність",
120
+ "Proactive triggers": "Проактивні тригери",
98
121
  "Provider": "Постачальник",
99
122
  "Remember the conversation (follow-up questions)": "Згадайте розмову (додаткові питання)",
123
+ "Reply": "Відповідь",
124
+ "Response rules (JSON)": "Правила відповіді (JSON)",
125
+ "Reword system notifications": "Перефразовувати системні сповіщення",
100
126
  "Rewrite spoken or typed variants to your device/room names before local matching, e.g. \"TV\" to \"Fernseher\". Leave the language empty to apply to all languages. Also used for the text channels.": "Перепишіть усні або друковані варіанти назв пристроїв/кімнат перед локальним зіставленням, наприклад, «TV» на «Fernseher». Залиште поле мови порожнім, щоб застосувати його до всіх мов. Також використовується для текстових каналів.",
101
127
  "Ring duration (seconds)": "Тривалість дзвінка (секунди)",
102
128
  "Room": "Кімната",
129
+ "Routines": "Рутини",
103
130
  "Run the UDP voice server (ESP / Hannah satellites)": "Запуск голосового сервера UDP (супутники ESP / Hannah)",
104
131
  "Runs a small local model (node-llama-cpp) for general questions; escalates to the cloud LLM when it needs live device data. Install it with the button below.": "Запускає невелику локальну модель (node-llama-cpp) для загальних питань; переходить до хмарного LLM, коли потрібні дані з пристрою в реальному часі. Встановіть її за допомогою кнопки нижче.",
105
132
  "Said or typed": "Сказав або надрукував",
106
133
  "Satellites": "Супутники",
134
+ "Satellites, rooms or devices (comma separated)": "Сателіти, кімнати або пристрої (через кому)",
135
+ "Say": "Оголошення",
107
136
  "Settings": "Налаштування",
108
137
  "Speak an announcement on the satellite a countdown timer was set from (or on all satellites) when it runs out. Timers are always mirrored into the timers.* states for scripts and visualization.": "Промовте оголошення на супутнику, з якого було встановлено таймер зворотного відліку (або на всіх супутниках), коли він закінчиться. Таймери завжди відображаються в станах таймерів.* для скриптів та візуалізації.",
109
138
  "Speak an announcement when an alarm at a fixed clock time fires. Alarms are always mirrored into the alarms.* states for scripts and visualization.": "Озвучувати оголошення, коли спрацьовує будильник у фіксований час. Будильники завжди відображаються в станах будильників.* для сценаріїв та візуалізації.",
110
139
  "Speech credential mode": "Режим мовних даних",
111
140
  "Speech-to-text and text-to-speech use OpenAI. Leave empty to reuse the main API key when the provider is OpenAI; required when the LLM provider is Anthropic or custom.": "Перетворення мовлення на текст та тексту в мовлення використовують OpenAI. Залиште поле порожнім, щоб повторно використовувати основний ключ API, коли постачальником є OpenAI; обов'язково, коли постачальником LLM є Anthropic або custom.",
141
+ "Speech-to-text fallback": "Резервне розпізнавання мовлення",
112
142
  "Speech-to-text provider": "Постачальник перетворення мовлення на текст",
143
+ "Spoken system notifications (notify.text / the ioBroker notification manager) are reworded by the LLM into one natural sentence first - their raw texts are written for a log viewer. Costs one small LLM call per notification; the original text is spoken if it fails. Urgent ones (notify.alert) are announced even when Do-Not-Disturb is on.": "Озвучувані системні сповіщення (notify.text / менеджер сповіщень ioBroker) спочатку перефразовуються LLM в одне природне речення — їхні сирі тексти написані для перегляду журналу. Коштує одного невеликого виклику LLM на сповіщення; у разі помилки озвучується оригінальний текст. Термінові (notify.alert) оголошуються навіть в увімкненому режимі «Не турбувати».",
113
144
  "Starts a UDP server for microphone satellites (Hannah-compatible protocol).": "Запускає UDP-сервер для мікрофонних супутників (протокол, сумісний з Hannah).",
145
+ "State id": "ID стану",
114
146
  "Store key in adapter": "Зберігайте ключ в адаптері",
115
147
  "Store keys in adapter": "Зберігайте ключі в адаптері",
116
148
  "Synonym dictionary": "Словник синонімів",
@@ -118,15 +150,20 @@
118
150
  "System prompt": "Системний запит",
119
151
  "TTS voice": "Голос для синтезу мовлення",
120
152
  "Test connection": "Тестове з'єднання",
153
+ "Text-to-speech fallback": "Резервний синтез мовлення",
121
154
  "Text-to-speech provider": "Постачальник перетворення тексту в мовлення",
122
155
  "These devices stream until the server stops them, so the adapter decides when you stopped talking. Raise it if replies cut you off, lower it if the assistant waits too long.": "Ці пристрої передають потік, доки сервер їх не зупинить, тож момент завершення мовлення визначає адаптер. Збільште, якщо відповідь перебиває вас; зменште, якщо асистент чекає задовго.",
123
156
  "ThirdReality Voice & Music Assistant, Home Assistant Voice PE, linux-voice-assistant. These devices listen on TCP 6053 and the adapter dials them, so no port is opened for the audio itself — only the media server below, which they fetch the spoken reply from.": "ThirdReality Voice & Music Assistant, Home Assistant Voice PE, linux-voice-assistant. Ці пристрої слухають на TCP 6053, і адаптер підключається до них сам — тож для самого звуку порт не відкривається, лише медіасервер нижче, з якого вони забирають озвучену відповідь.",
124
157
  "Timer sound (mp3/wav, optional)": "Звук таймера (mp3/wav, необов'язково)",
158
+ "Triggers": "Тригери",
125
159
  "Try the built-in rule-based intent matching for turn on/off, dimming and status before calling the LLM.": "Спробуйте вбудовану функцію зіставлення намірів на основі правил для ввімкнення/вимкнення, затемнення та стану, перш ніж викликати LLM.",
126
160
  "Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.": "Попередньо встановлено два звуки за замовчуванням (timer.wav, alarm.wav) — виберіть один із наведених нижче або завантажте власний mp3/wav. Вибраний звук відтворюється перед голосовим оголошенням. Потрібен ffmpeg на хості та принаймні один супутник.",
127
161
  "UDP port": "UDP-порт",
128
162
  "Upload mp3/wav jingles below; the selected sound plays before the spoken announcement. Needs ffmpeg installed on the host and at least one satellite.": "Завантажте mp3/wav мелодії нижче; вибраний звук відтворюється перед голосовим оголошенням. Потрібно встановити ffmpeg на хості та принаймні одному супутнику.",
129
163
  "Use a local LLM before the cloud (installed on demand)": "Використовуйте локальний LLM перед хмарою (встановлюється на вимогу)",
164
+ "Used when the provider above fails (outage, expired key, empty quota). A local engine keeps voice working without the internet.": "Використовується, якщо вказаний вище провайдер не працює (збій, прострочений ключ, вичерпана квота). Локальний рушій зберігає голосове керування без інтернету.",
165
+ "Used when the provider above fails. Piper keeps the assistant speaking without the internet.": "Використовується, якщо вказаний вище провайдер не працює. Piper дає асистентові змогу говорити без інтернету.",
166
+ "Verify device feedback": "Перевіряти відповідь пристрою",
130
167
  "Voice": "Голос",
131
168
  "Voice language": "Мова голосового зв'язку",
132
169
  "Voice satellites": "Голосові супутники",
@@ -134,6 +171,8 @@
134
171
  "Vosk (local)": "Воск (місцевий)",
135
172
  "Vosk model (optional)": "Модель Vosk (опціонально)",
136
173
  "Weather source": "Джерело погоди",
174
+ "When (JSON)": "Коли (JSON)",
175
+ "Which states tell the assistant who is at home - one row per person. Any state works: the residents adapter, a phone ping like ping.0.phone-denis.alive, a router client state or your own flag. Kind: empty or person, guest, pet (a pet never makes the house occupied). Home value: leave empty for the usual forms (true, 1, \"home\", \"anwesend\"), or enter the exact value that means at home. Used to tell the LLM who is around, to hold back announcements to an empty house (notify with onlyWhenHome) and as a trigger source via presence.anyoneHome.": "Які стани повідомляють асистентові, хто вдома, — один рядок на людину. Підходить будь-який стан: адаптер residents, пінг телефона, наприклад ping.0.phone-denis.alive, стан клієнта роутера або власний прапорець. Тип: порожньо або person, guest, pet (домашня тварина ніколи не робить дім зайнятим). Значення «вдома»: залиште порожнім для звичайних форм (true, 1, \"home\", \"anwesend\") або введіть точне значення, що означає «вдома». Використовується, щоб повідомити LLM, хто поруч, щоб не робити оголошень у порожньому домі (notify з onlyWhenHome) і як джерело для тригерів через presence.anyoneHome.",
137
176
  "Wyoming TCP port": "TCP-порт Вайомінгу",
138
177
  "e.g. Vicki (de), Tatyana (ru), Joanna (en). Empty = default per language.": "напр. Вікі (de), Тетяна (ru), Джоанна (en). Порожньо = за замовчуванням для кожної мови.",
139
178
  "e.g. de-DE-KatjaNeural, ru-RU-SvetlanaNeural. Empty = pick by language.": "наприклад, de-DE-KatjaNeural, ru-RU-SvetlanaNeural. Порожнє = вибір за мовою.",
@@ -142,5 +181,6 @@
142
181
  "e.g. gpt-4o-mini, gpt-4o, claude-sonnet-4-6": "напр. gpt-4o-mini, gpt-4o, claude-sonnet-4-6",
143
182
  "e.g. westeurope": "наприклад, Західна Європа",
144
183
  "None (local only)": "Немає (лише локально)",
145
- "Without an LLM provider only the local tiers answer: the rule-based commands, routines, timers and alarms, and the local model if enabled. Anything else gets a short \"I can't do that\" reply.": "Без LLM-провайдера відповідають лише локальні рівні: команди на основі правил, рутини, таймери й будильники, а також локальна модель, якщо її ввімкнено. На все інше буде коротка відповідь «Цього я не вмію»."
184
+ "Without an LLM provider only the local tiers answer: the rule-based commands, routines, timers and alarms, and the local model if enabled. Anything else gets a short \"I can't do that\" reply.": "Без LLM-провайдера відповідають лише локальні рівні: команди на основі правил, рутини, таймери й будильники, а також локальна модель, якщо її ввімкнено. На все інше буде коротка відповідь «Цього я не вмію».",
185
+ "Chat": "Чат"
146
186
  }