From 2ca0bd1e22b8d7df91efb440a5e4ced827267fa4 Mon Sep 17 00:00:00 2001 From: mkz212 <82271669+mkz212@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:20:57 +0200 Subject: [PATCH 1/9] updates to the `pl.json` language file (#2522, #2523) --- ui/src/i18n/pl.json | 520 ++++++++++++++++++++++---------------------- 1 file changed, 260 insertions(+), 260 deletions(-) diff --git a/ui/src/i18n/pl.json b/ui/src/i18n/pl.json index 3ba9c5039..5ba92723d 100644 --- a/ui/src/i18n/pl.json +++ b/ui/src/i18n/pl.json @@ -1,187 +1,187 @@ { - "accessories.accessory_info": "Accessory Information", - "accessories.bridge_ip": "Bridge IP", - "accessories.bridge_link_name": "Linked Bridge Name", - "accessories.bridge_link_port": "Linked Bridge Port", - "accessories.bridge_link_username": "Linked Bridge Username", - "accessories.bridge_name": "Bridge Name", - "accessories.bridge_port": "Bridge Port", - "accessories.bridge_username": "Bridge Username", + "accessories.accessory_info": "Informacje o akcesorium", + "accessories.bridge_ip": "IP mostka", + "accessories.bridge_link_name": "Nazwa mostka podrzędnego", + "accessories.bridge_link_port": "Port mostka podrzędnego", + "accessories.bridge_link_username": "Użytkownik mostka podrzędnego", + "accessories.bridge_name": "Nazwa mostka", + "accessories.bridge_port": "Port mostka", + "accessories.bridge_username": "Użytkownik mostka", "accessories.button_add_room": "Dodaj pokój", "accessories.button_hidden_hide": "Ukryj ukryte", "accessories.button_hidden_show": "Pokaż ukryte", - "accessories.button_remove": "Remove From Cache", - "accessories.control.adaptive_lighting": "Adaptive Lighting", - "accessories.control.adaptive_lighting_note": "Some plugins may automatically re-enable Adaptive Lighting when changing this.", + "accessories.button_remove": "Usuń z cache", + "accessories.control.adaptive_lighting": "Oświetlenie adaptacyjne", + "accessories.control.adaptive_lighting_note": "Niektóre wtyczki mogą automatycznie ponownie włączać oświetlenie adaptacyjne podczas zmiany tego.", "accessories.control.auto": "Auto", "accessories.control.away": "Poza domem", - "accessories.control.battery_charged": "Charged", + "accessories.control.battery_charged": "Naładowany", "accessories.control.battery_charging": "Ładowanie", - "accessories.control.battery_low": "Battery Low", + "accessories.control.battery_low": "Niski poziom baterii", "accessories.control.battery_notchargeable": "Brak możliwości ładowania", "accessories.control.battery_notcharging": "Brak ładowania", "accessories.control.brightness": "Jasność", "accessories.control.closed": "Zamknięte", "accessories.control.closing": "Zamykanie", - "accessories.control.color_temperature": "Color Temperature", + "accessories.control.color_temperature": "Barwa cieplna", "accessories.control.cool": "Chłodzenie", - "accessories.control.current": "Current", + "accessories.control.current": "Obecny", "accessories.control.default_room": "Domyślny pokój", - "accessories.control.dehumidify": "Dehumidify", - "accessories.control.detected": "Detected", - "accessories.control.doorbell": "Doorbell", + "accessories.control.dehumidify": "Osuszanie", + "accessories.control.detected": "Wykryto", + "accessories.control.doorbell": "Dzwonek do drzwi", "accessories.control.drag_here": "Przenieś tutaj", - "accessories.control.filter_level": "Filter Life", + "accessories.control.filter_level": "Poziom filtra", "accessories.control.heat": "Grzanie", "accessories.control.home": "W domu", - "accessories.control.hue": "Hue", - "accessories.control.humidify": "Humidify", - "accessories.control.idle": "Idle", - "accessories.control.input": "Input List", + "accessories.control.hue": "Odcień", + "accessories.control.humidify": "Nawilżanie", + "accessories.control.idle": "Bezczynny", + "accessories.control.input": "Lista danych wejściowych", "accessories.control.jammed": "Zacięte", - "accessories.control.lock_auto": "Auto Lock Timer", + "accessories.control.lock_auto": "Zegar automatycznej blokady", "accessories.control.locked": "Zablokowany", - "accessories.control.manual": "Manual", - "accessories.control.microphone": "Microphone", - "accessories.control.mode": "Mode", + "accessories.control.manual": "Ręczny", + "accessories.control.microphone": "Mikrofon", + "accessories.control.mode": "Tryb", "accessories.control.mute": "Wycisz. wł.", "accessories.control.night": "Noc", - "accessories.control.not_detected": "Not Detected", + "accessories.control.not_detected": "Nie wykryto", "accessories.control.not_mute": "Wycisz. wył.", - "accessories.control.obstructed": "Obstructed", + "accessories.control.obstructed": "Naruszono", "accessories.control.off": "Wył.", "accessories.control.on": "Wł.", "accessories.control.open": "Otwarte", "accessories.control.opening": "Otwieranie", - "accessories.control.pause": "Pause", + "accessories.control.pause": "Pauza", "accessories.control.play": "Play", - "accessories.control.replace": "Replace", - "accessories.control.rotation_c_clockwise": "Counter Clockwise", - "accessories.control.rotation_clockwise": "Clockwise", - "accessories.control.rotation_direction": "Rotation Direction", + "accessories.control.replace": "Zamień", + "accessories.control.rotation_c_clockwise": "Przeciwnie do ruchu wskazówek zegara", + "accessories.control.rotation_clockwise": "Zgodnie z ruchem wskazówek zegara", + "accessories.control.rotation_direction": "Kierunek obrotu", "accessories.control.rotation_speed": "Prędkość obrotu", "accessories.control.running": "Uruchomiony", - "accessories.control.saturation": "Saturation", - "accessories.control.set_duration": "Set Duration", - "accessories.control.speaker": "Speaker", + "accessories.control.saturation": "Nasycenie", + "accessories.control.set_duration": "Ustaw czas trwania", + "accessories.control.speaker": "Głośnik", "accessories.control.speaker_volume": "Głośność", "accessories.control.stop": "Stop", "accessories.control.stopped": "Zatrzymano", "accessories.control.target": "Cel", - "accessories.control.target_auto": "Auto Target", - "accessories.control.threshold_auto": "Auto Threshold", + "accessories.control.target_auto": "Automatyczny cel", + "accessories.control.threshold_auto": "Automatyczny próg", "accessories.control.triggered": "Wyzwolono", "accessories.control.unknown": "Nieznany", "accessories.control.unlocked": "Odblokowano", "accessories.control_disabled": "Sterowanie akcesoriami jest wyłączone", - "accessories.custom_name": "Custom Name", - "accessories.custom_type": "Custom Type", + "accessories.custom_name": "Nazwa niestandardowa", + "accessories.custom_type": "Typ niestandardowy", "accessories.hide_this_accessory": "Ukryj to akcesorium", "accessories.message_must_use_insecure_mode": "Aby sterować swoimi akcesoriami bezpośrednio w panelu Homebridge musisz uruchomić Homebridge w trybie niezabezpieczonym {{ link }}.", "accessories.name": "Nazwa", - "accessories.only_ui": "These settings are only for the Homebridge UI and will not be reflected in HomeKit.", - "accessories.only_ui_2": "These options are unique to your Homebridge UI account.", - "accessories.plugin": "Plugin", + "accessories.only_ui": "Te ustawienia są tylko dla interfejsu użytkownika Homebridge i nie zostaną uwzględnione w HomeKit.", + "accessories.only_ui_2": "Te opcje są unikalne dla twojego konta Homebridge UI.", + "accessories.plugin": "Wtyczka", "accessories.room_name": "Nazwa pokoju", - "accessories.service": "Service", - "accessories.service_info": "Service Information", + "accessories.service": "Serwis", + "accessories.service_info": "Informacje serwisu", "accessories.settings_link": "Możesz uzyskać dostęp do ustawień Homebridge w dowolnym momencie z menu głównego lub klikając cog", "accessories.show_on_dashboard": "Pokaż w dashboard", - "accessories.support.acc_1": "Accessories may take a few minutes to appear on this screen after a Homebridge restart or after being added. If accessories are consistently missing, try changing the mDNS advertiser in the settings.", - "accessories.support.acc_2": "You can change the type of certain accessories in the UI (like showing a switch as a heater). You can do this by clicking on the three bars that appear in the top-right corner of the accessory tile as you hover over it. A 'Custom Type' option will appear if the accessory supports this. Note this will not change the accessory in HomeKit (only a plugin can do this).", + "accessories.support.acc_1": "Pojawienie się akcesoriów na tym ekranie może zająć kilka minut po ponownym uruchomieniu Homebridge lub po dodaniu. Jeśli akcesoria są konsekwentnie nieobecne, spróbuj zmienić rozgłaszacz mDNS w ustawieniach.", + "accessories.support.acc_2": "Możesz zmienić rodzaj niektórych akcesoriów w interfejsie użytkownika (np. wyświetlanie przełącznika jako grzejnika). Możesz to zrobić, klikając trzy paski, które pojawiają się w prawym górnym rogu kafelka akcesoriów po najechaniu na niego kursorem. Jeśli akcesorium to obsługuje, pojawi się opcja „Typ niestandardowy”. Zwróć uwagę, że to nie zmieni akcesorium w HomeKit (tylko wtyczka może to zrobić).", "accessories.support.rooms_1": "Pomieszczenia utworzone tutaj nie będą wyświetlane w aplikacji HomeKit, są tylko dla organizacji akcesoriów w Homebridge UI.", - "accessories.support.rooms_2": "To rename an existing room, create a new room with the desired name and move the accessories to the new room.", - "accessories.support.rooms_3": "To delete an existing room, move all its accessories to another room and refresh the page.", - "accessories.title_rooms": "Rooms", - "backup.backup_delete_failed": "Backup deletion failed. See logs for details.", + "accessories.support.rooms_2": "Aby zmienić nazwę istniejącego pokoju, utwórz nowy pokój o żądanej nazwie i przenieś akcesoria do nowego pokoju.", + "accessories.support.rooms_3": "Aby usunąć istniejący pokój, przenieś wszystkie jego akcesoria do innego pokoju i odśwież stronę.", + "accessories.title_rooms": "Pokoje", + "backup.backup_delete_failed": "Usunięcie kopii zapasowej nie powiodło się. Zobacz dzienniki, aby uzyskać szczegółowe informacje.", "backup.backup_download_failed": "Tworzenie backupu nieudane", "backup.backup_exceeds_max_size": "Backup ({{ backupSize }}) przekracza maksymalny rozmiar {{ maxBackupSizeText }}", "backup.backup_help_one": "Utwórz backup całego środowiska Homebridge, który następnie będziesz mógł przywrócic po ponownej instalacji Homebridge, lub po zresetowaniu systemu.", "backup.backup_help_two": "Wtyczki niedostępne z poziomu repozytorium npm lub instalowane bezpośrednio z GitHub nie będą dodane do backupu.", - "backup.backup_now": "Backup Now", - "backup.backup_now_desc": "Generate and download an up-to-date backup file.", - "backup.backup_now_save_desc": "Generate an up-to-date backup file in your backup storage directory.", + "backup.backup_now": "Utwórz backup", + "backup.backup_now_desc": "Wygeneruj i pobierz aktualny backup.", + "backup.backup_now_save_desc": "Wygeneruj aktualny backup w katalogu backupów.", "backup.backup_restored": "Przywracanie backupu zakończone sukcesem", "backup.backup_warning": "Backup zawiera ważne informacje i nie powinien być udostępniany nikomu.", - "backup.files_auto": "Stored Backup Files", + "backup.files_auto": "Pliki backupu", "backup.label_uploading": "Przywracanie…", "backup.load_error": "Nie udało się załadować backupu.", "backup.restore_failed": "Przywracanie backupu zakończone niepowodzeniem", "backup.restore_help_one": "Przywrócenie backupu odtworzy całą konfiguracje utworzoną za pomocą Homebridge UI wraz z akcesoriami, plikiem konfiguracyjnym i wszystkimi wtyczkami zainstalowanymi z repozytorium npm.", "backup.restore_help_two": "Po przywróceniu backupu trzeba ponownie zalogować się do Homebridge UI z danymi użytkownika zawartymi w tej kopii.", "backup.restore_max_size": "Możesz przywrócić backup do rozmiaru: {{ maxBackupSizeText }}.", - "backup.restore_now": "Restore Now", - "backup.restore_now_desc": "Restore from a previously downloaded backup file.", + "backup.restore_now": "Przywróć backup", + "backup.restore_now_desc": "Przywróć z wcześniej pobranego pliku.", "backup.restore_warning": "Przywrócenie backupu jest nieodwracalne i zastąpi całą obecną konfigurację Homebridge.", - "backup.scheduled_backup_disabled": "Scheduled backups have been disabled via the configuration.", + "backup.scheduled_backup_disabled": "Zaplanowane backupy zostały wyłączone poprzez konfigurację.", "backup.scheduled_backup_time": "Pełny backup konfiguracji Homebridge jest tworzony automatycznie każdego dnia o godzinie {{ backupTime }} i trzymany przez {{ dayCount }} dni.", - "backup.settings_enable": "Enable Automated Backups", - "backup.settings_path": "Backup Storage Path", - "backup.settings_path_desc": "If you are changing this from the default, please ensure the directory exists and is writable by the Homebridge user.", - "backup.settings_title": "Backup Settings", - "backup.title_backup": "Backup & Restore", - "child_bridge.about": "Homebridge pozwoli ci na uruchomienie twoich wtyczek (platform, akcesoriów) w trybie mostka podrzędnego {{ link }}. Ta funkcja może poprawić szybkość i jakość działania Homebridge.", + "backup.settings_enable": "Włącz automatyczne backupy", + "backup.settings_path": "Ścieżka katalogu backupów", + "backup.settings_path_desc": "Jeśli zmieniasz to z domyślnego, upewnij się, że katalog istnieje i ma prawo zapisu przez użytkownika Homebridge.", + "backup.settings_title": "Ustawienia backupu", + "backup.title_backup": "Backup", + "child_bridge.about": "Homebridge pozwoli ci na uruchomienie twoich wtyczek (platform, akcesoriów) w trybie mostka {{ link }}. Ta funkcja może poprawić szybkość i jakość działania Homebridge.", "child_bridge.bridge_connect": "Połącz z HomeKit", "child_bridge.bridge_settings": "Ustawienia mostka", - "child_bridge.bridges": "Bridges", + "child_bridge.bridges": "Mostki", "child_bridge.bridges_paired": "Każdy tak utworzony nowy mostek będzie wymagał ponownego parowania w aplikacji HomeKit.", - "child_bridge.bridges_paired_2": "If you set up a child bridge now and later disable it, any accessories on this bridge will be removed and re-created on the main Homebridge bridge.", - "child_bridge.config.accessory": "Accessory", + "child_bridge.bridges_paired_2": "Jeśli teraz skonfigurujesz mostek, a później go wyłączysz, wszelkie akcesoria na tym mostku zostaną usunięte i ponownie utworzone na głównym mostku Homebridge.", + "child_bridge.config.accessory": "Akcesorium", "child_bridge.config.debug": "Tryb Debug", "child_bridge.config.firmware": "Wersja oprogramowania", "child_bridge.config.manufacturer": "Producent", "child_bridge.config.model": "Model", "child_bridge.config.name": "Nazwa", - "child_bridge.config.or_link": "Or, Link Existing Bridge", - "child_bridge.config.platform": "Platform", - "child_bridge.config.prevent": "Cannot disable a child bridge with linked accessories.", - "child_bridge.config.select_existing": "Select an existing bridge...", - "child_bridge.config.use": "Use Child Bridge", - "child_bridge.confirm_delete_1": "The following child bridges will be removed.", - "child_bridge.confirm_delete_2": "You will need to remove the paired bridges manually from the Home app. Any accessories will be removed and re-created on the main Homebridge bridge.", + "child_bridge.config.or_link": "Lub połącz istniejący mostek", + "child_bridge.config.platform": "Platforma", + "child_bridge.config.prevent": "Nie można wyłączyć mostka z połączonymi akcesoriami.", + "child_bridge.config.select_existing": "Wybierz istniejący mostek...", + "child_bridge.config.use": "Użyj mostka", + "child_bridge.confirm_delete_1": "Następujące mostki zostaną usunięte.", + "child_bridge.confirm_delete_2": "Będziesz musiał ręcznie usunąć sparowane mostki z aplikacji Apple Home. Wszelkie akcesoria zostaną usunięte i ponownie utworzone na głównym mostku Homebridge.", "child_bridge.must_configure_plugin": "Najpierw musisz skonfigurować wtyczkę zanim będziesz mógł zarzadzać ustawieniami tego mostka.", "child_bridge.reset_accessories": "Resetuj akcesoria", "child_bridge.restart": "Zrestartuj mostek", "child_bridge.restart_homebridge": "Zrestartuj Homebridge aby uruchomić mostek.", "child_bridge.restart_plural": "Zrestartuj mostki", "child_bridge.return_to_pair": "Wróć do tego ekranu po ponownym uruchomieniu Homebridge aby wyświetlić kod QR parowania.", - "child_bridge.select_type": "Wybierz którą platformę lub akcesorium chcesz uruchomić w trybie mostka podrzędnego.", + "child_bridge.select_type": "Wybierz, którą platformę lub akcesorium chcesz uruchomić w trybie mostka", "child_bridge.setup": "Ustaw mostek", "child_bridge.start": "Uruchom mostek", "child_bridge.start_plural": "Uruchom mostki", "child_bridge.stop": "Wyłącz mostek", "child_bridge.stop_plural": "Wyłącz mostki", "common.labels.beta": "beta", - "common.labels.no_confirmation": "There is no confirmation when clicking the button, it will immediately perform the action.", + "common.labels.no_confirmation": "Nie ma potwierdzenia po kliknięciu przycisku, natychmiast wykona akcję.", "common.phrases.are_you_sure": "Na pewno chcesz kontynuować?", - "common.phrases.support": "Feel like there is something useful we could add here? Let us know on {{ github }} or {{ discord }}!", + "common.phrases.support": "Czujesz, że jest coś pożytecznego, co moglibyśmy tutaj dodać? Daj nam znać na {{ github }} lub {{ discord }}!", "config.config_accessory_must_be_array": "Akcesoria muszą być w tablicy []", "config.config_bridge_missing": "Brak ustawień mostka", "config.config_invalid_json": "Konfiguracja zawiera nieprawidłową składnię JSON", "config.config_platform_must_be_array": "Platformy muszą być w tablicy []", - "config.config_saved": "Configuration Saved", + "config.config_saved": "Zapisano konfigurację", "config.config_username_error": "'Username' w sekcji 'Bridge' musi składać się z 6 par znaków oddzielonych dwukropkiem (A-F 0-9) w formacie XX:XX:XX:XX:XX:XX", "config.error_blocks_objects": "{{ type }} - wszystkie bloki muszą być typu obiekt.", "config.error_blocks_type": "{{ type }} - każdy blok musi zawierać atrybut: {{ type }}.", "config.error_string_array": "{{ key }} - każdy element zbioru musi być typu string.", "config.error_string_type": "{{ type }} - atrybut musi być typu string.", "config.failed_to_save_config": "Nie można zapisać konfiguracji", - "config.no_restart": "A restart is not needed as no changes were made to the Homebridge configuration.", - "config.restore.confirm": "Kliknij Zapisz, aby przywrócić kopię zapasową.", + "config.no_restart": "Ponowne uruchomienie nie jest konieczne ponieważ nie wprowadzono żadnych zmian w konfiguracji Homebridge.", + "config.restore.confirm": "Kliknij Zapisz, aby przywrócić backup.", "config.restore.copy_to_editor": "Kopiuj do edytora", - "config.restore.download": "Download your current configuration as a JSON file.", - "config.restore.help_1": "A backup of your config file is created each time it is updated from actions you take in the Homebridge UI.", - "config.restore.help_2": "You can restore a previous version of your config file by selecting it from the list below. You will be able to compare this version with your current config before deciding whether to restore it.", - "config.restore.title": "Config File Backup & Restore", - "config.restore.toast_backups_deleted": "Wszystkie kopie zapasowe zostały usunięte", + "config.restore.download": "Pobierz bieżącą konfigurację jako plik JSON.", + "config.restore.help_1": "Kopia pliku konfiguracyjnego jest tworzona za każdym razem gdy jest on aktualizowany z działań podejmowanych w interfejsie użytkownika Homebridge.", + "config.restore.help_2": "Możesz przywrócić poprzednią wersję pliku konfiguracyjnego wybierając go z poniższej listy. Będziesz mógł porównać tę wersję z obecną konfiguracją przed podjęciem decyzji czy ją przywrócić.", + "config.restore.title": "Plik konfiguracyjny JSON", + "config.restore.toast_backups_deleted": "Wszystkie backupy zostały usunięte", "config.title_backup_loaded": "Backup został załadowany", - "form.button_allow": "Allow", - "form.button_back": "Back", + "form.button_allow": "Pozwól", + "form.button_back": "Cofnij", "form.button_cancel": "Anuluj", "form.button_close": "Zamknij", "form.button_continue": "Kontynuuj", "form.button_delete": "Usuń", - "form.button_delete_all": "Delete All", + "form.button_delete_all": "Usuń wszystko", "form.button_disable": "Wyłącz", "form.button_download": "Pobierz", "form.button_edit": "Edytuj", @@ -192,18 +192,18 @@ "form.button_reset": "Zresetuj", "form.button_restore": "Przywróć", "form.button_save": "Zapisz", - "form.button_show": "Show", + "form.button_show": "Pokaż", "form.button_unlock": "Odblokuj", - "form.button_unpair": "Unpair", - "form.label.changes_kept": "Note that existing selections/changes are preserved when switching between items.", - "form.label_invalid": "Config validation failed - you can still save your changes.", - "form.label_invalid_strict": "Config validation failed - please review the form before saving.", - "form.label_valid": "Config validation passed.", + "form.button_unpair": "Odłącz", + "form.label.changes_kept": "Zwróć uwagę, że istniejące wybory/zmiany są zachowywane podczas przełączania między elementami.", + "form.label_invalid": "Weryfikacja konfiguracji nie powiodła się - nadal możesz zapisać swoje zmiany.", + "form.label_invalid_strict": "Weryfikacja konfiguracji nie powiodła się - przejrzyj formularz przed zapisaniem.", + "form.label_valid": "Weryfikacja konfiguracji pomyślna", "form.select.auto": "Automatycznie (użyj ustawień przeglądarki)", - "login.invalid_code": "The code entered is incorrect or has expired", + "login.invalid_code": "Wprowadzony kod jest nieprawidłowy lub wygasł.", "login.invalid_credentials": "Nieprawidłowa nazwa lub hasło użytkownika", - "login.invalid_credentials_2": "To reset your credentials or 2fa code, delete the auth.json file in your Homebridge storage directory, restart Homebridge, then login with admin / admin.", - "login.invalid_password": "Invalid Password", + "login.invalid_credentials_2": "Aby zresetować dane uwierzytelniające lub kod 2fa, usuń plik auth.json w katalogu pamięci Homebridge, uruchom ponownie Homebridge, a następnie zaloguj się za pomocą admin / admin.", + "login.invalid_password": "Błędne hasło", "login.label_2fa_code": "Kod uwierzytelniania 2FA", "logs.download.error": "Nie udało się pobrać pliku logu.", "logs.download_warning": "Log może zawierać informacje osobiste, hasła dostępu, tokeny. Sprawdź zawarte w nim informacje zanim udostępnisz go innym osobom.", @@ -225,10 +225,10 @@ "menu.label_status": "Status", "menu.linux.label_logs": "Log", "menu.linux.label_restart_server": "Zrestartuj serwer", - "menu.linux.label_shutdown_modal": "Are you sure you want to shut down the operating system? You will need physical access to turn it back on.", + "menu.linux.label_shutdown_modal": "Czy na pewno chcesz wyłączyć system operacyjny? Będziesz potrzebował fizycznego dostępu, aby go ponownie włączyć.", "menu.linux.label_shutdown_server": "Wyłącz serwer", "menu.linux.label_terminal": "Terminal", - "menu.reload": "Reload", + "menu.reload": "Załaduj ponownie", "menu.restart.title": "Opcje zasilania", "menu.settings.title": "Ustawienia", "menu.tooltip_logout": "Wyloguj", @@ -251,13 +251,13 @@ "platform.linux.server_taking_long_time": "Serwer potrzebuje więcej czasu, by powrócić do trybu online", "platform.linux.server_will_power_down": "Serwer wkrótce się wyłączy.", "platform.linux.shutting_down_server": "Wyłączanie serwera", - "platform.terminal.terminate_message_1": "Navigating away from this page will terminate your current session, all foreground processes will be terminated.", - "platform.terminal.terminate_message_2": "To avoid this warning, enable Terminal Session Persistence from the settings page.", - "platform.terminal.terminate_title": "Session Termination", - "platform.terminal.terminate_unload": "Your terminal session will be terminated. Enable Terminal Session Persistence in Settings to prevent this.", - "platform.version.restart_required": "Homebridge UI v{{ uiVersion }} zainstalowane, ale serwer nadal pracuje v{{ serverVersion }}.", + "platform.terminal.terminate_message_1": "Oddalanie się od tej strony zakończy bieżącą sesję, wszystkie procesy pierwszego planu zostaną zakończone.", + "platform.terminal.terminate_message_2": "Aby uniknąć tego ostrzeżenia, włącz Trwałość sesji terminala w ustawieiniach.", + "platform.terminal.terminate_title": "Trwałość sesji terminala", + "platform.terminal.terminate_unload": "Twoja sesja terminala zostanie zakończona. Włącz trwałość sesji terminala w Ustawieniach, aby temu zapobiec.", + "platform.version.restart_required": "Homebridge UI v{{ uiVersion }} zainstalowane, ale serwer nadal pracuje na wersji v{{ serverVersion }}.", "platform.version.service_restart_required": "Wymagany restart serwera", - "plugins.bridge.action_error": "Błąd mostu podrzędnego przy akcji: {{ action }}.", + "plugins.bridge.action_error": "Błąd mostka podrzędnego przy akcji: {{ action }}.", "plugins.button_homepage": "Strona wtyczki", "plugins.button_set_up": "Konfiguruj", "plugins.button_settings": "Ustawienia", @@ -282,127 +282,127 @@ "plugins.donate.tile_donate_to": "Wspomóż {{ author }}", "plugins.enable.error": "Nie udało się włączyć wtyczki.", "plugins.manage.all_versions": "Wszystkie wersje", - "plugins.manage.backup": "Download a backup before updating?", - "plugins.manage.changelog": "Full Changelog", - "plugins.manage.changelog_none": "Could not retrieve changelog, perhaps this plugin does not provide a CHANGELOG.md file.", - "plugins.manage.child_bridge_restart": "Mostek podrzędny został pomyślnie uruchomiony ponownie.", + "plugins.manage.backup": "Pobrać backup przed aktualizacją?", + "plugins.manage.changelog": "Pełna lista zmian", + "plugins.manage.changelog_none": "Nie można pobrać listy zmian, być może ta wtyczka nie zapewnia pliku CHANGELOG.md.", + "plugins.manage.child_bridge_restart": "Mostek został pomyślnie uruchomiony ponownie.", "plugins.manage.child_bridge_restart_failed": "Restart mostka wtyczki nieudany, zrestartuj Homebridge ręcznie.", "plugins.manage.confirm_disable": "Czy na pewno chcesz wyłączyć {{ pluginName }}?", "plugins.manage.confirm_disable_accessory_1": "Wszelkie akcesoria wyeksponowane przez tą wtyczkę zostaną usunięte z ekranu akcesoriów Homebridge UI i usunięte z HomeKit.", "plugins.manage.confirm_disable_accessory_2": "Po ponownym włączeniu wtyczki akcesoria pojawią się ponownie w interfejsie Homebridge i HomeKit. Akcesoria stracą swoje dane HomeKit (takie jak powiązane sceny i automatyzacje).", "plugins.manage.confirm_disable_platform_1": "Wszelkie akcesoria udostępnione przez tę wtyczkę zostaną usunięte z ekranu akcesoriów Homebridge UI, ale pozostaną w HomeKit z etykietą 'Brak odpowiedzi'.", "plugins.manage.confirm_disable_platform_2": "Po ponownym włączeniu wtyczki akcesoria pojawią się ponownie w interfejsie użytkownika Homebridge i staną się ponownie kontrolowane w HomeKit. Akcesoria nie stracą swoich danych HomeKit (takich jak powiązane sceny i automatyzacja).", - "plugins.manage.confirm_disable_setting": "Your setting for {{ setting }} is currently {{ value }}, therefore:", + "plugins.manage.confirm_disable_setting": "Twoje ustawienie dla {{ setting }} to obecnie {{ value }}, dlatego:", "plugins.manage.confirm_enable": "Na pewno włączyć {{ pluginName }}?", "plugins.manage.disable": "Wyłącz", "plugins.manage.enable": "Włącz", - "plugins.manage.github_support": "You can show your support by giving this plugin a {{ iconStar }} (or the release a {{ iconThumbsUp }}) on GitHub!", - "plugins.manage.hb_restart": "Homebridge and the UI will automatically restart after any version change.", - "plugins.manage.hide_updates": "Disable Update Notifications", - "plugins.manage.hide_updates_desc": "If you don't want to see update notifications for this plugin, you can turn them off here.", + "plugins.manage.github_support": "Możesz pokazać swoje wsparcie, dając tej wtyczce {{ iconStar }} (lub {{ iconThumbsUp }}) na GitHub!", + "plugins.manage.hb_restart": "Homebridge i interfejs użytkownika zostaną automatycznie ponownie uruchomione po każdej zmianie wersji.", + "plugins.manage.hide_updates": "Wyłącz powiadomienia o aktualizacjach", + "plugins.manage.hide_updates_desc": "Jeśli nie chcesz widzieć powiadomień o aktualizacjach dla tej wtyczki, możesz je wyłączyć tutaj.", "plugins.manage.information": "Informacje wtyczki", "plugins.manage.install": "Instaluj", "plugins.manage.installed": "Zainstalowane", "plugins.manage.json_config": "Konfiguracja JSON", "plugins.manage.manage_version": "Zainstaluj inną wersję", "plugins.manage.manual_update_command": "Aby zaktualizować pakiet, otwórz wiersz polecenia Node.js jako administrator i uruchom następujące polecenia:", - "plugins.manage.more_info": "More information about scoped {{ scopedLink }} and verified {{ verifiedLink }} plugins.", - "plugins.manage.notes": "Release Notes", - "plugins.manage.notes_beta_1": "Thank you for helping improve {{ pluginName }} by testing a pre-release version.", - "plugins.manage.notes_beta_2": "You can use the Homebridge UI to revert back to the stable version at any time.", - "plugins.manage.notes_beta_3": "Please remember this is a pre-release version, and report any issues to the plugin's GitHub repository page.", - "plugins.manage.notes_latest": "Release notes are only shown when updating to the latest version.", - "plugins.manage.notes_none": "Could not retrieve release notes, perhaps this version does not have a GitHub release.", + "plugins.manage.more_info": "Więcej informacji na temat wtyczek o zasięgu {{ scopedLink }} i zweryfikowanych {{ verifiedLink }}.", + "plugins.manage.notes": "Informacje o wydaniu", + "plugins.manage.notes_beta_1": "Dziękujemy za pomoc w ulepszeniu {{ pluginName }} poprzez przetestowanie wersji przedpremierowej.", + "plugins.manage.notes_beta_2": "Możesz użyć interfejsu użytkownika Homebridge, aby powrócić do stabilnej wersji w dowolnym momencie.", + "plugins.manage.notes_beta_3": "Pamiętaj, że jest to wersja przedpremierowa i zgłaszaj wszelkie problemy na stronie repozytorium wtyczki GitHub.", + "plugins.manage.notes_latest": "Informacje o wydaniu są wyświetlane tylko podczas aktualizacji do najnowszej wersji.", + "plugins.manage.notes_none": "Nie można pobrać informacji o wydaniu, być może ta wersja nie ma wydania GitHub.", "plugins.manage.online_updates": "Aktualizacje online w systemie Windows nie są wspierane. Musisz zaktualizować Config UI X ręcznie po zatrzymaniu Homebridge.", "plugins.manage.plugin_logs": "Log wtyczki", - "plugins.manage.scoped.error": "An error occurred. You can download the logs below.", - "plugins.manage.scoped.info_1": "Homebridge scoped plugins have names beginning with {{ prefix }}.", - "plugins.manage.scoped.info_2": "For more information about scoped plugins and why to switch, see the wiki page {{ link }}.", - "plugins.manage.scoped.process": "This process will not affect your Homebridge/HomeKit accessories. You will not be able to cancel the process once it has started. It will:", - "plugins.manage.scoped.switch": "Switch To Scoped Plugin", - "plugins.manage.scoped.windows": "Online updates are not supported on Windows. You will need to install the new plugin and uninstall the old plugin manually. You should not restart Homebridge until both steps are complete.", - "plugins.manage.scoped_message": "Scoped plugins improve long-term reliability and ensure consistent maintenance by combining centralized oversight from the Homebridge team with continued involvement from the original maintainer.", - "plugins.manage.scoped_subtitle": "This plugin is scoped and verified.", + "plugins.manage.scoped.error": "Wystąpił błąd. Możesz pobrać dzienniki poniżej.", + "plugins.manage.scoped.info_1": "Wtyczki Scoped Homebridge mają nazwy zaczynające się od {{ prefix }}.", + "plugins.manage.scoped.info_2": "Aby uzyskać więcej informacji na temat wtyczek Scoped i dlaczego warto się przełączać, zobacz stronę wiki {{ link }}.", + "plugins.manage.scoped.process": "Ten proces nie wpłynie na akcesoria Homebridge/HomeKit. Nie będziesz mógł anulować procesu po jego rozpoczęciu. To będzie:", + "plugins.manage.scoped.switch": "Przełącz do Scoped", + "plugins.manage.scoped.windows": "Aktualizacje online nie są obsługiwane w systemie Windows. Będziesz musiał zainstalować nową wtyczkę i ręcznie odinstalować starą wtyczkę. Należy nie ponownie uruchomić Homebridge, dopóki oba kroki nie zostaną zakończone.", + "plugins.manage.scoped_message": "Wtyczki Scoped poprawiają długoterminową niezawodność i zapewniają spójną konserwację, łącząc scentralizowany nadzór zespołu Homebridge z ciągłym zaangażowaniem oryginalnego opiekuna.", + "plugins.manage.scoped_subtitle": "Ta wtyczka jest Scoped i zweryfikowana.", "plugins.manage.select_version": "Wybierz wersję do instalacji", "plugins.manage.uninstall": "Odinstaluj", "plugins.manage.uninstalled": "Odinstalowane", "plugins.manage.unverified_message": "Niezweryfikowane wtyczki Homebridge wskazują, że nie zostały poddane procesowi przeglądu przez zespół projektowy Homebridge. Brak weryfikacji niekoniecznie oznacza nieskuteczność lub obawy dotyczące bezpieczeństwa. Autorzy mogli zdecydować się nie szukać weryfikacji z różnych powodów.", - "plugins.manage.unverified_subtitle": "This plugin jest niezweryfikowana.", + "plugins.manage.unverified_subtitle": "Ta wtyczka jest niezweryfikowana.", "plugins.manage.update": "Aktualizuj", "plugins.manage.updated": "Zaktualizowane", "plugins.manage.verified_message": "Wtyczki Homebridge oznaczone jako zweryfikowane zostały sprawdzone przez zespół Homebridge aby upewnić się, że spełniają różne wymagania, które zachęcają do najlepszych praktyk i bezproblemowego doświadczenia użytkownika.", - "plugins.manage.verified_subtitle": "This plugin jest zweryfikowana.", + "plugins.manage.verified_subtitle": "Ta wtyczka jest zweryfikowana.", "plugins.placeholder_search_first": "Użyj paska wyszukiwania powyżej, aby znaleźć swoją pierwszą wtyczkę.", - "plugins.placeholder_search_none": "No results were found", + "plugins.placeholder_search_none": "Brak wyników", "plugins.placeholder_search_plugin": "Wyszukaj dostępne wtyczki…", - "plugins.search": "Search Plugins", + "plugins.search": "Szukaj wtyczek", "plugins.settings.custom.homebridge-gsh.label_account_linked": "Konto podłączone", "plugins.settings.custom.homebridge-gsh.label_link_account": "Podłącz konto", "plugins.settings.custom.homebridge-gsh.message_about": "Wtyczka Homebridge Google Smart Home umożliwia kontrolę akcesoriów za pomocą głośników lub aplikacji mobilnej Google Home.", "plugins.settings.custom.homebridge-gsh.message_account_link_required": "Aby włączyć tą funkcjonalność, musisz zalogować się swoim kontem Google lub GitHub - pamiętaj aby użyć tego samego konta dla Homebridge i aplikacji Google Home.", "plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required": "Serwer wymaga zrestartowania, aby zastosować zmiany.", - "plugins.settings.deconz.dump_no_exist": "Homebridge deCONZ dump file does not exist yet.", - "plugins.settings.hue.dump_no_exist": "Homebridge Hue dump file does not exist yet.", + "plugins.settings.deconz.dump_no_exist": "Plik Homebridge deCONZ jeszcze nie istnieje.", + "plugins.settings.hue.dump_no_exist": "Plik Homebridge Hue jeszcze nie istnieje.", "plugins.settings.label_open_config_editor": "Otwórz edytor konfiguracji", "plugins.settings.message_consult_documentation": "Sprawdż na stronie wsparcia tej wtyczki, jak ją poprawnie skonfigurować.", "plugins.settings.message_manual_config_required": "Ta wtyczka musi być skonfigurowana ręcznie z użyciem wbudowanego edytora.", "plugins.settings.plugin_config_saved": "Zapisano konfigurację wtyczki", "plugins.settings.restart_required": "Zrestartuj serwer, aby zastosować zmiany.", - "plugins.stats": "Plugin Statistics", - "plugins.stats_note": "Plugins cannot be installed from this page, this is provided just for interest.", + "plugins.stats": "Statystyki wtyczek", + "plugins.stats_note": "Wtyczki nie mogą być instalowane z tej strony, jest to dostarczane tylko dla zainteresowania.", "plugins.status_disabled": "Wyłączony", "plugins.status_installed": "Zainstalowana", - "plugins.support.list_1": "Homebridge plugins are the building blocks of Homebridge, allowing you to add support for new accessories and platforms. Plugins add support for smart lights, cameras, TVs, etc, for brands that don't natively support HomeKit. For example, to bring your Ring doorbells and cameras into HomeKit, you can install the homebridge-ring plugin.", - "plugins.support.list_2": "Homebridge plugins are created by public contributors in the Homebridge community, and are not typically associated with the Homebridge maintainers, nor with the manufacturers of the accessories themselves. If you have a question about a specific plugin, you should let the plugin developer know via the plugin's GitHub page.", - "plugins.support.list_3": "There are currently over 4,700 plugins available for Homebridge, so you should be able to find plugins to suit your needs. If you are a Javascript/TypeScript developer (or want to take the opportunity to learn), you can also create your own plugin and share it with the Homebridge community. Check out the Support section for some handy links to get you started.", - "plugins.support.list_4": "Some plugins allow you to create 'virtual/dummy' accessories, which are accessories that do not have a physical counterpart. These can be used to create virtual accessories in HomeKit, such as virtual switches, lights, or sensors. Try searching for dummy or virtual in the search bar to find some examples.", + "plugins.support.list_1": "Wtyczki Homebridge są elementami konstrukcyjnymi Homebridge, umożliwiającymi dodanie wsparcia dla nowych akcesoriów i platform. Wtyczki dodają wsparcie dla inteligentnych świateł, kamer, telewizorów itp. dla marek, które nie obsługują natywnie HomeKit. Na przykład, aby wprowadzić dzwonki i kamery Ring do HomeKit, możesz zainstalować wtyczkę homebridge-ring.", + "plugins.support.list_2": "Wtyczki Homebridge są tworzone przez publicznych współpracowników w społeczności Homebridge i zazwyczaj nie są kojarzone z opiekunami Homebridge, ani z samymi producentami akcesoriów. Jeśli masz pytanie dotyczące konkretnej wtyczki, powinieneś dać znać twórcy wtyczki za pośrednictwem strony GitHub wtyczki.", + "plugins.support.list_3": "Obecnie dostępnych jest ponad 4700 wtyczek dla Homebridge, więc powinieneś być w stanie znaleźć wtyczki odpowiadające Twoim potrzebom. Jeśli jesteś programistą Javascript/TypeScript (lub chcesz skorzystać z okazji, aby się uczyć), możesz również stworzyć własną wtyczkę i udostępnić ją społeczności Homebridge. Sprawdź sekcję Wsparcie, aby znaleźć przydatne linki, które pomogą Ci zacząć.", + "plugins.support.list_4": "Niektóre wtyczki pozwalają tworzyć wirtualne / fikcyjne akcesoria, które są akcesoriami bez fizycznego odpowiednika. Można je wykorzystać do tworzenia wirtualnych akcesoriów w HomeKit, takich jak wirtualne przełączniki, światła lub czujniki. Spróbuj wyszukać dummy lub virtual w pasku wyszukiwania, aby znaleźć kilka przykładów.", "plugins.toast_failed_to_load_plugin_schema": "Nie udało się załadować schematu konfiguracji wtyczki.", "plugins.toast_failed_to_load_plugins": "Nie udało się załadować wtyczek", "plugins.uninstall_bridge_error": "Nie udało się usunąć mostka podrzędnego.", - "plugins.uninstall_remove_child_bridge": "Remove plugin child bridge?", - "plugins.uninstall_remove_child_bridges": "Remove {{ count }} plugin child bridges?", + "plugins.uninstall_remove_child_bridge": "Usunąć mostek wtyczki?", + "plugins.uninstall_remove_child_bridges": "Usunąć {{ count }} mostków wtyczek?", "plugins.uninstall_remove_config_required": "Po całkowitym usunięciu wtyczki, upewnij się, że usunięto jej konfigurację w pliku config.json przed zrestartowaniem Homebridge.", "plugins.uninstall_remove_confirmation": "Na pewno odinstalować {{ pluginName }}?", "plugins.uninstall_remove_plugin_config": "Usunąć również konfigurację tej wtyczki?", - "plugins.uninstall_warn_1": "When removing a child bridge, any accessories published by this bridge will be removed from the Homebridge cache.", + "plugins.uninstall_warn_1": "Podczas usuwania mostu podrzędnego wszelkie akcesoria opublikowane przez ten most zostaną usunięte z pamięci podręcznej Homebridge.", "plugins.uninstall_warn_2": "Akcesoria staną się nieaktualne w HomeKit (pokazując brak odpowiedzi). Aby je usunąć, musisz ręcznie usunąć ten most z HomeKit. Możesz to zrobić w aplikacji Apple Home z sekcji Ustawienia.", "reset.accessory_all.desc": "Usuń wszystkie akcesoria z pamięci podręcznej.", "reset.accessory_all.list_1": "Homebridge uruchomi się ponownie a wszystkie istniejące akcesoria zostaną usunięte z Homebridge i HomeKit.", "reset.accessory_all.list_2": "Wszystkie powiązane dane HomeKit zostaną również usunięte, w tym skojarzenia pokoi, sceny oraz automatyzacje, które używają tego akcesorium.", "reset.accessory_all.list_3": "Po ponownym uruchomieniu Homebridge twoje wtyczki ponownie dodadzą wszelkie akcesoria, tak jakby wtyczka była instalowana po raz pierwszy.", "reset.accessory_all.title": "Usuń wszystkie akcesoria z pamięci podręcznej", - "reset.accessory_ind.bridge": "Bridge", - "reset.accessory_ind.desc": "Remove individual accessories from the cache.", - "reset.accessory_ind.done": "Finished removing accessories from the cache, check the log for confirmation and/or errors.", - "reset.accessory_ind.fail": "Failed to remove accessories from cache, check the log for errors.", - "reset.accessory_ind.list_1": "Some plugins don't clean up after themselves properly. If you have stale accessories, you can remove them from the cache. This function can also be used to reset an existing accessory in HomeKit.", - "reset.accessory_ind.list_2": "The accessories will be removed from Homebridge and HomeKit, along with their related room associations, scenes and automations.", - "reset.accessory_ind.list_3": "After Homebridge restarts, your plugins will re-add any removed accessories as if the plugin was being installed for the first time.", - "reset.accessory_ind.title": "Remove Individual Accessories", - "reset.accessory_ind.unknown": "Unknown Name", + "reset.accessory_ind.bridge": "Mostek", + "reset.accessory_ind.desc": "Usuń poszczególne akcesoria z pamięci podręcznej.", + "reset.accessory_ind.done": "Po zakończeniu usuwania akcesoriów z pamięci podręcznej, sprawdź log pod kątem potwierdzenia i/lub błędów.", + "reset.accessory_ind.fail": "Nie udało się usunąć akcesoriów z pamięci podręcznej, sprawdź log pod kątem błędów.", + "reset.accessory_ind.list_1": "Niektóre wtyczki nie czyszczą po sobie prawidłowo akcesoriów. Jeśli masz przestarzałe akcesoria, możesz je usunąć z pamięci podręcznej. Ta funkcja może być również użyta do zresetowania istniejącego akcesorium w HomeKit.", + "reset.accessory_ind.list_2": "Akcesoria zostaną usunięte z Homebridge i HomeKit, wraz z powiązanymi z nimi skojarzeniami pokoi, scenami i automatyzacjami.", + "reset.accessory_ind.list_3": "Po ponownym uruchomieniu Homebridge, twoje wtyczki ponownie dodają wszelkie usunięte akcesoria, tak jakby wtyczka była instalowana po raz pierwszy.", + "reset.accessory_ind.title": "Usuń poszczególne akcesoria", + "reset.accessory_ind.unknown": "Nieznana nazwa", "reset.accessory_reset": "Resetowanie akcesoriów", "reset.action_is_irreversible": "Ta czynność jest nieodwracalna! Przeczytaj uważnie, zanim przejdziesz dalej.", - "reset.bridge_accessories.desc": "Remove all accessories published by a child bridge from the cache.", + "reset.bridge_accessories.desc": "Usuń z pamięci podręcznej wszystkie akcesoria opublikowane przez mostek podrzędny.", "reset.bridge_accessories.empty": "Nie masz mostków, z których można by usunąć akcesoria.", - "reset.bridge_accessories.list_1": "This function can be used to reset a plugin's existing accessories in HomeKit. They will be removed from Homebridge and HomeKit, and then re-added by the plugin as new accessories.", + "reset.bridge_accessories.list_1": "Ta funkcja może być użyta do zresetowania istniejących akcesoriów wtyczki w HomeKit. Będą one usunięte z Homebridge i HomeKit, a następnie ponownie dodane przez wtyczkę jako nowe akcesoria.", "reset.bridge_accessories.list_2": "Szczegóły parowania i status mostku podrzędnego pozostaną takie same.", "reset.bridge_accessories.title": "Usuń akcesoria mostku podrzędnego", - "reset.bridge_all.desc": "Reset all bridges by removing them from the cache. Obejmuje to główny mostek Homebridge, mostki podrzędne i mostki do akcesoriów zewnętrznych.", - "reset.bridge_all.list_1": "This will reset the Homebridge bridge, all child bridges and bridges for external accessories from HomeKit.", + "reset.bridge_all.desc": "Zresetuj wszystkie mostki usuwając je z pamięci podręcznej. Obejmuje to główny mostek Homebridge, mostki podrzędne i mostki do akcesoriów zewnętrznych.", + "reset.bridge_all.list_1": "Spowoduje to zresetowanie mostu Homebridge, wszystkich mostów podrzędnych i mostów do zewnętrznych akcesoriów HomeKit.", "reset.bridge_all.list_2": "Akcesoria będą nadal wyświetlane w HomeKit (jako brak odpowiedzi), dopóki mostki nie zostaną ręcznie usunięte z HomeKit. Możesz to zrobić w aplikacji Apple Home, uzyskując dostęp do Ustawienia domu → Centra akcesoriów i mostki → {Mostek} → Usuń mostek z domu.", "reset.bridge_all.list_3": "Wszystkie akcesoria, sceny i automatyki Homebridge do HomeKit będą musiały zostać ponownie skonfigurowane po rozparowaniu.", "reset.bridge_all.list_4": "Twoja nazwa użytkownika i kod PIN Homebridge zostaną zmienione. Możesz zobaczyć nowe wartości w konfiguracji Homebridge po rozparowaniu.", - "reset.bridge_all.title": "Reset All Bridges", - "reset.bridge_ind.desc": "Reset an individual bridge by removing it from the cache. Może to być mostek podrzędny lub mostek do zewnętrznego akcesorium takiego jak kamera lub telewizor.", - "reset.bridge_ind.desc_child_active": "Homebridge has detected that these child bridges are in-use. Once removed, their accessories will be removed from the Homebridge cache. If paired with HomeKit, the bridge's accessories will show as 'No Response', and the bridge will need to be removed via the Home app. The child bridge's pairing information will be changed. Once Homebridge has restarted, the plugin will create the new child bridge and accessories. The new bridge will need to be re-paired with HomeKit. You can view the new pairing information from the corresponding plugin's bridge settings page.", - "reset.bridge_ind.desc_child_stale": "Homebridge has detected that these bridges are not in-use, but double-check before deleting. They could be left-over from previously uninstalled plugins. If paired with HomeKit, the accessories will show as 'No Response', and the bridge will need to be removed via the Home app.", - "reset.bridge_ind.desc_non_child": "Homebridge has detected that these bridges are in-use. You can remove them from the cache, but they will likely be re-added by the plugin when Homebridge restarts. The pairing information will remain unchanged.", - "reset.bridge_ind.done": "Finished resetting bridges, check the log for confirmation and/or errors.", - "reset.bridge_ind.fail": "Failed to reset bridges, check the log for errors.", - "reset.bridge_ind.head_child_active": "Active Child Bridges", - "reset.bridge_ind.head_child_stale": "Stale Child Bridges", - "reset.bridge_ind.head_non_child": "Non Child Bridges", - "reset.bridge_ind.title": "Reset Individual Bridges", + "reset.bridge_all.title": "Zresetuj wszystkie mostki", + "reset.bridge_ind.desc": "Zresetuj pojedynczy mostek usuwając go z pamięci podręcznej. Może to być mostek podrzędny lub mostek do zewnętrznego akcesorium takiego jak kamera lub telewizor.", + "reset.bridge_ind.desc_child_active": "Homebridge wykrył, że te mosty dziecięce są w użyciu. Po usunięciu ich akcesoria zostaną usunięte z pamięci podręcznej Homebridge. W połączeniu z HomeKit, akcesoria mostu będą wyświetlane jako „Brak odpowiedzi”, a mostek będzie musiał zostać usunięty za pomocą aplikacji Home. Informacje o parowaniu mostu potomnego zostaną zmienione. Po ponownym uruchomieniu Homebridge wtyczka utworzy nowy most dziecięcy i akcesoria. Nowy mostek będzie musiał zostać ponownie sparowany z HomeKit. Możesz wyświetlić nowe informacje o parowaniu na stronie ustawień mostu odpowiedniej wtyczki.", + "reset.bridge_ind.desc_child_stale": "Homebridge wykrył, że te mosty nie są używane, ale dokładnie sprawdź przed usunięciem. Mogą być pozostawione po wcześniej odinstalowanych wtyczkach. W połączeniu z HomeKit akcesoria będą wyświetlane jako „Brak odpowiedzi”, a mostek będzie musiał zostać usunięty za pomocą aplikacji Home.", + "reset.bridge_ind.desc_non_child": "Homebridge wykrył, że te mosty są w użyciu. Możesz je usunąć z pamięci podręcznej, ale prawdopodobnie zostaną one ponownie dodane przez wtyczkę po ponownym uruchomieniu Homebridge. Informacje o parowaniu pozostaną niezmienione.", + "reset.bridge_ind.done": "Zakończono resetowanie mostów, sprawdź log pod kątem potwierdzenia i/lub błędów.", + "reset.bridge_ind.fail": "Nie udało się zresetować mostów, sprawdź log pod kątem błędów.", + "reset.bridge_ind.head_child_active": "Aktywne mostki", + "reset.bridge_ind.head_child_stale": "Przestarzałe mostki", + "reset.bridge_ind.head_non_child": "Mostki niepodrzędne", + "reset.bridge_ind.title": "Zresetuj poszczególne mostki", "reset.bridges.desc": "Jeśli masz problem z parowaniem Homebridge, zewnętrznego akcesorium lub mostku podrzędnego z HomeKit, może być konieczne rozłączenie pary z HomeKit aby rozpocząć od nowa.", "reset.bridges.empty": "Nie masz żadnych mostków do odłączenia z HomeKit.", "reset.bridges.title": "Mostki", @@ -425,9 +425,9 @@ "restart.ui_online": "Homebridge UI gotowy", "rpi.throttled.currently_message": "Raspberry Pi zgłasza aktualnie za niskie napięcie - sprawdź czy jest zasilane z odpowiedniego zasilacza. Zbyt niskie napięcie może powodować niestabilną prace i uszkodzić kartę SD.", "rpi.throttled.previously_message": "Raspberry Pi zgłaszało zbyt niskie napięcie od ostatniego uruchomienia - sprawdź czy jest zasilane z odpowiedniego zasilacza.", - "rpi.throttled.undervoltage_title": "Under Voltage", - "settings.accessory.debug": "Accessory Debug Mode", - "settings.accessory.debug_desc": "If enabled, the Homebridge UI will log debug level messages to the console.", + "rpi.throttled.undervoltage_title": "Pod Napięciem", + "settings.accessory.debug": "Tryb debugowania akcesoriów", + "settings.accessory.debug_desc": "Jeśli włączone, interfejs użytkownika Homebridge będzie rejestrował komunikaty poziomu debugowania.", "settings.cache.desc": "Homebridge utrzymuje pamięć podręczną z informacjami o akcesoriach aby nie były one usuwane i ponownie dodawane do HomeKit za każdym razem gdy Homebridge uruchamia się ponownie. Czasami pamięć podręczna może stać się niezsynchronizowana z rzeczywistymi akcesoriami w Homebridge.", "settings.changes.saved": "Twoje zmiany zostały zapisane i wymagają ponownego uruchomienia.", "settings.datetime.incorrect": "Data i godzina na twoim serwerze Homebridge wydają się być nieprawidłowe. Może to spowodować nieoczekiwane problemy. Kliknij tutaj, aby uzyskać więcej informacji.", @@ -436,16 +436,16 @@ "settings.display.brown": "Brązowy", "settings.display.cyan": "Cyjan", "settings.display.dark": "Ciemny", - "settings.display.deep_purple": "Deep Purple", + "settings.display.deep_purple": "Ciemno-purpurowy", "settings.display.green": "Zielony", "settings.display.grey": "Szary", "settings.display.indigo": "Indygo", "settings.display.lang": "Język", "settings.display.light": "Jasny", "settings.display.lighting_mode": "Motyw (jasny / ciemny)", - "settings.display.menu_default": "Default", - "settings.display.menu_freeze": "Keep Closed (On Desktop)", - "settings.display.menu_mode": "Menu Mode", + "settings.display.menu_default": "Domyślny", + "settings.display.menu_freeze": "Trzymaj zamknięte (desktop)", + "settings.display.menu_mode": "Tryb menu", "settings.display.orange": "Pomarańczowy", "settings.display.pink": "Różowy", "settings.display.purple": "Fioletowy", @@ -455,58 +455,58 @@ "settings.display.temp_units.c": "Celsius (°C)", "settings.display.temp_units.f": "Fahrenheit (°F)", "settings.display.theme": "Motyw (kolor)", - "settings.display.wallpaper": "Wallpaper", - "settings.display.wallpaper_intro": "Upload a wallpaper for your Homebridge UI. This is currently shown on the login screen.", - "settings.display.wallpaper_rule": "You can choose an image file which is up to {{ maxFileSizeText }}.", - "settings.display.wallpaper_rule2": "You will need to click Save to upload the wallpaper to your Homebridge storage directory.", - "settings.display.wallpaper_success": "Wallpaper was successfully updated.", + "settings.display.wallpaper": "Tapeta", + "settings.display.wallpaper_intro": "Prześlij tapetę dla swojego interfejsu użytkownika Homebridge. Jest to obecnie wyświetlane na ekranie logowania.", + "settings.display.wallpaper_rule": "Możesz wybrać plik obrazu, który jest maksymalnej wielkości: {{ maxFileSizeText }}.", + "settings.display.wallpaper_rule2": "Będziesz musiał kliknąć Zapisz, aby przesłać tapetę do katalogu Homebridge.", + "settings.display.wallpaper_success": "Tapeta została pomyślnie zaktualizowana.", "settings.general.title_display": "Wygląd", "settings.general.title_general": "Ogólne", - "settings.linux.restart": "Restart Command", - "settings.linux.restart_desc": "If no restart command is set the process will terminate with a non-zero exit code.", - "settings.linux.shutdown": "Shutdown Command", - "settings.linux.shutdown_desc": "If no shutdown command is set the process will terminate with a non-zero exit code.", - "settings.linux.temp": "Temperature File Path", - "settings.linux.temp_desc": "If you are running Homebridge on a Raspberry Pi, you can enter the path to the OS temperature file here. This will display the current temperature on the UI status page.", + "settings.linux.restart": "Polecenie restartu", + "settings.linux.restart_desc": "Jeśli nie ustawiono polecenia restartu, proces zakończy się niezerowym kodem wyjścia.", + "settings.linux.shutdown": "Polecenie wyłączania", + "settings.linux.shutdown_desc": "Jeśli nie jest ustawione polecenie wyłączenia, proces zakończy się z niezerowym kodem wyjścia.", + "settings.linux.temp": "Ścieżka do pliku temperatury", + "settings.linux.temp_desc": "Jeśli używasz Homebridge na Raspberry Pi, możesz wprowadzić ścieżkę do pliku temperatury systemu operacyjnego tutaj. Spowoduje to wyświetlenie aktualnej temperatury na stronie statusu interfejsu użytkownika.", "settings.mdns_advertiser": "Rozgłaszacz mDNS", "settings.mdns_advertiser_exp": "eksperymentalny", "settings.mdns_advertiser_help": "Jeśli masz problem z połączeniem Homebridge do HomeKit, spróbuj użyć alternatywnego rozgłaszania mDNS.", "settings.mdns_advertiser_not_connected": "Rozłączony", "settings.mdns_advertiser_rec": "zalecane", - "settings.name": "Homebridge Name", - "settings.network.hb_package": "Homebridge Module Path", - "settings.network.hb_package_desc": "If you have multiple versions of Homebridge installed, you can specify the path to the version you want to use here.", - "settings.network.host": "Host IP Address", - "settings.network.host_desc": "The host IP address to listen on. In most cases this will be :: or 0.0.0.0.", + "settings.name": "Nazwa Homebridge", + "settings.network.hb_package": "Ścieżka modułu Homebridge", + "settings.network.hb_package_desc": "Jeśli masz zainstalowane kilka wersji Homebridge, możesz tutaj określić ścieżkę do wersji, której chcesz użyć.", + "settings.network.host": "Adres IP hosta", + "settings.network.host_desc": "Adres IP hosta do nasłuchiwania. W większości przypadków będzie to :: lub 0.0.0.0.", "settings.network.message_network_interface": "Jeśli żaden interfejs nie zostanie wybrany, Homebridge wybierze automatycznie.", - "settings.network.port_end": "End Port", - "settings.network.port_end_desc": "Control the end of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and higher than the start port above.", - "settings.network.port_hb": "Homebridge Port", + "settings.network.port_end": "Końcowy zakres portów", + "settings.network.port_end_desc": "Kontroluj koniec zakresu portów, na których powinny działać oddzielne akcesoria (takie jak kamera lub telewizor). To musi być między 1025 a 65533 i wyższe niż port startowy powyżej.", + "settings.network.port_hb": "Port Homebridge", "settings.network.port_hb_desc": "Port Homebridge. Musi być między 1025 a 65533 i nie powinien być taki sam jak port Homebridge UI.", - "settings.network.port_start": "Start Port", - "settings.network.port_start_desc": "Control the start of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and lower than the end port below.", - "settings.network.port_ui": "UI Port", + "settings.network.port_start": "Początkowy zakres portów", + "settings.network.port_start_desc": "Kontroluj początek zakresu portów, na których powinny działać oddzielne akcesoria (takie jak kamera lub telewizor). Musi to być między 1025 a 65533 i niższe niż port końcowy poniżej.", + "settings.network.port_ui": "Port Homebridge UI", "settings.network.port_ui_desc": "Port Homebridge UI. Nie powinien być taki sam jak port Homebridge.", - "settings.network.proxy": "Reverse Proxy Hostname", - "settings.network.proxy_desc": "When running behind a reverse proxy you may need to enter the hostname you use to access the UI.", + "settings.network.proxy": "Nazwa hosta serwera proxy", + "settings.network.proxy_desc": "Podczas pracy za serwerem proxy może być konieczne wprowadzenie nazwy hosta, której używasz, aby uzyskać dostęp do interfejsu użytkownika.", "settings.network.title_network": "Sieć", "settings.network.title_network_interfaces": "Interfejsy sieciowe", - "settings.network.title_security": "Security", - "settings.network.title_terminal": "Logging & Terminal", - "settings.reset_bridge.error": "Failed to reset bridge.", - "settings.security.auth": "Authentication", - "settings.security.auth_desc": "Whether to enable authentication for the Homebridge UI with a username and password.", - "settings.security.cert": "Certificate Path", - "settings.security.https": "Enable HTTPS", - "settings.security.https_desc": "Enable HTTPS by providing your own certificate files stored on your Homebridge server.", - "settings.security.https_keycert": "Private Key + Certificate", - "settings.security.https_pfx": "PKCS#12 Certificate + Passphrase", - "settings.security.key": "Private Key Path", - "settings.security.pass": "PKCS#12 Certificate Passphrase", - "settings.security.pfx": "PKCS#12 Certificate Path", - "settings.security.ui_control": "Accessory Control Lists", - "settings.security.ui_control_desc": "Define which bridges and bridged accessories can be controlled or blocked by the Homebridge UI.", - "settings.security.ui_control_desc_2": "Allow the UI to control the accessories on a bridge by toggling on the switch below.", + "settings.network.title_security": "Bezpieczeństwo", + "settings.network.title_terminal": "Log & Terminal", + "settings.reset_bridge.error": "Nie udało się zresetować mostu.", + "settings.security.auth": "Uwierzytelnianie", + "settings.security.auth_desc": "Uwierzytelnianie dla interfejsu Homebridge za pomocą nazwy użytkownika i hasła.", + "settings.security.cert": "Ścieżka certyfikatu", + "settings.security.https": "Włącz HTTPS", + "settings.security.https_desc": "Włącz HTTPS dostarczając własne pliki certyfikatów przechowywane na serwerze Homebridge.", + "settings.security.https_keycert": "Klucz prywatny + certyfikat", + "settings.security.https_pfx": "Certyfikat PKCS#12 + hasło", + "settings.security.key": "Ścieżka klucza prywatnego", + "settings.security.pass": "Hasło certyfikatu PKCS#12", + "settings.security.pfx": "Ścieżka certyfikatu PKCS#12", + "settings.security.ui_control": "Listy kontroli akcesoriów", + "settings.security.ui_control_desc": "Określ mostki i akcesoria mostków, które mogą być kontrolowane lub blokowane przez interfejs użytkownika Homebridge.", + "settings.security.ui_control_desc_2": "Pozwól interfejsowi użytkownika na sterowanie akcesoriami na moście, włączając poniższy przełącznik.", "settings.service.debug_tooltip": "Niektóre wtyczki wymagają ustawienia zmiennej środowiskowej DEBUG {{ link }} aby umożliwić rejestrowanie poziomu debugowania.", "settings.service.node_tooltip": "Opcje uruchomieniowe Node.js dla procesu Homebridge. To pole powinno być puste, chyba że wiesz co robisz.", "settings.startup.debug": "Tryb Homebridge Debug", @@ -516,36 +516,36 @@ "settings.startup.insecure_desc": "Aby sterować akcesoriami za pomocą interfejsu użytkownika Homebridge, musisz uruchomić Homebridge w trybie niezabezpieczonym (Insecure).", "settings.startup.keep_accessories": "Zachowaj akcesoria odinstalowanych wtyczek", "settings.startup.keep_accessories_desc": "Akcesoria wtyczek (tych typu platform) pozostaną w pamięci podręcznej nawet po odinstalowaniu wtyczki. Może to być przydatne jeśli planujesz ponownie zainstalować wtyczkę w przyszłości.", - "settings.startup.metrics": "Enable Server Metric Monitoring", - "settings.startup.metrics_desc": "When enabled, the Homebridge UI will collect and show CPU and memory stats on the status page.", - "settings.startup.session": "Session Timeout", - "settings.startup.session_desc": "The number of seconds before a user will be logged out of the UI. Defaults to 8 hours.", - "settings.terminal.buffer_size": "Terminal Buffer Character Size", - "settings.terminal.buffer_size_help": "Amount of terminal output to preserve for persistent sessions. Larger values use more memory.", - "settings.terminal.log_max": "Log Max Size", - "settings.terminal.log_max_desc": "The max log size (bytes). Set to -1 to disable log truncation.", - "settings.terminal.log_truncate": "Log Truncate Size", - "settings.terminal.log_truncate_desc": "The size (bytes) to truncate the log to once it goes over the max size specified above.", - "settings.terminal.persistence": "Terminal Session Persistence", - "settings.terminal.persistence_confirm_message": "Disabling terminal session persistence will terminate your current terminal session.", - "settings.terminal.persistence_confirm_title": "Disable Terminal Session Persistence", - "settings.terminal.persistence_help": "When enabled, terminal sessions will persist when navigating away and can be resumed when returning to the terminal page (or status page widget). Terminal sessions are shared across Homebridge UI admin users.", - "settings.terminal.warning": "Hide Terminal Termination Warning", - "settings.terminal.warning_help": "When enabled, the warning dialog will not be shown before terminating non-persistent terminal sessions.", + "settings.startup.metrics": "Włącz monitorowanie metryczne serwera", + "settings.startup.metrics_desc": "Po włączeniu, interfejs użytkownika Homebridge będzie zbierał i wyświetlał statystyki procesora i pamięci na stronie statusu.", + "settings.startup.session": "Limit czasu sesji", + "settings.startup.session_desc": "Liczba sekund zanim użytkownik zostanie wylogowany. Domyślnie 28800 (8 godzin).", + "settings.terminal.buffer_size": "Rozmiar bufora terminala", + "settings.terminal.buffer_size_help": "Ilość danych wyjściowych terminala do zachowania dla trwałych sesji. Większe wartości zużywają więcej pamięci.", + "settings.terminal.log_max": "Maksymalny rozmiar loga", + "settings.terminal.log_max_desc": "Maksymalny rozmiar loga (bajty). Ustaw na -1, aby wyłączyć obcinanie dziennika.", + "settings.terminal.log_truncate": "Rozmiar obcinania loga", + "settings.terminal.log_truncate_desc": "Rozmiar (bajty) do obcięcia loga po przekroczeniu maksymalnego rozmiaru określonego powyżej.", + "settings.terminal.persistence": "Trwałość sesji terminala", + "settings.terminal.persistence_confirm_message": "Wyłączenie trwałości sesji terminala zakończy bieżącą sesję terminala.", + "settings.terminal.persistence_confirm_title": "Wyłącz trwałość sesji terminala", + "settings.terminal.persistence_help": "Po włączeniu, sesje terminala będą się utrzymywać podczas nawigacji i można je wznowić po powrocie do strony terminala (lub widżetu strony statusu). Sesje terminala są współdzielone między użytkownikami administratora Homebridge UI.", + "settings.terminal.warning": "Ukryj ostrzeżenie o zakończeniu terminala", + "settings.terminal.warning_help": "Po włączeniu okno dialogowe z ostrzeżeniem nie zostanie wyświetlone przed zakończeniem nietrwałych sesji terminala.", "settings.title_startup_options": "Opcje specjalne", "settings.unpair_bridge.load_error": "Nie można było załadować sparowanych mostków.", "setup.button_get_started": "Rozpocznij", "setup.create_account": "Utwórz konto", - "setup.intro": "If you are setting up for the first time, or if you just need to reset the password for your existing Homebridge setup, then choose Get Started.", + "setup.intro": "Jeśli konfigurujesz po raz pierwszy lub po prostu chcesz zresetować hasło do istniejącej konfiguracji Homebridge, wybierz Rozpocznij.", "setup.welcome_to_homebridge": "Witaj w Homebridge", - "setup_wizard_complete": "Restore Complete!", + "setup_wizard_complete": "Przywracanie zakończone!", "setup_wizard_complete_title": "Gratulacje!", "setup_wizard_completed": "Procedura została zakończona, możesz zacząć używać Homebridge.", - "setup_wizard_create_info": "Once Homebridge is set up, you can set up 2FA on your account, or disable the need for authentication altogether.", - "setup_wizard_page_title": "Setup Homebridge", + "setup_wizard_create_info": "Po skonfigurowaniu Homebridge możesz skonfigurować 2FA na swoim koncie lub całkowicie wyłączyć potrzebę uwierzytelniania.", + "setup_wizard_page_title": "Konfiguracja Homebridge", "setup_wizard_restore": "Przywróć z backupu", - "setup_wizard_restoring": "Restoring Backup...", - "setup_wizard_starting": "Starting Homebridge...", + "setup_wizard_restoring": "Przywracanie backupu...", + "setup_wizard_starting": "Uruchamianie Homebridge...", "status.code_scan": "Zeskanuj aby dodać do HomeKit", "status.cpu.load": "Obciążenie", "status.cpu.temp": "Temperatura", @@ -559,16 +559,16 @@ "status.network.received_per_second": "Odebrano", "status.network.sent_per_second": "Wysłano", "status.network.title_network": "Aktywność sieci", - "status.readiness.node_no": "Your version of Node.js is not compatible with {{ app }}.", - "status.readiness.node_yes": "Your version of Node.js is compatible with {{ app }}.", - "status.readiness.title": "{{ app }} Readiness", + "status.readiness.node_no": "Twoja wersja Node.js nie jest kompatybilna z {{ app }}.", + "status.readiness.node_yes": "Twoja wersja Node.js jest kompatybilna z {{ app }}.", + "status.readiness.title": "{{ app }} gotowość", "status.services.label_not_running": "Nieuruchomiony", "status.services.label_running": "Uruchomiony", - "status.services.updates": "Update Information", + "status.services.updates": "Aktualizacje", "status.uptime.title_uptime": "Czas pracy", "status.widget.accessories.choose_accessories": "Wybierz to akcesorium, aby wyświetlić go jako widżet.", - "status.widget.account_1": "The widget layout is shared among all Homebridge UI users.", - "status.widget.account_2": "Admin users can modify the layout, while non-admin users cannot make changes.", + "status.widget.account_1": "Układ widżetu jest współdzielony dla wszystkich użytkowników interfejsu użytkownika Homebridge.", + "status.widget.account_2": "Administratorzy mogą modyfikować układ, podczas gdy użytkownicy niebędący administratorami nie mogą wprowadzać zmian.", "status.widget.add.label_pairing_code": "Kod parowania", "status.widget.bridge.restart_error": "Nie udało się ponownie uruchomić mostu podrzędnego.", "status.widget.clock": "Zegar", @@ -576,24 +576,24 @@ "status.widget.clock_timeformat": "Format czasu", "status.widget.font_size": "Rozmiar czcionki", "status.widget.font_weight": "Grubość czcionki", - "status.widget.hide_node_info": "Hide Node.js Updates", - "status.widget.hide_npm": "Show npm Version", + "status.widget.hide_node_info": "Ukryj aktualizacje Node.js", + "status.widget.hide_npm": "Pokaż wersje npm", "status.widget.hide_on_mobile": "Ukryj na urządzeniach mobilnych", "status.widget.homebridge_logs": "Homebridge log", "status.widget.info": "Informacje o systemie", "status.widget.info.arch": "Arch.", "status.widget.info.config_path": "Ścieżka konfiguracji", "status.widget.info.docker": "Docker", - "status.widget.info.docker_update_message": "Updating the Docker container requires manually pulling the latest image and restarting the container. Homebridge does not perform this automatically. Refer to your Docker image's documentation for update instructions.", - "status.widget.info.docker_update_title": "Docker Container Update", + "status.widget.info.docker_update_message": "Aktualizacja kontenera Docker wymaga ręcznego wyciągnięcia najnowszego obrazu i ponownego uruchomienia kontenera. Homebridge nie wykonuje tego automatycznie. Zapoznaj się z dokumentacją obrazu Dockera, aby uzyskać instrukcje dotyczące aktualizacji.", + "status.widget.info.docker_update_title": "Aktualizacja kontenera Docker", "status.widget.info.hostname": "Nazwa hosta", "status.widget.info.ipv4": "IPv4", "status.widget.info.ipv6": "IPv6", "status.widget.info.no": "Nie", - "status.widget.info.node_unsupp": "Unsupported", + "status.widget.info.node_unsupp": "Niewspierane", "status.widget.info.node_unsupp_message": "Używasz wersji Node.js która nie jest oficjalnie wspierana przez Homebridge. Powinieneś użyć wersji oficjalnie wspieranej.", "status.widget.info.node_update_message": "Homebridge wymaga zainstalowania Node.js w systemie do działania. Od czasu do czasu trzeba zaktualizować Node.js, aby włączyć obsługę nowych funkcji. Homebridge (i zweryfikowane wtyczki) obsługują wszystkie aktualne wersje Active i Maintenance LTS Node.js.", - "status.widget.info.node_update_message_2": "For Docker/Synology users, the Node.js version is managed by the Docker image or Synology package. You can hide Node.js update information using the widget settings.", + "status.widget.info.node_update_message_2": "Dla użytkowników Docker/Synology, wersja Node.js jest zarządzana przez obraz Docker lub pakiet Synology. Możesz ukryć informacje o aktualizacji Node.js za pomocą ustawień widżetu.", "status.widget.info.nodejs_path": "Ścieżka Node.js", "status.widget.info.os": "System", "status.widget.info.plugin_path": "Ścieżka wtyczki", @@ -605,16 +605,16 @@ "status.widget.network.history_items": "Elementy historii", "status.widget.network.items": "elementy", "status.widget.network.network_interface": "Interfejs sieciowy", - "status.widget.network.none_selected": "Using Default", + "status.widget.network.none_selected": "Używaj domyślne", "status.widget.network.refresh_interval": "Częstotliwość odświeżania", "status.widget.network.seconds": "sekundy", "status.widget.qr_paired": "Sparowany", "status.widget.qr_unpaired": "Niesparowany", - "status.widget.show_hide": "Show/Hide Widgets", + "status.widget.show_hide": "Pokaż / ukryj widżety", "status.widget.title_manage_widget": "Ustawienia widżetu", - "status.widget.update_node_no": "{{ pluginName }} is not compatible with Node {{ nodeVersion }}.", - "status.widget.update_node_unknown": "The developer of {{ pluginName }} has not specified the Node version compatibility.", - "status.widget.update_node_yes": "{{ pluginName }} is compatible with Node {{ nodeVersion }}.", + "status.widget.update_node_no": "{{ pluginName }} nie jest kompatybilne z Node {{ nodeVersion }}.", + "status.widget.update_node_unknown": "Deweloper wtyczki {{ pluginName }} nie określił kompatybilności z tą wersją Node.", + "status.widget.update_node_yes": "{{ pluginName }} jest kompatybilne z Node {{ nodeVersion }}.", "status.widget.uptime.label_process": "Procesy", "status.widget.uptime.label_server": "Serwer", "status.widget.weather.label_config_required_help": "Proszę wybrać swoje miasto w ustawieniach widżetu.", @@ -641,7 +641,7 @@ "support.links.reddit_sub": "Reddit Homebridge to świetne miejsce aby podzielić się konfiguracją Homebridge i poprosić o pomoc.", "support.links.title": "Przydatne linki", "support.title": "Wsparcie", - "toast.no_auth": "Only administrators may access the requested page.", + "toast.no_auth": "Tylko administratorzy mogą uzyskać dostęp do żądanej strony.", "toast.title_error": "Błąd", "toast.title_success": "Powodzenie", "toast.title_warning": "Ostrzeżenie", @@ -663,12 +663,12 @@ "users.setup_2fa_enabled_success": "2FA zostało włączone.", "users.setup_2fa_enter_code": "Wprowadź kod z aplikacji uwierzytelniającej:", "users.setup_2fa_scan_qr_code": "Zeskanuj kod QR w aplikacji uwierzytelniającej:", - "users.setup_2fa_scan_qr_manual": "If you cannot scan the QR code, you can enter the following secret key manually:", + "users.setup_2fa_scan_qr_manual": "Jeśli nie możesz zeskanować kodu QR, możesz ręcznie wprowadzić następujący tajny klucz:", "users.setup_2fa_server_time_out": "Zegar serwera jest przesunięty o {{ timeDiffError }} ms. Dopuszczalne maksimum to +/-5000 ms.", "users.setup_2fa_warning": "Uwierzytelnianie dwuskładnikowe wymaga serwera Homebridge, aby mieć aktualny czas i datę w trakcie logowania. Jeśli twój server nie będzie w stanie utrzymać poprawnego czasu, może nie być możliwe włączenie 2FA lub może wystąpić ryzyko zablokowania interfejsu Config UI X.", - "users.support.acc_1": "There are two types of users that can access the Homebridge UI: admin and non-admin users. Admins can access and control everything available in the UI. Non-admin users have a read-only view of the following pages:", - "users.support.acc_2": "2FA can only be set up on admin accounts, and must do this via the users page logged in as themselves.", - "users.support.control": "can be controlled", + "users.support.acc_1": "Istnieją dwa typy użytkowników, którzy mogą uzyskać dostęp do interfejsu użytkownika Homebridge: użytkownicy administratora i osoby niebędące administratorem. Administratorzy mogą uzyskać dostęp i kontrolować wszystko, co jest dostępne w interfejsie użytkownika. Użytkownicy niebędący administratorami mają widok tylko do odczytu następujących stron:", + "users.support.acc_2": "2FA może być skonfigurowany tylko na kontach administratora i musi to zrobić za pośrednictwem strony użytkowników zalogowanych jako oni sami.", + "users.support.control": "może być kontrolowany", "users.title_add_user": "Dodaj użytkownika", "users.title_edit_user": "Edytuj użytkownika", "users.title_users": "Użytkownicy", From 5c5a854f6f154239c949b240b3fc4b3acc38c007 Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Sun, 3 Aug 2025 12:50:25 +0100 Subject: [PATCH 2/9] reduce font size in accessory label by 1px --- CHANGELOG.md | 13 +++++++++++++ ui/src/scss/components/accessories.scss | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bbe6b522..15c1c985c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/). +## v5.4.1 (Unreleased) + +### UI Changes + +- updates to the `pl.json` language file (#2522, #2523) (@mkz212) +- reduce font size in accessory label by 1px + +### Homebridge Dependencies + +- `@homebridge/hap-client` @ `v3.1.1` +- `@homebridge/node-pty-prebuilt-multiarch` @ `v0.13.1` +- `@homebridge/plugin-ui-utils` @ `v2.1.0` + ## v5.4.0 (2025-08-02) ### UI Changes diff --git a/ui/src/scss/components/accessories.scss b/ui/src/scss/components/accessories.scss index abb831d90..ff74406d1 100644 --- a/ui/src/scss/components/accessories.scss +++ b/ui/src/scss/components/accessories.scss @@ -111,7 +111,7 @@ } .accessory-label { - font-size: 15px; + font-size: 14px; font-weight: 300; margin-top: 4px; overflow: hidden; @@ -124,7 +124,7 @@ @media (max-width: 575px) { margin-top: 0; - font-size: 12px; + font-size: 11px; -webkit-line-clamp: 2; line-height: 1rem; max-height: 1rem * 2; From a3746db735114924da802b778bfa4ada434f1705 Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Sun, 3 Aug 2025 16:16:20 +0100 Subject: [PATCH 3/9] fix custom uis which use ui translation strings --- CHANGELOG.md | 4 ++++ .../manage-plugins/custom-plugins/custom-plugins.component.ts | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15c1c985c..b490fd428 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file. - updates to the `pl.json` language file (#2522, #2523) (@mkz212) - reduce font size in accessory label by 1px +### Other Changes + +- fix custom uis which use ui translation strings + ### Homebridge Dependencies - `@homebridge/hap-client` @ `v3.1.1` diff --git a/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts b/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts index b39448e15..c77e79d9e 100644 --- a/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts +++ b/ui/src/app/core/manage-plugins/custom-plugins/custom-plugins.component.ts @@ -268,7 +268,8 @@ export class CustomPluginsComponent implements OnInit, OnDestroy { break } case 'i18n.translations': { - this.requestResponse(e, this.$translate.instant(e.data.key, e.data.params)) + // eslint-disable-next-line ts/no-require-imports + this.requestResponse(e, require(`../../../../i18n/${this.$translate.getCurrentLang()}.json`)) break } case 'close': { From b67588851c863f69982b8bfe59ce15d731919a9f Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Sun, 3 Aug 2025 08:57:24 +0100 Subject: [PATCH 4/9] updates to the credits modal --- CHANGELOG.md | 1 + ui/src/app/modules/status/credits/credits.component.html | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b490fd428..2283ac5b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file. - updates to the `pl.json` language file (#2522, #2523) (@mkz212) - reduce font size in accessory label by 1px +- updates to the credits modal ### Other Changes diff --git a/ui/src/app/modules/status/credits/credits.component.html b/ui/src/app/modules/status/credits/credits.component.html index f48c8c10d..a2d52ad13 100644 --- a/ui/src/app/modules/status/credits/credits.component.html +++ b/ui/src/app/modules/status/credits/credits.component.html @@ -46,10 +46,8 @@
Translations
  • Homebridge UI translations are provided by the community, with special thanks to:
  • From e8b9fe2ccfbf85354c269a8856871c6074802b2e Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Mon, 4 Aug 2025 17:29:04 +0100 Subject: [PATCH 5/9] make red restart child bridge button on plugin log modal --- CHANGELOG.md | 1 + .../plugin-logs/plugin-logs.component.html | 22 +++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2283ac5b5..f7268810b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file. - updates to the `pl.json` language file (#2522, #2523) (@mkz212) - reduce font size in accessory label by 1px - updates to the credits modal +- make red restart child bridge button on plugin log modal ### Other Changes diff --git a/ui/src/app/core/manage-plugins/plugin-logs/plugin-logs.component.html b/ui/src/app/core/manage-plugins/plugin-logs/plugin-logs.component.html index 0014140b3..7edde7eae 100644 --- a/ui/src/app/core/manage-plugins/plugin-logs/plugin-logs.component.html +++ b/ui/src/app/core/manage-plugins/plugin-logs/plugin-logs.component.html @@ -28,34 +28,34 @@
    - @if (childBridges.length) { - } + @if (childBridges.length) { + }
    From 41ee95c9d436e2dc785dcc54527d14018c034f60 Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Sat, 2 Aug 2025 14:04:04 +0100 Subject: [PATCH 6/9] refreshed icons: stateless programmable switch --- CHANGELOG.md | 1 + ...ateless-programmable-switch.component.html | 12 +++++++-- ...ateless-programmable-switch.component.scss | 25 +++++++++++++++++++ ...stateless-programmable-switch.component.ts | 5 +++- ui/src/assets/hap-icons/humidity-sensor.svg | 25 ------------------- ui/src/assets/hap-icons/temperature.svg | 25 ------------------- .../stateless-programmable-switch.svg | 18 +++++++++++++ ui/src/i18n/bg.json | 1 + ui/src/i18n/ca.json | 1 + ui/src/i18n/cs.json | 1 + ui/src/i18n/de.json | 1 + ui/src/i18n/en.json | 1 + ui/src/i18n/es.json | 1 + ui/src/i18n/fi.json | 1 + ui/src/i18n/fr.json | 1 + ui/src/i18n/he.json | 1 + ui/src/i18n/hu.json | 1 + ui/src/i18n/id.json | 1 + ui/src/i18n/it.json | 1 + ui/src/i18n/ja.json | 1 + ui/src/i18n/ko.json | 1 + ui/src/i18n/mk.json | 1 + ui/src/i18n/nl.json | 1 + ui/src/i18n/no.json | 1 + ui/src/i18n/pl.json | 1 + ui/src/i18n/pt-BR.json | 1 + ui/src/i18n/pt.json | 1 + ui/src/i18n/ru.json | 1 + ui/src/i18n/sl.json | 1 + ui/src/i18n/sv.json | 1 + ui/src/i18n/th.json | 1 + ui/src/i18n/tr.json | 1 + ui/src/i18n/uk.json | 1 + ui/src/i18n/zh-CN.json | 1 + ui/src/i18n/zh-TW.json | 1 + 35 files changed, 86 insertions(+), 53 deletions(-) create mode 100644 ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.scss delete mode 100644 ui/src/assets/hap-icons/humidity-sensor.svg delete mode 100644 ui/src/assets/hap-icons/temperature.svg create mode 100644 ui/src/assets/service-icons/stateless-programmable-switch.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index f7268810b..b432921be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file. - reduce font size in accessory label by 1px - updates to the credits modal - make red restart child bridge button on plugin log modal +- refreshed icons: stateless programmable switch ### Other Changes diff --git a/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.html b/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.html index 1ef9e4b86..e57ca6354 100644 --- a/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.html +++ b/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.html @@ -1,10 +1,18 @@ -
    +
    {{ service.customName || service.serviceName }}
    +
    {{ 'accessories.control.stateless' | translate }}
    diff --git a/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.scss b/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.scss new file mode 100644 index 000000000..378963229 --- /dev/null +++ b/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.scss @@ -0,0 +1,25 @@ +::ng-deep { + .press-single { + svg { + .single { + fill: #1976d2 !important; + } + } + } + + .press-double { + svg { + .double { + fill: #1976d2 !important; + } + } + } + + .press-long { + svg { + .long { + fill: #1976d2 !important; + } + } + } +} diff --git a/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.ts b/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.ts index 3f2bb9acf..be7f47b03 100644 --- a/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.ts +++ b/ui/src/app/core/accessories/types/stateless-programmable-switch/stateless-programmable-switch.component.ts @@ -1,4 +1,6 @@ +import { NgClass } from '@angular/common' import { Component, Input } from '@angular/core' +import { TranslatePipe } from '@ngx-translate/core' import { InlineSVGDirective } from 'ng-inline-svg-2' import { ServiceTypeX } from '@/app/core/accessories/accessories.interfaces' @@ -6,8 +8,9 @@ import { ServiceTypeX } from '@/app/core/accessories/accessories.interfaces' @Component({ selector: 'app-stateless-programmable-switch', templateUrl: './stateless-programmable-switch.component.html', + styleUrls: ['./stateless-programmable-switch.component.scss'], standalone: true, - imports: [InlineSVGDirective], + imports: [InlineSVGDirective, NgClass, TranslatePipe], }) export class StatelessProgrammableSwitchComponent { @Input() public service: ServiceTypeX diff --git a/ui/src/assets/hap-icons/humidity-sensor.svg b/ui/src/assets/hap-icons/humidity-sensor.svg deleted file mode 100644 index b21f41c53..000000000 --- a/ui/src/assets/hap-icons/humidity-sensor.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - drop - Created with Sketch. - - - - - - - - - diff --git a/ui/src/assets/hap-icons/temperature.svg b/ui/src/assets/hap-icons/temperature.svg deleted file mode 100644 index e651f816b..000000000 --- a/ui/src/assets/hap-icons/temperature.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - temperature - Created with Sketch. - - - - - - - - - diff --git a/ui/src/assets/service-icons/stateless-programmable-switch.svg b/ui/src/assets/service-icons/stateless-programmable-switch.svg new file mode 100644 index 000000000..5f56725de --- /dev/null +++ b/ui/src/assets/service-icons/stateless-programmable-switch.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/ui/src/i18n/bg.json b/ui/src/i18n/bg.json index 94b81d1a6..83454b69d 100644 --- a/ui/src/i18n/bg.json +++ b/ui/src/i18n/bg.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Сила на звука", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Спряно", "accessories.control.target": "Цел", diff --git a/ui/src/i18n/ca.json b/ui/src/i18n/ca.json index c543aaef0..fc57f0c9f 100644 --- a/ui/src/i18n/ca.json +++ b/ui/src/i18n/ca.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volum", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Aturat", "accessories.control.target": "Objectiu", diff --git a/ui/src/i18n/cs.json b/ui/src/i18n/cs.json index 1d6be01dd..cbc2208f5 100644 --- a/ui/src/i18n/cs.json +++ b/ui/src/i18n/cs.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Hlasitost", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Zastaveno", "accessories.control.target": "Cíl", diff --git a/ui/src/i18n/de.json b/ui/src/i18n/de.json index 0604bf9b6..cb8776de9 100644 --- a/ui/src/i18n/de.json +++ b/ui/src/i18n/de.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Lautstärke", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Gestoppt", "accessories.control.target": "Ziel", diff --git a/ui/src/i18n/en.json b/ui/src/i18n/en.json index a9da0c577..8af3596f0 100644 --- a/ui/src/i18n/en.json +++ b/ui/src/i18n/en.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volume", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Stopped", "accessories.control.target": "Target", diff --git a/ui/src/i18n/es.json b/ui/src/i18n/es.json index a5d45bae1..1a8db7c30 100644 --- a/ui/src/i18n/es.json +++ b/ui/src/i18n/es.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volumen", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Detenido", "accessories.control.target": "Objetivo", diff --git a/ui/src/i18n/fi.json b/ui/src/i18n/fi.json index c3d024aa8..b3ada88fa 100644 --- a/ui/src/i18n/fi.json +++ b/ui/src/i18n/fi.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Äänenvoimakkuus", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Pysäytetty", "accessories.control.target": "Kohde", diff --git a/ui/src/i18n/fr.json b/ui/src/i18n/fr.json index 2111b2585..9cd62b5ba 100644 --- a/ui/src/i18n/fr.json +++ b/ui/src/i18n/fr.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volume", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Arrêté", "accessories.control.target": "Cible", diff --git a/ui/src/i18n/he.json b/ui/src/i18n/he.json index 02304844f..00b9cff9e 100644 --- a/ui/src/i18n/he.json +++ b/ui/src/i18n/he.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "הגדר משך זמן", "accessories.control.speaker": "רמקול", "accessories.control.speaker_volume": "ווליום", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "עצור", "accessories.control.stopped": "עצור", "accessories.control.target": "מטרה", diff --git a/ui/src/i18n/hu.json b/ui/src/i18n/hu.json index 97cf3744d..03b699a2f 100644 --- a/ui/src/i18n/hu.json +++ b/ui/src/i18n/hu.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Hangerő", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Stopped", "accessories.control.target": "Target", diff --git a/ui/src/i18n/id.json b/ui/src/i18n/id.json index 95e833a82..289efcf22 100644 --- a/ui/src/i18n/id.json +++ b/ui/src/i18n/id.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volume", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Terhenti", "accessories.control.target": "Target", diff --git a/ui/src/i18n/it.json b/ui/src/i18n/it.json index 961263e65..8757c2ae0 100644 --- a/ui/src/i18n/it.json +++ b/ui/src/i18n/it.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volume", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Fermato", "accessories.control.target": "Obiettivo", diff --git a/ui/src/i18n/ja.json b/ui/src/i18n/ja.json index e39714700..2a543fe2d 100644 --- a/ui/src/i18n/ja.json +++ b/ui/src/i18n/ja.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "ボリューム", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "停止済み", "accessories.control.target": "目標", diff --git a/ui/src/i18n/ko.json b/ui/src/i18n/ko.json index 365d24777..eccac61d7 100644 --- a/ui/src/i18n/ko.json +++ b/ui/src/i18n/ko.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "볼륨", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "정지", "accessories.control.target": "대상", diff --git a/ui/src/i18n/mk.json b/ui/src/i18n/mk.json index 261d7239e..6f9a9e244 100644 --- a/ui/src/i18n/mk.json +++ b/ui/src/i18n/mk.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Јачина на звук", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Стопирано", "accessories.control.target": "Цел", diff --git a/ui/src/i18n/nl.json b/ui/src/i18n/nl.json index 334ad61cc..cffdcd409 100644 --- a/ui/src/i18n/nl.json +++ b/ui/src/i18n/nl.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Stel Duur In", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volume", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Gestopt", "accessories.control.target": "Doel", diff --git a/ui/src/i18n/no.json b/ui/src/i18n/no.json index f9fcc64c4..74f192fc2 100644 --- a/ui/src/i18n/no.json +++ b/ui/src/i18n/no.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volum", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "stoppet", "accessories.control.target": "Mål", diff --git a/ui/src/i18n/pl.json b/ui/src/i18n/pl.json index 5ba92723d..816d8709c 100644 --- a/ui/src/i18n/pl.json +++ b/ui/src/i18n/pl.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Ustaw czas trwania", "accessories.control.speaker": "Głośnik", "accessories.control.speaker_volume": "Głośność", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Zatrzymano", "accessories.control.target": "Cel", diff --git a/ui/src/i18n/pt-BR.json b/ui/src/i18n/pt-BR.json index bc13b65eb..6ccae31d3 100644 --- a/ui/src/i18n/pt-BR.json +++ b/ui/src/i18n/pt-BR.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volume", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Parado", "accessories.control.target": "Alvo", diff --git a/ui/src/i18n/pt.json b/ui/src/i18n/pt.json index e1051f3b2..5ffe7eb4c 100644 --- a/ui/src/i18n/pt.json +++ b/ui/src/i18n/pt.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volume", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Parado", "accessories.control.target": "Alvo", diff --git a/ui/src/i18n/ru.json b/ui/src/i18n/ru.json index 1ca36305e..e4431f35d 100644 --- a/ui/src/i18n/ru.json +++ b/ui/src/i18n/ru.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Громкость", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Остановлено", "accessories.control.target": "Целевая температура", diff --git a/ui/src/i18n/sl.json b/ui/src/i18n/sl.json index 042f3e98d..9a91c8b47 100644 --- a/ui/src/i18n/sl.json +++ b/ui/src/i18n/sl.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Glas", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Ustavljeno", "accessories.control.target": "Cilj", diff --git a/ui/src/i18n/sv.json b/ui/src/i18n/sv.json index 37d5fd0ea..a9a8c9803 100644 --- a/ui/src/i18n/sv.json +++ b/ui/src/i18n/sv.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Volym", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Stoppad", "accessories.control.target": "Mål", diff --git a/ui/src/i18n/th.json b/ui/src/i18n/th.json index c785247de..617114c0a 100644 --- a/ui/src/i18n/th.json +++ b/ui/src/i18n/th.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "กำหนดระยะเวลา", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "ระดับเสียง", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "หยุดแล้ว", "accessories.control.target": "เป้าหมาย", diff --git a/ui/src/i18n/tr.json b/ui/src/i18n/tr.json index 92e98cb4c..882133308 100644 --- a/ui/src/i18n/tr.json +++ b/ui/src/i18n/tr.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Ses Seviyesi", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Durdu", "accessories.control.target": "Hedef", diff --git a/ui/src/i18n/uk.json b/ui/src/i18n/uk.json index 7dc67a8de..2275cf522 100644 --- a/ui/src/i18n/uk.json +++ b/ui/src/i18n/uk.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Встановити тривалість", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "Гучність", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "Зупинено", "accessories.control.target": "Ціль", diff --git a/ui/src/i18n/zh-CN.json b/ui/src/i18n/zh-CN.json index 076765b9c..81d705e2e 100644 --- a/ui/src/i18n/zh-CN.json +++ b/ui/src/i18n/zh-CN.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "音量", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "已停止", "accessories.control.target": "目标", diff --git a/ui/src/i18n/zh-TW.json b/ui/src/i18n/zh-TW.json index fc795c5e7..78da098bd 100644 --- a/ui/src/i18n/zh-TW.json +++ b/ui/src/i18n/zh-TW.json @@ -65,6 +65,7 @@ "accessories.control.set_duration": "Set Duration", "accessories.control.speaker": "Speaker", "accessories.control.speaker_volume": "音量", + "accessories.control.stateless": "Stateless", "accessories.control.stop": "Stop", "accessories.control.stopped": "已停止", "accessories.control.target": "目標", From 6727182db6630fe945d90f8ddd2b2377b15feb09 Mon Sep 17 00:00:00 2001 From: Ben <43026681+bwp91@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:53:39 +0100 Subject: [PATCH 7/9] v5.4.1 --- CHANGELOG.md | 2 +- package-lock.json | 946 +++++++++++++++++-------------------------- package.json | 6 +- ui/package-lock.json | 34 +- ui/package.json | 2 +- 5 files changed, 388 insertions(+), 602 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b432921be..a9c320697 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/). -## v5.4.1 (Unreleased) +## v5.4.1 (2025-08-05) ### UI Changes diff --git a/package-lock.json b/package-lock.json index c48f390fc..cbcc92ea3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "homebridge-config-ui-x", - "version": "5.4.0", + "version": "5.4.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "homebridge-config-ui-x", - "version": "5.4.0", + "version": "5.4.1", "funding": [ { "type": "github", @@ -40,7 +40,7 @@ "commander": "14.0.0", "dayjs": "1.11.13", "fastify": "5.4.0", - "fs-extra": "11.3.0", + "fs-extra": "11.3.1", "jsonwebtoken": "9.0.2", "lodash": "4.17.21", "node-cache": "5.1.2", @@ -68,7 +68,7 @@ "@prettier/plugin-xml": "^3.4.2", "@types/fs-extra": "^11.0.4", "@types/lodash": "^4.17.20", - "@types/node": "^24.1.0", + "@types/node": "^24.2.0", "@types/node-schedule": "^2.1.8", "@types/passport-jwt": "^4.0.1", "@types/semver": "^7.7.0", @@ -227,273 +227,6 @@ } } }, - "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz", - "integrity": "sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/type-utils": "8.38.0", - "@typescript-eslint/utils": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.38.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/parser": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.38.0.tgz", - "integrity": "sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/project-service": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", - "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.38.0", - "@typescript-eslint/types": "^8.38.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", - "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/type-utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz", - "integrity": "sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0", - "@typescript-eslint/utils": "8.38.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", - "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.38.0", - "@typescript-eslint/tsconfig-utils": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", - "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@antfu/eslint-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@antfu/eslint-config/node_modules/eslint-plugin-unused-imports": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz", - "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", - "eslint": "^9.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } - } - }, - "node_modules/@antfu/eslint-config/node_modules/eslint-plugin-vue": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.4.0.tgz", - "integrity": "sha512-K6tP0dW8FJVZLQxa2S7LcE1lLw3X8VvB3t887Q6CLrFVxHYBXGANbXvwNzYIu6Ughx1bSJ5BDT0YB3ybPT39lw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "vue-eslint-parser": "^10.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/parser": { - "optional": true - } - } - }, - "node_modules/@antfu/eslint-config/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@antfu/eslint-config/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@antfu/eslint-config/node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/@antfu/install-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", @@ -1191,6 +924,32 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/config-helpers": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", @@ -1240,6 +999,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -1254,6 +1025,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { "version": "9.32.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz", @@ -3076,12 +2861,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", - "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.2.0.tgz", + "integrity": "sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==", "license": "MIT", "dependencies": { - "undici-types": "~7.8.0" + "undici-types": "~7.10.0" } }, "node_modules/@types/node-schedule": { @@ -3207,15 +2992,22 @@ "integrity": "sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==", "license": "MIT" }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz", - "integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.39.0.tgz", + "integrity": "sha512-bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2Rw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.39.0", + "@typescript-eslint/type-utils": "8.39.0", + "@typescript-eslint/utils": "8.39.0", + "@typescript-eslint/visitor-keys": "8.39.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3223,31 +3015,58 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.39.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", - "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.39.0.tgz", + "integrity": "sha512-g3WpVQHngx0aLXn6kfIYCZxM6rRJlWzEkVpqEFLT3SgEDsp9cpCbxxgwnE504q4H+ruSDh/VGS6nqZIDynP+vg==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.39.0", + "@typescript-eslint/types": "8.39.0", + "@typescript-eslint/typescript-estree": "8.39.0", + "@typescript-eslint/visitor-keys": "8.39.0", + "debug": "^4.3.4" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz", - "integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.39.0.tgz", + "integrity": "sha512-CTzJqaSq30V/Z2Og9jogzZt8lJRR5TKlAdXmWgdu4hgcC9Kww5flQ+xFvMxIBWVNdxJO7OifgdOK4PokMIWPew==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.38.0", - "eslint-visitor-keys": "^4.2.1" + "@typescript-eslint/tsconfig-utils": "^8.39.0", + "@typescript-eslint/types": "^8.39.0", + "debug": "^4.3.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3255,76 +3074,58 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@vitest/coverage-v8": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", - "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.39.0.tgz", + "integrity": "sha512-8QOzff9UKxOh6npZQ/4FQu4mjdOCGSdO3p44ww0hk8Vu+IGbg0tB/H1LcTARRDzGCC8pDGbh2rissBuuoPgH8A==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@bcoe/v8-coverage": "^1.0.2", - "ast-v8-to-istanbul": "^0.3.3", - "debug": "^4.4.1", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.6", - "istanbul-reports": "^3.1.7", - "magic-string": "^0.30.17", - "magicast": "^0.3.5", - "std-env": "^3.9.0", - "test-exclude": "^7.0.1", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@typescript-eslint/types": "8.39.0", + "@typescript-eslint/visitor-keys": "8.39.0" }, - "peerDependencies": { - "@vitest/browser": "3.2.4", - "vitest": "3.2.4" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "@vitest/browser": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vitest/eslint-plugin": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.3.4.tgz", - "integrity": "sha512-EOg8d0jn3BAiKnR55WkFxmxfWA3nmzrbIIuOXyTe6A72duryNgyU+bdBEauA97Aab3ho9kLmAwgPX63Ckj4QEg==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.39.0.tgz", + "integrity": "sha512-Fd3/QjmFV2sKmvv3Mrj8r6N8CryYiCS8Wdb/6/rgOXAWGcFuc+VkQuG28uk/4kVNVZBQuuDHEDUpo/pQ32zsIQ==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^8.24.1" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "eslint": ">= 8.57.0", - "typescript": ">= 5.0.0", - "vitest": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vitest": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@vitest/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", - "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.39.0.tgz", + "integrity": "sha512-6B3z0c1DXVT2vYA9+z9axjtc09rqKUPRmijD5m9iv8iQpHBRYRMBcgxSiKTZKm6FwWw1/cI4v6em35OsKCiN5Q==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0" + "@typescript-eslint/types": "8.39.0", + "@typescript-eslint/typescript-estree": "8.39.0", + "@typescript-eslint/utils": "8.39.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3335,20 +3136,34 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@vitest/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", - "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", + "node_modules/@typescript-eslint/types": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.39.0.tgz", + "integrity": "sha512-ArDdaOllnCj3yn/lzKn9s0pBQYmmyme/v1HbGIGB0GB/knFI3fWMHloC+oYTJW46tVbYnGKTMDK4ah1sC2v0Kg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.0.tgz", + "integrity": "sha512-ndWdiflRMvfIgQRpckQQLiB5qAKQ7w++V4LlCHwp62eym1HLB/kw7D9f2e8ytONls/jt89TEasgvb+VwnRprsw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.38.0", - "@typescript-eslint/tsconfig-utils": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", + "@typescript-eslint/project-service": "8.39.0", + "@typescript-eslint/tsconfig-utils": "8.39.0", + "@typescript-eslint/types": "8.39.0", + "@typescript-eslint/visitor-keys": "8.39.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3364,19 +3179,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@vitest/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/project-service": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", - "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", + "node_modules/@typescript-eslint/utils": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.39.0.tgz", + "integrity": "sha512-4GVSvNA0Vx1Ktwvf4sFE+exxJ3QGUorQG1/A5mRfRNZtkBT2xrA/BCO2H0eALx/PnvCS6/vmYwRdDA41EoffkQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.38.0", - "@typescript-eslint/types": "^8.38.0", - "debug": "^4.3.4" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.39.0", + "@typescript-eslint/types": "8.39.0", + "@typescript-eslint/typescript-estree": "8.39.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3386,50 +3202,83 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@vitest/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", - "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.39.0.tgz", + "integrity": "sha512-ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.39.0", + "eslint-visitor-keys": "^4.2.1" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@vitest/eslint-plugin/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/@vitest/coverage-v8": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, - "node_modules/@vitest/eslint-plugin/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@vitest/eslint-plugin": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.3.4.tgz", + "integrity": "sha512-EOg8d0jn3BAiKnR55WkFxmxfWA3nmzrbIIuOXyTe6A72duryNgyU+bdBEauA97Aab3ho9kLmAwgPX63Ckj4QEg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@typescript-eslint/utils": "^8.24.1" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "peerDependencies": { + "eslint": ">= 8.57.0", + "typescript": ">= 5.0.0", + "vitest": "*" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vitest": { + "optional": true + } } }, "node_modules/@vitest/expect": { @@ -4049,13 +3898,13 @@ } }, "node_modules/ast-v8-to-istanbul": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", - "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.4.tgz", + "integrity": "sha512-cxrAnZNLBnQwBPByK4CeDaw5sWZtMilJE/Q3iDA0aamgaIVNDF9T6K2/8DfYDZEejZ2jNnDrG9m8MY72HFd0KA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", + "@jridgewell/trace-mapping": "^0.3.29", "estree-walker": "^3.0.3", "js-tokens": "^9.0.1" } @@ -4196,14 +4045,13 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -4800,9 +4648,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.44.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz", - "integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==", + "version": "3.45.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.0.tgz", + "integrity": "sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==", "dev": true, "license": "MIT", "dependencies": { @@ -5108,9 +4956,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.194", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.194.tgz", - "integrity": "sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==", + "version": "1.5.195", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.195.tgz", + "integrity": "sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg==", "dev": true, "license": "ISC" }, @@ -5777,139 +5625,6 @@ "eslint": ">=8.45.0" } }, - "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/project-service": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", - "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.38.0", - "@typescript-eslint/types": "^8.38.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", - "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", - "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.38.0", - "@typescript-eslint/tsconfig-utils": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/eslint-plugin-perfectionist/node_modules/@typescript-eslint/utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", - "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/eslint-plugin-perfectionist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/eslint-plugin-perfectionist/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint-plugin-perfectionist/node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/eslint-plugin-pnpm": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-pnpm/-/eslint-plugin-pnpm-1.1.0.tgz", @@ -5939,9 +5654,9 @@ } }, "node_modules/eslint-plugin-regexp": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.9.0.tgz", - "integrity": "sha512-9WqJMnOq8VlE/cK+YAo9C9YHhkOtcEtEk9d12a+H7OSZFwlpI6stiHmYPGa2VE0QhTzodJyhlyprUaXDZLgHBw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.9.1.tgz", + "integrity": "sha512-JwK6glV/aoYDxvXcrvMQbw/pByBewZwqXVSBzzjot3GxSbmjDYuWU4LWiLdBO8JKi4o8A1+rygO6JWRBg4qAQQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6018,6 +5733,50 @@ "eslint": ">=9.29.0" } }, + "node_modules/eslint-plugin-unused-imports": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz", + "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", + "eslint": "^9.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.4.0.tgz", + "integrity": "sha512-K6tP0dW8FJVZLQxa2S7LcE1lLw3X8VvB3t887Q6CLrFVxHYBXGANbXvwNzYIu6Ughx1bSJ5BDT0YB3ybPT39lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "vue-eslint-parser": "^10.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/parser": { + "optional": true + } + } + }, "node_modules/eslint-plugin-yml": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.18.0.tgz", @@ -6085,6 +5844,32 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -6625,9 +6410,9 @@ "license": "MIT" }, "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", + "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -7712,9 +7497,9 @@ } }, "node_modules/log-symbols/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.5.0.tgz", + "integrity": "sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -8808,16 +8593,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -9067,6 +8855,17 @@ "url": "https://opencollective.com/nodemon" } }, + "node_modules/nodemon/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/nodemon/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -9077,6 +8876,19 @@ "node": ">=4" } }, + "node_modules/nodemon/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/nodemon/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -9207,9 +9019,9 @@ } }, "node_modules/ora/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.5.0.tgz", + "integrity": "sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -11054,16 +10866,6 @@ "node": ">=18" } }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/test-exclude/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -11108,22 +10910,6 @@ "dev": true, "license": "ISC" }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/test-exclude/node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", @@ -11532,9 +11318,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", - "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", "license": "MIT" }, "node_modules/unist-util-is": { @@ -12229,9 +12015,9 @@ } }, "node_modules/yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true, "license": "ISC", "bin": { diff --git a/package.json b/package.json index 851038259..0da72311f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "homebridge-config-ui-x", "displayName": "Homebridge UI", - "version": "5.4.0", + "version": "5.4.1", "description": "A web based management, configuration and control platform for Homebridge.", "author": "oznu ", "license": "MIT", @@ -99,7 +99,7 @@ "commander": "14.0.0", "dayjs": "1.11.13", "fastify": "5.4.0", - "fs-extra": "11.3.0", + "fs-extra": "11.3.1", "jsonwebtoken": "9.0.2", "lodash": "4.17.21", "node-cache": "5.1.2", @@ -124,7 +124,7 @@ "@prettier/plugin-xml": "^3.4.2", "@types/fs-extra": "^11.0.4", "@types/lodash": "^4.17.20", - "@types/node": "^24.1.0", + "@types/node": "^24.2.0", "@types/node-schedule": "^2.1.8", "@types/passport-jwt": "^4.0.1", "@types/semver": "^7.7.0", diff --git a/ui/package-lock.json b/ui/package-lock.json index 66ae5d5df..8dead5225 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -64,7 +64,7 @@ "@types/emoji-js": "^3.5.2", "@types/file-saver": "^2.0.7", "@types/lodash-es": "^4.17.12", - "@types/node": "^24.1.0", + "@types/node": "^24.2.0", "@types/qrcode": "^1.5.5", "@types/semver": "^7.7.0", "he": "^1.2.0", @@ -3790,13 +3790,13 @@ } }, "node_modules/@types/node": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", - "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.2.0.tgz", + "integrity": "sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.8.0" + "undici-types": "~7.10.0" } }, "node_modules/@types/qrcode": { @@ -4405,9 +4405,9 @@ "license": "CC-BY-4.0" }, "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.5.0.tgz", + "integrity": "sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==", "dev": true, "license": "MIT", "engines": { @@ -4961,9 +4961,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.194", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.194.tgz", - "integrity": "sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==", + "version": "1.5.195", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.195.tgz", + "integrity": "sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg==", "license": "ISC" }, "node_modules/emoji-datasource": { @@ -9308,9 +9308,9 @@ } }, "node_modules/undici-types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", - "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", "dev": true, "license": "MIT" }, @@ -9804,9 +9804,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true, "license": "ISC", "bin": { diff --git a/ui/package.json b/ui/package.json index 5a6d47f41..008964581 100644 --- a/ui/package.json +++ b/ui/package.json @@ -66,7 +66,7 @@ "@types/emoji-js": "^3.5.2", "@types/file-saver": "^2.0.7", "@types/lodash-es": "^4.17.12", - "@types/node": "^24.1.0", + "@types/node": "^24.2.0", "@types/qrcode": "^1.5.5", "@types/semver": "^7.7.0", "he": "^1.2.0", From 40162ba57d1605c89f10f52ed02871ac5e9fb1da Mon Sep 17 00:00:00 2001 From: Suthep Yonphimai Date: Sat, 9 Aug 2025 01:39:19 +0700 Subject: [PATCH 8/9] updates to the `th.json` language file (#2528) --- ui/src/i18n/th.json | 130 ++++++++++++++++++++++---------------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/ui/src/i18n/th.json b/ui/src/i18n/th.json index 617114c0a..691085939 100644 --- a/ui/src/i18n/th.json +++ b/ui/src/i18n/th.json @@ -29,44 +29,44 @@ "accessories.control.default_room": "ห้องเริ่มต้น", "accessories.control.dehumidify": "ลดความชื้น", "accessories.control.detected": "ตรวจพบ", - "accessories.control.doorbell": "Doorbell", + "accessories.control.doorbell": "กริ่งประตู", "accessories.control.drag_here": "ลากมาที่นี่", - "accessories.control.filter_level": "Filter Life", + "accessories.control.filter_level": "อายุการใช้งานของตัวกรอง", "accessories.control.heat": "ความร้อน", "accessories.control.home": "บ้าน", "accessories.control.hue": "Hue", "accessories.control.humidify": "เพิ่มความชื้น", - "accessories.control.idle": "Idle", + "accessories.control.idle": "ว่าง", "accessories.control.input": "รายการอินพุต", "accessories.control.jammed": "ติดขัดอยู่", "accessories.control.lock_auto": "ตั้งเวลาในการล็อกอัตโนมัติ", "accessories.control.locked": "ล็อกแล้ว", "accessories.control.manual": "ปรับเอง", - "accessories.control.microphone": "Microphone", + "accessories.control.microphone": "ไมโครโฟน", "accessories.control.mode": "โหมด", "accessories.control.mute": "ปิดเสียง", "accessories.control.night": "กลางคืน", "accessories.control.not_detected": "ตรวจไม่พบ", "accessories.control.not_mute": "เปิด", - "accessories.control.obstructed": "Obstructed", + "accessories.control.obstructed": "กีดขวาง", "accessories.control.off": "ปิด", "accessories.control.on": "เปิด", "accessories.control.open": "เปิด", "accessories.control.opening": "กำลังเปิด", - "accessories.control.pause": "Pause", - "accessories.control.play": "Play", + "accessories.control.pause": "หยุดชั่วคราว", + "accessories.control.play": "เล่น", "accessories.control.replace": "แทนที่", "accessories.control.rotation_c_clockwise": "ทวนเข็มนาฬิกา", "accessories.control.rotation_clockwise": "ตามเข็มนาฬิกา", "accessories.control.rotation_direction": "ทิศทางการหมุน", "accessories.control.rotation_speed": "ความเร็วในการหมุน", "accessories.control.running": "กำลังเดินเครื่อง", - "accessories.control.saturation": "Saturation", + "accessories.control.saturation": "ความอิ่มตัว", "accessories.control.set_duration": "กำหนดระยะเวลา", - "accessories.control.speaker": "Speaker", + "accessories.control.speaker": "ลำโพง", "accessories.control.speaker_volume": "ระดับเสียง", - "accessories.control.stateless": "Stateless", - "accessories.control.stop": "Stop", + "accessories.control.stateless": "ไร้สถานะ", + "accessories.control.stop": "หยุด", "accessories.control.stopped": "หยุดแล้ว", "accessories.control.target": "เป้าหมาย", "accessories.control.target_auto": "เป้าหมายอัตโนมัติ", @@ -76,12 +76,12 @@ "accessories.control.unlocked": "ปลดล๊อคแล้ว", "accessories.control_disabled": "การควบคุมอุปกรณ์เสริม Homebridge ถูกปิดใช้งาน", "accessories.custom_name": "ชื่อที่กำหนดเอง", - "accessories.custom_type": "Custom Type", + "accessories.custom_type": "ประเภทที่กำหนดเอง", "accessories.hide_this_accessory": "ซ่อนอุปกรณ์เสริมนี้", "accessories.message_must_use_insecure_mode": "ในการควบคุมอุปกรณ์เสริมของคุณคุณต้องใช้ Homebridge โหมด ไม่ปลอดภัย {{ link }}", "accessories.name": "ชื่อ", - "accessories.only_ui": "These settings are only for the Homebridge UI and will not be reflected in HomeKit.", - "accessories.only_ui_2": "These options are unique to your Homebridge UI account.", + "accessories.only_ui": "การตั้งค่าเหล่านี้มีไว้สำหรับ Homebridge UI เท่านั้นและจะไม่ปรากฏใน HomeKit", + "accessories.only_ui_2": "ตัวเลือกเหล่านี้มีเฉพาะสำหรับบัญชี Homebridge UI ของคุณ", "accessories.plugin": "ปลั๊กอิน", "accessories.room_name": "ชื่อห้อง", "accessories.service": "บริการ", @@ -89,11 +89,11 @@ "accessories.settings_link": "คุณสามารถเข้าถึงการตั้งค่า Homebridge ได้ตลอดเวลาจากเมนูหลักหรือคลิกที่ฟันเฟือง", "accessories.show_on_dashboard": "แสดงในวิดเจ็ตแดชบอร์ด", "accessories.support.acc_1": "อุปกรณ์เสริมอาจใช้เวลาสองสามนาทีจึงจะปรากฏบนหน้าจอนี้หลังจากรีสตาร์ท Homebridge หรือหลังจากเพิ่มเข้าไปแล้ว หากอุปกรณ์เสริมหายไปอย่างต่อเนื่อง ให้ลองเปลี่ยน mDNS AdvertiserS ในการตั้งค่า", - "accessories.support.acc_2": "You can change the type of certain accessories in the UI (like showing a switch as a heater). You can do this by clicking on the three bars that appear in the top-right corner of the accessory tile as you hover over it. A 'Custom Type' option will appear if the accessory supports this. Note this will not change the accessory in HomeKit (only a plugin can do this).", + "accessories.support.acc_2": "คุณสามารถเปลี่ยนประเภทของอุปกรณ์เสริมบางอย่างใน UI ได้ (เช่น แสดงสวิตช์เป็นเครื่องทำความร้อน) ทำได้โดยการคลิกที่แถบสามแถบที่ปรากฏที่มุมขวาบนของไทล์อุปกรณ์เสริมเมื่อคุณเลื่อนเมาส์ไปวางเหนือแถบนั้น ตัวเลือก 'ประเภทที่กำหนดเอง' จะปรากฏขึ้นหากอุปกรณ์เสริมรองรับการตั้งค่านี้ โปรดทราบว่าการตั้งค่านี้จะไม่เปลี่ยนแปลงอุปกรณ์เสริมใน HomeKit (เฉพาะปลั๊กอินเท่านั้นที่สามารถทำได้)", "accessories.support.rooms_1": "ห้องที่คุณสร้างที่นี่จะไม่ปรากฏใน HomeKit แต่มีไว้สำหรับการจัดระเบียบอุปกรณ์เสริมใน Homebridge UI เท่านั้น", "accessories.support.rooms_2": "หากต้องการเปลี่ยนชื่อห้องที่มีอยู่ ให้สร้างห้องใหม่โดยใช้ชื่อที่ต้องการ และย้ายอุปกรณ์เสริมไปยังห้องใหม่", "accessories.support.rooms_3": "หากต้องการลบห้องที่มีอยู่ ให้ย้ายอุปกรณ์เสริมทั้งหมดไปยังห้องอื่นและรีเฟรชหน้า", - "accessories.title_rooms": "Rooms", + "accessories.title_rooms": "ห้อง", "backup.backup_delete_failed": "การลบข้อมูลสำรองล้มเหลว ดูรายละเอียดใน Logs", "backup.backup_download_failed": "การดาวน์โหลดข้อมูลสำรองล้มเหลว", "backup.backup_exceeds_max_size": "การสำรองข้อมูล ({{ backupSize }}) เกินขนาดไฟล์กู้คืนสูงสุดที่ {{ maxBackupSizeText }}", @@ -101,10 +101,10 @@ "backup.backup_help_two": "ปลั๊กอินที่ไม่โฮสต์บน npm หรือปลั๊กอินที่ติดตั้งโดยตรงจาก GitHub จะไม่ได้รับการสำรองหรือกู้คืน", "backup.backup_now": "สำรองข้อมูลตอนนี้", "backup.backup_now_desc": "สร้างและดาวน์โหลดไฟล์สำรองข้อมูลที่อัปเดต", - "backup.backup_now_save_desc": "Generate an up-to-date backup file in your backup storage directory.", + "backup.backup_now_save_desc": "สร้างไฟล์สำรองข้อมูลที่อัปเดตในไดเร็กทอรีที่เก็บข้อมูลสำรองของคุณ", "backup.backup_restored": "กู้คืนที่เก็บข้อมูลสำรองแล้ว", "backup.backup_warning": "คลังข้อมูลสำรองมีข้อมูลที่ละเอียดอ่อนและไม่ควรแชร์กับผู้อื่น", - "backup.files_auto": "Stored Backup Files", + "backup.files_auto": "ไฟล์สำรองข้อมูลที่เก็บไว้", "backup.label_uploading": "กำลังอัปโหลด…", "backup.load_error": "ไม่สามารถโหลดการสำรองข้อมูลการกำหนดค่าได้", "backup.restore_failed": "กู้คืนไม่สำเร็จ", @@ -116,10 +116,10 @@ "backup.restore_warning": "การกู้คืนจากข้อมูลสำรองจะเขียนทับการกำหนดค่า Homebridge ปัจจุบันอย่างไม่สามารถย้อนกลับได้", "backup.scheduled_backup_disabled": "การสำรองข้อมูลตามกำหนดเวลาถูกปิดการใช้งานผ่านการกำหนดค่า", "backup.scheduled_backup_time": "การสำรองข้อมูลทั้งหมดของอินสแตนซ์ Homebridge จะถูกสร้างขึ้นโดยอัตโนมัติทุกวันที่ {{ backupTime }} และเก็บไว้สำหรับ {{ dayCount }} วัน", - "backup.settings_enable": "Enable Automated Backups", - "backup.settings_path": "Backup Storage Path", - "backup.settings_path_desc": "If you are changing this from the default, please ensure the directory exists and is writable by the Homebridge user.", - "backup.settings_title": "Backup Settings", + "backup.settings_enable": "เปิดใช้งานการสำรองข้อมูลอัตโนมัติ", + "backup.settings_path": "เส้นทางการจัดเก็บข้อมูลสำรอง", + "backup.settings_path_desc": "หากคุณกำลังเปลี่ยนแปลงสิ่งนี้จากค่าเริ่มต้น โปรดตรวจสอบให้แน่ใจว่าไดเร็กทอรีมีอยู่และผู้ใช้ Homebridge สามารถเขียนได้", + "backup.settings_title": "การตั้งค่าการสำรองข้อมูล", "backup.title_backup": "การสำรองข้อมูลและกู้คืน", "child_bridge.about": "Homebridge ช่วยให้คุณสามารถเรียกใช้แพลตฟอร์มปลั๊กอินหรืออุปกรณ์เสริมแยกจากบริดจ์ย่อยสิ่งนี้สามารถปรับปรุงการตอบสนองทั่วไปและความน่าเชื่อถือของ Homebridge {{ link }}", "child_bridge.bridge_connect": "เชื่อมต่อไปที่ HomeKit", @@ -152,28 +152,28 @@ "child_bridge.start_plural": "เริ่มการทำงานบริดจ์ย่อย", "child_bridge.stop": "หยุดการทำงานบริดจ์ย่อย", "child_bridge.stop_plural": "หยุดการทำงานบริดจ์ย่อย", - "common.labels.beta": "beta", - "common.labels.no_confirmation": "There is no confirmation when clicking the button, it will immediately perform the action.", + "common.labels.beta": "เบต้า", + "common.labels.no_confirmation": "ไม่มีการยืนยันเมื่อคลิกปุ่ม มันจะดำเนินการทันที", "common.phrases.are_you_sure": "คุณแน่ใจว่าต้องการดำเนินการต่อหรือไม่?", - "common.phrases.support": "Feel like there is something useful we could add here? Let us know on {{ github }} or {{ discord }}!", + "common.phrases.support": "รู้สึกว่ามีอะไรที่เป็นประโยชน์ที่เราสามารถเพิ่มตรงนี้ได้ไหม? บอกเราได้ที่ {{ github }} หรือ {{ discord }}!", "config.config_accessory_must_be_array": "อุปกรณ์เสริมต้องเป็นอาร์เรย์ []", "config.config_bridge_missing": "ไม่มีการตั้งค่าบริดจ์", "config.config_invalid_json": "Config มี JSON ที่ไม่ถูกต้อง", "config.config_platform_must_be_array": "แพลตฟอร์มต้องเป็นอาร์เรย์ []", - "config.config_saved": "Configuration Saved", + "config.config_saved": "บันทึกการกำหนดค่าแล้ว", "config.config_username_error": "ชื่อผู้ใช้บริดจ์ต้องเป็นอักขระเลขฐานสิบหกที่คั่นด้วยโคลอน 6 คู่ (A-F 0-9)", "config.error_blocks_objects": "บล็อก {{ type }} ทั้งหมดต้องเป็นวัตถุ", "config.error_blocks_type": "บล็อก {{ type }} ทั้งหมดต้องมีแอตทริบิวต์ {{ type }}", "config.error_string_array": "แต่ละรายการในอาร์เรย์ {{ key }} จะต้องเป็นสตริง", "config.error_string_type": "แอตทริบิวต์ {{ type }} จะต้องเป็นสตริง", "config.failed_to_save_config": "บันทึกการกำหนดค่าไม่สำเร็จ", - "config.no_restart": "A restart is not needed as no changes were made to the Homebridge configuration.", + "config.no_restart": "ไม่จำเป็นต้องรีสตาร์ท เนื่องจากไม่มีการเปลี่ยนแปลงใดๆ เกิดขึ้นกับการกำหนดค่า Homebridge", "config.restore.confirm": "คลิกบันทึกเพื่อยืนยันว่าคุณต้องการกู้คืนข้อมูลสำรองนี้", "config.restore.copy_to_editor": "คัดลอกไปที่เครื่องมือแก้ไข", - "config.restore.download": "Download your current configuration as a JSON file.", - "config.restore.help_1": "A backup of your config file is created each time it is updated from actions you take in the Homebridge UI.", - "config.restore.help_2": "You can restore a previous version of your config file by selecting it from the list below. You will be able to compare this version with your current config before deciding whether to restore it.", - "config.restore.title": "Config File Backup & Restore", + "config.restore.download": "ดาวน์โหลดการกำหนดค่าปัจจุบันของคุณเป็นไฟล์ JSON", + "config.restore.help_1": "ระบบจะสร้างข้อมูลสำรองของไฟล์ config ของคุณทุกครั้งที่มีการอัปเดตจากการดำเนินการที่คุณทำใน Homebridge UI", + "config.restore.help_2": "คุณสามารถกู้คืนไฟล์ config เวอร์ชันก่อนหน้าได้โดยเลือกจากรายการด้านล่าง คุณจะสามารถเปรียบเทียบเวอร์ชันนี้กับ config ปัจจุบันของคุณได้ก่อนตัดสินใจว่าจะกู้คืนหรือไม่", + "config.restore.title": "กำหนดค่าการสำรองและกู้คืนไฟล์", "config.restore.toast_backups_deleted": "ลบข้อมูลสำรองทั้งหมดแล้ว", "config.title_backup_loaded": "โหลดข้อมูลสำรองแล้ว", "form.button_allow": "อนุญาต", @@ -182,7 +182,7 @@ "form.button_close": "ปิด", "form.button_continue": "ดำเนินการต่อ", "form.button_delete": "ลบ", - "form.button_delete_all": "Delete All", + "form.button_delete_all": "ลบทั้งหมด", "form.button_disable": "ปิดการใช้งาน", "form.button_download": "ดาวน์โหลด", "form.button_edit": "แก้ไข", @@ -226,7 +226,7 @@ "menu.label_status": "สถานะ", "menu.linux.label_logs": "Logs", "menu.linux.label_restart_server": "รีสตาร์ทเซิร์ฟเวอร์", - "menu.linux.label_shutdown_modal": "Are you sure you want to shut down the operating system? You will need physical access to turn it back on.", + "menu.linux.label_shutdown_modal": "คุณแน่ใจหรือไม่ว่าต้องการปิดระบบปฏิบัติการ? คุณจะต้องเข้าถึงทางกายภาพเพื่อเปิดระบบอีกครั้ง", "menu.linux.label_shutdown_server": "ปิดเซิร์ฟเวอร์", "menu.linux.label_terminal": "เทอร์มินอล", "menu.reload": "โหลดซ้ำ", @@ -252,10 +252,10 @@ "platform.linux.server_taking_long_time": "เซิร์ฟเวอร์ใช้เวลานานในการกลับมาออนไลน์", "platform.linux.server_will_power_down": "เซิร์ฟเวอร์จะปิดการทำงานในไม่ช้า", "platform.linux.shutting_down_server": "กำลังปิดเซิร์ฟเวอร์", - "platform.terminal.terminate_message_1": "Navigating away from this page will terminate your current session, all foreground processes will be terminated.", - "platform.terminal.terminate_message_2": "To avoid this warning, enable Terminal Session Persistence from the settings page.", - "platform.terminal.terminate_title": "Session Termination", - "platform.terminal.terminate_unload": "Your terminal session will be terminated. Enable Terminal Session Persistence in Settings to prevent this.", + "platform.terminal.terminate_message_1": "การนำทางออกจากหน้านี้จะยุติเซสชันปัจจุบันของคุณ และกระบวนการเบื้องหน้าทั้งหมดจะถูกยุติลง", + "platform.terminal.terminate_message_2": "เพื่อหลีกเลี่ยงคำเตือนนี้ ให้เปิดใช้งาน การคงอยู่ของเซสชันเทอร์มินัล จากหน้าการตั้งค่า", + "platform.terminal.terminate_title": "การยุติเซสชัน", + "platform.terminal.terminate_unload": "เซสชันเทอร์มินัลของคุณจะถูกยกเลิก เปิดใช้งานการคงอยู่ของเซสชันเทอร์มินัลในการตั้งค่าเพื่อป้องกันปัญหานี้", "platform.version.restart_required": "Homebridge UI รุ่น{{ uiVersion }} ได้รับการติดตั้งแล้ว แต่บริการเซิร์ฟเวอร์ยังคงทำงานอยู่ รุ่น{{ serverVersion }}.", "platform.version.service_restart_required": "จำเป็นต้องรีสตาร์ทบริการ", "plugins.bridge.action_error": "ไม่สามารถสร้างบริดจ์ย่อย {{ action }} ได้", @@ -283,7 +283,7 @@ "plugins.donate.tile_donate_to": "บริจาคให้ {{ author }}", "plugins.enable.error": "ไม่สามารถเปิดใช้งานปลั๊กอินได้", "plugins.manage.all_versions": "ทุกเวอร์ชัน", - "plugins.manage.backup": "Download a backup before updating?", + "plugins.manage.backup": "ดาวน์โหลดข้อมูลสำรองก่อนการอัพเดต?", "plugins.manage.changelog": "บันทึกการเปลี่ยนแปลงฉบับเต็ม", "plugins.manage.changelog_none": "ไม่สามารถดึงบันทึกการเปลี่ยนแปลงได้ อาจเป็นไปได้ว่าปลั๊กอินนี้ไม่มีไฟล์ CHANGELOG.md", "plugins.manage.child_bridge_restart": "บริดจ์ย่อยเริ่มการทำงานใหม่ได้สำเร็จ", @@ -293,7 +293,7 @@ "plugins.manage.confirm_disable_accessory_2": "เมื่อคุณเปิดใช้งานปลั๊กอินอีกครั้ง อุปกรณ์เสริมจะปรากฏขึ้นใน Homebridge UI และ HomeKit อีกครั้ง อุปกรณ์เสริมจะสูญเสียข้อมูล HomeKit (เช่น ฉากและการทำงานอัตโนมัติที่เกี่ยวข้อง)", "plugins.manage.confirm_disable_platform_1": "อุปกรณ์เสริมใด ๆ ที่เปิดเผยโดยปลั๊กอินนี้จะถูกลบออกจากหน้าจออุปกรณ์เสริม Homebridge UI แต่ยังคงอยู่ใน HomeKit พร้อมป้าย 'ไม่มีการตอบสนอง'", "plugins.manage.confirm_disable_platform_2": "เมื่อคุณเปิดใช้งานปลั๊กอินอีกครั้ง อุปกรณ์เสริมจะปรากฏขึ้นใน Homebridge UI อีกครั้ง และสามารถควบคุมได้ใน HomeKit อีกครั้ง อุปกรณ์เสริมจะไม่สูญเสียข้อมูล HomeKit (เช่น ฉากและการทำงานอัตโนมัติที่เกี่ยวข้อง)", - "plugins.manage.confirm_disable_setting": "Your setting for {{ setting }} is currently {{ value }}, therefore:", + "plugins.manage.confirm_disable_setting": "การตั้งค่าของคุณสำหรับ {{ setting }} ปัจจุบันคือ {{ value }} ดังนั้น:", "plugins.manage.confirm_enable": "แน่ใจไหมว่าต้องการเปิดใช้งาน {{ pluginName }}?", "plugins.manage.disable": "ปิดการใช้งาน", "plugins.manage.enable": "เปิดการใช้งาน", @@ -349,14 +349,14 @@ "plugins.settings.message_manual_config_required": "ปลั๊กอินของเขาต้องได้รับการกำหนดค่าด้วยตนเองโดยใช้ Homebridge UI Config Editor", "plugins.settings.plugin_config_saved": "บันทึกการกำหนดค่าปลั๊กอินแล้ว", "plugins.settings.restart_required": "รีสตาร์ท Homebridge เพื่อใช้การเปลี่ยนแปลง", - "plugins.stats": "Plugin Statistics", - "plugins.stats_note": "Plugins cannot be installed from this page, this is provided just for interest.", + "plugins.stats": "สถิติปลั๊กอิน", + "plugins.stats_note": "ไม่สามารถติดตั้งปลั๊กอินจากหน้านี้ได้ หน้านี้ให้ไว้เพื่อประกอบการพิจารณาเท่านั้น", "plugins.status_disabled": "ปิดการใช้งาน", "plugins.status_installed": "ติดตั้งแล้ว", - "plugins.support.list_1": "Homebridge plugins are the building blocks of Homebridge, allowing you to add support for new accessories and platforms. Plugins add support for smart lights, cameras, TVs, etc, for brands that don't natively support HomeKit. For example, to bring your Ring doorbells and cameras into HomeKit, you can install the homebridge-ring plugin.", - "plugins.support.list_2": "Homebridge plugins are created by public contributors in the Homebridge community, and are not typically associated with the Homebridge maintainers, nor with the manufacturers of the accessories themselves. If you have a question about a specific plugin, you should let the plugin developer know via the plugin's GitHub page.", - "plugins.support.list_3": "There are currently over 4,700 plugins available for Homebridge, so you should be able to find plugins to suit your needs. If you are a Javascript/TypeScript developer (or want to take the opportunity to learn), you can also create your own plugin and share it with the Homebridge community. Check out the Support section for some handy links to get you started.", - "plugins.support.list_4": "Some plugins allow you to create 'virtual/dummy' accessories, which are accessories that do not have a physical counterpart. These can be used to create virtual accessories in HomeKit, such as virtual switches, lights, or sensors. Try searching for dummy or virtual in the search bar to find some examples.", + "plugins.support.list_1": "ปลั๊กอิน Homebridge คือองค์ประกอบสำคัญของ Homebridge ช่วยให้คุณสามารถเพิ่มการรองรับอุปกรณ์เสริมและแพลตฟอร์มใหม่ๆ ได้ ปลั๊กอินเหล่านี้รองรับไฟอัจฉริยะ กล้อง ทีวี และอื่นๆ สำหรับแบรนด์ที่ไม่รองรับ HomeKit โดยตรง ตัวอย่างเช่น หากต้องการนำกริ่งประตูและกล้อง Ring ของคุณมาใช้งานใน HomeKit คุณสามารถติดตั้งปลั๊กอิน homebridge-ring ได้", + "plugins.support.list_2": "ปลั๊กอิน Homebridge สร้างขึ้นโดยผู้สนับสนุนสาธารณะในชุมชน Homebridge และโดยทั่วไปจะไม่เกี่ยวข้องกับผู้ดูแลระบบ Homebridge หรือผู้ผลิตอุปกรณ์เสริมเอง หากคุณมีคำถามเกี่ยวกับปลั๊กอินใดโดยเฉพาะ โปรดแจ้งให้ผู้พัฒนาปลั๊กอินทราบผ่านหน้า GitHub ของปลั๊กอิน", + "plugins.support.list_3": "ปัจจุบันมีปลั๊กอินมากกว่า 4,700 รายการสำหรับ Homebridge คุณจึงน่าจะสามารถค้นหาปลั๊กอินที่ตรงกับความต้องการของคุณได้ หากคุณเป็นนักพัฒนา Javascript/TypeScript (หรือต้องการเรียนรู้) คุณสามารถสร้างปลั๊กอินของคุณเองและแบ่งปันกับชุมชน Homebridge ได้ ดูลิงก์ที่เป็นประโยชน์สำหรับการเริ่มต้นใช้งานในส่วนสนับสนุน", + "plugins.support.list_4": "ปลั๊กอินบางตัวช่วยให้คุณสร้างอุปกรณ์เสริมแบบ 'เสมือน/จำลอง' ได้ ซึ่งเป็นอุปกรณ์เสริมที่ไม่มีชิ้นส่วนทางกายภาพ ปลั๊กอินเหล่านี้สามารถใช้สร้างอุปกรณ์เสริมเสมือนใน HomeKit ได้ เช่น สวิตช์เสมือน ไฟ หรือเซ็นเซอร์ ลองค้นหาคำว่า dummy หรือ virtual ในแถบค้นหาเพื่อดูตัวอย่าง", "plugins.toast_failed_to_load_plugin_schema": "ไม่สามารถโหลดโครงร่างการกำหนดค่าปลั๊กอินได้", "plugins.toast_failed_to_load_plugins": "โหลดปลั๊กอินไม่สำเร็จ", "plugins.uninstall_bridge_error": "ไม่สามารถลบบริดจ์ย่อยได้", @@ -521,18 +521,18 @@ "settings.startup.metrics_desc": "เมื่อเปิดใช้งาน UI ของ Homebridge จะรวบรวมและแสดงสถิติ CPU และหน่วยความจำบนหน้าสถานะ", "settings.startup.session": "หมดเวลาเซสชัน", "settings.startup.session_desc": "จำนวนวินาทีก่อนที่ผู้ใช้จะออกจากระบบ UI ค่าเริ่มต้นคือ 8 ชั่วโมง", - "settings.terminal.buffer_size": "Terminal Buffer Character Size", - "settings.terminal.buffer_size_help": "Amount of terminal output to preserve for persistent sessions. Larger values use more memory.", - "settings.terminal.log_max": "Log ขนาดสูงสุดe", + "settings.terminal.buffer_size": "ขนาดอักขระบัฟเฟอร์เทอร์มินัล", + "settings.terminal.buffer_size_help": "ปริมาณเอาต์พุตเทอร์มินัลที่จะเก็บรักษาไว้สำหรับเซสชันถาวร ค่าที่มากขึ้นจะใช้หน่วยความจำมากขึ้น", + "settings.terminal.log_max": "Log ขนาดสูงสุด", "settings.terminal.log_max_desc": "ขนาด log สูงสุด (ไบต์) ตั้งค่าเป็น -1 เพื่อปิดการใช้งานการตัดทอนบันทึก", "settings.terminal.log_truncate": "ขนาดการตัดทอน Log", "settings.terminal.log_truncate_desc": "ขนาด (ไบต์) ที่จะตัดทอนบันทึกเมื่อเกินขนาดสูงสุดที่ระบุไว้ข้างต้น", - "settings.terminal.persistence": "Terminal Session Persistence", - "settings.terminal.persistence_confirm_message": "Disabling terminal session persistence will terminate your current terminal session.", - "settings.terminal.persistence_confirm_title": "Disable Terminal Session Persistence", - "settings.terminal.persistence_help": "When enabled, terminal sessions will persist when navigating away and can be resumed when returning to the terminal page (or status page widget). Terminal sessions are shared across Homebridge UI admin users.", - "settings.terminal.warning": "Hide Terminal Termination Warning", - "settings.terminal.warning_help": "When enabled, the warning dialog will not be shown before terminating non-persistent terminal sessions.", + "settings.terminal.persistence": "ความคงอยู่ของเซสชันเทอร์มินัล", + "settings.terminal.persistence_confirm_message": "การปิดใช้งานการคงอยู่ของเซสชันเทอร์มินัลจะยุติเซสชันเทอร์มินัลปัจจุบันของคุณ", + "settings.terminal.persistence_confirm_title": "ปิดใช้งานการคงอยู่ของเซสชันเทอร์มินัล", + "settings.terminal.persistence_help": "เมื่อเปิดใช้งาน เซสชันเทอร์มินัลจะยังคงอยู่เมื่อออกจากระบบ และสามารถกลับมาใช้งานได้เมื่อกลับมายังหน้าเทอร์มินัล (หรือวิดเจ็ตหน้าสถานะ) เซสชันเทอร์มินัลจะถูกแชร์ระหว่างผู้ใช้ผู้ดูแลระบบ Homebridge UI", + "settings.terminal.warning": "ซ่อนคำเตือนการสิ้นสุดเทอร์มินัล", + "settings.terminal.warning_help": "เมื่อเปิดใช้งาน กล่องโต้ตอบคำเตือนจะไม่ปรากฏก่อนที่จะยุติเซสชันเทอร์มินัลที่ไม่คงอยู่", "settings.title_startup_options": "ตัวเลือกการเริ่มต้น", "settings.unpair_bridge.load_error": "บริดจ์จับคู่ไม่สามารถโหลดได้", "setup.button_get_started": "เริ่ม", @@ -568,8 +568,8 @@ "status.services.updates": "อัปเดตข้อมูล", "status.uptime.title_uptime": "ระยะเวลาเปิดบริการ", "status.widget.accessories.choose_accessories": "เลือกอุปกรณ์เสริมที่จะแสดงในวิดเจ็ตนี้จากแท็บอุปกรณ์เสริม", - "status.widget.account_1": "The widget layout is shared among all Homebridge UI users.", - "status.widget.account_2": "Admin users can modify the layout, while non-admin users cannot make changes.", + "status.widget.account_1": "เค้าโครงวิดเจ็ตจะถูกแชร์ระหว่างผู้ใช้ Homebridge UI ทุกคน", + "status.widget.account_2": "ผู้ใช้ที่เป็นผู้ดูแลระบบสามารถปรับเปลี่ยนเค้าโครงได้ ในขณะที่ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบไม่สามารถทำการเปลี่ยนแปลงได้", "status.widget.add.label_pairing_code": "รหัสการจับคู่", "status.widget.bridge.restart_error": "ไม่สามารถรีสตาร์ทบริดจ์ย่อยได้", "status.widget.clock": "นาฬิกา", @@ -585,8 +585,8 @@ "status.widget.info.arch": "โค้ง", "status.widget.info.config_path": "เส้นทางกำหนดค่า", "status.widget.info.docker": "Docker", - "status.widget.info.docker_update_message": "Updating the Docker container requires manually pulling the latest image and restarting the container. Homebridge does not perform this automatically. Refer to your Docker image's documentation for update instructions.", - "status.widget.info.docker_update_title": "Docker Container Update", + "status.widget.info.docker_update_message": "การอัปเดตคอนเทนเนอร์ Docker จำเป็นต้องดึงอิมเมจล่าสุดด้วยตนเองและรีสตาร์ทคอนเทนเนอร์ Homebridge จะไม่ดำเนินการนี้โดยอัตโนมัติ โปรดดูเอกสารประกอบของอิมเมจ Docker ของคุณสำหรับคำแนะนำในการอัปเดต", + "status.widget.info.docker_update_title": "การอัปเดตคอนเทนเนอร์ Docker", "status.widget.info.hostname": "ชื่อโฮสต์", "status.widget.info.ipv4": "IPv4", "status.widget.info.ipv6": "IPv6", @@ -613,9 +613,9 @@ "status.widget.qr_unpaired": "ยังไม่ได้จับคู่", "status.widget.show_hide": "แสดง/ซ่อนวิดเจ็ต", "status.widget.title_manage_widget": "จัดการวิดเจ็ต", - "status.widget.update_node_no": "{{ pluginName }} is not compatible with Node {{ nodeVersion }}.", - "status.widget.update_node_unknown": "The developer of {{ pluginName }} has not specified the Node version compatibility.", - "status.widget.update_node_yes": "{{ pluginName }} is compatible with Node {{ nodeVersion }}.", + "status.widget.update_node_no": "{{ pluginName }} ไม่เข้ากันได้กับ Node {{ nodeVersion }}", + "status.widget.update_node_unknown": "นักพัฒนาของ {{ pluginName }} ไม่ได้ระบุความเข้ากันได้ของเวอร์ชัน Node", + "status.widget.update_node_yes": "{{ pluginName }} เข้ากันได้กับ Node {{ nodeVersion }}", "status.widget.uptime.label_process": "โปรเซส", "status.widget.uptime.label_server": "เซิร์ฟเวอร์", "status.widget.weather.label_config_required_help": "โปรดเลือกเมืองของคุณในการตั้งค่าวิดเจ็ต", @@ -664,12 +664,12 @@ "users.setup_2fa_enabled_success": "เปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยแล้ว", "users.setup_2fa_enter_code": "ป้อนรหัสจากแอปตรวจสอบสิทธิ์ของคุณ :", "users.setup_2fa_scan_qr_code": "สแกนโค้ด QR ด้านล่างด้วยแอพตรวจสอบสิทธิ์ของคุณ :", - "users.setup_2fa_scan_qr_manual": "If you cannot scan the QR code, you can enter the following secret key manually:", + "users.setup_2fa_scan_qr_manual": "หากคุณไม่สามารถสแกนรหัส QR ได้ คุณสามารถป้อนรหัสความลับต่อไปนี้ด้วยตนเอง:", "users.setup_2fa_server_time_out": "นาฬิกาเซิร์ฟเวอร์ของคุณมีเวลาแตกต่าง {{ timeDiffError }} มิลลิวินาที ค่าเวลาแตกต่างที่ยอมรับได้ไม่เกิน +/-5000 มิลลิวินาที", "users.setup_2fa_warning": "การรับรองความถูกต้องด้วยสองปัจจัยต้องการให้เซิร์ฟเวอร์ Homebridge ของคุณมีวันที่และเวลาที่แม่นยำมากในการเข้าสู่ระบบ หากเซิร์ฟเวอร์ของคุณไม่สามารถรักษาเวลาได้อย่างแม่นยำคุณไม่ควรเปิดใช้งาน 2FA หรือเสี่ยงต่อการถูกล็อกไม่ให้ใช้งาน Homebridge UI", - "users.support.acc_1": "There are two types of users that can access the Homebridge UI: admin and non-admin users. Admins can access and control everything available in the UI. Non-admin users have a read-only view of the following pages:", - "users.support.acc_2": "2FA can only be set up on admin accounts, and must do this via the users page logged in as themselves.", - "users.support.control": "can be controlled", + "users.support.acc_1": "ผู้ใช้ที่สามารถเข้าถึง Homebridge UI ได้มีสองประเภท ได้แก่ ผู้ใช้ที่เป็นผู้ดูแลระบบและผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ ผู้ดูแลระบบสามารถเข้าถึงและควบคุมทุกอย่างที่มีอยู่ใน UI ได้ ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบสามารถดูหน้าต่อไปนี้ได้แบบอ่านอย่างเดียว:", + "users.support.acc_2": "สามารถตั้งค่า 2FA ได้เฉพาะบัญชีผู้ดูแลระบบเท่านั้น และต้องดำเนินการผ่านหน้าผู้ใช้ที่เข้าสู่ระบบในฐานะตนเอง", + "users.support.control": "สามารถควบคุมได้", "users.title_add_user": "เพิ่มผู้ใช้", "users.title_edit_user": "แก้ไขผู้ใช้", "users.title_users": "ผู้ใช้", From 1efaf006e9d54342d8f7ddd88674ae7a9d86d098 Mon Sep 17 00:00:00 2001 From: Vadim Korneliuk <58448955+xrust83@users.noreply.github.com> Date: Fri, 15 Aug 2025 00:53:34 +0300 Subject: [PATCH 9/9] updates to the `uk.json` language file (#2532) --- ui/src/i18n/uk.json | 308 ++++++++++++++++++++++---------------------- 1 file changed, 154 insertions(+), 154 deletions(-) diff --git a/ui/src/i18n/uk.json b/ui/src/i18n/uk.json index 2275cf522..24982066c 100644 --- a/ui/src/i18n/uk.json +++ b/ui/src/i18n/uk.json @@ -11,13 +11,13 @@ "accessories.button_hidden_hide": "Приховати приховані", "accessories.button_hidden_show": "Показати приховані", "accessories.button_remove": "Видалити з кешу", - "accessories.control.adaptive_lighting": "Adaptive Lighting", - "accessories.control.adaptive_lighting_note": "Some plugins may automatically re-enable Adaptive Lighting when changing this.", + "accessories.control.adaptive_lighting": "Адаптивне освітлення", + "accessories.control.adaptive_lighting_note": "Деякі плагіни можуть автоматично повторно вмикати адаптивне освітлення після зміни цього параметра.", "accessories.control.auto": "Авто", "accessories.control.away": "За межами будинку", - "accessories.control.battery_charged": "Charged", + "accessories.control.battery_charged": "Заряджено", "accessories.control.battery_charging": "Зарядка", - "accessories.control.battery_low": "Battery Low", + "accessories.control.battery_low": "Батарея розряджена", "accessories.control.battery_notchargeable": "Від батареї", "accessories.control.battery_notcharging": "Не заряджається", "accessories.control.brightness": "Яскравість", @@ -25,63 +25,63 @@ "accessories.control.closing": "Зачиняється", "accessories.control.color_temperature": "Колірна температура", "accessories.control.cool": "Охолодження", - "accessories.control.current": "Current", + "accessories.control.current": "Поточний", "accessories.control.default_room": "Кімната за замовчуванням", - "accessories.control.dehumidify": "Dehumidify", + "accessories.control.dehumidify": "Осушення", "accessories.control.detected": "Виявлено", - "accessories.control.doorbell": "Doorbell", + "accessories.control.doorbell": "Дверний дзвінок", "accessories.control.drag_here": "Перетягніть сюди", - "accessories.control.filter_level": "Filter Life", + "accessories.control.filter_level": "Ресурс фільтра", "accessories.control.heat": "Нагрів", "accessories.control.home": "В будинку", - "accessories.control.hue": "Hue", - "accessories.control.humidify": "Humidify", - "accessories.control.idle": "Idle", - "accessories.control.input": "Input List", + "accessories.control.hue": "Відтінок", + "accessories.control.humidify": "Зволоження", + "accessories.control.idle": "Очікування", + "accessories.control.input": "Список вхідних даних", "accessories.control.jammed": "Заклинило", - "accessories.control.lock_auto": "Auto Lock Timer", + "accessories.control.lock_auto": "Таймер автоблокування", "accessories.control.locked": "Заблоковано", - "accessories.control.manual": "Manual", - "accessories.control.microphone": "Microphone", - "accessories.control.mode": "Mode", + "accessories.control.manual": "Ручний", + "accessories.control.microphone": "Мікрофон", + "accessories.control.mode": "Режим", "accessories.control.mute": "Беззвучний", "accessories.control.night": "Ніч", "accessories.control.not_detected": "Не виявлено", "accessories.control.not_mute": "Зі звуком", - "accessories.control.obstructed": "Obstructed", + "accessories.control.obstructed": "Перешкода", "accessories.control.off": "Вимк.", "accessories.control.on": "Увім.", "accessories.control.open": "Відкрито", "accessories.control.opening": "Відкривається", - "accessories.control.pause": "Pause", - "accessories.control.play": "Play", - "accessories.control.replace": "Replace", + "accessories.control.pause": "Пауза", + "accessories.control.play": "Грати", + "accessories.control.replace": "Замінити", "accessories.control.rotation_c_clockwise": "Проти годинникової стрілки", "accessories.control.rotation_clockwise": "За годинниковою стрілкою", "accessories.control.rotation_direction": "Напрямок обертання", "accessories.control.rotation_speed": "Швидкість обертання", "accessories.control.running": "Запущено", - "accessories.control.saturation": "Saturation", + "accessories.control.saturation": "Насиченість", "accessories.control.set_duration": "Встановити тривалість", - "accessories.control.speaker": "Speaker", + "accessories.control.speaker": "Гучномовець", "accessories.control.speaker_volume": "Гучність", - "accessories.control.stateless": "Stateless", - "accessories.control.stop": "Stop", + "accessories.control.stateless": "Стан не визначено", + "accessories.control.stop": "Зупинити", "accessories.control.stopped": "Зупинено", "accessories.control.target": "Ціль", - "accessories.control.target_auto": "Auto Target", - "accessories.control.threshold_auto": "Auto Threshold", + "accessories.control.target_auto": "Автовибір цілі", + "accessories.control.threshold_auto": "Автоматичний поріг", "accessories.control.triggered": "Спрацювало", "accessories.control.unknown": "Невідомий", "accessories.control.unlocked": "Розблоковано", "accessories.control_disabled": "Керування аксесуарами вимкнено", "accessories.custom_name": "Користувацька назва", - "accessories.custom_type": "Custom Type", + "accessories.custom_type": "Власний тип", "accessories.hide_this_accessory": "Приховати цей аксесуар", "accessories.message_must_use_insecure_mode": "Щоб керувати своїми аксесуарами, Ви повинні запустити Homebridge в безпечному режимі {{ link }}.", "accessories.name": "Назва", - "accessories.only_ui": "These settings are only for the Homebridge UI and will not be reflected in HomeKit.", - "accessories.only_ui_2": "These options are unique to your Homebridge UI account.", + "accessories.only_ui": "Ці налаштування стосуються лише інтерфейсу Homebridge та не відображатимуться в HomeKit.", + "accessories.only_ui_2": "Ці опції унікальні для Вашого облікового запису Homebridge UI.", "accessories.plugin": "Плагін", "accessories.room_name": "Назва кімнати", "accessories.service": "Сервіс", @@ -89,11 +89,11 @@ "accessories.settings_link": "Ви можете будь-коли отримати доступ до налаштувань Homebridge з головного меню або натисніть шестерню", "accessories.show_on_dashboard": "Відобразити на панелі приладів", "accessories.support.acc_1": "Аксесуари можуть з’явитися на цьому екрані через кілька хвилин після перезапуску Homebridge або додавання. Якщо аксесуари постійно відсутні, спробуйте змінити рекламодавця mDNS у налаштуваннях.", - "accessories.support.acc_2": "You can change the type of certain accessories in the UI (like showing a switch as a heater). You can do this by clicking on the three bars that appear in the top-right corner of the accessory tile as you hover over it. A 'Custom Type' option will appear if the accessory supports this. Note this will not change the accessory in HomeKit (only a plugin can do this).", + "accessories.support.acc_2": "Ви можете змінювати тип певних аксесуарів в інтерфейсі користувача (наприклад, відображення вимикача як обігрівача). Це можна зробити, натиснувши на три смужки, які з’являються у верхньому правому куті плитки аксесуара, коли навести курсор на неї. З’явиться опція «Власний тип», якщо аксесуар підтримує цю функцію. Зверніть увагу, що це не змінить аксесуар у HomeKit (це може зробити лише плагін).", "accessories.support.rooms_1": "Створені тут кімнати не з'являться в HomeKit, вони призначені для організації аксесуарів в Інтерфейсі Homebridge Config X.", "accessories.support.rooms_2": "Щоб перейменувати існуючу кімнату, створіть нову кімнату з потрібною назвою та перемістіть до неї аксесуари.", "accessories.support.rooms_3": "Щоб видалити існуючу кімнату, перемістіть усі її аксесуари в іншу кімнату та оновіть сторінку.", - "accessories.title_rooms": "Rooms", + "accessories.title_rooms": "Кімнати", "backup.backup_delete_failed": "Не вдалося видалити резервну копію. Подробиці дивіться в журналах.", "backup.backup_download_failed": "Помилка резервного копіювання", "backup.backup_exceeds_max_size": "Резервна копія ({{ backupSize }}) перевищує максимальний розмір файлу відновлення {{ maxBackupSizeText }}", @@ -101,10 +101,10 @@ "backup.backup_help_two": "Плагіни, які не розміщені в npm, або плагіни, встановлені безпосередньо з GitHub, не будуть скопійовані чи відновлені.", "backup.backup_now": "Створіть резервну копію зараз", "backup.backup_now_desc": "Створіть і завантажте оновлений файл резервної копії.", - "backup.backup_now_save_desc": "Generate an up-to-date backup file in your backup storage directory.", + "backup.backup_now_save_desc": "Створіть актуальний файл резервної копії у Вашому каталозі сховища резервних копій.", "backup.backup_restored": "Резервна копія відновлена", "backup.backup_warning": "Архіви резервних копій містять конфіденціїну інформацію і не повинні передаватись іншим особам.", - "backup.files_auto": "Stored Backup Files", + "backup.files_auto": "Збережені резервні файли", "backup.label_uploading": "Завантаження…", "backup.load_error": "Не вдалося завантажити резервну копію конфігурації.", "backup.restore_failed": "Помилка відновлення з резервної копії", @@ -116,10 +116,10 @@ "backup.restore_warning": "Відновлення з резервної копії безповоротно перезапише поточну конфігурацію Homebridge.", "backup.scheduled_backup_disabled": "Резервне копіювання за розкладом було вимкнено через налаштування.", "backup.scheduled_backup_time": "Повна резервна копія екземпляра Homebridge автоматично створюється щодня о {{ backupTime }} і зберігається протягом {{ dayCount }} днів.", - "backup.settings_enable": "Enable Automated Backups", - "backup.settings_path": "Backup Storage Path", - "backup.settings_path_desc": "If you are changing this from the default, please ensure the directory exists and is writable by the Homebridge user.", - "backup.settings_title": "Backup Settings", + "backup.settings_enable": "Увімкнути автоматичне резервне копіювання", + "backup.settings_path": "Шлях до сховища резервних копій", + "backup.settings_path_desc": "Якщо Ви змінюєте це значення зі стандартного, переконайтеся, що каталог існує та доступний для запису користувачем Homebridge.", + "backup.settings_title": "Налаштування резервного копіювання", "backup.title_backup": "Резервне копіювання та відновлення", "child_bridge.about": "Homebridge дозволяє запускати платформу або аксесуар Вашого плагіна як ізольований Дочірній міст {{ link }}. Це може покращити загальну швидкість реакції та надійність Homebridge.", "child_bridge.bridge_connect": "Під’єднайтеся до HomeKit", @@ -152,37 +152,37 @@ "child_bridge.start_plural": "Запустіть Дочірні мости", "child_bridge.stop": "Зупиніть Дочірній міст", "child_bridge.stop_plural": "Зупиніть Дочірні мости", - "common.labels.beta": "beta", - "common.labels.no_confirmation": "There is no confirmation when clicking the button, it will immediately perform the action.", + "common.labels.beta": "бета", + "common.labels.no_confirmation": "Підтвердження при натисканні кнопки не потрібно, дія буде виконана негайно.", "common.phrases.are_you_sure": "Ви впевнені, що все одно бажаєте продовжити?", - "common.phrases.support": "Feel like there is something useful we could add here? Let us know on {{ github }} or {{ discord }}!", + "common.phrases.support": "Бажаєте додати щось корисне? Повідомте нам про це на {{ github }} або {{ discord }}!", "config.config_accessory_must_be_array": "аксесуари повинні бути масивом []", "config.config_bridge_missing": "Налаштування мосту відсутні", "config.config_invalid_json": "Конфігурація містить недопустимий JSON", "config.config_platform_must_be_array": "Платформи повинні бути масивом []", - "config.config_saved": "Configuration Saved", + "config.config_saved": "Конфігурацію збережено", "config.config_username_error": "Ім’я користувача Bridge має складатися з 6-ти пар шістнадцяткових символів, розділених двокрапками (A-F 0-9)", "config.error_blocks_objects": "Усі блоки {{ type }} мають бути об’єктами.", "config.error_blocks_type": "Усі блоки {{ type }} повинні містити атрибут {{ type }}.", "config.error_string_array": "Кожен елемент у масиві {{ key }} має бути рядком.", "config.error_string_type": "Атрибут {{ type }} має бути рядком.", "config.failed_to_save_config": "Не вдалося зберегти конфігурацію", - "config.no_restart": "A restart is not needed as no changes were made to the Homebridge configuration.", + "config.no_restart": "Перезавантаження не потрібне, оскільки до конфігурації Homebridge не було внесено жодних змін.", "config.restore.confirm": "Натисніть «Зберегти», чтоб підтвердити, что Вы бажаєте відновити цю резервну копію.", "config.restore.copy_to_editor": "Копіювати в редактор", - "config.restore.download": "Download your current configuration as a JSON file.", - "config.restore.help_1": "A backup of your config file is created each time it is updated from actions you take in the Homebridge UI.", - "config.restore.help_2": "You can restore a previous version of your config file by selecting it from the list below. You will be able to compare this version with your current config before deciding whether to restore it.", - "config.restore.title": "Config File Backup & Restore", + "config.restore.download": "Завантажте поточну конфігурацію у вигляді JSON файлу.", + "config.restore.help_1": "Резервна копія Вашого конфігураційного файлу створюється щоразу, коли він оновлюється в результаті дій, які Ви виконуєте в інтерфейсі користувача Homebridge.", + "config.restore.help_2": "Ви можете відновити попередню версію Вашого конфігураційного файлу, вибравши його зі списку нижче. Ви зможете порівняти цю версію з Вашою поточною конфігурацією, перш ніж вирішити, чи відновлювати її.", + "config.restore.title": "Резервне копіювання та відновлення файлів конфігурації", "config.restore.toast_backups_deleted": "Всі резервні копії видалено", "config.title_backup_loaded": "Резервна копія завантажена", - "form.button_allow": "Allow", + "form.button_allow": "Дозволити", "form.button_back": "Назад", "form.button_cancel": "Відмінити", "form.button_close": "Закрити", "form.button_continue": "Продовжити", "form.button_delete": "Видалити", - "form.button_delete_all": "Delete All", + "form.button_delete_all": "Видалити все", "form.button_disable": "Вимкнути", "form.button_download": "Завантажити", "form.button_edit": "Редагувати", @@ -201,9 +201,9 @@ "form.label_invalid_strict": "Помилка перевірки конфігурації – будь ласка, перегляньте форму перед збереженням.", "form.label_valid": "Перевірку конфігурації пройдено.", "form.select.auto": "Автоматично (використовувати налаштування браузера)", - "login.invalid_code": "The code entered is incorrect or has expired", + "login.invalid_code": "Введений код неправильний або термін його дії минув", "login.invalid_credentials": "Неправильне ім'я користувача або пароль.", - "login.invalid_credentials_2": "To reset your credentials or 2fa code, delete the auth.json file in your Homebridge storage directory, restart Homebridge, then login with admin / admin.", + "login.invalid_credentials_2": "Щоб скинути свої облікові дані або код 2FA, видаліть файл auth.json у каталозі сховища Homebridge, перезапустіть Homebridge, а потім увійдіть у систему за допомогою admin / admin.", "login.invalid_password": "Невірний пароль", "login.label_2fa_code": "Код 2FA", "logs.download.error": "Не вдалося завантажити файл журналу.", @@ -226,7 +226,7 @@ "menu.label_status": "Статус", "menu.linux.label_logs": "Журнали", "menu.linux.label_restart_server": "Перезавантажити сервер", - "menu.linux.label_shutdown_modal": "Are you sure you want to shut down the operating system? You will need physical access to turn it back on.", + "menu.linux.label_shutdown_modal": "Ви впевнені, що хочете вимкнути операційну систему? Вам знадобиться фізичний доступ, щоб знову її ввімкнути.", "menu.linux.label_shutdown_server": "Завершення роботи сервера", "menu.linux.label_terminal": "Термінал", "menu.reload": "Перезавантажити", @@ -244,7 +244,7 @@ "platform.docker.script_saved": "Скрипт автозавантаження збережений", "platform.docker.server_long_time": "Перезапуск контейнера займає багато часу. Можливо Вам доведеться вручную відкрити контейнер Docker.", "platform.docker.title_restarting": "Перезапуск контейнера Docker", - "platform.linux.long_time": "Перезапуск сервера займає багато часу. Можливо, вам знадобиться перезапустити сервер вручну.", + "platform.linux.long_time": "Перезапуск сервера займає багато часу. Можливо, Вам знадобиться перезапустити сервер вручну.", "platform.linux.restart": "Будь ласка, зачекайте, ця сторінка буде автоматично оновлена, коли Homebridge знову буде онлайн.", "platform.linux.restarting_server": "Перезапуск сервера", "platform.linux.server_restart_error": "Виникла помилка відправки команди перезавантаження на сервер", @@ -252,10 +252,10 @@ "platform.linux.server_taking_long_time": "Перезапуск сервера займає багато часу", "platform.linux.server_will_power_down": "Сервер скоро відключиться.", "platform.linux.shutting_down_server": "Вимкнення сервера", - "platform.terminal.terminate_message_1": "Navigating away from this page will terminate your current session, all foreground processes will be terminated.", - "platform.terminal.terminate_message_2": "To avoid this warning, enable Terminal Session Persistence from the settings page.", - "platform.terminal.terminate_title": "Session Termination", - "platform.terminal.terminate_unload": "Your terminal session will be terminated. Enable Terminal Session Persistence in Settings to prevent this.", + "platform.terminal.terminate_message_1": "Якщо Ви залишите цю сторінку, Ваш поточний сеанс буде завершено, та будуть завершені всі процеси переднього плану.", + "platform.terminal.terminate_message_2": "Щоб уникнути цього попередження, увімкніть функцію Збереження термінального сеансу на сторінці налаштувань.", + "platform.terminal.terminate_title": "Завершення сеансу", + "platform.terminal.terminate_unload": "Ваш термінальний сеанс буде перервано. Увімкніть опцію «Збереження термінального сеансу» в налаштуваннях, щоб запобігти цьому.", "platform.version.restart_required": "Інтерфейс Homebridge v{{ uiVersion }} встановлено, але служба сервера все ще працює на v{{ serverVersion }}.", "platform.version.service_restart_required": "Потрібен перезапуск служби", "plugins.bridge.action_error": "Не вдалося {{ action }} дочірніх мостів.", @@ -283,9 +283,9 @@ "plugins.donate.tile_donate_to": "Задонатити для {{ author }}", "plugins.enable.error": "Не вдалося ввімкнути плагін.", "plugins.manage.all_versions": "Всі версії", - "plugins.manage.backup": "Download a backup before updating?", - "plugins.manage.changelog": "Full Changelog", - "plugins.manage.changelog_none": "Could not retrieve changelog, perhaps this plugin does not provide a CHANGELOG.md file.", + "plugins.manage.backup": "Завантажити резервну копію перед оновленням?", + "plugins.manage.changelog": "Повний журнал змін", + "plugins.manage.changelog_none": "Не вдалося отримати журнал змін, можливо, цей плагін не надає файл CHANGELOG.md.", "plugins.manage.child_bridge_restart": "Дочірній міст успішно перезапущено.", "plugins.manage.child_bridge_restart_failed": "Не вдалося перезапустити плагін, перезапустіть Homebridge вручну.", "plugins.manage.confirm_disable": "Ви впевнені, що бажаєте вимкнути {{ pluginName }}?", @@ -293,14 +293,14 @@ "plugins.manage.confirm_disable_accessory_2": "Коли Ви повторно ввімкнете плагін, аксесуари знову з’являться в Homebridge UI та HomeKit. Аксесуари втратять свої дані HomeKit (наприклад, пов’язані сцени та автоматизацію).", "plugins.manage.confirm_disable_platform_1": "Будь-які аксесуари, доступні за допомогою цього плагіна, буде видалено з екрану аксесуарів Homebridge UI, але вони залишиться в HomeKit із позначкою «Немає відповіді».", "plugins.manage.confirm_disable_platform_2": "Коли Ви знову ввімкнете плагін, аксесуари з’являться в інтерфейсі користувача Homebridge, і ними знову можна буде керувати в HomeKit. Аксесуари не втратять свої дані в HomeKit (наприклад, пов’язані сцени та автоматизація).", - "plugins.manage.confirm_disable_setting": "Your setting for {{ setting }} is currently {{ value }}, therefore:", + "plugins.manage.confirm_disable_setting": "Ваше налаштування для {{ setting }} наразі становить {{ value }}, тому:", "plugins.manage.confirm_enable": "Ви впевнені, що хочете увімкнути {{ pluginName }}?", "plugins.manage.disable": "Вимкнути", "plugins.manage.enable": "Увімкнути", "plugins.manage.github_support": "Ви можете продемонструвати свою підтримку, поставивши цьому плагіну {{ iconStar }} (або випуску {{ iconThumbsUp }}) на GitHub!", - "plugins.manage.hb_restart": "Homebridge and the UI will automatically restart after any version change.", - "plugins.manage.hide_updates": "Disable Update Notifications", - "plugins.manage.hide_updates_desc": "If you don't want to see update notifications for this plugin, you can turn them off here.", + "plugins.manage.hb_restart": "Homebridge та інтерфейс користувача автоматично перезавантажаться після будь-якої зміни версії.", + "plugins.manage.hide_updates": "Вимкнути сповіщення про оновлення", + "plugins.manage.hide_updates_desc": "Якщо Ви не хочете бачити сповіщення про оновлення цього плагіна, Ви можете вимкнути їх тут.", "plugins.manage.information": "Інформація про плагін", "plugins.manage.install": "Встановлення", "plugins.manage.installed": "Плагін встановлено", @@ -308,12 +308,12 @@ "plugins.manage.manage_version": "Встановити альтернативну версію", "plugins.manage.manual_update_command": "Щоб оновити пакет, відкрийте командний рядок Node.js від імені адміністратора та виконайте такі команди:", "plugins.manage.more_info": "Більше інформації про обмежені плагіни {{ scopedLink }} і перевірені {{ verifiedLink }}.", - "plugins.manage.notes": "Release Notes", - "plugins.manage.notes_beta_1": "Thank you for helping improve {{ pluginName }} by testing a pre-release version.", - "plugins.manage.notes_beta_2": "You can use the Homebridge UI to revert back to the stable version at any time.", - "plugins.manage.notes_beta_3": "Please remember this is a pre-release version, and report any issues to the plugin's GitHub repository page.", - "plugins.manage.notes_latest": "Release notes are only shown when updating to the latest version.", - "plugins.manage.notes_none": "Could not retrieve release notes, perhaps this version does not have a GitHub release.", + "plugins.manage.notes": "Нотатки до випуску", + "plugins.manage.notes_beta_1": "Дякуємо, що допомагаєте покращити {{ pluginName }}, тестуючи передрелізну версію.", + "plugins.manage.notes_beta_2": "Ви можете скористатися інтерфейсом Homebridge, щоб повернутися до стабільної версії в будь-який час.", + "plugins.manage.notes_beta_3": "Будь ласка, пам’ятайте, що це попередня версія, і повідомляйте про будь-які проблеми на сторінці репозиторію плагіна на GitHub.", + "plugins.manage.notes_latest": "Нотатки до випуску відображаються лише під час оновлення до останньої версії.", + "plugins.manage.notes_none": "Не вдалося отримати нотатки до випуску, можливо, ця версія не має випуску на GitHub.", "plugins.manage.online_updates": "Онлайн оновлення не підтримується в Windows. Вам необхідно оновити Homebridge UI вручную після зупинки служби Homebridge.", "plugins.manage.plugin_logs": "Журнали плагінів", "plugins.manage.scoped.error": "Сталася помилка. Ви можете завантажити журнали нижче.", @@ -336,7 +336,7 @@ "plugins.placeholder_search_first": "Використойте рядок пошуку вище, щоб знайти свій перший плагін", "plugins.placeholder_search_none": "Результати не знайдені", "plugins.placeholder_search_plugin": "Пошук плагінів для встановлення…", - "plugins.search": "Search Plugins", + "plugins.search": "Пошук плагінів", "plugins.settings.custom.homebridge-gsh.label_account_linked": "Аккаунт прив'язаний", "plugins.settings.custom.homebridge-gsh.label_link_account": "Прив'язати аккаунт", "plugins.settings.custom.homebridge-gsh.message_about": "Плагін Homebridge Google Smart Home дозволяє курувати аксесуарами Homebridge за допомогою розумної колонки з підтримкою Google Home або мобільного додатка Google Home.", @@ -349,14 +349,14 @@ "plugins.settings.message_manual_config_required": "Цей плагін потрібно налаштувати вручну за допомогою редактора конфігурації інтерфейсу користувача Homebridge.", "plugins.settings.plugin_config_saved": "Конфігурація плагіна збережена", "plugins.settings.restart_required": "Перезавантажте Homebridge, щоб зміни почали діяти.", - "plugins.stats": "Plugin Statistics", - "plugins.stats_note": "Plugins cannot be installed from this page, this is provided just for interest.", + "plugins.stats": "Статистика плагіна", + "plugins.stats_note": "Плагіни не можна встановити з цієї сторінки, це надається лише для цікавості.", "plugins.status_disabled": "Вимкнено", "plugins.status_installed": "Встановлено", - "plugins.support.list_1": "Homebridge plugins are the building blocks of Homebridge, allowing you to add support for new accessories and platforms. Plugins add support for smart lights, cameras, TVs, etc, for brands that don't natively support HomeKit. For example, to bring your Ring doorbells and cameras into HomeKit, you can install the homebridge-ring plugin.", - "plugins.support.list_2": "Homebridge plugins are created by public contributors in the Homebridge community, and are not typically associated with the Homebridge maintainers, nor with the manufacturers of the accessories themselves. If you have a question about a specific plugin, you should let the plugin developer know via the plugin's GitHub page.", - "plugins.support.list_3": "There are currently over 4,700 plugins available for Homebridge, so you should be able to find plugins to suit your needs. If you are a Javascript/TypeScript developer (or want to take the opportunity to learn), you can also create your own plugin and share it with the Homebridge community. Check out the Support section for some handy links to get you started.", - "plugins.support.list_4": "Some plugins allow you to create 'virtual/dummy' accessories, which are accessories that do not have a physical counterpart. These can be used to create virtual accessories in HomeKit, such as virtual switches, lights, or sensors. Try searching for dummy or virtual in the search bar to find some examples.", + "plugins.support.list_1": "Плагіни – це будівельні блоки Homebridge, що дозволяють додавати підтримку нових аксесуарів і платформ. Плагіни додають підтримку розумного освітлення, камер, телевізорів тощо для брендів, які не підтримують HomeKit за замовчуванням. Наприклад, щоб перенести дверні дзвінки та камери виробника Ring у HomeKit, Ви можете встановити плагін homebridge-ring.", + "plugins.support.list_2": "Плагіни Homebridge створюються публічними учасниками спільноти Homebridge і зазвичай не пов'язані ні з розробниками Homebridge, ні з виробниками самих аксесуарів. Якщо у Вас є запитання щодо конкретного плагіна, Вам слід повідомити про це розробника плагіна через сторінку плагіна на GitHub.", + "plugins.support.list_3": "Наразі для Homebridge доступно понад 4700 плагінів, тому Ви зможете знайти плагіни, що відповідають Вашим потребам. Якщо Ви розробник Javascript/TypeScript (або хочете скористатися можливістю навчитися), Ви також можете створити власний плагін і поділитися ним зі спільнотою Homebridge. Перегляньте розділ «Підтримка», щоб знайти корисні посилання для початку.", + "plugins.support.list_4": "Деякі плагіни дозволяють створювати «віртуальні/фіктивні» аксесуари, тобто аксесуари, які не мають фізичного аналога. Їх можна використовувати для створення віртуальних аксесуарів у HomeKit, таких як віртуальні вимикачі, світильники або датчики. Спробуйте ввести dummy або virtual у рядку пошуку, щоб знайти кілька прикладів.", "plugins.toast_failed_to_load_plugin_schema": "Не вдалося завантажити схему конфігурації плагіна.", "plugins.toast_failed_to_load_plugins": "Не вдалося завантажити плагіни", "plugins.uninstall_bridge_error": "Не вдалося видалити Дочірній міст.", @@ -370,7 +370,7 @@ "reset.accessory_all.desc": "Видаліть усі аксесуари з кешу.", "reset.accessory_all.list_1": "Якщо натиснути кнопку видалення нижче, Homebridge перезапуститься, і всі наявні аксесуари будуть видалені з Homebridge та HomeKit.", "reset.accessory_all.list_2": "Усі пов’язані дані HomeKit також буде видалено, зокрема асоціації кімнат, сцени та автоматизацію, які використовує цей аксесуар.", - "reset.accessory_all.list_3": "Після перезапуску Homebridge яваші плагіни повторно додадуть будь-які аксесуари, так само як при першому встановлені плагіна.", + "reset.accessory_all.list_3": "Після перезапуску Homebridge Ваші плагіни повторно додадуть будь-які аксесуари, так само як при першому встановлені плагіна.", "reset.accessory_all.title": "Видалити всі аксесуари", "reset.accessory_ind.bridge": "Міст", "reset.accessory_ind.desc": "Видаліть окремі аксесуари з кеша.", @@ -378,7 +378,7 @@ "reset.accessory_ind.fail": "Не вдалося видалити аксесуари з кешу, перевірте журнал на наявність помилок.", "reset.accessory_ind.list_1": "Деякі плагіни не прибирають за собою належним чином. Якщо у Вас є несвіжі аксесуари, Ви можете видалити їх із кеша. Цю функцію також можна використовувати для скидання наявного аксесуара в HomeKit.", "reset.accessory_ind.list_2": "Аксесуари будуть видалені з Homebridge і HomeKit разом із пов’язаними з ними асоціаціями кімнат, сценами та автоматизацією.", - "reset.accessory_ind.list_3": "Після перезапуску Homebridge ваші плагіни повторно додадуть будь-які видалені аксесуари, як якщо б плагін встановлювався вперше.", + "reset.accessory_ind.list_3": "Після перезапуску Homebridge Ваші плагіни повторно додадуть будь-які видалені аксесуари, як якщо б плагін встановлювався вперше.", "reset.accessory_ind.title": "Видаліть окремі аксесуари", "reset.accessory_ind.unknown": "Невідома назва", "reset.accessory_reset": "Скидання аксесуарів Homebridge", @@ -427,8 +427,8 @@ "rpi.throttled.currently_message": "Цей Raspberry Pi повідомляє, що зараз він перебуває під низькою напругою. Переконайтеся, що він під'єднаний до відповідного джерела живлення. Низька напруга може призвести до нестабільності системи та пошкодження SD-карти.", "rpi.throttled.previously_message": "Цей Raspberry Pi повідомив про подію низької напруги з моменту останнього перезавантаження. Будь ласка, перевірте, чи під’єднано його до відповідного джерела живлення.", "rpi.throttled.undervoltage_title": "Низька Напруга", - "settings.accessory.debug": "Accessory Debug Mode", - "settings.accessory.debug_desc": "If enabled, the Homebridge UI will log debug level messages to the console.", + "settings.accessory.debug": "Режим налагодження аксесуарів", + "settings.accessory.debug_desc": "Якщо ввімкнено, інтерфейс користувача Homebridge записуватиме повідомлення рівня налагодження в консоль.", "settings.cache.desc": "Homebridge зберігає аксесуари в кеш-пам’яті, тому вони не видаляються та не додаються повторно до HomeKit кожного разу, коли Homebridge перезапускається. Іноді цей кеш може не синхронізуватися з фактичними аксесуарами в Homebridge.", "settings.changes.saved": "Ваші зміни збережено. Щоб вони набрали чинності, потрібно перезавантажити.", "settings.datetime.incorrect": "Здається, дата й час на Вашому сервері Homebridge неправильні. Це може спричинити несподівані проблеми. Натисніть тут для отримання додаткової інформації.", @@ -456,58 +456,58 @@ "settings.display.temp_units.c": "Цельсій (°C)", "settings.display.temp_units.f": "Фаренгейт (°F)", "settings.display.theme": "Тема", - "settings.display.wallpaper": "Wallpaper", - "settings.display.wallpaper_intro": "Upload a wallpaper for your Homebridge UI. This is currently shown on the login screen.", - "settings.display.wallpaper_rule": "You can choose an image file which is up to {{ maxFileSizeText }}.", - "settings.display.wallpaper_rule2": "You will need to click Save to upload the wallpaper to your Homebridge storage directory.", - "settings.display.wallpaper_success": "Wallpaper was successfully updated.", + "settings.display.wallpaper": "Шпалери", + "settings.display.wallpaper_intro": "Завантажте шпалери для інтерфейсу користувача Homebridge. Наразі вони відображаються на екрані входу.", + "settings.display.wallpaper_rule": "Ви можете вибрати файл зображення розміром до {{ maxFileSizeText }}.", + "settings.display.wallpaper_rule2": "Вам потрібно буде натиснути кнопку «Зберегти», щоб завантажити шпалери до каталогу сховища Homebridge.", + "settings.display.wallpaper_success": "Шпалери успішно оновлено.", "settings.general.title_display": "Дисплей", "settings.general.title_general": "Загальні", - "settings.linux.restart": "Restart Command", - "settings.linux.restart_desc": "If no restart command is set the process will terminate with a non-zero exit code.", - "settings.linux.shutdown": "Shutdown Command", - "settings.linux.shutdown_desc": "If no shutdown command is set the process will terminate with a non-zero exit code.", - "settings.linux.temp": "Temperature File Path", - "settings.linux.temp_desc": "If you are running Homebridge on a Raspberry Pi, you can enter the path to the OS temperature file here. This will display the current temperature on the UI status page.", + "settings.linux.restart": "Команда перезапуску", + "settings.linux.restart_desc": "Якщо команда перезапуску не встановлена, процес завершиться з ненульовим кодом виходу.", + "settings.linux.shutdown": "Команда вимкнення", + "settings.linux.shutdown_desc": "Якщо команда завершення роботи не встановлена, процес завершиться з ненульовим кодом виходу.", + "settings.linux.temp": "Шлях до файлу температури ОС", + "settings.linux.temp_desc": "Якщо Ви використовуєте Homebridge на Raspberry Pi, Ви можете ввести тут шлях до файлу температури ОС. Це відобразить поточну температуру на сторінці стану інтерфейсу користувача.", "settings.mdns_advertiser": "Рекламіст mDNS", "settings.mdns_advertiser_exp": "експериментальний", "settings.mdns_advertiser_help": "Якщо у Вас виникли проблеми з підключенням до Homebridge, спробуйте скористатися одним із альтернативних рекламвстів mDNS.", "settings.mdns_advertiser_not_connected": "Не з'єднано", "settings.mdns_advertiser_rec": "рекомендований", - "settings.name": "Homebridge Name", - "settings.network.hb_package": "Homebridge Module Path", - "settings.network.hb_package_desc": "If you have multiple versions of Homebridge installed, you can specify the path to the version you want to use here.", - "settings.network.host": "Host IP Address", - "settings.network.host_desc": "The host IP address to listen on. In most cases this will be :: or 0.0.0.0.", + "settings.name": "Назва Homebridge", + "settings.network.hb_package": "Шлях до модуля Homebridge", + "settings.network.hb_package_desc": "Якщо у Вас встановлено кілька версій Homebridge, Ви можете вказати тут шлях до потрібної версії.", + "settings.network.host": "IP-адреса хоста", + "settings.network.host_desc": "IP-адреса хоста для прослуховування. У більшості випадків це буде :: або 0.0.0.0.", "settings.network.message_network_interface": "Якщо не обрано жодного мережевого інтерфейсу, Homebridge спробує автоматично визначити, які інтерфейси рекламувати.", - "settings.network.port_end": "End Port", - "settings.network.port_end_desc": "Control the end of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and higher than the start port above.", + "settings.network.port_end": "Кінцевий порт", + "settings.network.port_end_desc": "Контролюйте кінцевий діапазон портів, на яких повинні працювати окремі аксесуари (наприклад, камера або телевізор). Він має бути між 1025 та 65533 і вищим за початковий порт вище.", "settings.network.port_hb": "Homebridge порт", "settings.network.port_hb_desc": "Номер порту для запуску мосту Homebridge. Він має бути між 1025 і 65533 і не повинен збігатися з портом інтерфейсу користувача Homebridge.", - "settings.network.port_start": "Start Port", - "settings.network.port_start_desc": "Control the start of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and lower than the end port below.", + "settings.network.port_start": "Початковий порт", + "settings.network.port_start_desc": "Контролюйте початок діапазону портів, на яких мають працювати окремі аксесуари (наприклад, камера чи телевізор). Він має бути між 1025 та 65533 і нижче за кінцевий порт нижче.", "settings.network.port_ui": "UI порт", "settings.network.port_ui_desc": "Номер порту для запуску UI Homebridge.", - "settings.network.proxy": "Reverse Proxy Hostname", - "settings.network.proxy_desc": "When running behind a reverse proxy you may need to enter the hostname you use to access the UI.", + "settings.network.proxy": "Ім'я хосту зворотного проксі-сервера", + "settings.network.proxy_desc": "Під час роботи за зворотним проксі-сервером Вам може знадобитися ввести ім'я хоста, яке Ви використовуєте для доступу до інтерфейсу користувача.", "settings.network.title_network": "Мережа", "settings.network.title_network_interfaces": "Інтерфейс мережі", - "settings.network.title_security": "Security", - "settings.network.title_terminal": "Logging & Terminal", + "settings.network.title_security": "Безпека", + "settings.network.title_terminal": "Логування та термінал", "settings.reset_bridge.error": "Не вдалося скинути міст.", - "settings.security.auth": "Authentication", - "settings.security.auth_desc": "Whether to enable authentication for the Homebridge UI with a username and password.", - "settings.security.cert": "Certificate Path", - "settings.security.https": "Enable HTTPS", - "settings.security.https_desc": "Enable HTTPS by providing your own certificate files stored on your Homebridge server.", - "settings.security.https_keycert": "Private Key + Certificate", - "settings.security.https_pfx": "PKCS#12 Certificate + Passphrase", - "settings.security.key": "Private Key Path", - "settings.security.pass": "PKCS#12 Certificate Passphrase", - "settings.security.pfx": "PKCS#12 Certificate Path", - "settings.security.ui_control": "Accessory Control Lists", - "settings.security.ui_control_desc": "Define which bridges and bridged accessories can be controlled or blocked by the Homebridge UI.", - "settings.security.ui_control_desc_2": "Allow the UI to control the accessories on a bridge by toggling on the switch below.", + "settings.security.auth": "Автентифікація", + "settings.security.auth_desc": "Чи вмикати автентифікацію для інтерфейсу Homebridge за допомогою імені користувача та пароля.", + "settings.security.cert": "Шлях до сертифіката", + "settings.security.https": "Увімкнути HTTPS", + "settings.security.https_desc": "Увімкніть HTTPS, надавши власні файли сертифікатів, що зберігаються на Вашому сервері Homebridge.", + "settings.security.https_keycert": "Приватний ключ + сертифікат", + "settings.security.https_pfx": "Сертифікат PKCS#12 + пароль", + "settings.security.key": "Шлях до приватного ключа", + "settings.security.pass": "PKCS#12 Парольна фраза сертифіката", + "settings.security.pfx": "PKCS#12 Шлях до сертифіката", + "settings.security.ui_control": "Контрольні списки аксесуарів", + "settings.security.ui_control_desc": "Визначте, які мости та мостові аксесуари можуть керуватися або блокуватися за допомогою інтерфейсу користувача Homebridge.", + "settings.security.ui_control_desc_2": "Дозвольте інтерфейсу користувача керувати аксесуарами на мосту, увімкнувши перемикач нижче.", "settings.service.debug_tooltip": "Деякі плагіни вимагають встановлення змінного середовища DEBUG {{ link }}, щоб увімкнути ведення журналу на рівні налагодження.", "settings.service.node_tooltip": "Параметри середовища виконання Node.js для процесу Homebridge. Це має бути пустим, якщо Ви не знаєте, що робите.", "settings.startup.debug": "Homebridge режим «Налагодження»", @@ -517,36 +517,36 @@ "settings.startup.insecure_desc": "Щоб керувати аксесуарами через UI Homebridge, необхідно запустити Homebridge у незахищеному режимі.", "settings.startup.keep_accessories": "Зберігайте аксесуари видалених плагінів", "settings.startup.keep_accessories_desc": "Якщо ввімкнено, аксесуари плагінів платформи залишатимуться в кеші навіть після видалення плагіна. Це може бути корисним, якщо Ви плануєте перевстановити плагін пізніше.", - "settings.startup.metrics": "Enable Server Metric Monitoring", - "settings.startup.metrics_desc": "When enabled, the Homebridge UI will collect and show CPU and memory stats on the status page.", - "settings.startup.session": "Session Timeout", - "settings.startup.session_desc": "The number of seconds before a user will be logged out of the UI. Defaults to 8 hours.", - "settings.terminal.buffer_size": "Terminal Buffer Character Size", - "settings.terminal.buffer_size_help": "Amount of terminal output to preserve for persistent sessions. Larger values use more memory.", - "settings.terminal.log_max": "Log Max Size", - "settings.terminal.log_max_desc": "The max log size (bytes). Set to -1 to disable log truncation.", - "settings.terminal.log_truncate": "Log Truncate Size", - "settings.terminal.log_truncate_desc": "The size (bytes) to truncate the log to once it goes over the max size specified above.", - "settings.terminal.persistence": "Terminal Session Persistence", - "settings.terminal.persistence_confirm_message": "Disabling terminal session persistence will terminate your current terminal session.", - "settings.terminal.persistence_confirm_title": "Disable Terminal Session Persistence", - "settings.terminal.persistence_help": "When enabled, terminal sessions will persist when navigating away and can be resumed when returning to the terminal page (or status page widget). Terminal sessions are shared across Homebridge UI admin users.", - "settings.terminal.warning": "Hide Terminal Termination Warning", - "settings.terminal.warning_help": "When enabled, the warning dialog will not be shown before terminating non-persistent terminal sessions.", + "settings.startup.metrics": "Увімкнути моніторинг показників сервера", + "settings.startup.metrics_desc": "Коли ця функція ввімкнена, інтерфейс користувача Homebridge збиратиме та відображатиме статистику процесора та пам'яті на сторінці стану.", + "settings.startup.session": "Час очікування сеансу", + "settings.startup.session_desc": "Кількість секунд, після якої користувач вийде з інтерфейсу користувача. За замовчуванням – 8 годин.", + "settings.terminal.buffer_size": "Розмір символів буферу терміналу", + "settings.terminal.buffer_size_help": "Обсяг виводу терміналу, який потрібно зберегти для постійних сеансів. Більші значення використовують більше пам'яті.", + "settings.terminal.log_max": "Максимальний розмір журналу", + "settings.terminal.log_max_desc": "Максимальний розмір журналу (байти). Встановіть значення -1, щоб вимкнути скорочення журналу.", + "settings.terminal.log_truncate": "Розмір скорочення журналу", + "settings.terminal.log_truncate_desc": "Розмір (байти), до якого потрібно обрізати журнал, коли він перевищить максимальний розмір, зазначений вище.", + "settings.terminal.persistence": "Збереження термінального сеансу", + "settings.terminal.persistence_confirm_message": "Вимкнення збереження термінального сеансу призведе до завершення поточного термінального сеансу.", + "settings.terminal.persistence_confirm_title": "Вимкнути збереження термінального сеансу", + "settings.terminal.persistence_help": "Якщо ввімкнено, сеанси терміналу зберігатимуться під час виходу з режиму та можуть бути відновлені під час повернення на сторінку терміналу (або віджет сторінки стану). Сеанси терміналу спільні для всіх адміністраторів інтерфейсу Homebridge.", + "settings.terminal.warning": "Приховати попередження про завершення роботи терміналу", + "settings.terminal.warning_help": "Якщо ввімкнено, діалогове вікно попередження не відображатиметься перед завершенням непостійних термінальних сеансів.", "settings.title_startup_options": "Пареметри запуску", "settings.unpair_bridge.load_error": "Не вдалося завантажити парні мости.", "setup.button_get_started": "Розпочати", "setup.create_account": "Створити обліковий запис", - "setup.intro": "If you are setting up for the first time, or if you just need to reset the password for your existing Homebridge setup, then choose Get Started.", + "setup.intro": "Якщо Ви налаштовуєте систему вперше або Вам просто потрібно скинути пароль для існуючої системи Homebridge, виберіть Почати.", "setup.welcome_to_homebridge": "Ласкаво просимо до Homebridge", - "setup_wizard_complete": "Restore Complete!", + "setup_wizard_complete": "Відновлення завершено!", "setup_wizard_complete_title": "Вітаємо!", "setup_wizard_completed": "Процедуру встановлення завершено, тепер Ви можете почати використовувати Homebridge.", - "setup_wizard_create_info": "Once Homebridge is set up, you can set up 2FA on your account, or disable the need for authentication altogether.", - "setup_wizard_page_title": "Setup Homebridge", + "setup_wizard_create_info": "Після налаштування Homebridge Ви можете налаштувати 2FA для свого облікового запису або взагалі вимкнути необхідність автентифікації.", + "setup_wizard_page_title": "Налаштування Homebridge", "setup_wizard_restore": "Відновити з резервної копії", - "setup_wizard_restoring": "Restoring Backup...", - "setup_wizard_starting": "Starting Homebridge...", + "setup_wizard_restoring": "Відновлення резервної копії...", + "setup_wizard_starting": "Запуск Homebridge...", "status.code_scan": "Скануйте, щоб додати до HomeKit", "status.cpu.load": "Завантаження", "status.cpu.temp": "Температура", @@ -560,16 +560,16 @@ "status.network.received_per_second": "Отримано", "status.network.sent_per_second": "Надіслано", "status.network.title_network": "Активність у мережі", - "status.readiness.node_no": "Your version of Node.js is not compatible with {{ app }}.", - "status.readiness.node_yes": "Your version of Node.js is compatible with {{ app }}.", - "status.readiness.title": "{{ app }} Readiness", + "status.readiness.node_no": "Ваша версія Node.js несумісна з {{ app }}.", + "status.readiness.node_yes": "Ваша версія Node.js сумісна з {{ app }}.", + "status.readiness.title": "Готовність {{ app }}", "status.services.label_not_running": "Не працює", "status.services.label_running": "Працює", "status.services.updates": "Оновити інформацію", "status.uptime.title_uptime": "Час безперервної роботи", "status.widget.accessories.choose_accessories": "Виберіть аксесуари для відображення у віджеті на вкладці Аксесуари.", - "status.widget.account_1": "The widget layout is shared among all Homebridge UI users.", - "status.widget.account_2": "Admin users can modify the layout, while non-admin users cannot make changes.", + "status.widget.account_1": "Макет віджета спільний для всіх користувачів інтерфейсу Homebridge.", + "status.widget.account_2": "Користувачі з правами адміністратора можуть змінювати макет, тоді як користувачі без прав адміністратора не можуть вносити зміни.", "status.widget.add.label_pairing_code": "Код сполучення", "status.widget.bridge.restart_error": "Не вдалося перезапустити Дочірній міст.", "status.widget.clock": "Годинник", @@ -578,15 +578,15 @@ "status.widget.font_size": "Розмір шрифту", "status.widget.font_weight": "Товщина шрифту", "status.widget.hide_node_info": "Приховати оновлення Node.js", - "status.widget.hide_npm": "Show npm Version", + "status.widget.hide_npm": "Показати версію npm", "status.widget.hide_on_mobile": "Приховати в компактному вигляді (мобильні дисплеї)", "status.widget.homebridge_logs": "Журнал Homebridge", "status.widget.info": "Інформація про систему", "status.widget.info.arch": "Арх.", "status.widget.info.config_path": "Файл конфігурації", "status.widget.info.docker": "Docker", - "status.widget.info.docker_update_message": "Updating the Docker container requires manually pulling the latest image and restarting the container. Homebridge does not perform this automatically. Refer to your Docker image's documentation for update instructions.", - "status.widget.info.docker_update_title": "Docker Container Update", + "status.widget.info.docker_update_message": "Оновлення контейнера Docker вимагає ручного витягування останнього образу та перезапуску контейнера. Homebridge не виконує це автоматично. Зверніться до документації Вашого образу Docker, щоб отримати інструкції щодо оновлення.", + "status.widget.info.docker_update_title": "Оновлення контейнера Docker", "status.widget.info.hostname": "Назва хосту", "status.widget.info.ipv4": "IPv4", "status.widget.info.ipv6": "IPv6", @@ -613,9 +613,9 @@ "status.widget.qr_unpaired": "Не спарований", "status.widget.show_hide": "Показати/сховати віджети", "status.widget.title_manage_widget": "Керування віджетом", - "status.widget.update_node_no": "{{ pluginName }} is not compatible with Node {{ nodeVersion }}.", - "status.widget.update_node_unknown": "The developer of {{ pluginName }} has not specified the Node version compatibility.", - "status.widget.update_node_yes": "{{ pluginName }} is compatible with Node {{ nodeVersion }}.", + "status.widget.update_node_no": "{{ pluginName }} не сумісний з вузлом {{ nodeVersion }}.", + "status.widget.update_node_unknown": "Розробник {{ pluginName }} не вказав сумісність версій Node.", + "status.widget.update_node_yes": "{{ pluginName }} сумісний з вузлом {{ nodeVersion }}.", "status.widget.uptime.label_process": "Процес", "status.widget.uptime.label_server": "Сервер", "status.widget.weather.label_config_required_help": "Вкажіть Ваше місто в налаштуваннях віджета.", @@ -664,12 +664,12 @@ "users.setup_2fa_enabled_success": "Двофакторна аутентифікація увімкнена.", "users.setup_2fa_enter_code": "Введіть код з Вашого додатку для аутентифікації:", "users.setup_2fa_scan_qr_code": "Відскануйте QR-код нижче за допомогою Вашого додатку для аутентифікації:", - "users.setup_2fa_scan_qr_manual": "If you cannot scan the QR code, you can enter the following secret key manually:", + "users.setup_2fa_scan_qr_manual": "Якщо Ви не можете відсканувати QR-код, Ви можете ввести наступний секретний ключ вручну:", "users.setup_2fa_server_time_out": "Годинник Вашого сервера має похибку на {{ timeDiffError }} мс. Максимально допустиме значення +/-5000 мс.", "users.setup_2fa_warning": "Двофакторна аутентифікація вимагає, щоб Ваш сервер Homebridge мав дуже точну дату та час для входу в систему. Якщо Ваш сервер не має можливості точно відстежувати час, Ви не повинні вмикати 2FA або ризикуєте втратити доступ до інтерфейсу користувача Homebridge.", - "users.support.acc_1": "There are two types of users that can access the Homebridge UI: admin and non-admin users. Admins can access and control everything available in the UI. Non-admin users have a read-only view of the following pages:", - "users.support.acc_2": "2FA can only be set up on admin accounts, and must do this via the users page logged in as themselves.", - "users.support.control": "can be controlled", + "users.support.acc_1": "Існує два типи користувачів, які мають доступ до інтерфейсу Homebridge: адміністратори та користувачі без прав адміністратора. Адміністратори можуть отримувати доступ до всього, що доступно в інтерфейсі, та керувати ним. Користувачі без прав адміністратора мають доступ лише для читання до наступних сторінок:", + "users.support.acc_2": "Двофакторну аутентифікацію (2FA) можна налаштувати лише для облікових записів адміністраторів, і це потрібно робити через сторінку користувачів, які увійшли в систему як вони самі.", + "users.support.control": "можна контролювати", "users.title_add_user": "Додати користувача", "users.title_edit_user": "Профіль користувача", "users.title_users": "Користувачі",