]> repos.lx-s.de Git - winmute.git/commitdiff
Added log window
authorlx-s <lx-s@users.noreply.github.com>
Wed, 24 Sep 2025 08:45:54 +0000 (10:45 +0200)
committerlx-s <lx-s@users.noreply.github.com>
Wed, 24 Sep 2025 08:45:54 +0000 (10:45 +0200)
16 files changed:
Translations/lang-de.json
Translations/lang-en.json
Translations/lang-es.json
Translations/lang-it.json
Translations/lang-nl.json
Translations/lang-zh_Hans.json
WinMute/LogDialog.cpp
WinMute/Settings_GeneralDlg.cpp
WinMute/WMLog.cpp
WinMute/WMLog.h
WinMute/WMi18n.cpp
WinMute/WMi18n.h
WinMute/WinMute.cpp
WinMute/WinMute.rc
WinMute/common.h
WinMute/resource.h

index 8fafea8a0a6fe7473cab7d935821611a8e84afb5..ac9927d2dd6b1aad74250baa3bb1874f84d7d33c 100644 (file)
@@ -65,6 +65,7 @@
     "settings.general.run-on-startup": "WinMute mit Windows starten",
     "settings.general.enable-logging": "Protokollierung aktivieren",
     "settings.general.btn-open-log-file": "Protokolldatei öffnen...",
+    "settings.general.btn-open-log-window": "Protokoll anzeigen...",
     "settings.general.select-language-label": "Sprache",
     "settings.bluetooth.add-edit.enter-device-name-placeholder": "Bitte geben Sie einen Gerätenamen an",
     "settings.bluetooth.description": "\"Bluetooth Muting\" aktiviert das Stummschalten des PCs sobald ein Bluetooth-Audiogerät vom PC getrennt wird und hebt die Stummschaltung auf, sobald es wieder verbunden wird.\n\nDieses Verhalten kann für alle oder nur bestimmte Bluetooth-Geräte aktiviert werden.",
     "pupup.error.update-check-failed.text": "Fehler beim Prüfen auf eine neue Version.\nBitte prüfen Sie die Protokolldateien.",
     "settings.general.check-for-beta-updates-on-start": "Auf Vorabversionen überprüfen",
     "settings.general.updates-handled-externally": "Optionen deaktiviert: Updates werden extern durchgeführt",
-    "settings.general.help-translating": "Hilf beim Übersetzen"
+    "settings.general.help-translating": "Hilf beim Übersetzen",
+    "log.title": "WinMute Protokolldatei"
 }
index 8594fa91177f4557f8553a37f0ea393202392ac1..aa3035549b5bb438389c9cdba3f280acbc0b524c 100644 (file)
@@ -74,6 +74,7 @@
     "settings.general.updates-handled-externally": "Options disabled: Updates are handled externally",
     "settings.general.enable-logging": "Enable logging",
     "settings.general.btn-open-log-file": "Open log file...",
+    "settings.general.btn-open-log-window": "Show log...",
     "settings.general.select-language-label": "Language",
     "settings.general.help-translating": "Help translating",
     "settings.bluetooth.add-edit.enter-device-name-placeholder": "Please enter a Bluetooth device name",
     "about.general.description": "WinMute is developed by Alexander Steinhoefer his spare time. The code as well as new releases for this tool can be found on GitHub. Contributions in the form of code, tickets or feature requests are very welcome. Thanks for using this little tool!",
     "about.tab.winmute": "WinMute",
     "about.tab.license": "License",
-    "about.btn-close": "OK"
+    "about.btn-close": "OK",
+    "log.title": "WinMute Log-File"
 }
index 3da32727439ccbd4df546eac52d0642cb6ad9550..173047caa890a711d9b4c2adb2913dc05878ccc6 100644 (file)
 {
-    "meta.lang.name": "Español (Spanish)",
-    "meta.lang.mode": "ltr",
-    "init.error.settings.title": "No se pudo inicializar la configuración",
-    "init.error.settings.text": "Error crítico al inicializar WinMute",
-    "init.error.already-running.title": "WinMute ya se está ejecutando",
-    "init.error.already-running.text": "Por favor busque el ícono de la aplicación WinMute en el área de notificación de la barra de tareas de Windows.",
-    "init.error.winmute.title": "No se pudo iniciar WinMute.",
-    "init.error.winmute.text": "WinMute encontró un error crítico durante la inicialización y debe cerrarse.",
-    "init.error.winmute.platform-support.title": "Solo se soporta Windows Vista y versiones más recientes",
-    "init.error.winmute.platform-support.text": "Si requiere soporte para Windows XP, por favor descargue WinMute 1.4.2 o inferior.",
-    "general.error.winapi.text": "{} falló con error {}: {}",
-    "general.error.audio-service-shutdown.title": "El servicio de audio ha sido terminado.",
-    "general.error.audio-service-shutdown.text": "WinMute no puede recuperarse de esta condición.\nPor favor intente reiniciar el programa.",
-    "popup.remote-session-detected.title": "Sesión remota detectada",
-    "popup.remote-session-detected.text": "Se han silenciado todos los dispositivos de audio",
-    "popup.bluetooth-muting-disabled.title": "Silenciamiento de Bluetooth deshabilitado",
-    "popup.bluetooth-muting-disabled.text": "Bluetooth no está disponible o está deshabilitado.\nEl silenciamiento de Bluetooth será deshabilitado en esta computadora.",
-    "popup.wlan-muting-disabled.title": "Silenciamiento de WiFi desactivado",
-    "popup.wlan-muting-disabled.text": "WiFi no está disponible o está deactivado.\nEl silenciamiento de WiFi será deshabilitado en esta computadora.",
-    "popup.quiet-hours-started.title": "Horas de silencio activadas",
-    "popup.quiet-hours-started.text": "El audio de la computadora será silenciado ahora.",
-    "popup.quiet-hours-ended.title": "Horas de silencio terminadas",
-    "popup.quiet-hours-ended.text": "El audio de la computadora ha sido restaurado.",
-    "popup.workstation-muted.title": "Audio silenciado",
-    "popup.wlan-not-on-mute-list.text": "La red de WiFi \"{}\" no esta en la lista de redes permitidas.",
-    "popup.wlan-is-on-mute-list.text": "La red WiFi \"{}\" está configurada para AutoMute.",
-    "popup.muting-workstation-after-delay.title": "Silenciando la computadora después de demora",
-    "popup.muting-workstation-after-delay.text": "Todos los dispositivos han sido silenciados",
-    "popup.volume-restored.title": "Volumen restaurado",
-    "popup.volume-restored.text": "Todos los dispositivos han sido restaurados a su configuración anterior",
-    "popup.muting-workstation.title": "Silenciando computadora",
-    "popup.muting-workstation.text": "Todos los dispositivos han sido silenciados",
-    "popup.error.quiet-hours-start.title": "Empezar Horas de Silencio",
-    "popup.error.quiet-hours-start.text": "Fallo al registrar el inicio de las horas de silencio con el sistema de temporizador de Windows",
-    "popup.error.quiet-hours-stop.title": "Fin de las horas de silencio",
-    "popup.error.quiet-hours-stop.text": "Fallo al registrar el final de las horas de silencio con el sistema de temporizador de Windows",
-    "traymenu.info": "Acerca de",
-    "traymenu.mute-when": "Silenciar cuando...",
-    "traymenu.mute-on-lock": "... la computadora está bloqueada",
-    "traymenu.mute-on-screen-suspend": "... la pantalla se apaga",
-    "traymenu.restore-volume": "Restaurar el volumen después",
-    "traymenu.mute-no-restore": "Silencio activado (no se restablece el volumen)...",
-    "traymenu.mute-on-shutdown": "... apagado",
-    "traymenu.mute-on-sleep": "... suspender",
-    "traymenu.mute-on-logout": "... cerrar sesión",
-    "traymenu.mute-all-devices": "Silenciar todos los dispositivos ahora",
-    "traymenu.settings": "Configuración...",
-    "traymenu.exit": "Salir",
-    "settings.title": "Configuración",
-    "settings.btn-save": "Guardar",
-    "settings.btn-cancel": "Cancelar",
-    "settings.btn-add": "Añadir",
-    "settings.btn-edit": "Editar",
-    "settings.btn-remove": "Quitar",
-    "settings.btn-remove-all": "Quitar todo",
-    "settings.tab.general": "General",
-    "settings.tab.mute": "Silencio",
-    "settings.tab.quiet-hours": "Horas de silencio",
-    "settings.tab.bluetooth": "Bluetooth",
-    "settings.tab.wifi": "WLAN",
-    "settings.bluetooth.add-edit.add-title": "Añade un dispositivo Bluetooth",
-    "settings.bluetooth.add-edit.edit-title": "Editar dispositivo Bluetooth",
-    "settings.bluetooth.add-edit.device-name-label": "Nombre del dispositivo Bluetooth:",
-    "settings.general.run-on-startup": "Ejecutar WinMute cuando este usuario se conecte",
-    "settings.general.enable-logging": "Activar el registro",
-    "settings.general.btn-open-log-file": "Abrir el archivo de registro...",
-    "settings.general.select-language-label": "Idioma",
-    "settings.bluetooth.add-edit.enter-device-name-placeholder": "Por favor, introduzca un nombre para el dispositivo Bluetooth",
-    "settings.bluetooth.description": "\"Silenciar Bluetooth\" permite desactivar el audio si se desconecta un dispositivo bluetooth de clase audio, y volver a activarlo si se vuelve a conectar al ordenador.\n\nEste comportamiento se puede activar para todos los dispositivos de audio bluetooth o sólo para un conjunto específico.",
-    "settings.bluetooth.enable-muting": "Activar el silenciamiento basado en Bluetooth",
-    "settings.bluetooth.enable-muting-filter": "Activar sólo para estos dispositivos:",
-    "settings.bluetooth-disabled-info": "",
-    "settings.mute.general-title": "General",
-    "settings.mute.show-mute-event-notifications": "Mostrar notificaciones de eventos silenciados",
-    "settings.mute.manage-endpoints-individually": "Gestiona individualmente los dispositivos de audio",
-    "settings.mute.btn-manage-endpoints": "Gestiona los dispositivos...",
-    "settings.mute.mute-with-restore.title": "Silencio con restauración del volumen, cuando...",
-    "settings.mute.mute-with-restore.when-workstation-is-locked": "... el ordenador está bloqueado",
-    "settings.mute.mute-with-restore.when-screen-turns-off": "... la pantalla se apaga",
-    "settings.mute.mute-with-restore.restore-volume": "Restaurar el volumen después",
-    "settings.mute.mute-with-restore.restore-volume-delay-label": "segundos de retardo antes de silenciar.",
-    "settings.mute.mute-without-restore.title": "Silenciar sin restaurar el volumen, cuando...",
-    "settings.mute.mute-without-restore.when-computer-shuts-down": "... el ordenador se apaga",
-    "settings.mute.mute-without-restore.when-computer-goes-to-sleep": "... el ordenador entra en reposo/hibernación",
-    "settings.mute.mute-without-restore.when-user-logs-out": "... el usuario se desconecta",
-    "settings.mute.mute-without-restore.when-rdp-session-starts": "... WinMute se inicia dentro de una sesión RDP",
-    "settings.quiet-hours.intro": "Durante las horas de silencio, WinMute silencia automáticamente los dispositivos de audio del ordenador y los vuelve a silenciar después.",
-    "settings.quiet-hours.enable": "Activar las horas de silencio",
-    "settings.quiet-hours.start-time-label": "Hora de inicio:",
-    "settings.quiet-hours.end-time-label": "Hora de finalización:",
-    "settings.quiet-hours.force-unmute": "Forzar el silencio",
-    "settings.quiet-hours.force-unmute-description": "Si la opción de forzar el silencio está activada, WinMute anulará el silencio de los dispositivos de audio del ordenador cuando finalicen las horas de silencio y no tendrá en cuenta si ya estaban silenciados antes de que comenzaran las horas de silencio.",
-    "settings.quiet-hours.show-notifications": "Mostrar notificaciones de horas de silencio",
-    "settings.quiet-hours.error.invalid-time-range.title": "Intervalo de tiempo no válido",
-    "settings.quiet-hours.error.invalid-time-range.text": "El inicio y el final deben ser tiempos diferentes.",
-    "settings.quiet-hours.error.error-while-saving.title": "No se ha podido guardar la configuración de las horas de silencio",
-    "settings.quiet-hours.error.error-while-saving.text": "Algo ha ido mal al guardar la configuración",
-    "settings.wifi.intro": "\"WLAN Mute\" silencia la computadora según el nombre de la red inalámbrica conectada.",
-    "settings.wifi.enable": "Habilitar el silenciamiento basado en WLAN",
-    "settings.wifi.mute-when-in-list": "Silenciar si la WLAN conectada está en la lista",
-    "settings.wifi.mute-when-not-in-list": "Silenciar si la WLAN conectada no está en la lista",
-    "settings.wifi.wifi-disabled-info": "Nota: WLAN no está disponible en este dispositivo.\nAlgunas opciones han sido deshabilitadas.",
-    "settings.wifi.add-edit.add-title": "Añadir red WiFi",
-    "settings.wifi.add-edit.edit-title": "Editar red WiFi",
-    "settings.wifi.add-edit.ssid-name-label": "Nombre SSID/WiFi:",
-    "settings.wifi.add-edit.enter-device-name-placeholder": "Por favor proporcione un nombre de SSID/WiFi",
-    "settings.mute.manage-endpoints.title": "Administrar dispositivos de audio",
-    "settings.mute.manage-endpoints.list-behaviour.title": "General",
-    "settings.mute.manage-endpoints.list-behaviour.mute-only-listed": "Silenciar solo los dispositivos listados",
-    "settings.mute.manage-endpoints.list-behaviour.mute-all-but-listed": "Silenciar todo excepto los dispositivos listados",
-    "settings.mute.manage-endpoints.endpoints.title": "Dispositivos",
-    "settings.mute.manage-endpoints.add-edit.add-title": "Añadir dispositivo",
-    "settings.mute.manage-endpoints.add-edit.edit-title": "Editar dispositivo",
-    "settings.mute.manage-endpoints.add-edit.endpoint-name-placeholder": "Por favor proporcione un nombre de dispositivo",
-    "settings.mute.manage-endpoints.add-edit.endpoint-name-label": "Nombre de dispositivo:",
-    "about.title": "Acerca de WinMute",
-    "about.general.author-site-label": "Autor: www.lx-s.de",
-    "about.general.project-site-label": "Sitio del proyecto && Código",
-    "about.general.support-label": "Soporte",
-    "about.general.description": "WinMute es desarrollado por Alexander Steinhoefer en su tiempo libre. El código, así como los nuevos lanzamientos de esta herramienta, pueden encontrarse en Github. Las contribuciones en forma de código, tickets o solicitudes de características son muy bienvenidas. Gracias por usar esta pequeña herramienta!",
-    "about.tab.winmute": "WinMute",
-    "about.tab.license": "Licencia",
-    "about.btn-close": "OK",
-    "popup.update-available.text": "La versión instalada es {}.\nHaga clic en este mensaje para abrir la página de descarga.",
-    "popup.update-available-beta.title": "¡WinMute Beta {} ya está disponible!",
-    "settings.general.check-for-updates-on-start": "Buscar nuevas actualizaciones al iniciar",
-    "popup.update-available-beta.text": "Tu versión actual es {}.\nHaga clic en este mensaje para abrir la página de descarga de la versión beta.",
-    "settings.bluetooth.bluetooth-disabled-info": "Nota: el bluetooth no está disponible en este dispositivo.\nAlgunas opciones se han desactivado.",
-    "popup.error.update-check-failed.title": "Error en la comprobación de la actualización.",
-    "settings.general.updates-handled-externally": "Opciones desactivadas: Las actualizaciones se gestionan externamente",
-    "popup.update-available.title": "¡WinMute {} está disponible!",
-    "pupup.error.update-check-failed.text": "No se ha podido comprobar si hay una nueva versión.\nPor favor compruebe/habilite el registro para obtener más detalles.",
-    "settings.general.check-for-beta-updates-on-start": "Compruebe también si hay nuevas versiones beta",
-    "settings.general.help-translating": "Ayuda a la traducción"
+  "meta.lang.name": "Español (Spanish)",
+  "meta.lang.mode": "ltr",
+  "init.error.settings.title": "No se pudo inicializar la configuración",
+  "init.error.settings.text": "Error crítico al inicializar WinMute",
+  "init.error.already-running.title": "WinMute ya se está ejecutando",
+  "init.error.already-running.text": "Por favor busque el ícono de la aplicación WinMute en el área de notificación de la barra de tareas de Windows.",
+  "init.error.winmute.title": "No se pudo iniciar WinMute.",
+  "init.error.winmute.text": "WinMute encontró un error crítico durante la inicialización y debe cerrarse.",
+  "init.error.winmute.platform-support.title": "Solo se soporta Windows Vista y versiones más recientes",
+  "init.error.winmute.platform-support.text": "Si requiere soporte para Windows XP, por favor descargue WinMute 1.4.2 o inferior.",
+  "general.error.winapi.text": "{} falló con error {}: {}",
+  "general.error.audio-service-shutdown.title": "El servicio de audio ha sido terminado.",
+  "general.error.audio-service-shutdown.text": "WinMute no puede recuperarse de esta condición.\nPor favor intente reiniciar el programa.",
+  "popup.remote-session-detected.title": "Sesión remota detectada",
+  "popup.remote-session-detected.text": "Se han silenciado todos los dispositivos de audio",
+  "popup.bluetooth-muting-disabled.title": "Silenciamiento de Bluetooth deshabilitado",
+  "popup.bluetooth-muting-disabled.text": "Bluetooth no está disponible o está deshabilitado.\nEl silenciamiento de Bluetooth será deshabilitado en esta computadora.",
+  "popup.wlan-muting-disabled.title": "Silenciamiento de WiFi desactivado",
+  "popup.wlan-muting-disabled.text": "WiFi no está disponible o está deactivado.\nEl silenciamiento de WiFi será deshabilitado en esta computadora.",
+  "popup.quiet-hours-started.title": "Horas de silencio activadas",
+  "popup.quiet-hours-started.text": "El audio de la computadora será silenciado ahora.",
+  "popup.quiet-hours-ended.title": "Horas de silencio terminadas",
+  "popup.quiet-hours-ended.text": "El audio de la computadora ha sido restaurado.",
+  "popup.workstation-muted.title": "Audio silenciado",
+  "popup.wlan-not-on-mute-list.text": "La red de WiFi \"{}\" no esta en la lista de redes permitidas.",
+  "popup.wlan-is-on-mute-list.text": "La red WiFi \"{}\" está configurada para AutoMute.",
+  "popup.muting-workstation-after-delay.title": "Silenciando la computadora después de demora",
+  "popup.muting-workstation-after-delay.text": "Todos los dispositivos han sido silenciados",
+  "popup.volume-restored.title": "Volumen restaurado",
+  "popup.volume-restored.text": "Todos los dispositivos han sido restaurados a su configuración anterior",
+  "popup.muting-workstation.title": "Silenciando computadora",
+  "popup.muting-workstation.text": "Todos los dispositivos han sido silenciados",
+  "popup.error.quiet-hours-start.title": "Empezar Horas de Silencio",
+  "popup.error.quiet-hours-start.text": "Fallo al registrar el inicio de las horas de silencio con el sistema de temporizador de Windows",
+  "popup.error.quiet-hours-stop.title": "Fin de las horas de silencio",
+  "popup.error.quiet-hours-stop.text": "Fallo al registrar el final de las horas de silencio con el sistema de temporizador de Windows",
+  "traymenu.info": "Acerca de",
+  "traymenu.mute-when": "Silenciar cuando...",
+  "traymenu.mute-on-lock": "... la computadora está bloqueada",
+  "traymenu.mute-on-screen-suspend": "... la pantalla se apaga",
+  "traymenu.restore-volume": "Restaurar el volumen después",
+  "traymenu.mute-no-restore": "Silencio activado (no se restablece el volumen)...",
+  "traymenu.mute-on-shutdown": "... apagado",
+  "traymenu.mute-on-sleep": "... suspender",
+  "traymenu.mute-on-logout": "... cerrar sesión",
+  "traymenu.mute-all-devices": "Silenciar todos los dispositivos ahora",
+  "traymenu.settings": "Configuración...",
+  "traymenu.exit": "Salir",
+  "settings.title": "Configuración",
+  "settings.btn-save": "Guardar",
+  "settings.btn-cancel": "Cancelar",
+  "settings.btn-add": "Añadir",
+  "settings.btn-edit": "Editar",
+  "settings.btn-remove": "Quitar",
+  "settings.btn-remove-all": "Quitar todo",
+  "settings.tab.general": "General",
+  "settings.tab.mute": "Silencio",
+  "settings.tab.quiet-hours": "Horas de silencio",
+  "settings.tab.bluetooth": "Bluetooth",
+  "settings.tab.wifi": "WLAN",
+  "settings.bluetooth.add-edit.add-title": "Añade un dispositivo Bluetooth",
+  "settings.bluetooth.add-edit.edit-title": "Editar dispositivo Bluetooth",
+  "settings.bluetooth.add-edit.device-name-label": "Nombre del dispositivo Bluetooth:",
+  "settings.general.run-on-startup": "Ejecutar WinMute cuando este usuario se conecte",
+  "settings.general.enable-logging": "Activar el registro",
+  "settings.general.btn-open-log-file": "Abrir el archivo de registro...",
+  "settings.general.select-language-label": "Idioma",
+  "settings.bluetooth.add-edit.enter-device-name-placeholder": "Por favor, introduzca un nombre para el dispositivo Bluetooth",
+  "settings.bluetooth.description": "\"Silenciar Bluetooth\" permite desactivar el audio si se desconecta un dispositivo bluetooth de clase audio, y volver a activarlo si se vuelve a conectar al ordenador.\n\nEste comportamiento se puede activar para todos los dispositivos de audio bluetooth o sólo para un conjunto específico.",
+  "settings.bluetooth.enable-muting": "Activar el silenciamiento basado en Bluetooth",
+  "settings.bluetooth.enable-muting-filter": "Activar sólo para estos dispositivos:",
+  "settings.bluetooth-disabled-info": "",
+  "settings.mute.general-title": "General",
+  "settings.mute.show-mute-event-notifications": "Mostrar notificaciones de eventos silenciados",
+  "settings.mute.manage-endpoints-individually": "Gestiona individualmente los dispositivos de audio",
+  "settings.mute.btn-manage-endpoints": "Gestiona los dispositivos...",
+  "settings.mute.mute-with-restore.title": "Silencio con restauración del volumen, cuando...",
+  "settings.mute.mute-with-restore.when-workstation-is-locked": "... el ordenador está bloqueado",
+  "settings.mute.mute-with-restore.when-screen-turns-off": "... la pantalla se apaga",
+  "settings.mute.mute-with-restore.restore-volume": "Restaurar el volumen después",
+  "settings.mute.mute-with-restore.restore-volume-delay-label": "segundos de retardo antes de silenciar.",
+  "settings.mute.mute-without-restore.title": "Silenciar sin restaurar el volumen, cuando...",
+  "settings.mute.mute-without-restore.when-computer-shuts-down": "... el ordenador se apaga",
+  "settings.mute.mute-without-restore.when-computer-goes-to-sleep": "... el ordenador entra en reposo/hibernación",
+  "settings.mute.mute-without-restore.when-user-logs-out": "... el usuario se desconecta",
+  "settings.mute.mute-without-restore.when-rdp-session-starts": "... WinMute se inicia dentro de una sesión RDP",
+  "settings.quiet-hours.intro": "Durante las horas de silencio, WinMute silencia automáticamente los dispositivos de audio del ordenador y los vuelve a silenciar después.",
+  "settings.quiet-hours.enable": "Activar las horas de silencio",
+  "settings.quiet-hours.start-time-label": "Hora de inicio:",
+  "settings.quiet-hours.end-time-label": "Hora de finalización:",
+  "settings.quiet-hours.force-unmute": "Forzar el silencio",
+  "settings.quiet-hours.force-unmute-description": "Si la opción de forzar el silencio está activada, WinMute anulará el silencio de los dispositivos de audio del ordenador cuando finalicen las horas de silencio y no tendrá en cuenta si ya estaban silenciados antes de que comenzaran las horas de silencio.",
+  "settings.quiet-hours.show-notifications": "Mostrar notificaciones de horas de silencio",
+  "settings.quiet-hours.error.invalid-time-range.title": "Intervalo de tiempo no válido",
+  "settings.quiet-hours.error.invalid-time-range.text": "El inicio y el final deben ser tiempos diferentes.",
+  "settings.quiet-hours.error.error-while-saving.title": "No se ha podido guardar la configuración de las horas de silencio",
+  "settings.quiet-hours.error.error-while-saving.text": "Algo ha ido mal al guardar la configuración",
+  "settings.wifi.intro": "\"WLAN Mute\" silencia la computadora según el nombre de la red inalámbrica conectada.",
+  "settings.wifi.enable": "Habilitar el silenciamiento basado en WLAN",
+  "settings.wifi.mute-when-in-list": "Silenciar si la WLAN conectada está en la lista",
+  "settings.wifi.mute-when-not-in-list": "Silenciar si la WLAN conectada no está en la lista",
+  "settings.wifi.wifi-disabled-info": "Nota: WLAN no está disponible en este dispositivo.\nAlgunas opciones han sido deshabilitadas.",
+  "settings.wifi.add-edit.add-title": "Añadir red WiFi",
+  "settings.wifi.add-edit.edit-title": "Editar red WiFi",
+  "settings.wifi.add-edit.ssid-name-label": "Nombre SSID/WiFi:",
+  "settings.wifi.add-edit.enter-device-name-placeholder": "Por favor proporcione un nombre de SSID/WiFi",
+  "settings.mute.manage-endpoints.title": "Administrar dispositivos de audio",
+  "settings.mute.manage-endpoints.list-behaviour.title": "General",
+  "settings.mute.manage-endpoints.list-behaviour.mute-only-listed": "Silenciar solo los dispositivos listados",
+  "settings.mute.manage-endpoints.list-behaviour.mute-all-but-listed": "Silenciar todo excepto los dispositivos listados",
+  "settings.mute.manage-endpoints.endpoints.title": "Dispositivos",
+  "settings.mute.manage-endpoints.add-edit.add-title": "Añadir dispositivo",
+  "settings.mute.manage-endpoints.add-edit.edit-title": "Editar dispositivo",
+  "settings.mute.manage-endpoints.add-edit.endpoint-name-placeholder": "Por favor proporcione un nombre de dispositivo",
+  "settings.mute.manage-endpoints.add-edit.endpoint-name-label": "Nombre de dispositivo:",
+  "about.title": "Acerca de WinMute",
+  "about.general.author-site-label": "Autor: www.lx-s.de",
+  "about.general.project-site-label": "Sitio del proyecto && Código",
+  "about.general.support-label": "Soporte",
+  "about.general.description": "WinMute es desarrollado por Alexander Steinhoefer en su tiempo libre. El código, así como los nuevos lanzamientos de esta herramienta, pueden encontrarse en Github. Las contribuciones en forma de código, tickets o solicitudes de características son muy bienvenidas. Gracias por usar esta pequeña herramienta!",
+  "about.tab.winmute": "WinMute",
+  "about.tab.license": "Licencia",
+  "about.btn-close": "OK",
+  "popup.update-available.text": "La versión instalada es {}.\nHaga clic en este mensaje para abrir la página de descarga.",
+  "popup.update-available-beta.title": "¡WinMute Beta {} ya está disponible!",
+  "settings.general.check-for-updates-on-start": "Buscar nuevas actualizaciones al iniciar",
+  "popup.update-available-beta.text": "Tu versión actual es {}.\nHaga clic en este mensaje para abrir la página de descarga de la versión beta.",
+  "settings.bluetooth.bluetooth-disabled-info": "Nota: el bluetooth no está disponible en este dispositivo.\nAlgunas opciones se han desactivado.",
+  "popup.error.update-check-failed.title": "Error en la comprobación de la actualización.",
+  "settings.general.updates-handled-externally": "Opciones desactivadas: Las actualizaciones se gestionan externamente",
+  "popup.update-available.title": "¡WinMute {} está disponible!",
+  "pupup.error.update-check-failed.text": "No se ha podido comprobar si hay una nueva versión.\nPor favor compruebe/habilite el registro para obtener más detalles.",
+  "settings.general.check-for-beta-updates-on-start": "Compruebe también si hay nuevas versiones beta",
+  "settings.general.help-translating": "Ayuda a la traducción",
+  "log.title": "WinMute Archivo de registro"
 }
index 864359de732b13574adc9673e4ee81852ced91ee..78c85fee6ba0a119c91c71272c835b781761a2aa 100644 (file)
 {
-    "meta.lang.name": "Italiano (Italian)",
-    "meta.lang.mode": "ltr",
-    "init.error.settings.title": "Impossibile inizializzare le impostazioni",
-    "init.error.settings.text": "Errore critico durante l'inizializzazione di WinMute",
-    "init.error.already-running.title": "WinMute è già in esecuzione",
-    "init.error.already-running.text": "Cerca l'icona dell'applicazione WinMutes nell'area di notifica della barra delle applicazioni di Windows.",
-    "init.error.winmute.title": "Impossibile avviare WinMute.",
-    "init.error.winmute.text": "WinMute durante l'inizializzazione ha riscontrato un errore critico ed è necessario chiudere l'applicazione.",
-    "init.error.winmute.platform-support.title": "È supportato solo Windows Vista e versioni successive",
-    "init.error.winmute.platform-support.text": "Se hai bisogno del supporto per Windows XP, scarica WinMute versione 1.4.2 o precedente.",
-    "general.error.winapi.text": "{} non riuscito con errore {}: {}",
-    "general.error.audio-service-shutdown.title": "Il servizio audio è stato chiuso.",
-    "general.error.audio-service-shutdown.text": "WinMute non è in grado di recuperare da tale condizione.\nProva a riavviare il programma.",
-    "popup.remote-session-detected.title": "Rilevata sessione remota",
-    "popup.remote-session-detected.text": "Tutti i dispositivi audio sono stati disattivati",
-    "popup.bluetooth-muting-disabled.title": "Disabilitazione audio Bluetooth disattivata",
-    "popup.bluetooth-muting-disabled.text": "Il Bluetooth non è disponibile o è disabilitato.\nIn questo computer la disabilitazione dell'audio Bluetooth verrà disattivata.",
-    "popup.wlan-muting-disabled.title": "Disabilitazione audio WLAN disattivata",
-    "popup.wlan-muting-disabled.text": "La WLAN non è disponibile o è disabilitata. \nIn questo computer la disabilitazione dell'audio WLAN verrà disattivata.",
-    "popup.quiet-hours-started.title": "Cominciano le ore tranquille",
-    "popup.quiet-hours-started.text": "L'audio del computer verrà ora disattivato.",
-    "popup.quiet-hours-ended.title": "Ore tranquille terminate",
-    "popup.quiet-hours-ended.text": "L'audio del computer è stato riattivato.",
-    "popup.workstation-muted.title": "Audio computer OFF",
-    "popup.wlan-not-on-mute-list.text": "La rete WLAN \"{}\" non è nell'elenco consentito.",
-    "popup.wlan-is-on-mute-list.text": "La rete WLAN \"{}\" è configurata per la disabilitazione audio automatica.",
-    "popup.muting-workstation-after-delay.title": "Ritardo disattivazione audio computer",
-    "popup.muting-workstation-after-delay.text": "Tutti i dispositivi audio sono stati disattivati",
-    "popup.volume-restored.title": "Volume ripristinato",
-    "popup.volume-restored.text": "Tutti i dispositivi audio sono stati ripristinati alla loro configurazione precedente",
-    "popup.muting-workstation.title": "Audio OFF computer",
-    "popup.muting-workstation.text": "Tutti i dispositivi audio sono stati disattivati",
-    "popup.error.quiet-hours-start.title": "Avvio ore tranquille",
-    "popup.error.quiet-hours-start.text": "Impossibile registrare l'inizio delle ore di silenzio con il timer di sistema di Windows",
-    "popup.error.quiet-hours-stop.title": "Fine ore silenzio",
-    "popup.error.quiet-hours-stop.text": "Impossibile registrare la fine delle ore di silenzio con il timer di sistema di Windows",
-    "traymenu.info": "Info programma",
-    "traymenu.mute-when": "Audio OFF quando...",
-    "traymenu.mute-on-lock": "... il computer viene bloccato",
-    "traymenu.mute-on-screen-suspend": "... lo schermo verrà spento",
-    "traymenu.restore-volume": "Ripristina il volume in seguito",
-    "traymenu.mute-no-restore": "Disattiva audio (nessun ripristino volume) quando...",
-    "traymenu.mute-on-shutdown": "... il computer viene spento",
-    "traymenu.mute-on-sleep": "... il computer va in sospensione",
-    "traymenu.mute-on-logout": "... l'utente si scollega",
-    "traymenu.mute-all-devices": "Disattiva audio per tutti i dispositivi",
-    "traymenu.settings": "Impostazioni...",
-    "traymenu.exit": "Esci",
-    "settings.title": "Impostazioni",
-    "settings.btn-save": "Salva",
-    "settings.btn-cancel": "Annulla",
-    "settings.btn-add": "Aggiungi",
-    "settings.btn-edit": "Modifica",
-    "settings.btn-remove": "Rimuovi",
-    "settings.btn-remove-all": "Rimuovi tutto",
-    "settings.tab.general": "Generale",
-    "settings.tab.mute": "Disattiva audio",
-    "settings.tab.quiet-hours": "Ore silenzio",
-    "settings.tab.bluetooth": "Bluetooth",
-    "settings.tab.wifi": "WLAN",
-    "settings.bluetooth.add-edit.add-title": "Aggiungi dispositivo Bluetooth",
-    "settings.bluetooth.add-edit.edit-title": "Modifica dispositivo Bluetooth",
-    "settings.bluetooth.add-edit.device-name-label": "Nome dispositivo Bluetooth:",
-    "settings.general.run-on-startup": "Esegui WinMute all'accesso dell'utente",
-    "settings.general.enable-logging": "Abilita registrazione eventi",
-    "settings.general.btn-open-log-file": "Apri file registro eventi...",
-    "settings.general.select-language-label": "Lingua",
-    "settings.bluetooth.add-edit.enter-device-name-placeholder": "Inserisci il nome di un dispositivo Bluetooth",
-    "settings.bluetooth.description": "\"Audio OFF Bluetooth\" consente di disattivare l'audio se un dispositivo Bluetooth di classe audio viene disconnesso e di riattivare l'audio se un dispositivo Bluetooth viene ricollegato al computer.\n\nPuoi abilitare questo comportamento per tutti i dispositivi audio Bluetooth o solo per un set specifico di dispositivi.",
-    "settings.bluetooth.enable-muting": "Abilita disabilitazione audio basata su hardware Bluetooth",
-    "settings.bluetooth.enable-muting-filter": "Abilita solo per questi dispositivi:",
-    "settings.bluetooth.bluetooth-disabled-info": "Nota: il Bluetooth non è disponibile nel dispositivo, quindi alcune opzioni sono state disabilitate.",
-    "settings.mute.general-title": "Generale",
-    "settings.mute.show-mute-event-notifications": "Visualizza notifiche eventi disattivazione",
-    "settings.mute.manage-endpoints-individually": "Gestisci i dispositivi audio individualmente",
-    "settings.mute.btn-manage-endpoints": "Gestisci dispositivi audio...",
-    "settings.mute.mute-with-restore.title": "Disattiva audio con ripristino del volume, quando...",
-    "settings.mute.mute-with-restore.when-workstation-is-locked": "... il computer viene bloccato",
-    "settings.mute.mute-with-restore.when-screen-turns-off": "... lo schermo viene spento",
-    "settings.mute.mute-with-restore.restore-volume": "Ripristina il volume in seguito",
-    "settings.mute.mute-with-restore.restore-volume-delay-label": "secondi di ritardo prima della disattivazione dell'audio.",
-    "settings.mute.mute-without-restore.title": "Disattiva l'audio senza ripristinare il volume, quando...",
-    "settings.mute.mute-without-restore.when-computer-shuts-down": "... il computer viene spento",
-    "settings.mute.mute-without-restore.when-computer-goes-to-sleep": "... il computer entra in modalità sospensione/ibernazione",
-    "settings.mute.mute-without-restore.when-user-logs-out": "... l'utente si scollega",
-    "settings.mute.mute-without-restore.when-rdp-session-starts": "... WinMute è avviato all'interno di una sessione RDP",
-    "settings.quiet-hours.intro": "Durante le ore di silenzio WinMute disattiva automaticamente i dispositivi audio del computer e li riattiverà successivamente.",
-    "settings.quiet-hours.enable": "Abilita ore di silenzio",
-    "settings.quiet-hours.start-time-label": "Orario inizio:",
-    "settings.quiet-hours.end-time-label": "Orario fine:",
-    "settings.quiet-hours.force-unmute": "Forza audio ON",
-    "settings.quiet-hours.force-unmute-description": "Se è attivato 'Forza audio ON', WinMute riattiverà i dispositivi audio durante le ore di silenzio e non prenderà in considerazione se erano già disattivati prima dell'inizio delle ore di silenzio.",
-    "settings.quiet-hours.show-notifications": "Visualizza notifiche ore di silenzio",
-    "settings.quiet-hours.error.invalid-time-range.title": "Intervallo temporale non valido",
-    "settings.quiet-hours.error.invalid-time-range.text": "Non è possibile avviare e arrestare allo stesso orario.\nCorreggi l'intervallo di tempo.",
-    "settings.quiet-hours.error.error-while-saving.title": "Impossibile salvare le impostazioni delle ore di silenzio",
-    "settings.quiet-hours.error.error-while-saving.text": "Si è verificato un errore durante il salvataggio delle impostazioni",
-    "settings.wifi.intro": "'Audio OFF in base a nome rete WLAN' consente di disattivare l'audio del computer in base al nome della rete wireless connessa.",
-    "settings.wifi.enable": "Abilita disabilitazione audio basata su nome rete WLAN",
-    "settings.wifi.mute-when-not-in-list": "Disattiva audio se la rete WLAN NON è in elenco",
-    "settings.wifi.wifi-disabled-info": "Nota: la WLAN non è disponibile nel dispositivo, quindi alcune opzioni sono state disabilitate.",
-    "settings.wifi.add-edit.add-title": "Aggiungi rete WiFi",
-    "settings.wifi.add-edit.edit-title": "Modifica rete WiFi",
-    "settings.wifi.add-edit.ssid-name-label": "Nome SSID/WiFi:",
-    "settings.wifi.add-edit.enter-device-name-placeholder": "Inserisci un nome SSID/WiFi",
-    "settings.mute.manage-endpoints.title": "Gestisci dispositivi audio",
-    "settings.mute.manage-endpoints.list-behaviour.title": "Generale",
-    "settings.mute.manage-endpoints.list-behaviour.mute-only-listed": "Disattiva solo i dispositivi audio elencati",
-    "settings.mute.manage-endpoints.list-behaviour.mute-all-but-listed": "Disattiva tutti i dispositivi audio tranne quelli elencati",
-    "settings.mute.manage-endpoints.endpoints.title": "Dispositivi audio",
-    "settings.mute.manage-endpoints.add-edit.add-title": "Aggiungi dispositivi audio",
-    "settings.mute.manage-endpoints.add-edit.edit-title": "Modifica dispositivi audio",
-    "settings.mute.manage-endpoints.add-edit.endpoint-name-placeholder": "Inserisci un nome per il dispositivo audio",
-    "settings.mute.manage-endpoints.add-edit.endpoint-name-label": "Nome dispositivo audio:",
-    "about.title": "Info su WinMute",
-    "about.general.author-site-label": "Autore: www.lx-s.de",
-    "about.general.project-site-label": "Sito e codice del progetto",
-    "about.general.support-label": "Supporto",
-    "about.general.description": "WinMute è sviluppato da Alexander Steinhoefer nel suo tempo libero.\nIl codice e le nuove versioni di questo strumento sono disponibili su GitHub.\nI contributi sotto forma di codice, ticket o richieste di funzionalità sono molto graditi.\nGrazie per l'uso di questo piccolo strumento!",
-    "about.tab.winmute": "WinMute",
-    "about.tab.license": "Licenza",
-    "about.btn-close": "OK",
-    "settings.wifi.mute-when-in-list": "Disattiva audio se la rete WLAN è in elenco",
-    "popup.update-available.text": "La versione installata è {}.\nFai clic su questo messaggio per aprire la pagina di download.",
-    "popup.update-available-beta.title": "È disponibile WinMute Beta {}!",
-    "settings.general.check-for-updates-on-start": "All'avvio verifica la presenza di nuovi aggiornamenti",
-    "popup.update-available-beta.text": "La versione attuale è {}.\nFai clic su questo messaggio per aprire la pagina di download della versione beta.",
-    "popup.error.update-check-failed.title": "Controllo aggiornamenti non riuscito.",
-    "popup.update-available.title": "È disponibile WinMute {}!",
-    "pupup.error.update-check-failed.text": "Impossibile verificare la disponibilità di una nuova versione.\nPer ulteriori dettagli controlla/abilita la registrazione eventi.",
-    "settings.general.check-for-beta-updates-on-start": "Controlla anche disponibilità nuove versioni beta",
-    "settings.general.help-translating": "Aiuta nella traduzione",
-    "settings.general.updates-handled-externally": "Opzioni disabilitate: aggiornamenti gestiti esternamente"
+  "meta.lang.name": "Italiano (Italian)",
+  "meta.lang.mode": "ltr",
+  "init.error.settings.title": "Impossibile inizializzare le impostazioni",
+  "init.error.settings.text": "Errore critico durante l'inizializzazione di WinMute",
+  "init.error.already-running.title": "WinMute è già in esecuzione",
+  "init.error.already-running.text": "Cerca l'icona dell'applicazione WinMutes nell'area di notifica della barra delle applicazioni di Windows.",
+  "init.error.winmute.title": "Impossibile avviare WinMute.",
+  "init.error.winmute.text": "WinMute durante l'inizializzazione ha riscontrato un errore critico ed è necessario chiudere l'applicazione.",
+  "init.error.winmute.platform-support.title": "È supportato solo Windows Vista e versioni successive",
+  "init.error.winmute.platform-support.text": "Se hai bisogno del supporto per Windows XP, scarica WinMute versione 1.4.2 o precedente.",
+  "general.error.winapi.text": "{} non riuscito con errore {}: {}",
+  "general.error.audio-service-shutdown.title": "Il servizio audio è stato chiuso.",
+  "general.error.audio-service-shutdown.text": "WinMute non è in grado di recuperare da tale condizione.\nProva a riavviare il programma.",
+  "popup.remote-session-detected.title": "Rilevata sessione remota",
+  "popup.remote-session-detected.text": "Tutti i dispositivi audio sono stati disattivati",
+  "popup.bluetooth-muting-disabled.title": "Disabilitazione audio Bluetooth disattivata",
+  "popup.bluetooth-muting-disabled.text": "Il Bluetooth non è disponibile o è disabilitato.\nIn questo computer la disabilitazione dell'audio Bluetooth verrà disattivata.",
+  "popup.wlan-muting-disabled.title": "Disabilitazione audio WLAN disattivata",
+  "popup.wlan-muting-disabled.text": "La WLAN non è disponibile o è disabilitata. \nIn questo computer la disabilitazione dell'audio WLAN verrà disattivata.",
+  "popup.quiet-hours-started.title": "Cominciano le ore tranquille",
+  "popup.quiet-hours-started.text": "L'audio del computer verrà ora disattivato.",
+  "popup.quiet-hours-ended.title": "Ore tranquille terminate",
+  "popup.quiet-hours-ended.text": "L'audio del computer è stato riattivato.",
+  "popup.workstation-muted.title": "Audio computer OFF",
+  "popup.wlan-not-on-mute-list.text": "La rete WLAN \"{}\" non è nell'elenco consentito.",
+  "popup.wlan-is-on-mute-list.text": "La rete WLAN \"{}\" è configurata per la disabilitazione audio automatica.",
+  "popup.muting-workstation-after-delay.title": "Ritardo disattivazione audio computer",
+  "popup.muting-workstation-after-delay.text": "Tutti i dispositivi audio sono stati disattivati",
+  "popup.volume-restored.title": "Volume ripristinato",
+  "popup.volume-restored.text": "Tutti i dispositivi audio sono stati ripristinati alla loro configurazione precedente",
+  "popup.muting-workstation.title": "Audio OFF computer",
+  "popup.muting-workstation.text": "Tutti i dispositivi audio sono stati disattivati",
+  "popup.error.quiet-hours-start.title": "Avvio ore tranquille",
+  "popup.error.quiet-hours-start.text": "Impossibile registrare l'inizio delle ore di silenzio con il timer di sistema di Windows",
+  "popup.error.quiet-hours-stop.title": "Fine ore silenzio",
+  "popup.error.quiet-hours-stop.text": "Impossibile registrare la fine delle ore di silenzio con il timer di sistema di Windows",
+  "traymenu.info": "Info programma",
+  "traymenu.mute-when": "Audio OFF quando...",
+  "traymenu.mute-on-lock": "... il computer viene bloccato",
+  "traymenu.mute-on-screen-suspend": "... lo schermo verrà spento",
+  "traymenu.restore-volume": "Ripristina il volume in seguito",
+  "traymenu.mute-no-restore": "Disattiva audio (nessun ripristino volume) quando...",
+  "traymenu.mute-on-shutdown": "... il computer viene spento",
+  "traymenu.mute-on-sleep": "... il computer va in sospensione",
+  "traymenu.mute-on-logout": "... l'utente si scollega",
+  "traymenu.mute-all-devices": "Disattiva audio per tutti i dispositivi",
+  "traymenu.settings": "Impostazioni...",
+  "traymenu.exit": "Esci",
+  "settings.title": "Impostazioni",
+  "settings.btn-save": "Salva",
+  "settings.btn-cancel": "Annulla",
+  "settings.btn-add": "Aggiungi",
+  "settings.btn-edit": "Modifica",
+  "settings.btn-remove": "Rimuovi",
+  "settings.btn-remove-all": "Rimuovi tutto",
+  "settings.tab.general": "Generale",
+  "settings.tab.mute": "Disattiva audio",
+  "settings.tab.quiet-hours": "Ore silenzio",
+  "settings.tab.bluetooth": "Bluetooth",
+  "settings.tab.wifi": "WLAN",
+  "settings.bluetooth.add-edit.add-title": "Aggiungi dispositivo Bluetooth",
+  "settings.bluetooth.add-edit.edit-title": "Modifica dispositivo Bluetooth",
+  "settings.bluetooth.add-edit.device-name-label": "Nome dispositivo Bluetooth:",
+  "settings.general.run-on-startup": "Esegui WinMute all'accesso dell'utente",
+  "settings.general.enable-logging": "Abilita registrazione eventi",
+  "settings.general.btn-open-log-file": "Apri file registro eventi...",
+  "settings.general.select-language-label": "Lingua",
+  "settings.bluetooth.add-edit.enter-device-name-placeholder": "Inserisci il nome di un dispositivo Bluetooth",
+  "settings.bluetooth.description": "\"Audio OFF Bluetooth\" consente di disattivare l'audio se un dispositivo Bluetooth di classe audio viene disconnesso e di riattivare l'audio se un dispositivo Bluetooth viene ricollegato al computer.\n\nPuoi abilitare questo comportamento per tutti i dispositivi audio Bluetooth o solo per un set specifico di dispositivi.",
+  "settings.bluetooth.enable-muting": "Abilita disabilitazione audio basata su hardware Bluetooth",
+  "settings.bluetooth.enable-muting-filter": "Abilita solo per questi dispositivi:",
+  "settings.bluetooth.bluetooth-disabled-info": "Nota: il Bluetooth non è disponibile nel dispositivo, quindi alcune opzioni sono state disabilitate.",
+  "settings.mute.general-title": "Generale",
+  "settings.mute.show-mute-event-notifications": "Visualizza notifiche eventi disattivazione",
+  "settings.mute.manage-endpoints-individually": "Gestisci i dispositivi audio individualmente",
+  "settings.mute.btn-manage-endpoints": "Gestisci dispositivi audio...",
+  "settings.mute.mute-with-restore.title": "Disattiva audio con ripristino del volume, quando...",
+  "settings.mute.mute-with-restore.when-workstation-is-locked": "... il computer viene bloccato",
+  "settings.mute.mute-with-restore.when-screen-turns-off": "... lo schermo viene spento",
+  "settings.mute.mute-with-restore.restore-volume": "Ripristina il volume in seguito",
+  "settings.mute.mute-with-restore.restore-volume-delay-label": "secondi di ritardo prima della disattivazione dell'audio.",
+  "settings.mute.mute-without-restore.title": "Disattiva l'audio senza ripristinare il volume, quando...",
+  "settings.mute.mute-without-restore.when-computer-shuts-down": "... il computer viene spento",
+  "settings.mute.mute-without-restore.when-computer-goes-to-sleep": "... il computer entra in modalità sospensione/ibernazione",
+  "settings.mute.mute-without-restore.when-user-logs-out": "... l'utente si scollega",
+  "settings.mute.mute-without-restore.when-rdp-session-starts": "... WinMute è avviato all'interno di una sessione RDP",
+  "settings.quiet-hours.intro": "Durante le ore di silenzio WinMute disattiva automaticamente i dispositivi audio del computer e li riattiverà successivamente.",
+  "settings.quiet-hours.enable": "Abilita ore di silenzio",
+  "settings.quiet-hours.start-time-label": "Orario inizio:",
+  "settings.quiet-hours.end-time-label": "Orario fine:",
+  "settings.quiet-hours.force-unmute": "Forza audio ON",
+  "settings.quiet-hours.force-unmute-description": "Se è attivato 'Forza audio ON', WinMute riattiverà i dispositivi audio durante le ore di silenzio e non prenderà in considerazione se erano già disattivati prima dell'inizio delle ore di silenzio.",
+  "settings.quiet-hours.show-notifications": "Visualizza notifiche ore di silenzio",
+  "settings.quiet-hours.error.invalid-time-range.title": "Intervallo temporale non valido",
+  "settings.quiet-hours.error.invalid-time-range.text": "Non è possibile avviare e arrestare allo stesso orario.\nCorreggi l'intervallo di tempo.",
+  "settings.quiet-hours.error.error-while-saving.title": "Impossibile salvare le impostazioni delle ore di silenzio",
+  "settings.quiet-hours.error.error-while-saving.text": "Si è verificato un errore durante il salvataggio delle impostazioni",
+  "settings.wifi.intro": "'Audio OFF in base a nome rete WLAN' consente di disattivare l'audio del computer in base al nome della rete wireless connessa.",
+  "settings.wifi.enable": "Abilita disabilitazione audio basata su nome rete WLAN",
+  "settings.wifi.mute-when-not-in-list": "Disattiva audio se la rete WLAN NON è in elenco",
+  "settings.wifi.wifi-disabled-info": "Nota: la WLAN non è disponibile nel dispositivo, quindi alcune opzioni sono state disabilitate.",
+  "settings.wifi.add-edit.add-title": "Aggiungi rete WiFi",
+  "settings.wifi.add-edit.edit-title": "Modifica rete WiFi",
+  "settings.wifi.add-edit.ssid-name-label": "Nome SSID/WiFi:",
+  "settings.wifi.add-edit.enter-device-name-placeholder": "Inserisci un nome SSID/WiFi",
+  "settings.mute.manage-endpoints.title": "Gestisci dispositivi audio",
+  "settings.mute.manage-endpoints.list-behaviour.title": "Generale",
+  "settings.mute.manage-endpoints.list-behaviour.mute-only-listed": "Disattiva solo i dispositivi audio elencati",
+  "settings.mute.manage-endpoints.list-behaviour.mute-all-but-listed": "Disattiva tutti i dispositivi audio tranne quelli elencati",
+  "settings.mute.manage-endpoints.endpoints.title": "Dispositivi audio",
+  "settings.mute.manage-endpoints.add-edit.add-title": "Aggiungi dispositivi audio",
+  "settings.mute.manage-endpoints.add-edit.edit-title": "Modifica dispositivi audio",
+  "settings.mute.manage-endpoints.add-edit.endpoint-name-placeholder": "Inserisci un nome per il dispositivo audio",
+  "settings.mute.manage-endpoints.add-edit.endpoint-name-label": "Nome dispositivo audio:",
+  "about.title": "Info su WinMute",
+  "about.general.author-site-label": "Autore: www.lx-s.de",
+  "about.general.project-site-label": "Sito e codice del progetto",
+  "about.general.support-label": "Supporto",
+  "about.general.description": "WinMute è sviluppato da Alexander Steinhoefer nel suo tempo libero.\nIl codice e le nuove versioni di questo strumento sono disponibili su GitHub.\nI contributi sotto forma di codice, ticket o richieste di funzionalità sono molto graditi.\nGrazie per l'uso di questo piccolo strumento!",
+  "about.tab.winmute": "WinMute",
+  "about.tab.license": "Licenza",
+  "about.btn-close": "OK",
+  "settings.wifi.mute-when-in-list": "Disattiva audio se la rete WLAN è in elenco",
+  "popup.update-available.text": "La versione installata è {}.\nFai clic su questo messaggio per aprire la pagina di download.",
+  "popup.update-available-beta.title": "È disponibile WinMute Beta {}!",
+  "settings.general.check-for-updates-on-start": "All'avvio verifica la presenza di nuovi aggiornamenti",
+  "popup.update-available-beta.text": "La versione attuale è {}.\nFai clic su questo messaggio per aprire la pagina di download della versione beta.",
+  "popup.error.update-check-failed.title": "Controllo aggiornamenti non riuscito.",
+  "popup.update-available.title": "È disponibile WinMute {}!",
+  "pupup.error.update-check-failed.text": "Impossibile verificare la disponibilità di una nuova versione.\nPer ulteriori dettagli controlla/abilita la registrazione eventi.",
+  "settings.general.check-for-beta-updates-on-start": "Controlla anche disponibilità nuove versioni beta",
+  "settings.general.help-translating": "Aiuta nella traduzione",
+  "settings.general.updates-handled-externally": "Opzioni disabilitate: aggiornamenti gestiti esternamente",
+  "log.title": "WinMute Registro Eventi"
 }
index 9ac058f9d329bcc67577c8c8b10319779fd2c5b2..dcbee7de3c0ff6c6b9384994e2f4170bb5ca59b4 100644 (file)
 {
-    "meta.lang.name": "Nederlands (Dutch)",
-    "meta.lang.mode": "ltr",
-    "init.error.settings.title": "De instellingen kunnen niet worden geladen",
-    "init.error.settings.text": "Er is een kritieke fout opgetreden tijdens het starten",
-    "init.error.already-running.title": "WinMute is al actief",
-    "init.error.already-running.text": "Zoek naar het WinMute-pictogram in het systeemvak van de Windows-taakbalk.",
-    "init.error.winmute.title": "WinMute kan niet worden gestart.",
-    "init.error.winmute.text": "Er is een kritieke fout opgetreden waardoor WinMute dient te worden afgesloten.",
-    "init.error.winmute.platform-support.title": "Windows Vista of nieuwer vereist",
-    "init.error.winmute.platform-support.text": "Als u Windows XP-ondersteuning wilt, download dan WinMute 1.4.2 of ouder.",
-    "general.error.winapi.text": "{} mislukt met foutmelding {}: {}",
-    "general.error.audio-service-shutdown.title": "De audiodienst is afgesloten.",
-    "general.error.audio-service-shutdown.text": "WinMute kan niet worden hersteld.\nHerstart het programma.",
-    "popup.remote-session-detected.title": "Externe sessie aangetroffen",
-    "popup.remote-session-detected.text": "Alle audio-apparaten zijn gedempt",
-    "popup.bluetooth-muting-disabled.title": "Bluetoothdemping is uitgeschakeld",
-    "popup.bluetooth-muting-disabled.text": "Bluetooth is uitgeschakeld of niet beschikbaar.\nBluetoothdemping wordt daarom uitgeschakeld.",
-    "popup.wlan-muting-disabled.title": "WLAN-demping is uitgeschakeld",
-    "popup.wlan-muting-disabled.text": "WLAN is niet beschikbaar of uitgeschakeld.\nWLAN muting wordt uitgeschakeld op deze computer.",
-    "popup.quiet-hours-started.title": "Stille uren gestart",
-    "popup.quiet-hours-started.text": "Computergeluid wordt nu gedempt.",
-    "popup.quiet-hours-ended.title": "Stille uren beëindigd",
-    "popup.quiet-hours-ended.text": "Computer audio is hersteld.",
-    "popup.workstation-muted.title": "Audio gedempt",
-    "popup.wlan-not-on-mute-list.text": "WLAN network \"{}\" staat niet in de lijst van toegestane.",
-    "popup.wlan-is-on-mute-list.text": "WLAN network \"{}\" is geconfigureerd voor AutoMute.",
-    "popup.muting-workstation-after-delay.title": "Computer stil na wachttijd",
-    "popup.muting-workstation-after-delay.text": "Alle apparaten werden gedempt",
-    "popup.volume-restored.title": "Volume hersteld",
-    "popup.volume-restored.text": "Alle apparaten werden teruggezet naar hun vorige configuratie",
-    "popup.muting-workstation.title": "Computer dempen",
-    "popup.muting-workstation.text": "Alle apparaten werden gedempt",
-    "popup.error.quiet-hours-start.title": "Stille uren start",
-    "popup.error.quiet-hours-start.text": "Registratie van stille uren starttijd met windows timer systeem mislukt",
-    "popup.error.quiet-hours-stop.title": "Stille uren stop",
-    "popup.error.quiet-hours-stop.text": "Registratie van stille uren eindtijd met windows timer systeem mislukt",
-    "traymenu.info": "Over",
-    "traymenu.mute-when": "Dempen wanneer…",
-    "traymenu.mute-on-lock": "… computer vergrendeld is",
-    "traymenu.mute-on-screen-suspend": "… scherm uitschakelt",
-    "traymenu.restore-volume": "Nadien volume herstellen",
-    "traymenu.mute-no-restore": "Dempen bij (geen volume herstellen)…",
-    "traymenu.mute-on-shutdown": "… uitschakelen",
-    "traymenu.mute-on-sleep": "… slaapstand",
-    "traymenu.mute-on-logout": "… afmelden",
-    "traymenu.mute-all-devices": "Nu alle apparaten dempen",
-    "traymenu.settings": "Instellingen…",
-    "traymenu.exit": "Verlaat",
-    "settings.title": "Instellingen",
-    "settings.btn-save": "Opslaan",
-    "settings.btn-cancel": "Annuleren",
-    "settings.btn-add": "Toevoegen",
-    "settings.btn-edit": "Wijzigen",
-    "settings.btn-remove": "Verwijderen",
-    "settings.btn-remove-all": "Verwijder alles",
-    "settings.tab.general": "Algemeen",
-    "settings.tab.mute": "Dempen",
-    "settings.tab.quiet-hours": "Stille uren",
-    "settings.tab.bluetooth": "Bluetooth",
-    "settings.tab.wifi": "WLAN",
-    "settings.bluetooth.add-edit.add-title": "Bluetoothapparaat toevoegen",
-    "settings.bluetooth.add-edit.edit-title": "Bluetoothapparaat wijzigen",
-    "settings.bluetooth.add-edit.device-name-label": "Naam Bluetoothapparaat:",
-    "settings.general.run-on-startup": "WinMute starten wanneer deze gebruiker aanmeldt",
-    "settings.general.enable-logging": "Logging inschakelen",
-    "settings.general.btn-open-log-file": "Logbestand openen…",
-    "settings.general.select-language-label": "Taal",
-    "settings.bluetooth.add-edit.enter-device-name-placeholder": "Geef de naam van een Bluetoothapparaat op",
-    "settings.bluetooth.description": "",
-    "settings.bluetooth.enable-muting": "",
-    "settings.bluetooth.enable-muting-filter": "",
-    "settings.bluetooth.bluetooth-disabled-info": "",
-    "settings.mute.general-title": "",
-    "settings.mute.show-mute-event-notifications": "",
-    "settings.mute.manage-endpoints-individually": "",
-    "settings.mute.btn-manage-endpoints": "",
-    "settings.mute.mute-with-restore.title": "",
-    "settings.mute.mute-with-restore.when-workstation-is-locked": "",
-    "settings.mute.mute-with-restore.when-screen-turns-off": "",
-    "settings.mute.mute-with-restore.restore-volume": "",
-    "settings.mute.mute-with-restore.restore-volume-delay-label": "",
-    "settings.mute.mute-without-restore.title": "",
-    "settings.mute.mute-without-restore.when-computer-shuts-down": "",
-    "settings.mute.mute-without-restore.when-computer-goes-to-sleep": "",
-    "settings.mute.mute-without-restore.when-user-logs-out": "",
-    "settings.mute.mute-without-restore.when-rdp-session-starts": "",
-    "settings.quiet-hours.intro": "",
-    "settings.quiet-hours.enable": "",
-    "settings.quiet-hours.start-time-label": "",
-    "settings.quiet-hours.end-time-label": "",
-    "settings.quiet-hours.force-unmute": "",
-    "settings.quiet-hours.force-unmute-description": "",
-    "settings.quiet-hours.show-notifications": "",
-    "settings.quiet-hours.error.invalid-time-range.title": "",
-    "settings.quiet-hours.error.invalid-time-range.text": "",
-    "settings.quiet-hours.error.error-while-saving.title": "",
-    "settings.quiet-hours.error.error-while-saving.text": "",
-    "settings.wifi.intro": "",
-    "settings.wifi.enable": "",
-    "settings.wifi.mute-when-not-in-list": "",
-    "settings.wifi.wifi-disabled-info": "",
-    "settings.wifi.add-edit.add-title": "",
-    "settings.wifi.add-edit.edit-title": "",
-    "settings.wifi.add-edit.ssid-name-label": "",
-    "settings.wifi.add-edit.enter-device-name-placeholder": "",
-    "settings.mute.manage-endpoints.title": "",
-    "settings.mute.manage-endpoints.list-behaviour.title": "",
-    "settings.mute.manage-endpoints.list-behaviour.mute-only-listed": "",
-    "settings.mute.manage-endpoints.list-behaviour.mute-all-but-listed": "",
-    "settings.mute.manage-endpoints.endpoints.title": "",
-    "settings.mute.manage-endpoints.add-edit.add-title": "",
-    "settings.mute.manage-endpoints.add-edit.edit-title": "",
-    "settings.mute.manage-endpoints.add-edit.endpoint-name-placeholder": "",
-    "settings.mute.manage-endpoints.add-edit.endpoint-name-label": "",
-    "about.title": "",
-    "about.general.author-site-label": "",
-    "about.general.project-site-label": "",
-    "about.general.support-label": "",
-    "about.general.description": "",
-    "about.tab.winmute": "",
-    "about.tab.license": "",
-    "about.btn-close": "",
-    "settings.general.help-translating": "Help met vertalen",
-    "settings.general.check-for-updates-on-start": "Nieuwe updates zoeken bij opstarten",
-    "popup.update-available.title": "WinMute {} is beschikbaar!",
-    "popup.update-available-beta.title": "WinMute Beta {} is beschikbaar!",
-    "popup.update-available-beta.text": "Uw huidige versie is {}\nKlik op dit bericht om de beta-downloadpagina te openen.",
-    "popup.error.update-check-failed.title": "Update check mislukt.",
-    "pupup.error.update-check-failed.text": "Kon niet controleren of er een nieuwe versie is.\nKijk de logs na of schakel logging in voor meer details.",
-    "settings.general.check-for-beta-updates-on-start": "Ook zoeken naar betaversies",
-    "settings.general.updates-handled-externally": "Opties uitgeschakeld: updates worden extern afgehandeld",
-    "popup.update-available.text": "De geïnstalleerde versie is {}.\nKlik op dit bericht om de downloadpagina te openen."
+  "meta.lang.name": "Nederlands (Dutch)",
+  "meta.lang.mode": "ltr",
+  "init.error.settings.title": "De instellingen kunnen niet worden geladen",
+  "init.error.settings.text": "Er is een kritieke fout opgetreden tijdens het starten",
+  "init.error.already-running.title": "WinMute is al actief",
+  "init.error.already-running.text": "Zoek naar het WinMute-pictogram in het systeemvak van de Windows-taakbalk.",
+  "init.error.winmute.title": "WinMute kan niet worden gestart.",
+  "init.error.winmute.text": "Er is een kritieke fout opgetreden waardoor WinMute dient te worden afgesloten.",
+  "init.error.winmute.platform-support.title": "Windows Vista of nieuwer vereist",
+  "init.error.winmute.platform-support.text": "Als u Windows XP-ondersteuning wilt, download dan WinMute 1.4.2 of ouder.",
+  "general.error.winapi.text": "{} mislukt met foutmelding {}: {}",
+  "general.error.audio-service-shutdown.title": "De audiodienst is afgesloten.",
+  "general.error.audio-service-shutdown.text": "WinMute kan niet worden hersteld.\nHerstart het programma.",
+  "popup.remote-session-detected.title": "Externe sessie aangetroffen",
+  "popup.remote-session-detected.text": "Alle audio-apparaten zijn gedempt",
+  "popup.bluetooth-muting-disabled.title": "Bluetoothdemping is uitgeschakeld",
+  "popup.bluetooth-muting-disabled.text": "Bluetooth is uitgeschakeld of niet beschikbaar.\nBluetoothdemping wordt daarom uitgeschakeld.",
+  "popup.wlan-muting-disabled.title": "WLAN-demping is uitgeschakeld",
+  "popup.wlan-muting-disabled.text": "WLAN is niet beschikbaar of uitgeschakeld.\nWLAN muting wordt uitgeschakeld op deze computer.",
+  "popup.quiet-hours-started.title": "Stille uren gestart",
+  "popup.quiet-hours-started.text": "Computergeluid wordt nu gedempt.",
+  "popup.quiet-hours-ended.title": "Stille uren beëindigd",
+  "popup.quiet-hours-ended.text": "Computer audio is hersteld.",
+  "popup.workstation-muted.title": "Audio gedempt",
+  "popup.wlan-not-on-mute-list.text": "WLAN network \"{}\" staat niet in de lijst van toegestane.",
+  "popup.wlan-is-on-mute-list.text": "WLAN network \"{}\" is geconfigureerd voor AutoMute.",
+  "popup.muting-workstation-after-delay.title": "Computer stil na wachttijd",
+  "popup.muting-workstation-after-delay.text": "Alle apparaten werden gedempt",
+  "popup.volume-restored.title": "Volume hersteld",
+  "popup.volume-restored.text": "Alle apparaten werden teruggezet naar hun vorige configuratie",
+  "popup.muting-workstation.title": "Computer dempen",
+  "popup.muting-workstation.text": "Alle apparaten werden gedempt",
+  "popup.error.quiet-hours-start.title": "Stille uren start",
+  "popup.error.quiet-hours-start.text": "Registratie van stille uren starttijd met windows timer systeem mislukt",
+  "popup.error.quiet-hours-stop.title": "Stille uren stop",
+  "popup.error.quiet-hours-stop.text": "Registratie van stille uren eindtijd met windows timer systeem mislukt",
+  "traymenu.info": "Over",
+  "traymenu.mute-when": "Dempen wanneer…",
+  "traymenu.mute-on-lock": "… computer vergrendeld is",
+  "traymenu.mute-on-screen-suspend": "… scherm uitschakelt",
+  "traymenu.restore-volume": "Nadien volume herstellen",
+  "traymenu.mute-no-restore": "Dempen bij (geen volume herstellen)…",
+  "traymenu.mute-on-shutdown": "… uitschakelen",
+  "traymenu.mute-on-sleep": "… slaapstand",
+  "traymenu.mute-on-logout": "… afmelden",
+  "traymenu.mute-all-devices": "Nu alle apparaten dempen",
+  "traymenu.settings": "Instellingen…",
+  "traymenu.exit": "Verlaat",
+  "settings.title": "Instellingen",
+  "settings.btn-save": "Opslaan",
+  "settings.btn-cancel": "Annuleren",
+  "settings.btn-add": "Toevoegen",
+  "settings.btn-edit": "Wijzigen",
+  "settings.btn-remove": "Verwijderen",
+  "settings.btn-remove-all": "Verwijder alles",
+  "settings.tab.general": "Algemeen",
+  "settings.tab.mute": "Dempen",
+  "settings.tab.quiet-hours": "Stille uren",
+  "settings.tab.bluetooth": "Bluetooth",
+  "settings.tab.wifi": "WLAN",
+  "settings.bluetooth.add-edit.add-title": "Bluetoothapparaat toevoegen",
+  "settings.bluetooth.add-edit.edit-title": "Bluetoothapparaat wijzigen",
+  "settings.bluetooth.add-edit.device-name-label": "Naam Bluetoothapparaat:",
+  "settings.general.run-on-startup": "WinMute starten wanneer deze gebruiker aanmeldt",
+  "settings.general.enable-logging": "Logging inschakelen",
+  "settings.general.btn-open-log-file": "Logbestand openen…",
+  "settings.general.select-language-label": "Taal",
+  "settings.bluetooth.add-edit.enter-device-name-placeholder": "Geef de naam van een Bluetoothapparaat op",
+  "settings.bluetooth.description": "",
+  "settings.bluetooth.enable-muting": "",
+  "settings.bluetooth.enable-muting-filter": "",
+  "settings.bluetooth.bluetooth-disabled-info": "",
+  "settings.mute.general-title": "",
+  "settings.mute.show-mute-event-notifications": "",
+  "settings.mute.manage-endpoints-individually": "",
+  "settings.mute.btn-manage-endpoints": "",
+  "settings.mute.mute-with-restore.title": "",
+  "settings.mute.mute-with-restore.when-workstation-is-locked": "",
+  "settings.mute.mute-with-restore.when-screen-turns-off": "",
+  "settings.mute.mute-with-restore.restore-volume": "",
+  "settings.mute.mute-with-restore.restore-volume-delay-label": "",
+  "settings.mute.mute-without-restore.title": "",
+  "settings.mute.mute-without-restore.when-computer-shuts-down": "",
+  "settings.mute.mute-without-restore.when-computer-goes-to-sleep": "",
+  "settings.mute.mute-without-restore.when-user-logs-out": "",
+  "settings.mute.mute-without-restore.when-rdp-session-starts": "",
+  "settings.quiet-hours.intro": "",
+  "settings.quiet-hours.enable": "",
+  "settings.quiet-hours.start-time-label": "",
+  "settings.quiet-hours.end-time-label": "",
+  "settings.quiet-hours.force-unmute": "",
+  "settings.quiet-hours.force-unmute-description": "",
+  "settings.quiet-hours.show-notifications": "",
+  "settings.quiet-hours.error.invalid-time-range.title": "",
+  "settings.quiet-hours.error.invalid-time-range.text": "",
+  "settings.quiet-hours.error.error-while-saving.title": "",
+  "settings.quiet-hours.error.error-while-saving.text": "",
+  "settings.wifi.intro": "",
+  "settings.wifi.enable": "",
+  "settings.wifi.mute-when-not-in-list": "",
+  "settings.wifi.wifi-disabled-info": "",
+  "settings.wifi.add-edit.add-title": "",
+  "settings.wifi.add-edit.edit-title": "",
+  "settings.wifi.add-edit.ssid-name-label": "",
+  "settings.wifi.add-edit.enter-device-name-placeholder": "",
+  "settings.mute.manage-endpoints.title": "",
+  "settings.mute.manage-endpoints.list-behaviour.title": "",
+  "settings.mute.manage-endpoints.list-behaviour.mute-only-listed": "",
+  "settings.mute.manage-endpoints.list-behaviour.mute-all-but-listed": "",
+  "settings.mute.manage-endpoints.endpoints.title": "",
+  "settings.mute.manage-endpoints.add-edit.add-title": "",
+  "settings.mute.manage-endpoints.add-edit.edit-title": "",
+  "settings.mute.manage-endpoints.add-edit.endpoint-name-placeholder": "",
+  "settings.mute.manage-endpoints.add-edit.endpoint-name-label": "",
+  "about.title": "",
+  "about.general.author-site-label": "",
+  "about.general.project-site-label": "",
+  "about.general.support-label": "",
+  "about.general.description": "",
+  "about.tab.winmute": "",
+  "about.tab.license": "",
+  "about.btn-close": "",
+  "settings.general.help-translating": "Help met vertalen",
+  "settings.general.check-for-updates-on-start": "Nieuwe updates zoeken bij opstarten",
+  "popup.update-available.title": "WinMute {} is beschikbaar!",
+  "popup.update-available-beta.title": "WinMute Beta {} is beschikbaar!",
+  "popup.update-available-beta.text": "Uw huidige versie is {}\nKlik op dit bericht om de beta-downloadpagina te openen.",
+  "popup.error.update-check-failed.title": "Update check mislukt.",
+  "pupup.error.update-check-failed.text": "Kon niet controleren of er een nieuwe versie is.\nKijk de logs na of schakel logging in voor meer details.",
+  "settings.general.check-for-beta-updates-on-start": "Ook zoeken naar betaversies",
+  "settings.general.updates-handled-externally": "Opties uitgeschakeld: updates worden extern afgehandeld",
+  "popup.update-available.text": "De geïnstalleerde versie is {}.\nKlik op dit bericht om de downloadpagina te openen.",
+  "log.title": "WinMute Notulen"
 }
index 9a274efec2b980326407ef24f5b146282d14baca..406421fe2a03ff3add3c34f80a2313ec2fdc0718 100644 (file)
 {
-    "meta.lang.name": "简体中文[囍]",
-    "meta.lang.mode": "ltr",
-    "init.error.settings.title": "未能初始化设置",
-    "init.error.settings.text": "初始化WinMute时出现严重错误",
-    "init.error.already-running.title": "WinMute已在运行",
-    "init.error.already-running.text": "请在Windows任务栏通知区域中查找winmutes应用程序图标.",
-    "init.error.winmute.title": "无法启动WinMute.",
-    "init.error.winmute.text": "WinMute在初始化时遇到严重错误,自动关闭.",
-    "init.error.winmute.platform-support.title": "仅支持Windows Vista及更新版本",
-    "init.error.winmute.platform-support.text": "如果需要Windows XP支持,请下载WinMute 1.4.2或更低版本.",
-    "general.error.winapi.text": "{} 失败,出现错误 {}: {}",
-    "general.error.audio-service-shutdown.title": "音频服务已关闭.",
-    "general.error.audio-service-shutdown.text": "WinMute无法从这种情况下恢复.\n请尝试重新启动程序.",
-    "popup.update-available.title": "WinMute {} 可用!",
-    "popup.update-available.text": "安装的版本为{}.\n点击本消息打开下载页面.",
-    "popup.update-available-beta.title": "WinMute Beta {} 可用!",
-    "popup.update-available-beta.text": "您的当前版本是 {}.\n单击本消息打开测试版下载页面.",
-    "popup.error.update-check-failed.title": "更新检查失败.",
-    "pupup.error.update-check-failed.text": "无法检查新版本.\n请检查/启用日志记录以了解更多详细信息.",
-    "popup.remote-session-detected.title": "检测到远程会话",
-    "popup.remote-session-detected.text": "所有音频设备都已静音",
-    "popup.bluetooth-muting-disabled.title": "蓝牙静音已禁用",
-    "popup.bluetooth-muting-disabled.text": "蓝牙不可用或已禁用.\n将在此电脑上禁用蓝牙静音.",
-    "popup.wlan-muting-disabled.title": "WLAN静音已禁用",
-    "popup.wlan-muting-disabled.text": "WLAN不可用或已禁用.\n将在此电脑上禁用WLAN静音.",
-    "popup.quiet-hours-started.title": "静音计划任务开启",
-    "popup.quiet-hours-started.text": "电脑音频立即静音.",
-    "popup.quiet-hours-ended.title": "静音计划任务结束",
-    "popup.quiet-hours-ended.text": "电脑声音已恢复.",
-    "popup.workstation-muted.title": "静音",
-    "popup.wlan-not-on-mute-list.text": "WLAN网络 \"{}\" 不在允许的列表中.",
-    "popup.wlan-is-on-mute-list.text": "WLAN 网格 \"{}\" 配置为“自动静音”.",
-    "popup.muting-workstation-after-delay.title": "延迟后使电脑静音",
-    "popup.muting-workstation-after-delay.text": "所有设备都已静音",
-    "popup.volume-restored.title": "音量恢复",
-    "popup.volume-restored.text": "所有设备都已恢复到以前的配置",
-    "popup.muting-workstation.title": "电脑静音",
-    "popup.muting-workstation.text": "所有设备都已静音",
-    "popup.error.quiet-hours-start.title": "静音计划任务开启",
-    "popup.error.quiet-hours-start.text": "无法使用Windows计时器系统注册静音时间启动",
-    "popup.error.quiet-hours-stop.title": "静音计划任务停止",
-    "popup.error.quiet-hours-stop.text": "无法使用Windows计时器系统注册静音时间停止",
-    "traymenu.info": "=关于=",
-    "traymenu.mute-when": "触发静音条件...",
-    "traymenu.mute-on-lock": "系统锁定后    静音",
-    "traymenu.mute-on-screen-suspend": "显示器关闭后 静音",
-    "traymenu.restore-volume": "自动恢复音量",
-    "traymenu.mute-no-restore": "静音后(执行)...",
-    "traymenu.mute-on-shutdown": "=关机=",
-    "traymenu.mute-on-sleep": "=休眠=",
-    "traymenu.mute-on-logout": "=注销=",
-    "traymenu.mute-all-devices": "立即将所有设备静音",
-    "traymenu.settings": "=设置=",
-    "traymenu.exit": "=退出=",
-    "settings.title": "=设置=",
-    "settings.btn-save": "保存",
-    "settings.btn-cancel": "取消",
-    "settings.btn-add": "增加",
-    "settings.btn-edit": "编辑",
-    "settings.btn-remove": "清除",
-    "settings.btn-remove-all": "全清",
-    "settings.tab.general": "通用",
-    "settings.tab.mute": "静音前后",
-    "settings.tab.quiet-hours": "计划任务",
-    "settings.tab.bluetooth": "蓝牙控制",
-    "settings.tab.wifi": "WLAN控制",
-    "settings.bluetooth.add-edit.add-title": "添加蓝牙设备",
-    "settings.bluetooth.add-edit.edit-title": "编辑蓝牙设备",
-    "settings.bluetooth.add-edit.device-name-label": "蓝牙设备名称:",
-    "settings.general.run-on-startup": "开机启动WinMute",
-    "settings.general.check-for-updates-on-start": "启动时检查新更新",
-    "settings.general.check-for-beta-updates-on-start": "同时检查新的测试版",
-    "settings.general.updates-handled-externally": "禁用选项:外部处理更新",
-    "settings.general.enable-logging": "开启日志记录",
-    "settings.general.btn-open-log-file": "打开日志记录...",
-    "settings.general.select-language-label": "语言:",
-    "settings.general.help-translating": "帮助翻译",
-    "settings.bluetooth.add-edit.enter-device-name-placeholder": "请输入蓝牙设备名称",
-    "settings.bluetooth.description": "“蓝牙静音”允许在音频类蓝牙设备断开连接时禁用音频,并在设备重新连接到电脑时重新启用音频.\n\n此行为可以为所有蓝牙音频设备启用,也可以仅为特定的一组启用.",
-    "settings.bluetooth.enable-muting": "开启蓝牙静音功能",
-    "settings.bluetooth.enable-muting-filter": "仅对以下设备启用:",
-    "settings.bluetooth.bluetooth-disabled-info": "注意:此设备不支持蓝牙.\n某些选项已被禁用.",
-    "settings.mute.general-title": "通用",
-    "settings.mute.show-mute-event-notifications": "显示静音事件通知",
-    "settings.mute.manage-endpoints-individually": "单独管理音频设备",
-    "settings.mute.btn-manage-endpoints": "设备管理...",
-    "settings.mute.mute-with-restore.title": "启动静音条件...",
-    "settings.mute.mute-with-restore.when-workstation-is-locked": "系统锁定后启动      静音",
-    "settings.mute.mute-with-restore.when-screen-turns-off": "显示器关闭时启动  静音",
-    "settings.mute.mute-with-restore.restore-volume": "自动恢复音量",
-    "settings.mute.mute-with-restore.restore-volume-delay-label": "秒后静音.(\"0\"值为立即静音)",
-    "settings.mute.mute-without-restore.title": "静音后执行下列操作...",
-    "settings.mute.mute-without-restore.when-computer-shuts-down": "=关机=",
-    "settings.mute.mute-without-restore.when-computer-goes-to-sleep": "=休眠=",
-    "settings.mute.mute-without-restore.when-user-logs-out": "=注销=",
-    "settings.mute.mute-without-restore.when-rdp-session-starts": "WinMute在远程桌面会话 (RDP) 中启动",
-    "settings.quiet-hours.intro": "在指定时间内,WinMute自动进入静音,然后自动恢复.",
-    "settings.quiet-hours.enable": "启用静音计划任务",
-    "settings.quiet-hours.start-time-label": "开始时间:",
-    "settings.quiet-hours.end-time-label": "结束时间:",
-    "settings.quiet-hours.force-unmute": "强制取消静音",
-    "settings.quiet-hours.force-unmute-description": "如果启动强制取消静音,WinMute将在静单时间结束时取消电脑音频设备的静音,而不考虑它们在静单时间开始前是否已经静音.",
-    "settings.quiet-hours.show-notifications": "显示静音时间通知",
-    "settings.quiet-hours.error.invalid-time-range.title": "无效的时间范围",
-    "settings.quiet-hours.error.invalid-time-range.text": "启动和停止时间不能相同.",
-    "settings.quiet-hours.error.error-while-saving.title": "无法保存安静时间设置",
-    "settings.quiet-hours.error.error-while-saving.text": "保存设置时出错",
-    "settings.wifi.intro": "“WLAN静音”根据连接的无线网络的名称使电脑静音。",
-    "settings.wifi.enable": "启用基于WLAN的静音",
-    "settings.wifi.mute-when-in-list": "如果已连接的WLAN在列表中,则静音",
-    "settings.wifi.mute-when-not-in-list": "如果已连接的WLAN不在列表中,则静音",
-    "settings.wifi.wifi-disabled-info": "注意:WLAN在此设备上不可用.\n某些选项已被禁用.",
-    "settings.wifi.add-edit.add-title": "添加WiFi网络",
-    "settings.wifi.add-edit.edit-title": "编辑WiFi网络",
-    "settings.wifi.add-edit.ssid-name-label": "SSID/WiFi 名称:",
-    "settings.wifi.add-edit.enter-device-name-placeholder": "请输入SSID/WiFi名称",
-    "settings.mute.manage-endpoints.title": "管理音频设备",
-    "settings.mute.manage-endpoints.list-behaviour.title": "通用",
-    "settings.mute.manage-endpoints.list-behaviour.mute-only-listed": "仅对列出的设备静音",
-    "settings.mute.manage-endpoints.list-behaviour.mute-all-but-listed": "将列出的设备以外的所有设备静音",
-    "settings.mute.manage-endpoints.endpoints.title": "设备",
-    "settings.mute.manage-endpoints.add-edit.add-title": "添加设备",
-    "settings.mute.manage-endpoints.add-edit.edit-title": "编辑设备",
-    "settings.mute.manage-endpoints.add-edit.endpoint-name-placeholder": "请输入设备名称",
-    "settings.mute.manage-endpoints.add-edit.endpoint-name-label": "设备名称:",
-    "about.title": "关于WinMute",
-    "about.general.author-site-label": "官网: www.lx-s.de",
-    "about.general.project-site-label": "项目GitHub && 代码",
-    "about.general.support-label": "建议与改进支持",
-    "about.general.description": "WinMute是由Alexander Steinhoefer在业余时间开发的。该工具的代码和新版本可以在GitHub上找到。非常欢迎以代码、门票或功能请求的形式进行贡献。感谢您使用这个小工具!\n                                                                                                                                                                                                                            中文汉化by richzhl-1382232",
-    "about.tab.winmute": "关于WinMute",
-    "about.tab.license": "许可证明",
-    "about.btn-close": "确定"
+  "meta.lang.name": "简体中文[囍]",
+  "meta.lang.mode": "ltr",
+  "init.error.settings.title": "未能初始化设置",
+  "init.error.settings.text": "初始化WinMute时出现严重错误",
+  "init.error.already-running.title": "WinMute已在运行",
+  "init.error.already-running.text": "请在Windows任务栏通知区域中查找winmutes应用程序图标.",
+  "init.error.winmute.title": "无法启动WinMute.",
+  "init.error.winmute.text": "WinMute在初始化时遇到严重错误,自动关闭.",
+  "init.error.winmute.platform-support.title": "仅支持Windows Vista及更新版本",
+  "init.error.winmute.platform-support.text": "如果需要Windows XP支持,请下载WinMute 1.4.2或更低版本.",
+  "general.error.winapi.text": "{} 失败,出现错误 {}: {}",
+  "general.error.audio-service-shutdown.title": "音频服务已关闭.",
+  "general.error.audio-service-shutdown.text": "WinMute无法从这种情况下恢复.\n请尝试重新启动程序.",
+  "popup.update-available.title": "WinMute {} 可用!",
+  "popup.update-available.text": "安装的版本为{}.\n点击本消息打开下载页面.",
+  "popup.update-available-beta.title": "WinMute Beta {} 可用!",
+  "popup.update-available-beta.text": "您的当前版本是 {}.\n单击本消息打开测试版下载页面.",
+  "popup.error.update-check-failed.title": "更新检查失败.",
+  "pupup.error.update-check-failed.text": "无法检查新版本.\n请检查/启用日志记录以了解更多详细信息.",
+  "popup.remote-session-detected.title": "检测到远程会话",
+  "popup.remote-session-detected.text": "所有音频设备都已静音",
+  "popup.bluetooth-muting-disabled.title": "蓝牙静音已禁用",
+  "popup.bluetooth-muting-disabled.text": "蓝牙不可用或已禁用.\n将在此电脑上禁用蓝牙静音.",
+  "popup.wlan-muting-disabled.title": "WLAN静音已禁用",
+  "popup.wlan-muting-disabled.text": "WLAN不可用或已禁用.\n将在此电脑上禁用WLAN静音.",
+  "popup.quiet-hours-started.title": "静音计划任务开启",
+  "popup.quiet-hours-started.text": "电脑音频立即静音.",
+  "popup.quiet-hours-ended.title": "静音计划任务结束",
+  "popup.quiet-hours-ended.text": "电脑声音已恢复.",
+  "popup.workstation-muted.title": "静音",
+  "popup.wlan-not-on-mute-list.text": "WLAN网络 \"{}\" 不在允许的列表中.",
+  "popup.wlan-is-on-mute-list.text": "WLAN 网格 \"{}\" 配置为“自动静音”.",
+  "popup.muting-workstation-after-delay.title": "延迟后使电脑静音",
+  "popup.muting-workstation-after-delay.text": "所有设备都已静音",
+  "popup.volume-restored.title": "音量恢复",
+  "popup.volume-restored.text": "所有设备都已恢复到以前的配置",
+  "popup.muting-workstation.title": "电脑静音",
+  "popup.muting-workstation.text": "所有设备都已静音",
+  "popup.error.quiet-hours-start.title": "静音计划任务开启",
+  "popup.error.quiet-hours-start.text": "无法使用Windows计时器系统注册静音时间启动",
+  "popup.error.quiet-hours-stop.title": "静音计划任务停止",
+  "popup.error.quiet-hours-stop.text": "无法使用Windows计时器系统注册静音时间停止",
+  "traymenu.info": "=关于=",
+  "traymenu.mute-when": "触发静音条件...",
+  "traymenu.mute-on-lock": "系统锁定后    静音",
+  "traymenu.mute-on-screen-suspend": "显示器关闭后 静音",
+  "traymenu.restore-volume": "自动恢复音量",
+  "traymenu.mute-no-restore": "静音后(执行)...",
+  "traymenu.mute-on-shutdown": "=关机=",
+  "traymenu.mute-on-sleep": "=休眠=",
+  "traymenu.mute-on-logout": "=注销=",
+  "traymenu.mute-all-devices": "立即将所有设备静音",
+  "traymenu.settings": "=设置=",
+  "traymenu.exit": "=退出=",
+  "settings.title": "=设置=",
+  "settings.btn-save": "保存",
+  "settings.btn-cancel": "取消",
+  "settings.btn-add": "增加",
+  "settings.btn-edit": "编辑",
+  "settings.btn-remove": "清除",
+  "settings.btn-remove-all": "全清",
+  "settings.tab.general": "通用",
+  "settings.tab.mute": "静音前后",
+  "settings.tab.quiet-hours": "计划任务",
+  "settings.tab.bluetooth": "蓝牙控制",
+  "settings.tab.wifi": "WLAN控制",
+  "settings.bluetooth.add-edit.add-title": "添加蓝牙设备",
+  "settings.bluetooth.add-edit.edit-title": "编辑蓝牙设备",
+  "settings.bluetooth.add-edit.device-name-label": "蓝牙设备名称:",
+  "settings.general.run-on-startup": "开机启动WinMute",
+  "settings.general.check-for-updates-on-start": "启动时检查新更新",
+  "settings.general.check-for-beta-updates-on-start": "同时检查新的测试版",
+  "settings.general.updates-handled-externally": "禁用选项:外部处理更新",
+  "settings.general.enable-logging": "开启日志记录",
+  "settings.general.btn-open-log-file": "打开日志记录...",
+  "settings.general.select-language-label": "语言:",
+  "settings.general.help-translating": "帮助翻译",
+  "settings.bluetooth.add-edit.enter-device-name-placeholder": "请输入蓝牙设备名称",
+  "settings.bluetooth.description": "“蓝牙静音”允许在音频类蓝牙设备断开连接时禁用音频,并在设备重新连接到电脑时重新启用音频.\n\n此行为可以为所有蓝牙音频设备启用,也可以仅为特定的一组启用.",
+  "settings.bluetooth.enable-muting": "开启蓝牙静音功能",
+  "settings.bluetooth.enable-muting-filter": "仅对以下设备启用:",
+  "settings.bluetooth.bluetooth-disabled-info": "注意:此设备不支持蓝牙.\n某些选项已被禁用.",
+  "settings.mute.general-title": "通用",
+  "settings.mute.show-mute-event-notifications": "显示静音事件通知",
+  "settings.mute.manage-endpoints-individually": "单独管理音频设备",
+  "settings.mute.btn-manage-endpoints": "设备管理...",
+  "settings.mute.mute-with-restore.title": "启动静音条件...",
+  "settings.mute.mute-with-restore.when-workstation-is-locked": "系统锁定后启动      静音",
+  "settings.mute.mute-with-restore.when-screen-turns-off": "显示器关闭时启动  静音",
+  "settings.mute.mute-with-restore.restore-volume": "自动恢复音量",
+  "settings.mute.mute-with-restore.restore-volume-delay-label": "秒后静音.(\"0\"值为立即静音)",
+  "settings.mute.mute-without-restore.title": "静音后执行下列操作...",
+  "settings.mute.mute-without-restore.when-computer-shuts-down": "=关机=",
+  "settings.mute.mute-without-restore.when-computer-goes-to-sleep": "=休眠=",
+  "settings.mute.mute-without-restore.when-user-logs-out": "=注销=",
+  "settings.mute.mute-without-restore.when-rdp-session-starts": "WinMute在远程桌面会话 (RDP) 中启动",
+  "settings.quiet-hours.intro": "在指定时间内,WinMute自动进入静音,然后自动恢复.",
+  "settings.quiet-hours.enable": "启用静音计划任务",
+  "settings.quiet-hours.start-time-label": "开始时间:",
+  "settings.quiet-hours.end-time-label": "结束时间:",
+  "settings.quiet-hours.force-unmute": "强制取消静音",
+  "settings.quiet-hours.force-unmute-description": "如果启动强制取消静音,WinMute将在静单时间结束时取消电脑音频设备的静音,而不考虑它们在静单时间开始前是否已经静音.",
+  "settings.quiet-hours.show-notifications": "显示静音时间通知",
+  "settings.quiet-hours.error.invalid-time-range.title": "无效的时间范围",
+  "settings.quiet-hours.error.invalid-time-range.text": "启动和停止时间不能相同.",
+  "settings.quiet-hours.error.error-while-saving.title": "无法保存安静时间设置",
+  "settings.quiet-hours.error.error-while-saving.text": "保存设置时出错",
+  "settings.wifi.intro": "“WLAN静音”根据连接的无线网络的名称使电脑静音。",
+  "settings.wifi.enable": "启用基于WLAN的静音",
+  "settings.wifi.mute-when-in-list": "如果已连接的WLAN在列表中,则静音",
+  "settings.wifi.mute-when-not-in-list": "如果已连接的WLAN不在列表中,则静音",
+  "settings.wifi.wifi-disabled-info": "注意:WLAN在此设备上不可用.\n某些选项已被禁用.",
+  "settings.wifi.add-edit.add-title": "添加WiFi网络",
+  "settings.wifi.add-edit.edit-title": "编辑WiFi网络",
+  "settings.wifi.add-edit.ssid-name-label": "SSID/WiFi 名称:",
+  "settings.wifi.add-edit.enter-device-name-placeholder": "请输入SSID/WiFi名称",
+  "settings.mute.manage-endpoints.title": "管理音频设备",
+  "settings.mute.manage-endpoints.list-behaviour.title": "通用",
+  "settings.mute.manage-endpoints.list-behaviour.mute-only-listed": "仅对列出的设备静音",
+  "settings.mute.manage-endpoints.list-behaviour.mute-all-but-listed": "将列出的设备以外的所有设备静音",
+  "settings.mute.manage-endpoints.endpoints.title": "设备",
+  "settings.mute.manage-endpoints.add-edit.add-title": "添加设备",
+  "settings.mute.manage-endpoints.add-edit.edit-title": "编辑设备",
+  "settings.mute.manage-endpoints.add-edit.endpoint-name-placeholder": "请输入设备名称",
+  "settings.mute.manage-endpoints.add-edit.endpoint-name-label": "设备名称:",
+  "about.title": "关于WinMute",
+  "about.general.author-site-label": "官网: www.lx-s.de",
+  "about.general.project-site-label": "项目GitHub && 代码",
+  "about.general.support-label": "建议与改进支持",
+  "about.general.description": "WinMute是由Alexander Steinhoefer在业余时间开发的。该工具的代码和新版本可以在GitHub上找到。非常欢迎以代码、门票或功能请求的形式进行贡献。感谢您使用这个小工具!\n                                                                                                                                                                                                                            中文汉化by richzhl-1382232",
+  "about.tab.winmute": "关于WinMute",
+  "about.tab.license": "许可证明",
+  "about.btn-close": "确定",
+  "log.title": "WinMute日志记录"
 }
index 14c1ca5e8f505475e4b9fe5ed13caf18811b5df3..da3f0307f52660028351d33599dc514ea89158ec 100644 (file)
@@ -34,6 +34,7 @@ POSSIBILITY OF SUCH DAMAGE.
 #include "common.h"
 
 struct LogDlgData {
+   HWND hLogContent;
 };
 
 INT_PTR CALLBACK LogDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -56,16 +57,68 @@ INT_PTR CALLBACK LogDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
          MAKEINTRESOURCE(IDI_TRAY_DARK));
       SendMessageW(hDlg, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(hIcon));
 
+      auto& wmLog = WMLog::GetInstance();
+      const auto logMessages = wmLog.GetLogMessages();
+      std::wstring logText;
+      logText.reserve(logMessages.size() * 30);
+      for (auto &lm : logMessages) {
+         logText.append(wmLog.FormatLogMessage(lm, true));
+      }
+
+      dlgData->hLogContent = GetDlgItem(hDlg, IDC_LOG_CONTENT);
+      Edit_SetText(dlgData->hLogContent, logText.c_str());
+      wmLog.RegisterForLogUpdates(hDlg);
+
+      // Initial sizing
+      RECT rcClient;
+      GetClientRect(hDlg, &rcClient);
+      SetWindowPos(
+         dlgData->hLogContent,
+         nullptr,
+         0,
+         0,
+         rcClient.right - rcClient.left,
+         rcClient.bottom - rcClient.top,
+         SWP_NOZORDER);
+
       return TRUE;
    }
    case WM_COMMAND:
       return 0;
+   case WM_SIZE:
+      {
+      RECT rcClient;
+      GetClientRect(hDlg, &rcClient);
+      SetWindowPos(
+         dlgData->hLogContent,
+         nullptr,
+         0,
+         0,
+         rcClient.right - rcClient.left,
+         rcClient.bottom - rcClient.top,
+         SWP_NOZORDER);
+      return 0;
+   }
+   case WM_LOG_UPDATED: {
+      const WMLog &wmLog = WMLog::GetInstance();
+      auto logMsg = reinterpret_cast<LogMessage*>(lParam);
+      if (logMsg == nullptr) {
+         return FALSE;
+      }
+      const auto formattedMsg = wmLog.FormatLogMessage(*logMsg, true);
+      const auto textLen = Edit_GetTextLength(dlgData->hLogContent);
+      Edit_SetSel(dlgData->hLogContent, textLen, textLen);
+      Edit_ReplaceSel(dlgData->hLogContent, formattedMsg.c_str());
+      return TRUE;
+   }
    case WM_DESTROY:
       delete dlgData;
       SetWindowLongPtrW(hDlg, GWLP_USERDATA, 0);
+      WMLog::GetInstance().UnregisterForLogUpdates(hDlg);
       return 0;
    case WM_CLOSE:
-      EndDialog(hDlg, 0);
+      //EndDialog(hDlg, 0);
+      DestroyWindow(hDlg);
       return TRUE;
    default:
       break;
index 4c3079c4ad86f906a4099297485178a87ab9edb2..33a50fde9fe69475ac1f9c7d54b541f95bb0d107 100644 (file)
@@ -35,13 +35,14 @@ POSSIBILITY OF SUCH DAMAGE.
 
 namespace fs = std::filesystem;
 
+extern INT_PTR CALLBACK LogDlgProc(HWND, UINT, WPARAM, LPARAM);
+extern HINSTANCE hglobInstance;
+
 struct SettingsGeneralData {
    WMSettings *settings = nullptr;
    std::vector<LanguageModule> langModules;
 };
 
-extern HINSTANCE hglobInstance;
-
 static void FillLanguageList(HWND hLanguageList, const SettingsGeneralData& dlgData)
 {
    SendMessage(hLanguageList,
@@ -75,6 +76,7 @@ static void LoadSettingsGeneralDlgTranslation(HWND hDlg)
    i18n.SetItemText(hDlg, IDC_ENABLELOGGING, "settings.general.enable-logging");
    i18n.SetItemText(hDlg, IDC_OPENLOG, "settings.general.btn-open-log-file");
    i18n.SetItemText(hDlg, IDC_UPDATE_OPTIONS_DISABLED, "settings.general.updates-handled-externally");
+   i18n.SetItemText(hDlg, IDC_OPENLOGDLG, "settings.general.btn-open-log-window");
 }
 
 INT_PTR CALLBACK Settings_GeneralDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -178,6 +180,13 @@ INT_PTR CALLBACK Settings_GeneralDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPA
             SendMessageW(GetDlgItem(hDlg, IDC_LOGFILEPATH), WM_SETTEXT, 0,
                reinterpret_cast<LPARAM>(L""));
          }
+      } else if (LOWORD(wParam) == IDC_OPENLOGDLG) {
+         auto hLogDlg = CreateDialogW(
+            hglobInstance,
+            MAKEINTRESOURCEW(IDD_LOG),
+            hDlg,
+            LogDlgProc);
+         ShowWindow(hLogDlg, SW_SHOW);
       } else if (LOWORD(wParam) == IDC_CHECK_FOR_UPDATES_ON_STARTUP) {
          const int enabled = Button_GetCheck(GetDlgItem(hDlg, IDC_CHECK_FOR_UPDATES_ON_STARTUP));
          EnableWindow(GetDlgItem(hDlg, IDC_CHECK_FOR_BETA_UPDATES), enabled);
index 225ecd53486d149fecf2d065d03fd277abd7c80e..aff57d3f36adc3d08e9e1320af69a5859d1ebb76 100644 (file)
@@ -32,6 +32,21 @@ POSSIBILITY OF SUCH DAMAGE.
 */
 
 #include "common.h"
+#include "WMLog.h"
+
+static const wchar_t* LogLevelToString(LogLevel level)
+{
+   switch (level) {
+   case LogLevel::Debug:
+      return L"DEBUG";
+   case LogLevel::Info:
+      return L"INFO";
+   case LogLevel::Error:
+      return L"ERROR";
+   default:
+      return L"UNKNOWN";
+   }
+}
 
 static bool OpenLogFile(const std::wstring& filePath, std::wofstream& logFile)
 {
@@ -100,31 +115,57 @@ void WMLog::EnableLogFile(bool enable)
    }
 }
 
-bool WMLog::IsEnabled() const
+bool WMLog::IsLogFileEnabled() const
 {
    return enabled_;
 }
 
-void WMLog::WriteMessage(const wchar_t* level, const wchar_t* msg)
+std::wstring WMLog::FormatLogMessage(const LogMessage &logMsg, bool new_line) const
 {
-   time_t rawtime;
-   struct tm timeinfo;
-   wchar_t buffer[30];
+   auto msg = std::format(
+      L"{:%F %T%Ez}  {}:  {}{}",
+      logMsg.time,
+      LogLevelToString(logMsg.level),
+      logMsg.message,
+      new_line ? L"\r\n" : L"");
+   return msg;
+}
 
-   time(&rawtime);
-   localtime_s(&timeinfo, &rawtime);
+void WMLog::StoreMessage(LogLevel level, const wchar_t* msg)
+{
+   namespace ch = std::chrono;
+
+   LogMessage lm;
+   lm.level = level;
+   lm.message = msg;
+   lm.time = ch::zoned_time<ch::milliseconds>{
+      ch::current_zone(), ch::floor<ch::milliseconds>(ch::system_clock::now())
+   };
+
+   if (enabled_ && logFile_.is_open()) {
+      const auto logMsg = FormatLogMessage(lm, true);
+      logFile_.write(logMsg.c_str(), logMsg.length());
+      logFile_.flush();
+   }
 
-   wcsftime(buffer, ARRAY_SIZE(buffer), L"%Y-%m-%d %H:%M:%S", &timeinfo);
-   const std::wstring logMsg = std::vformat(
-      L"[{} {}]: {}\n",
-      std::make_wformat_args(
-         buffer,
-         level,
-         msg)
-   );
-   const std::scoped_lock<std::mutex> lock(logMutex_);
-   logFile_.write(logMsg.c_str(), logMsg.length());
-   logFile_.flush();
+   {
+      const std::scoped_lock<std::mutex> lock(wndMutex_);
+      for (const auto hWnd : registeredWindows_) {
+         if (IsWindow(hWnd)) {
+            SendMessageW(hWnd, WM_LOG_UPDATED, 0, reinterpret_cast<LPARAM>(&lm));
+         }
+      }
+   }
+
+   {
+      const std::scoped_lock<std::mutex> lock(logMutex_);
+      logMessages_.push_back(std::move(lm));
+      if (logMessages_.size() >= kMaxLogEntries_) {
+         logMessages_.erase(
+            logMessages_.begin(),
+            logMessages_.begin() + (logMessages_.size() - kMaxLogEntries_ / 2));
+      }
+   }
 }
 
 std::vector<LogMessage> WMLog::GetLogMessages() const
@@ -133,50 +174,55 @@ std::vector<LogMessage> WMLog::GetLogMessages() const
    return logMessages_;
 }
 
-void WMLog::LogDebug(_In_z_ _Printf_format_string_ const wchar_t *fmt, ...)
+void WMLog::RegisterForLogUpdates(HWND hWnd)
 {
-   if (!enabled_) {
-      return;
+   const std::scoped_lock<std::mutex> lock(wndMutex_);
+   if (std::find(registeredWindows_.begin(), registeredWindows_.end(), hWnd) == registeredWindows_.end()) {
+      registeredWindows_.push_back(hWnd);
    }
+}
 
+void WMLog::UnregisterForLogUpdates(HWND hWnd)
+{
+   const std::scoped_lock<std::mutex> lock(wndMutex_);
+   if (const auto it = std::find(registeredWindows_.begin(), registeredWindows_.end(), hWnd);
+       it != registeredWindows_.end()) {
+      registeredWindows_.erase(it);
+   }
+}
+
+void WMLog::LogDebug(_In_z_ _Printf_format_string_ const wchar_t *fmt, ...)
+{
    wchar_t buf[1024];
    va_list ap;
    va_start(ap, fmt);
 
    vswprintf_s(buf, fmt, ap);
-   WriteMessage(L"Debug", buf);
+   StoreMessage(LogLevel::Debug, buf);
 
    va_end(ap);
 }
 
 void WMLog::LogInfo(_In_z_ _Printf_format_string_ const wchar_t *fmt, ...)
 {
-   if (!enabled_) {
-      return;
-   }
-
    wchar_t buf[1024];
    va_list ap;
    va_start(ap, fmt);
 
    vswprintf_s(buf, fmt, ap);
-   WriteMessage(L"Info", buf);
+   StoreMessage(LogLevel::Info, buf);
 
    va_end(ap);
 }
 
 void WMLog::LogError(_In_z_ _Printf_format_string_ const wchar_t *fmt, ...)
 {
-   if (!enabled_) {
-      return;
-   }
-
    wchar_t buf[1024];
    va_list ap;
    va_start(ap, fmt);
 
    vswprintf_s(buf, fmt, ap);
-   WriteMessage(L"Error", buf);
+   StoreMessage(LogLevel::Error, buf);
 
    va_end(ap);
 }
@@ -205,6 +251,6 @@ void WMLog::LogWinError(const wchar_t *functionName, DWORD lastError)
          functionName,
          lastError,
          errorMsgText));
-   WriteMessage(L"Error", static_cast<const wchar_t *>(lpMsgBuf));
+   StoreMessage(LogLevel::Error, static_cast<const wchar_t *>(lpMsgBuf));
    LocalFree(lpMsgBuf);
 }
index fc9be3467b5a8dc0002d36fa4c8ff084df76b9e1..6bc545bef66643267e90680d1e9b312989725872 100644 (file)
@@ -42,9 +42,9 @@ enum class LogLevel {
 };
 
 struct LogMessage {
-   LogLevel level;
-   std::string time;
-   std::string message;
+   LogLevel level = LogLevel::Info;
+   std::chrono::zoned_time<std::chrono::milliseconds> time;
+   std::wstring message;
 };
 
 class WMLog {
@@ -57,22 +57,32 @@ public:
    void LogWinError(const wchar_t *functionName, DWORD errorCode = -1);
 
    void EnableLogFile(bool enable);
-   bool IsEnabled() const;
+   bool IsLogFileEnabled() const;
    std::wstring GetLogFilePath();
 
    std::vector<LogMessage> GetLogMessages() const;
 
+   void RegisterForLogUpdates(HWND hWnd);
+   void UnregisterForLogUpdates(HWND hWnd);
+
+   std::wstring FormatLogMessage(const LogMessage &logMsg, bool new_line=false) const;
+
 private:
    WMLog();
    ~WMLog();
    WMLog(const WMLog&) = delete;
    WMLog& operator=(const WMLog&) = delete;
 
-   void WriteMessage(const wchar_t *level, const wchar_t *msg);
+   const int kMaxLogEntries_ = 500;
+
+   void StoreMessage(LogLevel level, const wchar_t *msg);
    void DeleteLogFile();
 
    mutable std::mutex logMutex_;
+   mutable std::mutex wndMutex_;
+
    bool enabled_;
    std::wofstream logFile_;
    std::vector<LogMessage> logMessages_;
+   std::vector<HWND> registeredWindows_;
 };
index d88524991804762aa9e18d77e36e25f983314529..8d6cc314b4f019347764bb164bd4e8dd15457da7 100644 (file)
@@ -109,7 +109,9 @@ bool WMi18n::LoadDefaultLanguage()
 {
    const std::lock_guard lock(langMutex_);
    if (!LoadLanguage(defaultLangName_, defaultLang_)) {
-      const std::wstring error = std::format(L"Failed to load default language. Please make sure the langs-Folder exists and contains {}.", defaultLangName_);;
+      const std::wstring error = std::format(
+         L"Failed to load default language. Please make sure the langs-Folder exists and contains {}.",
+         defaultLangName_);
       TaskDialog(
          nullptr,
          nullptr,
@@ -178,7 +180,9 @@ bool WMi18n::LoadLanguage(const std::wstring &fileName)
 
    TranslationMap new_lang;
    if (!LoadLanguage(fileName, new_lang)) {
-      WMLog::GetInstance().LogError(L"Failed to load language \"%ls\"", fileName.c_str());
+      WMLog::GetInstance().LogError(
+         L"Failed to load language \"%ls\"",
+         fileName.c_str());
       return false;
    } else {
       UnloadLanguage();
@@ -210,7 +214,9 @@ const std::wstring WMi18n::GetTranslationW(const std::string& textId) const
       }
    }
    if (text.empty()) {
-      std::wstring err = std::format(L"Translation for {} not found", ConvertStringToWideString(textId));
+      std::wstring err = std::format(
+         L"Translation for {} not found",
+         ConvertStringToWideString(textId));
       return text;
    }
    return text;
@@ -222,7 +228,7 @@ const std::string WMi18n::GetTranslationA(const std::string &textId) const
    return ConvertWideStringToString(wtext);
 }
 
-bool WMi18n::SetItemText(HWND hWnd, int dlgItem, const std::string& textId)
+bool WMi18n::SetItemText(HWND hWnd, int dlgItem, const std::string& textId) const
 {
    const auto text = GetTranslationW(textId);
    if (!SetDlgItemTextW(hWnd, dlgItem, text.c_str())) {
@@ -232,7 +238,7 @@ bool WMi18n::SetItemText(HWND hWnd, int dlgItem, const std::string& textId)
    return true;
 }
 
-bool WMi18n::SetItemText(HWND hItem, const std::string &textId)
+bool WMi18n::SetItemText(HWND hItem, const std::string &textId) const
 {
    const auto text = GetTranslationW(textId);
    if (!SetWindowTextW(hItem, text.c_str())) {
index 50d559adfc22df66ec97a9c01eeb1ef52602650e..32045a3928a0ebf8cf58662e863fb03fdbd16a7c 100644 (file)
@@ -57,8 +57,8 @@ public:
    const std::wstring GetTranslationW(const std::string& textId) const;
    const std::string GetTranslationA(const std::string& textId) const;
 
-   bool SetItemText(HWND hWnd, int dlgItem, const std::string &textId);
-   bool SetItemText(HWND hItem, const std::string &textId);
+   bool SetItemText(HWND hWnd, int dlgItem, const std::string &textId) const;
+   bool SetItemText(HWND hItem, const std::string &textId) const;
 
 private:
    WMi18n() noexcept;
index 972414cbb67a80bdcd9cc100a19197ca9059264d..7cc18581983cf1283004cd68342df77adda470e3 100644 (file)
@@ -275,7 +275,7 @@ bool WinMute::LoadSettings()
 {
    WMLog& log = WMLog::GetInstance();
 
-   if (log.IsEnabled()) {
+   if (log.IsLogFileEnabled()) {
       std::wstring versionNumber;
       GetWinMuteVersion(versionNumber);
       log.LogInfo(L"Starting WinMute %s", versionNumber.c_str());
index 1bf43ec706767163a5a1f44da464126a385d436a..1a1a7f3501b9db676959f0c0bb5ae36b51b0e4a2 100644 (file)
@@ -87,11 +87,12 @@ BEGIN
     CONTROL         "Also check for beta-updates",IDC_CHECK_FOR_BETA_UPDATES,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,27,65,199,17
     LTEXT           "Options disabled. Updates are handled externally.\nLine2",IDC_UPDATE_OPTIONS_DISABLED,29,83,204,19
-    CONTROL         "Enable logging",IDC_ENABLELOGGING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,102,219,15
+    CONTROL         "Enable logging to file",IDC_ENABLELOGGING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,102,219,15
     PUSHBUTTON      "Open log file...",IDC_OPENLOG,22,118,104,16
     LTEXT           "[log file path]",IDC_LOGFILEPATH,23,138,203,27
     CONTROL         "<a href=""https://github.com/lx-s/WinMute/"">Help translating</a>",IDC_LINK_HELP_TRANSLATING,
                     "SysLink",WS_TABSTOP,143,15,83,14
+    PUSHBUTTON      "Show log...",IDC_OPENLOGDLG,129,118,94,16
 END
 
 IDD_SETTINGS_QUIETHOURS DIALOGEX 0, 0, 246, 198
@@ -245,12 +246,12 @@ BEGIN
     PUSHBUTTON      "Cancel",IDCANCEL,144,41,50,14
 END
 
-IDD_LOG DIALOGEX 0, 0, 307, 176
+IDD_LOG DIALOGEX 0, 0, 403, 253
 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
 CAPTION "WinMute Log"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
-    EDITTEXT        IDC_LOG_CONTENT,0,0,306,174,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | NOT WS_BORDER | WS_VSCROLL
+    EDITTEXT        IDC_LOG_CONTENT,7,7,389,238,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | NOT WS_BORDER | WS_VSCROLL | WS_HSCROLL
 END
 
 
@@ -369,9 +370,9 @@ BEGIN
     IDD_LOG, DIALOG
     BEGIN
         LEFTMARGIN, 7
-        RIGHTMARGIN, 300
+        RIGHTMARGIN, 396
         TOPMARGIN, 7
-        BOTTOMMARGIN, 168
+        BOTTOMMARGIN, 245
     END
 END
 #endif    // APSTUDIO_INVOKED
index 86a823552e71239d90a38273b0570b1ee4ac25f4..84575a6838ac165134c0236ab57158a51a5266d7 100644 (file)
@@ -60,7 +60,9 @@ POSSIBILITY OF SUCH DAMAGE.
 #include <array>
 #include <cassert>
 #include <cstdarg>
+#include <chrono>
 #include <filesystem>
+#include <format>
 #include <fstream>
 #include <iterator>
 #include <locale>
@@ -131,3 +133,4 @@ static const wchar_t *LOG_FILE_NAME = L"WinMute.log";
 
 constexpr int WM_SAVESETTINGS = WM_USER + 300;
 constexpr int WM_WINMUTE_UPDATE_POPUP = WM_USER + 301;
+constexpr int WM_LOG_UPDATED = WM_USER + 302;
index bbffeadbd6df30616935fca92080505d38880632..c085542a7785160bfae67960887ccc216da3f0a8 100644 (file)
@@ -50,6 +50,8 @@
 #define IDC_LICENSETEXT                 1015
 #define IDC_CHECK_FOR_BETA_UPDATES      1015
 #define IDC_ABOUT_TAB                   1016
+#define IDC_OPENLOG2                    1016
+#define IDC_OPENLOGDLG                  1016
 #define IDC_ABOUTTEXT                   1019
 #define IDC_TITLE                       1020
 #define IDC_ABOUT_TITLE                 1020
 #define ID_TRAYMENU_LABEL_MUTEON        40038
 #define ID_TRAYMENU_MUTEONSCREE         40039
 #define ID_TRAYMENU_LABEL_MUTEON_NO_RESTORE 40040
+#define ID_TRAYMENU_LOG                 40041
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        144
-#define _APS_NEXT_COMMAND_VALUE         40041
+#define _APS_NEXT_COMMAND_VALUE         40042
 #define _APS_NEXT_CONTROL_VALUE         1076
 #define _APS_NEXT_SYMED_VALUE           101
 #endif