From c08601b1ed930755e3b40e083f6d2ab4574a9ae5 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Mon, 19 Jan 2026 00:17:44 +0000 Subject: [PATCH 01/28] [Jenkins] Updated translation --- core/i18n/de_DE.json | 2 +- core/i18n/en_US.json | 2 +- core/i18n/es_ES.json | 2 +- core/i18n/fr_FR.json | 2 +- core/i18n/id_ID.json | 2 +- core/i18n/it_IT.json | 2 +- core/i18n/ja_JP.json | 2 +- core/i18n/pt_PT.json | 2 +- core/i18n/ru_RU.json | 2 +- core/i18n/tr.json | 2 +- docs/de_DE/changelog.md | 39 +++++++++++++++++++++------------------ docs/en_US/changelog.md | 39 +++++++++++++++++++++------------------ docs/es_ES/changelog.md | 39 +++++++++++++++++++++------------------ docs/i18n/de_DE.json | 38 ++++++++++++++++++++------------------ docs/i18n/en_US.json | 38 ++++++++++++++++++++------------------ docs/i18n/es_ES.json | 38 ++++++++++++++++++++------------------ docs/i18n/fr_FR.json | 2 ++ docs/i18n/pt_PT.json | 38 ++++++++++++++++++++------------------ docs/pt_PT/changelog.md | 39 +++++++++++++++++++++------------------ plugin_info/info.json | 8 ++++---- 20 files changed, 180 insertions(+), 158 deletions(-) diff --git a/core/i18n/de_DE.json b/core/i18n/de_DE.json index 33a0b16..a142fd6 100644 --- a/core/i18n/de_DE.json +++ b/core/i18n/de_DE.json @@ -153,6 +153,6 @@ "Aucun": "Ohne" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Sonos \/ Ikea Symfonisk-Steuerungs-Plugin. VORSICHT: Mindestens PHP 7.0 ist erforderlich" + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Symfonisk Sonos\/Ikea-Steuerungs-Plugin. WARNUNG: PHP 7.4 oder höher erforderlich" } } \ No newline at end of file diff --git a/core/i18n/en_US.json b/core/i18n/en_US.json index 39cd5c9..a59ffed 100644 --- a/core/i18n/en_US.json +++ b/core/i18n/en_US.json @@ -153,6 +153,6 @@ "Aucun": "None" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Sonos \/ Ikea Symfonisk control plugin. CAUTION: PHP 7.0 minimum is required" + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Symfonisk Sonos\/Ikea control plugin. WARNING: PHP 7.4 or later is required" } } \ No newline at end of file diff --git a/core/i18n/es_ES.json b/core/i18n/es_ES.json index 138d612..d05d9e7 100644 --- a/core/i18n/es_ES.json +++ b/core/i18n/es_ES.json @@ -153,6 +153,6 @@ "Aucun": "Ninguna" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Complemento de control de Sonos \/ Ikea Symfonisk. PRECAUCIÓN: Se requiere PHP 7.0 como mínimo" + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de control Symfonisk para Sonos\/Ikea. ADVERTENCIA: Requiere PHP 7.4 o posterior" } } \ No newline at end of file diff --git a/core/i18n/fr_FR.json b/core/i18n/fr_FR.json index 522444f..f8e197e 100644 --- a/core/i18n/fr_FR.json +++ b/core/i18n/fr_FR.json @@ -153,6 +153,6 @@ "Aucun": "Aucun" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0." + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4." } } \ No newline at end of file diff --git a/core/i18n/id_ID.json b/core/i18n/id_ID.json index aee7a3b..400d56d 100644 --- a/core/i18n/id_ID.json +++ b/core/i18n/id_ID.json @@ -153,6 +153,6 @@ "Aucun": "Tak ada" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0" + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" } } \ No newline at end of file diff --git a/core/i18n/it_IT.json b/core/i18n/it_IT.json index 0f4409c..fad5b95 100644 --- a/core/i18n/it_IT.json +++ b/core/i18n/it_IT.json @@ -153,6 +153,6 @@ "Aucun": "Nessuno" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0" + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" } } \ No newline at end of file diff --git a/core/i18n/ja_JP.json b/core/i18n/ja_JP.json index 7ca935a..8ef82b6 100644 --- a/core/i18n/ja_JP.json +++ b/core/i18n/ja_JP.json @@ -153,6 +153,6 @@ "Aucun": "何でもありません" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0" + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" } } \ No newline at end of file diff --git a/core/i18n/pt_PT.json b/core/i18n/pt_PT.json index fd2e931..24787d9 100644 --- a/core/i18n/pt_PT.json +++ b/core/i18n/pt_PT.json @@ -153,6 +153,6 @@ "Aucun": "Nemhum" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Plug-in de controle Sonos \/ Ikea Symfonisk. CUIDADO: PHP 7.0 mínimo é necessário" + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de controle Symfonisk Sonos\/Ikea. AVISO: Requer PHP 7.4 ou posterior" } } \ No newline at end of file diff --git a/core/i18n/ru_RU.json b/core/i18n/ru_RU.json index 4f34492..f97593a 100644 --- a/core/i18n/ru_RU.json +++ b/core/i18n/ru_RU.json @@ -153,6 +153,6 @@ "Aucun": "Нет" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0" + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" } } \ No newline at end of file diff --git a/core/i18n/tr.json b/core/i18n/tr.json index 68918c9..ee10676 100644 --- a/core/i18n/tr.json +++ b/core/i18n/tr.json @@ -153,6 +153,6 @@ "Aucun": "Hiçbir" }, "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.0" + "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" } } \ No newline at end of file diff --git a/docs/de_DE/changelog.md b/docs/de_DE/changelog.md index 6c1bdc5..c157985 100644 --- a/docs/de_DE/changelog.md +++ b/docs/de_DE/changelog.md @@ -4,13 +4,16 @@ > >Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt -- -- +# 19.01.2026 + +- Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom +- Corrections pour le message "Subscription renewal failed" et la perte de remontée des informations +- Bildkorrekturen # 26-04-2025 > Attention -> Bedeutende Neugestaltung des Plugins : +> Bedeutende Neugestaltung des Plugins : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ; > > Erfordert Jeedom 4.4.8 > @@ -20,16 +23,16 @@ - Das Plugin wurde fast komplett neu geschrieben, der Daemon wurde komplett in Python (anstelle von PHP) neu geschrieben) - Debian 11 und 12 kompatibel! -- . +- Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon. - Es ist auch möglich, Geräte, Favoriten und Wiedergabelisten (erneut) zu synchronisieren, ohne den Daemon über das Gerätefenster neu zu starten. -- -- ) -- Neugestaltung der Gruppenverwaltung (alte Befehle werden gelöscht und neue hinzugefügt, siehe Dokumentation). Es ist möglich, einer Gruppe beizutreten oder sie zu verlassen und die Wiedergabe der Gruppe von jedem Gerät in der Gruppe aus zu steuern, ohne sich Gedanken darüber machen zu müssen, wer der Controller ist. . +- Synchro automatique chaque heure pour corriger les désynchronisations éventuelles +- Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple) +- Neugestaltung der Gruppenverwaltung (alte Befehle werden gelöscht und neue hinzugefügt, siehe Dokumentation). Es ist möglich, einer Gruppe beizutreten oder sie zu verlassen und die Wiedergabe der Gruppe von jedem Gerät in der Gruppe aus zu steuern, ohne sich Gedanken darüber machen zu müssen, wer der Controller ist. Le volume est, lui, toujours contrôlé par enceinte. - Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**. -- Optimierung : . +- Optimierung : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant. - Die Anzeige des aktuell wiedergegebenen Covers wurde optimiert - Optimierung der Lesefavoriten -- Ajout de la possibilité de désactiver la tuile pré-configurée : ... +- Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix... - Hinzufügen eines Aktionsbefehls **Fernseher** um zum Eingang zu wechseln *Fernseher* auf kompatiblen Geräten - Hinzufügen eines Info-Befehls **Lesemodus** und Aktion **Wählen Sie den Lesemodus** Hier können Sie den Lesemodus aus den folgenden Möglichkeiten auswählen: *Normal*, *Wiederhole alles*, *Zufällig und alles wiederholen*, *Zufällig ohne Wiederholung*, *Lied wiederholen*, *Zufälliges und wiederholtes Lied* @@ -44,18 +47,18 @@ - Befehle hinzufügen **Status-Touch-Steuerelemente**, **Touch-Bedienelemente ein**, **Touch-Steuerung ausgeschaltet** - Befehle hinzufügen **Gleichgewicht** (Aktion/Cursor) und **Kontostand** die den Saldo nach einem Wert zwischen -100 (ganz links) und 100 (ganz rechts) verwaltet) - Befehle hinzufügen **Gräber** (Aktion/Cursor) und **Ernsthafter Status** die den Bass nach einem Wert zwischen -10 und 10 verwaltet -- Befehle hinzufügen **Verdreifachen** (Aktion/Cursor) und **Dreifacher Status** +- Befehle hinzufügen **Verdreifachen** (Aktion/Cursor) und **Dreifacher Status** qui gèrent les aigus selon une valeur comprise entre -10 et 10 - Befehl hinzufügen **Partymode** Dadurch können Sie alle Sonos gruppieren -- Befehl hinzufügen **Mikrofonstatus** +- Befehl hinzufügen **Mikrofonstatus** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro - Hinzufügen eines Info-Befehls **Batterie** Bei Sonos, die mit einem Akku ausgestattet sind, wird der Akkuladestand in Prozent angezeigt -- Hinzufügen eines Info-Befehls **Laden** +- Hinzufügen eines Info-Befehls **Laden** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non - Hinzufügen eines Info-Befehls **Nächster Alarm** Auf jedem Sonos wird das Datum des nächsten auf diesem Lautsprecher programmierten Alarms angezeigt # 25.04.2024 - Aktualisierung der Dokumentation -- ) -- ) +- Nettoyage des accents dans les noms de partage (non supportés par le plugin) +- Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom) - Sonos Beam Gen 2 hinzugefügt # 15.01.2024 @@ -90,11 +93,11 @@ # 14.01.2022 -- +- Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK # 27.12.2021 -- +- Ajout de la compatibilité avec la nouvelle Sonos One # 09.10.2021 @@ -165,7 +168,7 @@ - Vollständiges Umschreiben des Plugins - Unterstützung für die neue Sonos-API - Unterstützung für Beam- und One-Soundsysteme -- +- Correction de nombreux bugs - Globale Optimierungen **Wichtig** @@ -179,7 +182,7 @@ - Unterstützung für Sonos One und Playbase - Zungenkorrektur mit Picotts - Hinzufügen eines Befehls "Zeileneintrag"" -- +- Mise à jour de la librairie de communication avec les Sonos - Optimiertes Laden von Wiedergabelisten - Zugabe von Picotts zur lokalen TTS-Erzeugung - Korrektur der Wiedergabe- / Pause-Schaltfläche beim Aktualisieren des Widgets. diff --git a/docs/en_US/changelog.md b/docs/en_US/changelog.md index f99ac79..8077144 100644 --- a/docs/en_US/changelog.md +++ b/docs/en_US/changelog.md @@ -4,13 +4,16 @@ > >As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text -- -- +# 19-01-2026 + +- Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom +- Corrections pour le message "Subscription renewal failed" et la perte de remontée des informations +- Image corrections # 26-04-2025 > Attention -> Significant plugin redesign : +> Significant plugin redesign : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ; > > Requires Jeedom 4.4.8 > @@ -20,16 +23,16 @@ - Almost total rewrite of the plugin, the daemon has been completely rewritten in python (instead of PHP) - Debian 11 and 12 compatible! -- . +- Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon. - It is also possible to ask to (re)synchronize equipment, favorites and playlists without restarting the daemon from the equipment panel. -- -- ) -- Redesign of group management (old commands will be deleted and new ones added, see documentation). It is possible to join or leave a group, control the playback of the group from any device in the group without worrying about who is the controller. . +- Synchro automatique chaque heure pour corriger les désynchronisations éventuelles +- Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple) +- Redesign of group management (old commands will be deleted and new ones added, see documentation). It is possible to join or leave a group, control the playback of the group from any device in the group without worrying about who is the controller. Le volume est, lui, toujours contrôlé par enceinte. - Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**. -- Optimization : . +- Optimization : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant. - Optimized the display of the cover of the current reading - Optimization on reading favorites -- Ajout de la possibilité de désactiver la tuile pré-configurée : ... +- Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix... - Adding an action command **TV** to switch to the input *TV* on compatible equipment - Adding an info command **Reading mode** and action **Choose reading mode** which allows you to select the reading mode from the following possibilities: *Normal*, *Repeat all*, *Random and repeat all*, *Random without repetition*, *Repeat song*, *Random and repeat song* @@ -44,18 +47,18 @@ - Adding commands **Touch controls status**, **Touch controls on**, **Touch controls off** - Adding commands **Balance** (action/cursor) and **Balance status** which manages the balance according to a value between -100 (far left) and 100 (far right)) - Adding commands **Graves** (action/cursor) and **Serious status** which manages the bass according to a value between -10 and 10 -- Adding commands **Highs** (action/cursor) and **Acute status** +- Adding commands **Highs** (action/cursor) and **Acute status** qui gèrent les aigus selon une valeur comprise entre -10 et 10 - Adding the command **Party mode** which allows you to group all Sonos together -- Adding the command **Mic status** +- Adding the command **Mic status** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro - Adding an info command **Battery** on Sonos equipped with a battery indicating the battery charge percentage -- Adding an info command **Loading** +- Adding an info command **Loading** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non - Adding an info command **Next alarm** on each Sonos giving the date of the next alarm programmed on this speaker # 04/25/2024 - Documentation update -- ) -- ) +- Nettoyage des accents dans les noms de partage (non supportés par le plugin) +- Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom) - Added Sonos Beam Gen 2 # 01/15/2024 @@ -90,11 +93,11 @@ # 01/14/2022 -- +- Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK # 12/27/2021 -- +- Ajout de la compatibilité avec la nouvelle Sonos One # 09/10/2021 @@ -165,7 +168,7 @@ - Complete rewrite of the plugin - Support for the new Sonos API - Support for Beam and One sound systems -- +- Correction de nombreux bugs - Global optimizations **Important** @@ -179,7 +182,7 @@ - Support for Sonos One and Playbase - Tongue correction with picotts - Adding a "line entry" command" -- +- Mise à jour de la librairie de communication avec les Sonos - Optimized loading of playlists - Addition of picotts for local TTS generation - Correction of the play / pause button when updating the widget. diff --git a/docs/es_ES/changelog.md b/docs/es_ES/changelog.md index 9373aad..920593b 100644 --- a/docs/es_ES/changelog.md +++ b/docs/es_ES/changelog.md @@ -4,13 +4,16 @@ > >Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto -- -- +# 19-01-2026 + +- Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom +- Corrections pour le message "Subscription renewal failed" et la perte de remontée des informations +- Correcciones de imagen # 26-04-2025 > Attention -> Rediseño significativo del complemento : +> Rediseño significativo del complemento : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ; > > Requiere Jeedom 4.4.8 > @@ -20,16 +23,16 @@ - Reescritura casi total del complemento, el demonio ha sido reescrito completamente en Python (en lugar de PHP)) - Compatible con Debian 11 y 12! -- . +- Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon. - También es posible solicitar (re)sincronizar equipos, favoritos y listas de reproducción sin reiniciar el demonio desde el panel del equipo. -- -- ) -- Rediseño de la gestión de grupos (se eliminarán los comandos antiguos y se agregarán otros nuevos, consulte la documentación)). Es posible unirse o salir de un grupo, controlar la reproducción del grupo desde cualquier dispositivo del grupo sin preocuparse de quién es el controlador. . +- Synchro automatique chaque heure pour corriger les désynchronisations éventuelles +- Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple) +- Rediseño de la gestión de grupos (se eliminarán los comandos antiguos y se agregarán otros nuevos, consulte la documentación)). Es posible unirse o salir de un grupo, controlar la reproducción del grupo desde cualquier dispositivo del grupo sin preocuparse de quién es el controlador. Le volume est, lui, toujours contrôlé par enceinte. - Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**. -- Mejoramiento : . +- Mejoramiento : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant. - Se optimizó la visualización de la portada que se está reproduciendo actualmente - Optimización en la lectura de favoritos -- Ajout de la possibilité de désactiver la tuile pré-configurée : ... +- Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix... - Agregar un comando de acción **TELEVISOR** para cambiar a la entrada *TELEVISOR* en equipos compatibles - Agregar un comando de información **Modo de lectura** y acción **Elige el modo de lectura** que le permite seleccionar el modo de lectura entre las siguientes posibilidades: *Normal*, *Repite todo*, *Aleatorio y repetir todo*, *Aleatorio sin repetición*, *Repetir canción*, *Canción aleatoria y repetida* @@ -44,18 +47,18 @@ - Agregar comandos **Controles táctiles de estado**, **Controles táctiles activados**, **Controles táctiles desactivados** - Agregar comandos **Balance** (acción/cursor) y **Estado del saldo** que gestiona el saldo según un valor entre -100 (extremo izquierdo) y 100 (extremo derecho)) - Agregar comandos **Tumbas** (acción/cursor) y **Estado serio** que gestiona los graves según un valor entre -10 y 10 -- Agregar comandos **Triplicar** (acción/cursor) y **Estado de agudos** +- Agregar comandos **Triplicar** (acción/cursor) y **Estado de agudos** qui gèrent les aigus selon une valeur comprise entre -10 et 10 - Agregando el comando **Moda de fiesta** que te permite agrupar todos los Sonos juntos -- Agregando el comando **Estado del micrófono** +- Agregando el comando **Estado del micrófono** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro - Agregar un comando de información **Batería** en Sonos equipado con una batería que muestra el porcentaje de carga de la batería -- Agregar un comando de información **Cargando** +- Agregar un comando de información **Cargando** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non - Agregar un comando de información **Próxima alarma** en cada Sonos indicando la fecha de la próxima alarma programada en este altavoz # 25/04/2024 - Actualización de documentación -- ) -- ) +- Nettoyage des accents dans les noms de partage (non supportés par le plugin) +- Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom) - Se agregó Sonos Beam Gen 2 # 15/01/2024 @@ -90,11 +93,11 @@ # 14/01/2022 -- +- Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK # 27/12/2021 -- +- Ajout de la compatibilité avec la nouvelle Sonos One # 10/09/2021 @@ -165,7 +168,7 @@ - Completa reescritura del complemento - Soporte para la nueva API de Sonos - Soporte para sistemas de sonido Beam y One -- +- Correction de nombreux bugs - Optimizaciones globales **Importante** @@ -179,7 +182,7 @@ - Soporte para Sonos One y Playbase - Corrección de lengua con picotts - Agregar un comando de "entrada de línea"" -- +- Mise à jour de la librairie de communication avec les Sonos - Carga optimizada de listas de reproducción - Adición de picotts para la generación local de TTS - Corrección del botón de reproducción / pausa al actualizar el widget. diff --git a/docs/i18n/de_DE.json b/docs/i18n/de_DE.json index ff10557..bcef63f 100644 --- a/docs/i18n/de_DE.json +++ b/docs/i18n/de_DE.json @@ -2,31 +2,33 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos Controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt", - "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "", - "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "", + "19-01-2026": "19.01.2026", + "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", + "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", + "Corrections des images": "Bildkorrekturen", "26-04-2025": "26-04-2025", "Refonte importante du plugin": "Bedeutende Neugestaltung des Plugins", - "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "", + "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;", "Nécessite Jeedom 4.4.8": "Erfordert Jeedom 4.4.8", "Compatible Debian 11 et 12": "Debian 11 und 12 kompatibel", "ce sujet sur community": "dieses Thema auf Community", "Voir également": "Siehe auch", "pour plus de détails": "für mehr Details", "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP": "Das Plugin wurde fast komplett neu geschrieben, der Daemon wurde komplett in Python (anstelle von PHP) neu geschrieben", - "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "", + "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon", "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements": "Es ist auch möglich, Geräte, Favoriten und Wiedergabelisten (erneut) zu synchronisieren, ohne den Daemon über das Gerätefenster neu zu starten", - "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "", - "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "", + "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles", + "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple", "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation": "Neugestaltung der Gruppenverwaltung (alte Befehle werden gelöscht und neue hinzugefügt, siehe Dokumentation", "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur": "Es ist möglich, einer Gruppe beizutreten oder sie zu verlassen und die Wiedergabe der Gruppe von jedem Gerät in der Gruppe aus zu steuern, ohne sich Gedanken darüber machen zu müssen, wer der Controller ist", - "Le volume est, lui, toujours contrôlé par enceinte": "", + "Le volume est, lui, toujours contrôlé par enceinte": "Le volume est, lui, toujours contrôlé par enceinte", "il sera nécessaire d'adapter la configuration du partage SAMBA": "il sera nécessaire d'adapter la configuration du partage SAMBA", "Adaptation sur la fonction Text-to-Speech (TTS": "Adaptation sur la fonction Text-to-Speech (TTS", - "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "", + "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant", "Optimisation de l'affichage de la pochette de la lecture en cours": "Die Anzeige des aktuell wiedergegebenen Covers wurde optimiert", "Optimisation sur la lecture des favoris": "Optimierung der Lesefavoriten", "Ajout de la possibilité de désactiver la tuile pré-configurée": "Ajout de la possibilité de désactiver la tuile pré-configurée", - "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "", + "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix", "Ajout d'une commande action": "Hinzufügen eines Aktionsbefehls", "pour basculer sur l'entrée": "um zum Eingang zu wechseln", "sur les équipements compatibles": "auf kompatiblen Geräten", @@ -77,20 +79,20 @@ "Graves statut": "Ernsthafter Status", "qui gère les graves selon une valeur comprise entre -10 et 10": "die den Bass nach einem Wert zwischen -10 und 10 verwaltet", "Aigus statut": "Dreifacher Status", - "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "", + "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "qui gèrent les aigus selon une valeur comprise entre -10 et 10", "Mode fête": "Partymode", "Ajout de la commande": "Befehl hinzufügen", "qui permet de grouper tous les Sonos ensemble": "Dadurch können Sie alle Sonos gruppieren", "Mic statut": "Mikrofonstatus", - "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "", + "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro", "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "Bei Sonos, die mit einem Akku ausgestattet sind, wird der Akkuladestand in Prozent angezeigt", - "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "", + "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non", "Prochaine alarme": "Nächster Alarm", "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "Auf jedem Sonos wird das Datum des nächsten auf diesem Lautsprecher programmierten Alarms angezeigt", "25\/04\/2024": "25.04.2024", "Mise à jour de la documentation": "Aktualisierung der Dokumentation", - "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "", - "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "", + "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "Nettoyage des accents dans les noms de partage (non supportés par le plugin", + "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom", "Ajout Sonos Beam Gen 2": "Sonos Beam Gen 2 hinzugefügt", "15\/01\/2024": "15.01.2024", "Préparation pour Jeedom 4.4": "Vorbereitung auf Jeedom 4.4", @@ -109,9 +111,9 @@ "27\/01\/2022": "27.01.2022", "Optimisations V4.2": "V4.2-Optimierungen", "14\/01\/2022": "14.01.2022", - "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "", + "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK", "27\/12\/2021": "27.12.2021", - "Ajout de la compatibilité avec la nouvelle Sonos One": "", + "Ajout de la compatibilité avec la nouvelle Sonos One": "Ajout de la compatibilité avec la nouvelle Sonos One", "09\/10\/2021": "09.10.2021", "Ajout de la Sonos Five": "Hinzufügung der Sonos Five", "Ajout Sonos Roam": "Hinzufügen von Sonos Roam", @@ -150,7 +152,7 @@ "Réecriture complète du plugin": "Vollständiges Umschreiben des Plugins", "Prise en charge de la nouvelle api Sonos": "Unterstützung für die neue Sonos-API", "Prise en charge des sonos beam et One": "Unterstützung für Beam- und One-Soundsysteme", - "Correction de nombreux bugs": "", + "Correction de nombreux bugs": "Correction de nombreux bugs", "Optimisations globales": "Globale Optimierungen", "Compatible PHP7 uniquement": "Nur kompatibles PHP7", "Certaines fonctionnalités ont dû être retirées": "Einige Funktionen mussten entfernt werden", @@ -158,7 +160,7 @@ "Prise en charge des Sonos One et Playbase": "Unterstützung für Sonos One und Playbase", "Correction de la langue avec PicoTTS": "Zungenkorrektur mit Picotts", "Ajout d'une commande \"Entrée de ligne": "Hinzufügen eines Befehls \"Zeileneintrag\"", - "Mise à jour de la librairie de communication avec les Sonos": "", + "Mise à jour de la librairie de communication avec les Sonos": "Mise à jour de la librairie de communication avec les Sonos", "Optimisation du chargement des playlists": "Optimiertes Laden von Wiedergabelisten", "Ajout de picotts pour la génération du TTS en local": "Zugabe von Picotts zur lokalen TTS-Erzeugung", "Correction du bouton play\/pause lors de la mise à jour du widget": "Korrektur der Wiedergabe- \/ Pause-Schaltfläche beim Aktualisieren des Widgets", diff --git a/docs/i18n/en_US.json b/docs/i18n/en_US.json index 7f67e2a..4edd524 100644 --- a/docs/i18n/en_US.json +++ b/docs/i18n/en_US.json @@ -2,31 +2,33 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text", - "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "", - "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "", + "19-01-2026": "19-01-2026", + "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", + "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", + "Corrections des images": "Image corrections", "26-04-2025": "26-04-2025", "Refonte importante du plugin": "Significant plugin redesign", - "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "", + "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;", "Nécessite Jeedom 4.4.8": "Requires Jeedom 4.4.8", "Compatible Debian 11 et 12": "Debian 11 and 12 compatible", "ce sujet sur community": "this topic on community", "Voir également": "See also", "pour plus de détails": "for more details", "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP": "Almost total rewrite of the plugin, the daemon has been completely rewritten in python (instead of PHP", - "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "", + "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon", "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements": "It is also possible to ask to (re)synchronize equipment, favorites and playlists without restarting the daemon from the equipment panel", - "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "", - "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "", + "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles", + "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple", "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation": "Redesign of group management (old commands will be deleted and new ones added, see documentation", "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur": "It is possible to join or leave a group, control the playback of the group from any device in the group without worrying about who is the controller", - "Le volume est, lui, toujours contrôlé par enceinte": "", + "Le volume est, lui, toujours contrôlé par enceinte": "Le volume est, lui, toujours contrôlé par enceinte", "il sera nécessaire d'adapter la configuration du partage SAMBA": "il sera nécessaire d'adapter la configuration du partage SAMBA", "Adaptation sur la fonction Text-to-Speech (TTS": "Adaptation sur la fonction Text-to-Speech (TTS", - "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "", + "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant", "Optimisation de l'affichage de la pochette de la lecture en cours": "Optimized the display of the cover of the current reading", "Optimisation sur la lecture des favoris": "Optimization on reading favorites", "Ajout de la possibilité de désactiver la tuile pré-configurée": "Ajout de la possibilité de désactiver la tuile pré-configurée", - "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "", + "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix", "Ajout d'une commande action": "Adding an action command", "pour basculer sur l'entrée": "to switch to the input", "sur les équipements compatibles": "on compatible equipment", @@ -77,20 +79,20 @@ "Graves statut": "Serious status", "qui gère les graves selon une valeur comprise entre -10 et 10": "which manages the bass according to a value between -10 and 10", "Aigus statut": "Acute status", - "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "", + "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "qui gèrent les aigus selon une valeur comprise entre -10 et 10", "Mode fête": "Party mode", "Ajout de la commande": "Adding the command", "qui permet de grouper tous les Sonos ensemble": "which allows you to group all Sonos together", "Mic statut": "Mic status", - "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "", + "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro", "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "on Sonos equipped with a battery indicating the battery charge percentage", - "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "", + "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non", "Prochaine alarme": "Next alarm", "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "on each Sonos giving the date of the next alarm programmed on this speaker", "25\/04\/2024": "04\/25\/2024", "Mise à jour de la documentation": "Documentation update", - "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "", - "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "", + "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "Nettoyage des accents dans les noms de partage (non supportés par le plugin", + "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom", "Ajout Sonos Beam Gen 2": "Added Sonos Beam Gen 2", "15\/01\/2024": "01\/15\/2024", "Préparation pour Jeedom 4.4": "Preparing for Jeedom 4.4", @@ -109,9 +111,9 @@ "27\/01\/2022": "01\/27\/2022", "Optimisations V4.2": "V4.2 optimizations", "14\/01\/2022": "01\/14\/2022", - "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "", + "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK", "27\/12\/2021": "12\/27\/2021", - "Ajout de la compatibilité avec la nouvelle Sonos One": "", + "Ajout de la compatibilité avec la nouvelle Sonos One": "Ajout de la compatibilité avec la nouvelle Sonos One", "09\/10\/2021": "09\/10\/2021", "Ajout de la Sonos Five": "Addition of the Sonos Five", "Ajout Sonos Roam": "Adding Sonos Roam", @@ -150,7 +152,7 @@ "Réecriture complète du plugin": "Complete rewrite of the plugin", "Prise en charge de la nouvelle api Sonos": "Support for the new Sonos API", "Prise en charge des sonos beam et One": "Support for Beam and One sound systems", - "Correction de nombreux bugs": "", + "Correction de nombreux bugs": "Correction de nombreux bugs", "Optimisations globales": "Global optimizations", "Compatible PHP7 uniquement": "Compatible PHP7 only", "Certaines fonctionnalités ont dû être retirées": "Some features had to be removed", @@ -158,7 +160,7 @@ "Prise en charge des Sonos One et Playbase": "Support for Sonos One and Playbase", "Correction de la langue avec PicoTTS": "Tongue correction with picotts", "Ajout d'une commande \"Entrée de ligne": "Adding a \"line entry\" command", - "Mise à jour de la librairie de communication avec les Sonos": "", + "Mise à jour de la librairie de communication avec les Sonos": "Mise à jour de la librairie de communication avec les Sonos", "Optimisation du chargement des playlists": "Optimized loading of playlists", "Ajout de picotts pour la génération du TTS en local": "Addition of picotts for local TTS generation", "Correction du bouton play\/pause lors de la mise à jour du widget": "Correction of the play \/ pause button when updating the widget", diff --git a/docs/i18n/es_ES.json b/docs/i18n/es_ES.json index b0f7116..caca736 100644 --- a/docs/i18n/es_ES.json +++ b/docs/i18n/es_ES.json @@ -2,31 +2,33 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto", - "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "", - "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "", + "19-01-2026": "19-01-2026", + "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", + "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", + "Corrections des images": "Correcciones de imagen", "26-04-2025": "26-04-2025", "Refonte importante du plugin": "Rediseño significativo del complemento", - "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "", + "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;", "Nécessite Jeedom 4.4.8": "Requiere Jeedom 4.4.8", "Compatible Debian 11 et 12": "Compatible con Debian 11 y 12", "ce sujet sur community": "este tema en la comunidad", "Voir également": "Ver también", "pour plus de détails": "para más detalles", "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP": "Reescritura casi total del complemento, el demonio ha sido reescrito completamente en Python (en lugar de PHP)", - "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "", + "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon", "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements": "También es posible solicitar (re)sincronizar equipos, favoritos y listas de reproducción sin reiniciar el demonio desde el panel del equipo", - "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "", - "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "", + "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles", + "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple", "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation": "Rediseño de la gestión de grupos (se eliminarán los comandos antiguos y se agregarán otros nuevos, consulte la documentación)", "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur": "Es posible unirse o salir de un grupo, controlar la reproducción del grupo desde cualquier dispositivo del grupo sin preocuparse de quién es el controlador", - "Le volume est, lui, toujours contrôlé par enceinte": "", + "Le volume est, lui, toujours contrôlé par enceinte": "Le volume est, lui, toujours contrôlé par enceinte", "il sera nécessaire d'adapter la configuration du partage SAMBA": "il sera nécessaire d'adapter la configuration du partage SAMBA", "Adaptation sur la fonction Text-to-Speech (TTS": "Adaptation sur la fonction Text-to-Speech (TTS", - "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "", + "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant", "Optimisation de l'affichage de la pochette de la lecture en cours": "Se optimizó la visualización de la portada que se está reproduciendo actualmente", "Optimisation sur la lecture des favoris": "Optimización en la lectura de favoritos", "Ajout de la possibilité de désactiver la tuile pré-configurée": "Ajout de la possibilité de désactiver la tuile pré-configurée", - "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "", + "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix", "Ajout d'une commande action": "Agregar un comando de acción", "pour basculer sur l'entrée": "para cambiar a la entrada", "sur les équipements compatibles": "en equipos compatibles", @@ -77,20 +79,20 @@ "Graves statut": "Estado serio", "qui gère les graves selon une valeur comprise entre -10 et 10": "que gestiona los graves según un valor entre -10 y 10", "Aigus statut": "Estado de agudos", - "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "", + "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "qui gèrent les aigus selon une valeur comprise entre -10 et 10", "Mode fête": "Moda de fiesta", "Ajout de la commande": "Agregando el comando", "qui permet de grouper tous les Sonos ensemble": "que te permite agrupar todos los Sonos juntos", "Mic statut": "Estado del micrófono", - "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "", + "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro", "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "en Sonos equipado con una batería que muestra el porcentaje de carga de la batería", - "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "", + "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non", "Prochaine alarme": "Próxima alarma", "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "en cada Sonos indicando la fecha de la próxima alarma programada en este altavoz", "25\/04\/2024": "25\/04\/2024", "Mise à jour de la documentation": "Actualización de documentación", - "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "", - "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "", + "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "Nettoyage des accents dans les noms de partage (non supportés par le plugin", + "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom", "Ajout Sonos Beam Gen 2": "Se agregó Sonos Beam Gen 2", "15\/01\/2024": "15\/01\/2024", "Préparation pour Jeedom 4.4": "Preparándose para Jeedom 4.4", @@ -109,9 +111,9 @@ "27\/01\/2022": "27\/01\/2022", "Optimisations V4.2": "Optimizaciones V4.2", "14\/01\/2022": "14\/01\/2022", - "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "", + "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK", "27\/12\/2021": "27\/12\/2021", - "Ajout de la compatibilité avec la nouvelle Sonos One": "", + "Ajout de la compatibilité avec la nouvelle Sonos One": "Ajout de la compatibilité avec la nouvelle Sonos One", "09\/10\/2021": "10\/09\/2021", "Ajout de la Sonos Five": "Adición de Sonos Five", "Ajout Sonos Roam": "Agregar Sonos Roam", @@ -150,7 +152,7 @@ "Réecriture complète du plugin": "Completa reescritura del complemento", "Prise en charge de la nouvelle api Sonos": "Soporte para la nueva API de Sonos", "Prise en charge des sonos beam et One": "Soporte para sistemas de sonido Beam y One", - "Correction de nombreux bugs": "", + "Correction de nombreux bugs": "Correction de nombreux bugs", "Optimisations globales": "Optimizaciones globales", "Compatible PHP7 uniquement": "Solo PHP7 compatible", "Certaines fonctionnalités ont dû être retirées": "Algunas características tuvieron que ser eliminadas", @@ -158,7 +160,7 @@ "Prise en charge des Sonos One et Playbase": "Soporte para Sonos One y Playbase", "Correction de la langue avec PicoTTS": "Corrección de lengua con picotts", "Ajout d'une commande \"Entrée de ligne": "Agregar un comando de \"entrada de línea\"", - "Mise à jour de la librairie de communication avec les Sonos": "", + "Mise à jour de la librairie de communication avec les Sonos": "Mise à jour de la librairie de communication avec les Sonos", "Optimisation du chargement des playlists": "Carga optimizada de listas de reproducción", "Ajout de picotts pour la génération du TTS en local": "Adición de picotts para la generación local de TTS", "Correction du bouton play\/pause lors de la mise à jour du widget": "Corrección del botón de reproducción \/ pausa al actualizar el widget", diff --git a/docs/i18n/fr_FR.json b/docs/i18n/fr_FR.json index 31290af..c9156b7 100644 --- a/docs/i18n/fr_FR.json +++ b/docs/i18n/fr_FR.json @@ -3,8 +3,10 @@ "Changelog Sonos controller": "Changelog Sonos controller", "IMPORTANT": "IMPORTANT", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte", + "19-01-2026": "19-01-2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", + "Corrections des images": "Corrections des images", "26-04-2025": "26-04-2025", "Attention": "Attention", "Refonte importante du plugin": "Refonte importante du plugin", diff --git a/docs/i18n/pt_PT.json b/docs/i18n/pt_PT.json index b8bfbd8..a145e22 100644 --- a/docs/i18n/pt_PT.json +++ b/docs/i18n/pt_PT.json @@ -2,31 +2,33 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto", - "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "", - "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "", + "19-01-2026": "19-01-2026", + "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", + "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", + "Corrections des images": "Correções de imagem", "26-04-2025": "26-04-2025", "Refonte importante du plugin": "Redesenho significativo do plugin", - "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "", + "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;", "Nécessite Jeedom 4.4.8": "Requer Jeedom 4.4.8", "Compatible Debian 11 et 12": "Compatível com Debian 11 e 12", "ce sujet sur community": "este tópico na comunidade", "Voir également": "Veja também", "pour plus de détails": "para mais detalhes", "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP": "Reescrita quase total do plugin, o daemon foi completamente reescrito em python (em vez de PHP", - "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "", + "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon", "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements": "Também é possível pedir para (re)sincronizar equipamentos, favoritos e playlists sem reiniciar o daemon a partir do painel de equipamentos", - "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "", - "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "", + "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles", + "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple", "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation": "Redesenho do gerenciamento de grupos (comandos antigos serão excluídos e novos serão adicionados, consulte a documentação", "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur": "É possível entrar ou sair de um grupo, controlar a reprodução do grupo a partir de qualquer dispositivo do grupo sem se preocupar com quem é o controlador", - "Le volume est, lui, toujours contrôlé par enceinte": "", + "Le volume est, lui, toujours contrôlé par enceinte": "Le volume est, lui, toujours contrôlé par enceinte", "il sera nécessaire d'adapter la configuration du partage SAMBA": "il sera nécessaire d'adapter la configuration du partage SAMBA", "Adaptation sur la fonction Text-to-Speech (TTS": "Adaptation sur la fonction Text-to-Speech (TTS", - "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "", + "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant", "Optimisation de l'affichage de la pochette de la lecture en cours": "Otimizou a exibição da capa atualmente sendo reproduzida", "Optimisation sur la lecture des favoris": "Otimização na leitura de favoritos", "Ajout de la possibilité de désactiver la tuile pré-configurée": "Ajout de la possibilité de désactiver la tuile pré-configurée", - "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "", + "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix", "Ajout d'une commande action": "Adicionando um comando de ação", "pour basculer sur l'entrée": "para mudar para a entrada", "sur les équipements compatibles": "em equipamentos compatíveis", @@ -77,20 +79,20 @@ "Graves statut": "Situação séria", "qui gère les graves selon une valeur comprise entre -10 et 10": "que gerencia os graves de acordo com um valor entre -10 e 10", "Aigus statut": "Status triplo", - "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "", + "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "qui gèrent les aigus selon une valeur comprise entre -10 et 10", "Mode fête": "Moda de festa", "Ajout de la commande": "Adicionando o comando", "qui permet de grouper tous les Sonos ensemble": "que permite agrupar todos os Sonos", "Mic statut": "Status do microfone", - "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "", + "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro", "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "em Sonos equipados com bateria mostrando a porcentagem de carga da bateria", - "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "", + "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non", "Prochaine alarme": "Próximo alarme", "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "em cada Sonos informando a data do próximo alarme programado neste alto-falante", "25\/04\/2024": "25\/04\/2024", "Mise à jour de la documentation": "Atualização da documentação", - "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "", - "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "", + "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "Nettoyage des accents dans les noms de partage (non supportés par le plugin", + "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom", "Ajout Sonos Beam Gen 2": "Adicionado Sonos Beam Gen 2", "15\/01\/2024": "15\/01\/2024", "Préparation pour Jeedom 4.4": "Preparando-se para Jeedom 4.4", @@ -109,9 +111,9 @@ "27\/01\/2022": "27\/01\/2022", "Optimisations V4.2": "Otimizações da V4.2", "14\/01\/2022": "14\/01\/2022", - "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "", + "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK", "27\/12\/2021": "27\/12\/2021", - "Ajout de la compatibilité avec la nouvelle Sonos One": "", + "Ajout de la compatibilité avec la nouvelle Sonos One": "Ajout de la compatibilité avec la nouvelle Sonos One", "09\/10\/2021": "10\/09\/2021", "Ajout de la Sonos Five": "Adição dos Sonos Five", "Ajout Sonos Roam": "Adicionando Sonos Roam", @@ -150,7 +152,7 @@ "Réecriture complète du plugin": "Reescrita completa do plug-in", "Prise en charge de la nouvelle api Sonos": "Suporte para a nova API Sonos", "Prise en charge des sonos beam et One": "Suporte para sistemas de som Beam e One", - "Correction de nombreux bugs": "", + "Correction de nombreux bugs": "Correction de nombreux bugs", "Optimisations globales": "Otimizações globais", "Compatible PHP7 uniquement": "Apenas PHP7 compatível", "Certaines fonctionnalités ont dû être retirées": "Alguns recursos tiveram que ser removidos", @@ -158,7 +160,7 @@ "Prise en charge des Sonos One et Playbase": "Suporte para Sonos One e Playbase", "Correction de la langue avec PicoTTS": "Correção da língua com picotts", "Ajout d'une commande \"Entrée de ligne": "Adicionando um comando \"entrada de linha\"", - "Mise à jour de la librairie de communication avec les Sonos": "", + "Mise à jour de la librairie de communication avec les Sonos": "Mise à jour de la librairie de communication avec les Sonos", "Optimisation du chargement des playlists": "Carregamento otimizado de playlists", "Ajout de picotts pour la génération du TTS en local": "Adição de picotts para geração de TTS local", "Correction du bouton play\/pause lors de la mise à jour du widget": "Correção do botão reproduzir \/ pausar ao atualizar o widget", diff --git a/docs/pt_PT/changelog.md b/docs/pt_PT/changelog.md index a30edfd..1493c0c 100644 --- a/docs/pt_PT/changelog.md +++ b/docs/pt_PT/changelog.md @@ -4,13 +4,16 @@ > >Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto -- -- +# 19-01-2026 + +- Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom +- Corrections pour le message "Subscription renewal failed" et la perte de remontée des informations +- Correções de imagem # 26-04-2025 > Attention -> Redesenho significativo do plugin : +> Redesenho significativo do plugin : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ; > > Requer Jeedom 4.4.8 > @@ -20,16 +23,16 @@ - Reescrita quase total do plugin, o daemon foi completamente reescrito em python (em vez de PHP) - Compatível com Debian 11 e 12! -- . +- Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon. - Também é possível pedir para (re)sincronizar equipamentos, favoritos e playlists sem reiniciar o daemon a partir do painel de equipamentos. -- -- ) -- Redesenho do gerenciamento de grupos (comandos antigos serão excluídos e novos serão adicionados, consulte a documentação). É possível entrar ou sair de um grupo, controlar a reprodução do grupo a partir de qualquer dispositivo do grupo sem se preocupar com quem é o controlador. . +- Synchro automatique chaque heure pour corriger les désynchronisations éventuelles +- Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple) +- Redesenho do gerenciamento de grupos (comandos antigos serão excluídos e novos serão adicionados, consulte a documentação). É possível entrar ou sair de um grupo, controlar a reprodução do grupo a partir de qualquer dispositivo do grupo sem se preocupar com quem é o controlador. Le volume est, lui, toujours contrôlé par enceinte. - Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**. -- Otimização : . +- Otimização : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant. - Otimizou a exibição da capa atualmente sendo reproduzida - Otimização na leitura de favoritos -- Ajout de la possibilité de désactiver la tuile pré-configurée : ... +- Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix... - Adicionando um comando de ação **Televisão** para mudar para a entrada *Televisão* em equipamentos compatíveis - Adicionando um comando de informações **Modo de leitura** e ação **Escolha o modo de leitura** que permite selecionar o modo de leitura entre as seguintes possibilidades: *Normal*, *Repita tudo*, *Aleatório e repita tudo*, *Aleatório sem repetição*, *Repetir música*, *Música aleatória e repetida* @@ -44,18 +47,18 @@ - Adicionando comandos **Controles de toque de status**, **Controles de toque ativados**, **Controles de toque desativados** - Adicionando comandos **Equilíbrio** (ação/cursor) e **Status do saldo** que gerencia o saldo de acordo com um valor entre -100 (extrema esquerda) e 100 (extrema direita) - Adicionando comandos **Sepulturas** (ação/cursor) e **Situação séria** que gerencia os graves de acordo com um valor entre -10 e 10 -- Adicionando comandos **Agudos** (ação/cursor) e **Status triplo** +- Adicionando comandos **Agudos** (ação/cursor) e **Status triplo** qui gèrent les aigus selon une valeur comprise entre -10 et 10 - Adicionando o comando **Moda de festa** que permite agrupar todos os Sonos -- Adicionando o comando **Status do microfone** +- Adicionando o comando **Status do microfone** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro - Adicionando um comando de informações **Bateria** em Sonos equipados com bateria mostrando a porcentagem de carga da bateria -- Adicionando um comando de informações **Carregando** +- Adicionando um comando de informações **Carregando** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non - Adicionando um comando de informações **Próximo alarme** em cada Sonos informando a data do próximo alarme programado neste alto-falante # 25/04/2024 - Atualização da documentação -- ) -- ) +- Nettoyage des accents dans les noms de partage (non supportés par le plugin) +- Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom) - Adicionado Sonos Beam Gen 2 # 15/01/2024 @@ -90,11 +93,11 @@ # 14/01/2022 -- +- Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK # 27/12/2021 -- +- Ajout de la compatibilité avec la nouvelle Sonos One # 10/09/2021 @@ -165,7 +168,7 @@ - Reescrita completa do plug-in - Suporte para a nova API Sonos - Suporte para sistemas de som Beam e One -- +- Correction de nombreux bugs - Otimizações globais **IMPORTANTE** @@ -179,7 +182,7 @@ - Suporte para Sonos One e Playbase - Correção da língua com picotts - Adicionando um comando "entrada de linha"" -- +- Mise à jour de la librairie de communication avec les Sonos - Carregamento otimizado de playlists - Adição de picotts para geração de TTS local - Correção do botão reproduzir / pausar ao atualizar o widget. diff --git a/plugin_info/info.json b/plugin_info/info.json index f97c844..66a64b6 100644 --- a/plugin_info/info.json +++ b/plugin_info/info.json @@ -3,10 +3,10 @@ "name": "Sonos controller", "description": { "fr_FR": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.", - "en_US": "Sonos \/ Ikea Symfonisk control plugin. CAUTION: PHP 7.4 minimum is required", - "es_ES": "Complemento de control de Sonos \/ Ikea Symfonisk. PRECAUCIÓN: Se requiere PHP 7.4 como mínimo", - "de_DE": "Sonos \/ Ikea Symfonisk-Steuerungs-Plugin. VORSICHT: Mindestens PHP 7.4 ist erforderlich", - "pt_PT": "Plug-in de controle Sonos \/ Ikea Symfonisk. CUIDADO: PHP 7.4 mínimo é necessário", + "en_US": "Symfonisk Sonos\/Ikea control plugin. WARNING: PHP 7.4 or later is required", + "es_ES": "Plugin de control Symfonisk para Sonos\/Ikea. ADVERTENCIA: Requiere PHP 7.4 o posterior", + "de_DE": "Symfonisk Sonos\/Ikea-Steuerungs-Plugin. WARNUNG: PHP 7.4 oder höher erforderlich", + "pt_PT": "Plugin de controle Symfonisk Sonos\/Ikea. AVISO: Requer PHP 7.4 ou posterior", "ru_RU": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4", "id_ID": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4", "it_IT": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4", From 2c79f03ac6e7988bbd45878f9e012213e0f92c81 Mon Sep 17 00:00:00 2001 From: Caelion <48852394+Caelion@users.noreply.github.com> Date: Sun, 25 Jan 2026 14:08:30 +0100 Subject: [PATCH 02/28] Add image SYMFONISK_TABLE_LAMP.png for IKEA Symfonisk Table Lamp v2 --- core/img/SYMFONISK_TABLE_LAMP.png | Bin 0 -> 147375 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/img/SYMFONISK_TABLE_LAMP.png diff --git a/core/img/SYMFONISK_TABLE_LAMP.png b/core/img/SYMFONISK_TABLE_LAMP.png new file mode 100644 index 0000000000000000000000000000000000000000..8489bd9295f8b9d14d6e4c9a4a3b2aabc888dd5d GIT binary patch literal 147375 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

eEzWJ{*H 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%0Dtqm>sl+jVD+=rEAY8(Mww~f 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

eEzWJ{*H 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%0Dtqm>sl+jVD+=rEAY8(Mww~f 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
- {{Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.}}'; - } - ?> {{Interactions}}
From f90510eebe0abf4a4fc944e05c784d1784940bf7 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Sun, 17 May 2026 09:25:28 +0200 Subject: [PATCH 12/28] type hint & bugfix on tts command --- core/class/sonos3.class.php | 18 +++++++++--------- desktop/php/sonos3.php | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/core/class/sonos3.class.php b/core/class/sonos3.class.php index 853c930..a2c1c28 100644 --- a/core/class/sonos3.class.php +++ b/core/class/sonos3.class.php @@ -47,7 +47,7 @@ protected static function getSocketPort() { return config::byKey('socketport', __CLASS__, 42042);; } - public static function sendToDaemon($params) { + public static function sendToDaemon(array $params) { $deamon_info = self::deamon_info(); if ($deamon_info['state'] != 'ok') { throw new RuntimeException("Le démon n'est pas démarré"); @@ -125,7 +125,7 @@ public static function deamon_stop() { // system::fuserk(config::byKey('socketport', __CLASS__)); } - public static function interact($_query, $_parameters = array()) { + public static function interact(string $_query, array $_parameters = array()) { if (trim(config::byKey('interact::sentence', __CLASS__)) == '') { return null; } @@ -239,14 +239,14 @@ public static function createSonos(array $controllers) { $eqLogic->getCmd('action', 'join')->setDisplay('title_possibility_list', json_encode(array_values($speakers_array)))->save(true); $eqLogic->getCmd('action', 'unjoin')->setDisplay('title_possibility_list', json_encode(array_values($speakers_array)))->save(true); } - log::add(__CLASS__, 'info', __('Sonos controllers synchronized: ', __FILE__) . count($controllers)); + log::add(__CLASS__, 'info', 'Sonos controllers synchronized: ' . count($controllers), __FILE__); } - private static function getShuffleState($playModeState) { + private static function getShuffleState(string $playModeState) { return in_array($playModeState, ['SHUFFLE_NOREPEAT', 'SHUFFLE', 'SHUFFLE_REPEAT_ONE']); } - private static function getRepeatState($playModeState) { + private static function getRepeatState(string $playModeState) { return in_array($playModeState, ['SHUFFLE', 'REPEAT_ALL', 'SHUFFLE_REPEAT_ONE', 'REPEAT_ONE']); } @@ -275,7 +275,7 @@ public static function getImageContent(string $imageUrl) { return $imageContent; } - public static function updateSpeakers($speakers) { + public static function updateSpeakers(array $speakers) { foreach ($speakers as $uid => $data) { /** @var sonos3 */ $eqLogic = self::byLogicalId($uid, __CLASS__); @@ -329,7 +329,7 @@ public static function updateSpeakers($speakers) { } } - public static function convertState($_state) { + public static function convertState(string $_state): string { switch ($_state) { case 'PLAYING': return __('Lecture', __FILE__); @@ -1323,11 +1323,11 @@ public function execute($_options = array()) { $serverFactory = new ServerFactory(); $auth = new BasicAuth(config::byKey('tts_username', 'sonos3'), null, config::byKey('tts_password', 'sonos3')); $server = $serverFactory->createServer($host, $auth); - $share_name = sanitizeAccent(trim(config::byKey('tts_share', 'sonos3')), " \n\r\t\v\0/"); + $share_name = sanitizeAccent(trim(config::byKey('tts_share', 'sonos3'), " \n\r\t\v\0/")); $share = $server->getShare($share_name); // push file to samba - $path_name = sanitizeAccent(trim(config::byKey('tts_path', 'sonos3')), " \n\r\t\v\0/"); + $path_name = sanitizeAccent(trim(config::byKey('tts_path', 'sonos3'), " \n\r\t\v\0/")); $fh = $share->write("{$path_name}/{$file_name}"); fwrite($fh, $file_content); fclose($fh); diff --git a/desktop/php/sonos3.php b/desktop/php/sonos3.php index 549282e..8ecefa8 100644 --- a/desktop/php/sonos3.php +++ b/desktop/php/sonos3.php @@ -160,7 +160,7 @@
- +
From 67b251db7dd8ef9f443ab3126169219a001baee3 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Sun, 17 May 2026 09:28:36 +0200 Subject: [PATCH 13/28] changelog --- docs/fr_FR/changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/fr_FR/changelog.md b/docs/fr_FR/changelog.md index fa09030..5661166 100644 --- a/docs/fr_FR/changelog.md +++ b/docs/fr_FR/changelog.md @@ -4,6 +4,10 @@ > >Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte +# 18-05-2026 + +- Correction d'un bug mineur sur la commande **Dire** + # 11-04-2026 - Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible) From 1d89fbfeb0cfde3436c473f155930c5f60c2784e Mon Sep 17 00:00:00 2001 From: Mips2648 <41119856+Mips2648@users.noreply.github.com> Date: Sun, 17 May 2026 07:30:02 +0000 Subject: [PATCH 14/28] Auto update translation done by jeedom/jeetranslate workflow --- core/i18n/de_DE.json | 254 +++++++++++++++++++++-------------------- core/i18n/en_US.json | 240 +++++++++++++++++++++------------------ core/i18n/es_ES.json | 255 ++++++++++++++++++++++-------------------- core/i18n/it_IT.json | 169 ++++++++++++++++++++++------ core/i18n/pt_PT.json | 255 ++++++++++++++++++++++-------------------- plugin_info/info.json | 79 ++++++------- 6 files changed, 700 insertions(+), 552 deletions(-) diff --git a/core/i18n/de_DE.json b/core/i18n/de_DE.json index a4372ad..061dae0 100644 --- a/core/i18n/de_DE.json +++ b/core/i18n/de_DE.json @@ -1,145 +1,153 @@ { - "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Seien Sie vorsichtig, Ihre Version von PHP ('. PHP_VERSION.') Ist zu alt, Sie benötigen mindestens PHP 7.0", - "Le plugin sonos doit réagir aux interactions": "Das Sonos-Plugin muss auf Interaktionen reagieren", - "Partage": "Teilen", - "Hôte": "Gastgeber", - "Nom d'utilisateur du partage": "Teilen Sie den Benutzernamen", - "Mot de passe du partage": "Passwort teilen" - }, - "plugins\/sonos3\/desktop\/php\/panel.php": { - "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette
page<\/a>": "Kein Stammobjekt gefunden. Um eine zu erstellen, gehen Sie zu Allgemein -> Objekt. Wenn Sie nicht wissen, was Sie tun sollen, oder wenn Sie Jeedom zum ersten Mal verwenden, zögern Sie nicht, diese Seite<\/a> zu konsultieren", - "Rechercher": "Suchen nach" - }, - "plugins\/sonos3\/desktop\/php\/sonos3.php": { - "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", - "Gestion": "Verwaltung", - "Synchroniser": "Synchronisieren", - "Configuration": "Konfiguration", - "Mes Sonos": "Mein Sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Keine Sonos-Geräte gefunden. Haben Sie den Daemon gestartet?", - "Rechercher": "Suchen nach", - "Equipement visible": "Sichtbare Ausrüstung", - "Equipement non visible": "Ausrüstung nicht sichtbar", - "Configuration avancée": "Erweiterte Konfiguration", - "Sauvegarder": "Speichern", - "Supprimer": "Löschen", - "Equipement": "Gerät", - "Commandes": "Befehle", - "Paramètres généraux": "Allgemeine Einstellungen", - "Nom du Sonos": "Sonos Name", - "Nom de l'équipement Sonos": "Name des Sonos-Geräts", - "Objet parent": "Übergeordnetes Objekt", - "Aucun": "Ohne", - "Catégorie": "Kategorie", - "Options": "Optionen", - "Activer": "Aktivieren", - "Visible": "Sichtbar", - "Informations": "Information", - "Modèle": "Modell", - "Version": "Ausführung", - "Version matériel": "Hardware Version", - "Numéro de série": "Seriennummer", - "Adresse MAC": "MAC-Adresse", - "Adresse IP": "IP Adresse", - "Nom": "Name", - "Type": "Nett", - "Etat": "Bundesland", - "Actions": "Anteile" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { - "Nom": "Name", - "Choisir une icône": "Wählen Sie ein Symbol aus", - "Tester": "Test", - "Synchronisation réussie.": "Synchronisierung erfolgreich" - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 – Unbefugter Zugriff" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "Sie sind nicht berechtigt, diese Aktion durchzuführen" - }, "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", "Aucune méthode correspondante à": "Keine Matching-Methode" }, "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Bitte überprüfen Sie die Konfiguration", - "Impossible de lancer le démon": "Daemon kann nicht gestartet werden", - "Ok j\\'ai lancé": "Ok, ich habe gestartet", - "Sonos controllers synchronized: ": "Sonos-Controller synchronisiert:", - "Lecture": "Lesen", - "Arrêté": "Verhaftet", - "Favorites updated: ": "Favoriten aktualisiert:", - "Playlists updated: ": "Aktualisierte Playlists:", - "Radios updated: ": "Radios aktualisiert:", - "Statut de lecture": "Lesestatus", - "Mode de lecture": "Lesemodus", - "Choisir mode de lecture": "Wählen Sie den Lesemodus", - "Statut": "Status", - "Play": "Spielen", - "Stop": "STOP", - "Suivant": "Folgende", - "Précédent": "Früher", - "Groupe statut": "Gruppenstatus", - "Nom du groupe": "Name der Gruppe", - "Muet statut": "Stummschaltungsstatus", - "Muet": "Stumm", - "Non muet": "Nicht stumm", - "Répéter": "Wiederholung", - "Répéter statut": "Status wiederholen", + "Aigus": "Verdreifachen", + "Aigus statut": "Dreifacher Status", + "Album": "Album", "Aléatoire": "Zufällig", "Aléatoire statut": "Zufälliger Status", - "Volume statut": "Statusvolumen", - "Volume": "Lautstärke", + "Arrêté": "Verhaftet", + "Artiste": "Künstler", + "Aucun": "Ohne", "Augmenter le volume": "Drehe die Lautstärke hoch", - "Diminuer le volume": "Verringern Sie die Lautstärke", - "Transition de volume": "Lautstärkeübergang", - "Type de transition": "Übergangstyp", - "Balance statut": "Kontostand", "Balance": "Gleichgewicht", - "Graves statut": "Ernsthafter Status", + "Balance statut": "Kontostand", + "Batterie": "Schlagzeug", + "Chargement": "Laden", + "Choisir mode de lecture": "Wählen Sie den Lesemodus", + "Commandes tactiles off": "Touch-Steuerung ausgeschaltet", + "Commandes tactiles on": "Touch-Bedienelemente ein", + "Commandes tactiles statut": "Status-Touch-Steuerelemente", + "Diminuer le volume": "Verringern Sie die Lautstärke", + "Dire": "Zu sagen", + "Disponible": "Verfügbar", + "Entrée audio analogique": "Analoger Audioeingang", + "Favorites updated: ": "Favoriten aktualisiert:", + "Fondu enchaîné off": "Ausblenden", + "Fondu enchaîné on": "Einblenden", + "Fondu enchaîné statut": "Fade-Status", "Graves": "Gräber", - "Aigus statut": "Dreifacher Status", - "Aigus": "Verdreifachen", - "Piste": "Verfolgen", - "Artiste": "Künstler", + "Graves statut": "Ernsthafter Status", + "Groupe statut": "Gruppenstatus", "Image": "Bild", - "Jouer playlist": "Playlist abspielen", - "Titre de la playlist": "Titel der Wiedergabeliste", + "Impossible de lancer le démon": "Daemon kann nicht gestartet werden", "Jouer favoris": "Favoriten spielen", - "Titre du favoris": "Lieblingstitel", + "Jouer playlist": "Playlist abspielen", "Jouer une radio": "Spielen Sie ein Radio", - "Titre de la radio": "Radiotitel", "Jouer une radio mp3": "Spielen Sie MP3-Radio", - "URL de la radio": "Radio-URL", - "Rejoindre un groupe": "Einer Gruppe beitreten", - "Nom de la pièce": "Raumname", - "Quitter le groupe": "Die Gruppe verlassen", - "Mode fête": "Partymode", - "Entrée audio analogique": "Analoger Audioeingang", - "TV": "Fernseher", - "Dire": "Zu sagen", - "Message": "Nachricht", - "Prochaine alarme": "Nächster Alarm", + "Lecture": "Lesen", "Led statut": "Status-LED", - "Fondu enchaîné statut": "Fade-Status", - "Fondu enchaîné on": "Einblenden", - "Fondu enchaîné off": "Ausblenden", - "Loudness statut": "Lautstärkestatus", - "Loudness on": "Lautstärke an", "Loudness off": "Lautstärke aus", - "Commandes tactiles statut": "Status-Touch-Steuerelemente", - "Commandes tactiles on": "Touch-Bedienelemente ein", - "Commandes tactiles off": "Touch-Steuerung ausgeschaltet", + "Loudness on": "Lautstärke an", + "Loudness statut": "Lautstärkestatus", + "Message": "Nachricht", "Mic statut": "Mikrofonstatus", + "Mode de lecture": "Lesemodus", + "Mode fête": "Partymode", + "Muet": "Stumm", + "Muet statut": "Stummschaltungsstatus", + "Nom de la pièce": "Raumname", + "Nom du groupe": "Name der Gruppe", + "Non muet": "Nicht stumm", + "Ok j\\'ai lancé": "Ok, ich habe gestartet", + "Pause": "Unterbrechung", + "Piste": "Verfolgen", + "Play": "Spielen", + "Playlists updated: ": "Aktualisierte Playlists:", + "Prochaine alarme": "Nächster Alarm", + "Précédent": "Früher", + "Quitter le groupe": "Die Gruppe verlassen", + "Radios updated: ": "Radios aktualisiert:", "Rechargeable": "Wiederaufladbar", - "Chargement": "Laden", - "Aucun": "Ohne" + "Rejoindre un groupe": "Einer Gruppe beitreten", + "Répéter": "Wiederholung", + "Répéter statut": "Status wiederholen", + "Station": "Station", + "Statut": "Status", + "Statut de lecture": "Lesestatus", + "Stop": "STOP", + "Suivant": "Folgende", + "TV": "Fernseher", + "Titre de la playlist": "Titel der Wiedergabeliste", + "Titre de la radio": "Radiotitel", + "Titre du favoris": "Lieblingstitel", + "Transition de volume": "Lautstärkeübergang", + "Type de transition": "Übergangstyp", + "URL de la radio": "Radio-URL", + "Veuillez vérifier la configuration": "Bitte überprüfen Sie die Konfiguration", + "Volume": "Lautstärke", + "Volume statut": "Statusvolumen" + }, + "plugins\/sonos3\/core\/php\/jeesonos3.php": { + "Vous n\\'etes pas autorisé à effectuer cette action": "Sie sind nicht berechtigt, diese Aktion durchzuführen" + }, + "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { + "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff" + }, + "plugins\/sonos3\/desktop\/js\/sonos3.js": { + "Afficher": "Anzeige", + "Choisir une icône": "Wählen Sie ein Symbol aus", + "Historiser": "Chronik", + "Nom": "Name", + "Synchronisation réussie.": "Synchronisierung erfolgreich", + "Tester": "Test" + }, + "plugins\/sonos3\/desktop\/php\/panel.php": { + "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", + "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Kein Stammobjekt gefunden. Um eine zu erstellen, gehen Sie zu Allgemein -> Objekt. Wenn Sie nicht wissen, was Sie tun sollen, oder wenn Sie Jeedom zum ersten Mal verwenden, zögern Sie nicht, diese Seite<\/a> zu konsultieren", + "Rechercher": "Suchen nach" }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Symfonisk Sonos\/Ikea-Steuerungs-Plugin. WARNUNG: PHP 7.4 oder höher erforderlich" + "plugins\/sonos3\/desktop\/php\/sonos3.php": { + "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", + "Actions": "Anteile", + "Activer": "Aktivieren", + "Adresse IP": "IP Adresse", + "Adresse MAC": "MAC-Adresse", + "Aucun": "Ohne", + "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Keine Sonos-Geräte gefunden. Haben Sie den Daemon gestartet?", + "Catégorie": "Kategorie", + "Commandes": "Befehle", + "Configuration": "Konfiguration", + "Configuration avancée": "Erweiterte Konfiguration", + "Equipement": "Gerät", + "Equipement non visible": "Ausrüstung nicht sichtbar", + "Equipement visible": "Sichtbare Ausrüstung", + "Etat": "Bundesland", + "Gestion": "Verwaltung", + "Informations": "Information", + "Mes Sonos": "Mein Sonos", + "Modèle": "Modell", + "Nom": "Name", + "Nom de l'équipement Sonos": "Name des Sonos-Geräts", + "Nom du Sonos": "Sonos Name", + "Numéro de série": "Seriennummer", + "Objet parent": "Übergeordnetes Objekt", + "Options": "Optionen", + "Paramètres généraux": "Allgemeine Einstellungen", + "Paramètres spécifiques": "Spezifische Einstellungen", + "Rechercher": "Suchen nach", + "Sauvegarder": "Speichern", + "Supprimer": "Löschen", + "Synchroniser": "Synchronisieren", + "Type": "Nett", + "Utiliser la tuile préconfigurée": "Vorkonfigurierte Kachel verwenden", + "Version": "Ausführung", + "Version matériel": "Hardware Version", + "Visible": "Sichtbar" + }, + "plugins\/sonos3\/plugin_info\/configuration.php": { + "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", + "Découverte": "Entdeckung", + "Hôte": "Gastgeber", + "Interactions": "Interaktion", + "Le plugin sonos doit réagir aux interactions": "Das Sonos-Plugin muss auf Interaktionen reagieren", + "Mot de passe du partage": "Passwort teilen", + "Nom d'utilisateur du partage": "Teilen Sie den Benutzernamen", + "Partage": "Teilen", + "Réseau à scanner": "Netzwerk scannen", + "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Nur wenn sich Jeedom nicht im selben Netzwerk wie Ihre Sonos-Lautsprecher befindet" } } \ No newline at end of file diff --git a/core/i18n/en_US.json b/core/i18n/en_US.json index e25f6a8..9c1b11a 100644 --- a/core/i18n/en_US.json +++ b/core/i18n/en_US.json @@ -1,129 +1,153 @@ { - "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401 - Unauthorized access", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Be careful, your version of PHP ('. PHP_VERSION.') Is too old, you need at least PHP 7.0", - "Le plugin sonos doit réagir aux interactions": "The sonos plugin must react to interactions", - "Hôte": "Host" - }, - "plugins\/sonos3\/desktop\/php\/panel.php": { - "401 - Accès non autorisé": "401 - Unauthorized access", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "No root object found. To create one, go to General -> Object. If you do not know what to do or it is the first time you use Jeedom do not hesitate to consult this page <\/a>", - "Rechercher": "Search" - }, - "plugins\/sonos3\/desktop\/php\/sonos3.php": { - "401 - Accès non autorisé": "401 - Unauthorized access", - "Gestion": "Management", - "Synchroniser": "Synchronize", - "Configuration": "Setup", - "Mes Sonos": "My Sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "No Sonos equipment found, have you started the daemon?", - "Rechercher": "Search", - "Equipement visible": "Visible equipment", - "Equipement non visible": "Equipment not visible", - "Configuration avancée": "Advanced configuration", - "Sauvegarder": "Save", - "Supprimer": "Delete", - "Equipement": "Device", - "Commandes": "Commands", - "Paramètres généraux": "General settings", - "Nom du Sonos": "Sonos name", - "Nom de l'équipement Sonos": "Sonos device name", - "Objet parent": "Parent object", - "Aucun": "None", - "Catégorie": "Category", - "Activer": "Activate", - "Informations": "Information", - "Modèle": "Model", - "Version matériel": "Hardware version", - "Numéro de série": "Serial number", - "Adresse MAC": "MAC address", - "Adresse IP": "IP adress", - "Nom": "Name", - "Type": "Kind", - "Etat": "State", - "Actions": "Shares" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { - "Nom": "Name", - "Choisir une icône": "Choose an icon", - "Tester": "Test", - "Synchronisation réussie.": "Synchronization successful" - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 - Unauthorized Access" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "You are not authorized to perform this action" - }, "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { "401 - Accès non autorisé": "401 - Unauthorized access", "Aucune méthode correspondante à": "No matching method" }, "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Please check the configuration", - "Impossible de lancer le démon": "Unable to launch daemon", - "Lecture": "Play", - "Arrêté": "Stopped", - "Favorites updated: ": "Favorites updated:", - "Playlists updated: ": "Playlists updated:", - "Radios updated: ": "Radios updated:", - "Statut de lecture": "Reading status", - "Mode de lecture": "Reading mode", - "Choisir mode de lecture": "Choose reading mode", - "Statut": "Status", - "Stop": "STOP", - "Suivant": "Next", - "Précédent": "Previous", - "Groupe statut": "Group status", - "Nom du groupe": "Name of the group", - "Muet statut": "Mute status", - "Muet": "Mute", - "Non muet": "Not mute", - "Répéter": "Repeat", - "Répéter statut": "Repeat status", + "Aigus": "Highs", + "Aigus statut": "Acute status", + "Album": "Album", "Aléatoire": "Random", "Aléatoire statut": "Random status", - "Volume statut": "Status volume", + "Arrêté": "Stopped", + "Artiste": "Artist", + "Aucun": "None", "Augmenter le volume": "Turn up the volume", - "Diminuer le volume": "Decrease the volume", - "Transition de volume": "Volume transition", - "Type de transition": "Transition type", + "Balance": "Scale", "Balance statut": "Balance status", + "Batterie": "Battery", + "Chargement": "Loading", + "Choisir mode de lecture": "Choose reading mode", + "Commandes tactiles off": "Touch controls off", + "Commandes tactiles on": "Touch controls on", + "Commandes tactiles statut": "Touch controls status", + "Diminuer le volume": "Decrease the volume", + "Dire": "Say", + "Disponible": "Available", + "Entrée audio analogique": "Analog audio input", + "Favorites updated: ": "Favorites updated:", + "Fondu enchaîné off": "Fade off", + "Fondu enchaîné on": "Crossfade on", + "Fondu enchaîné statut": "Crossfade status", + "Graves": "Subwoofers", "Graves statut": "Serious status", - "Aigus statut": "Acute status", - "Aigus": "Highs", - "Piste": "Track", - "Artiste": "Artist", + "Groupe statut": "Group status", "Image": "Picture", - "Jouer playlist": "Play Playlist", - "Titre de la playlist": "Playlist title", + "Impossible de lancer le démon": "Unable to launch daemon", "Jouer favoris": "Play Favorites", - "Titre du favoris": "Favorite title", + "Jouer playlist": "Play Playlist", "Jouer une radio": "Play a radio", - "Titre de la radio": "Radio title", "Jouer une radio mp3": "Play mp3 radio", - "URL de la radio": "Radio URL", - "Rejoindre un groupe": "Join a group", - "Nom de la pièce": "Name of the scene", - "Quitter le groupe": "Leave the group", - "Mode fête": "Party mode", - "Entrée audio analogique": "Analog audio input", - "Dire": "Say", - "Prochaine alarme": "Next alarm", + "Lecture": "Play", "Led statut": "Status LED", - "Fondu enchaîné statut": "Crossfade status", - "Fondu enchaîné on": "Crossfade on", - "Fondu enchaîné off": "Fade off", + "Loudness off": "Loudness off", + "Loudness on": "Loudness on", "Loudness statut": "Loudness status", - "Commandes tactiles statut": "Touch controls status", - "Commandes tactiles on": "Touch controls on", - "Commandes tactiles off": "Touch controls off", + "Message": "Message", "Mic statut": "Mic status", - "Batterie": "Battery", - "Chargement": "Loading", - "Aucun": "None" + "Mode de lecture": "Reading mode", + "Mode fête": "Party mode", + "Muet": "Mute", + "Muet statut": "Mute status", + "Nom de la pièce": "Name of the scene", + "Nom du groupe": "Name of the group", + "Non muet": "Not mute", + "Ok j\\'ai lancé": "Okay, I've started", + "Pause": "Break", + "Piste": "Track", + "Play": "Play", + "Playlists updated: ": "Playlists updated:", + "Prochaine alarme": "Next alarm", + "Précédent": "Previous", + "Quitter le groupe": "Leave the group", + "Radios updated: ": "Radios updated:", + "Rechargeable": "Rechargeable", + "Rejoindre un groupe": "Join a group", + "Répéter": "Repeat", + "Répéter statut": "Repeat status", + "Station": "Station", + "Statut": "Status", + "Statut de lecture": "Reading status", + "Stop": "STOP", + "Suivant": "Next", + "TV": "TV", + "Titre de la playlist": "Playlist title", + "Titre de la radio": "Radio title", + "Titre du favoris": "Favorite title", + "Transition de volume": "Volume transition", + "Type de transition": "Transition type", + "URL de la radio": "Radio URL", + "Veuillez vérifier la configuration": "Please check the configuration", + "Volume": "Volume", + "Volume statut": "Status volume" }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Symfonisk Sonos\/Ikea control plugin. WARNING: PHP 7.4 or later is required" + "plugins\/sonos3\/core\/php\/jeesonos3.php": { + "Vous n\\'etes pas autorisé à effectuer cette action": "You are not authorized to perform this action" + }, + "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { + "401 - Accès non autorisé": "401 - Unauthorized access" + }, + "plugins\/sonos3\/desktop\/js\/sonos3.js": { + "Afficher": "Show", + "Choisir une icône": "Choose an icon", + "Historiser": "Historize", + "Nom": "Name", + "Synchronisation réussie.": "Synchronization successful", + "Tester": "Test" + }, + "plugins\/sonos3\/desktop\/php\/panel.php": { + "401 - Accès non autorisé": "401 - Unauthorized access", + "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "No root object found. To create one, go to General -> Object. If you do not know what to do or it is the first time you use Jeedom do not hesitate to consult this page <\/a>", + "Rechercher": "Search" + }, + "plugins\/sonos3\/desktop\/php\/sonos3.php": { + "401 - Accès non autorisé": "401 - Unauthorized access", + "Actions": "Shares", + "Activer": "Activate", + "Adresse IP": "IP adress", + "Adresse MAC": "MAC address", + "Aucun": "None", + "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "No Sonos equipment found, have you started the daemon?", + "Catégorie": "Category", + "Commandes": "Commands", + "Configuration": "Setup", + "Configuration avancée": "Advanced configuration", + "Equipement": "Device", + "Equipement non visible": "Equipment not visible", + "Equipement visible": "Visible equipment", + "Etat": "State", + "Gestion": "Management", + "Informations": "Information", + "Mes Sonos": "My Sonos", + "Modèle": "Model", + "Nom": "Name", + "Nom de l'équipement Sonos": "Sonos device name", + "Nom du Sonos": "Sonos name", + "Numéro de série": "Serial number", + "Objet parent": "Parent object", + "Options": "Options", + "Paramètres généraux": "General settings", + "Paramètres spécifiques": "Specific settings", + "Rechercher": "Search", + "Sauvegarder": "Save", + "Supprimer": "Delete", + "Synchroniser": "Synchronize", + "Type": "Kind", + "Utiliser la tuile préconfigurée": "Use the preconfigured tile", + "Version": "Version", + "Version matériel": "Hardware version", + "Visible": "Visible" + }, + "plugins\/sonos3\/plugin_info\/configuration.php": { + "401 - Accès non autorisé": "401 - Unauthorized access", + "Découverte": "Explore", + "Hôte": "Host", + "Interactions": "Interactions", + "Le plugin sonos doit réagir aux interactions": "The sonos plugin must react to interactions", + "Mot de passe du partage": "Share password", + "Nom d'utilisateur du partage": "Share username", + "Partage": "Share", + "Réseau à scanner": "Network to scan", + "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "If and only if Jeedom is not on the same network as your Sonos speakers" } } \ No newline at end of file diff --git a/core/i18n/es_ES.json b/core/i18n/es_ES.json index 1e089e2..4db6fe1 100644 --- a/core/i18n/es_ES.json +++ b/core/i18n/es_ES.json @@ -1,146 +1,153 @@ { - "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401 - Acceso no autorizado", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Tenga cuidado, su versión de PHP ('. PHP_VERSION.') Es demasiado antigua, necesita al menos PHP 7.0", - "Le plugin sonos doit réagir aux interactions": "El complemento de sonos debe reaccionar a las interacciones", - "Partage": "Compartir", - "Hôte": "Anfitrión", - "Nom d'utilisateur du partage": "Compartir nombre de usuario", - "Mot de passe du partage": "Compartir contraseña" - }, - "plugins\/sonos3\/desktop\/php\/panel.php": { - "401 - Accès non autorisé": "401 - Acceso no autorizado", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "No se ha encontrado ningún objeto raíz. Para crear uno, vaya a General -> Objeto. Si no sabe qué hacer o es la primera vez que usa Jeedom, no dude en consultar esta página<\/a>", - "Rechercher": "Buscar" - }, - "plugins\/sonos3\/desktop\/php\/sonos3.php": { - "401 - Accès non autorisé": "401 - Acceso no autorizado", - "Gestion": "Gestión", - "Synchroniser": "Sincronizar", - "Configuration": "Configuración", - "Mes Sonos": "Mi sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "No se encontró ningún equipo Sonos. ¿Has iniciado el demonio?", - "Rechercher": "Buscar", - "Equipement visible": "Equipos visibles", - "Equipement non visible": "Equipo no visible", - "Configuration avancée": "Configuración avanzada", - "Sauvegarder": "Guardar", - "Supprimer": "Borrar", - "Equipement": "Dispositivos", - "Commandes": "Comandos", - "Paramètres généraux": "Configuración general", - "Nom du Sonos": "Nombre de Sonos", - "Nom de l'équipement Sonos": "Nombre del dispositivo Sonos", - "Objet parent": "Objeto padre", - "Aucun": "Ninguna", - "Catégorie": "Categoría", - "Options": "Opciones", - "Activer": "Activar", - "Informations": "Información", - "Modèle": "Modelo", - "Version": "Versión", - "Version matériel": "Versión del hardware", - "Numéro de série": "Número de serie", - "Adresse MAC": "Dirección MAC", - "Adresse IP": "Dirección IP", - "Nom": "Nombre", - "Type": "Tipo", - "Etat": "Estado", - "Actions": "Comparte" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { - "Nom": "Nombre", - "Choisir une icône": "Elige un icono", - "Tester": "Probar", - "Synchronisation réussie.": "Sincronización exitosa" - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 - Acceso no autorizado" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "No estás autorizado a realizar esta acción" - }, "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { "401 - Accès non autorisé": "401 - Acceso no autorizado", "Aucune méthode correspondante à": "Sin método de coincidencia" }, "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Por favor verifique la configuración", - "Impossible de lancer le démon": "No se puede iniciar el demonio", - "Ok j\\'ai lancé": "Ok, lancé", - "Sonos controllers synchronized: ": "Controladores Sonos sincronizados:", - "Lecture": "Lectura", - "Pause": "Pausa", - "Arrêté": "Detenido", - "Favorites updated: ": "Favoritos actualizados:", - "Playlists updated: ": "Listas de reproducción actualizadas:", - "Radios updated: ": "Radios actualizadas:", - "Statut de lecture": "Estado de lectura", - "Mode de lecture": "Modo de lectura", - "Choisir mode de lecture": "Elige el modo de lectura", - "Statut": "Estado", - "Play": "Jugar", - "Stop": "Detener", - "Suivant": "Próximo", - "Précédent": "Anterior", - "Groupe statut": "Estado del grupo", - "Nom du groupe": "Nombre del grupo", - "Muet statut": "Estado de silencio", - "Muet": "Mudo", - "Non muet": "No mudo", - "Répéter": "Repetición", - "Répéter statut": "Repita el estado", + "Aigus": "Triplicar", + "Aigus statut": "Estado de agudos", + "Album": "Álbum", "Aléatoire": "Al azar", "Aléatoire statut": "Estado aleatorio", - "Volume statut": "Volumen de estado", - "Volume": "Volumen", + "Arrêté": "Detenido", + "Artiste": "Artista", + "Aucun": "Ninguna", "Augmenter le volume": "Sube el volumen", - "Diminuer le volume": "Disminuir el volumen", - "Transition de volume": "Transición de volumen", - "Type de transition": "Tipo de transición", + "Balance": "Balanza", "Balance statut": "Estado del saldo", - "Graves statut": "Estado serio", + "Batterie": "Batería", + "Chargement": "Cargando", + "Choisir mode de lecture": "Elige el modo de lectura", + "Commandes tactiles off": "Controles táctiles desactivados", + "Commandes tactiles on": "Controles táctiles activados", + "Commandes tactiles statut": "Controles táctiles de estado", + "Diminuer le volume": "Disminuir el volumen", + "Dire": "Decir", + "Disponible": "Disponible", + "Entrée audio analogique": "Entrada de audio analógico", + "Favorites updated: ": "Favoritos actualizados:", + "Fondu enchaîné off": "Desaparecer", + "Fondu enchaîné on": "Desvanecerse", + "Fondu enchaîné statut": "Estado de desvanecimiento", "Graves": "Tumbas", - "Aigus statut": "Estado de agudos", - "Aigus": "Triplicar", - "Piste": "Seguir", - "Artiste": "Artista", - "Album": "Álbum", + "Graves statut": "Estado serio", + "Groupe statut": "Estado del grupo", "Image": "Imagen", - "Jouer playlist": "Reproducir lista de reproducción", - "Titre de la playlist": "Título de lista de reproducción", + "Impossible de lancer le démon": "No se puede iniciar el demonio", "Jouer favoris": "Jugar favoritos", - "Titre du favoris": "Título favorito", + "Jouer playlist": "Reproducir lista de reproducción", "Jouer une radio": "Tocar una radio", - "Titre de la radio": "Título de radio", "Jouer une radio mp3": "Reproducir radio mp3", - "URL de la radio": "URL de radio", - "Rejoindre un groupe": "Únete a un grupo", - "Nom de la pièce": "Nombre de la sala", - "Quitter le groupe": "Abandonar el grupo", - "Mode fête": "Moda de fiesta", - "Entrée audio analogique": "Entrada de audio analógico", - "TV": "TELEVISOR", - "Dire": "Decir", - "Message": "Mensaje", - "Prochaine alarme": "Próxima alarma", + "Lecture": "Lectura", "Led statut": "LED de estado", - "Fondu enchaîné statut": "Estado de desvanecimiento", - "Fondu enchaîné on": "Desvanecerse", - "Fondu enchaîné off": "Desaparecer", - "Loudness statut": "Estado de sonoridad", - "Loudness on": "Volumen activado", "Loudness off": "Volumen apagado", - "Commandes tactiles statut": "Controles táctiles de estado", - "Commandes tactiles on": "Controles táctiles activados", - "Commandes tactiles off": "Controles táctiles desactivados", + "Loudness on": "Volumen activado", + "Loudness statut": "Estado de sonoridad", + "Message": "Mensaje", "Mic statut": "Estado del micrófono", - "Batterie": "Batería", + "Mode de lecture": "Modo de lectura", + "Mode fête": "Moda de fiesta", + "Muet": "Mudo", + "Muet statut": "Estado de silencio", + "Nom de la pièce": "Nombre de la sala", + "Nom du groupe": "Nombre del grupo", + "Non muet": "No mudo", + "Ok j\\'ai lancé": "Ok, lancé", + "Pause": "Pausa", + "Piste": "Seguir", + "Play": "Jugar", + "Playlists updated: ": "Listas de reproducción actualizadas:", + "Prochaine alarme": "Próxima alarma", + "Précédent": "Anterior", + "Quitter le groupe": "Abandonar el grupo", + "Radios updated: ": "Radios actualizadas:", "Rechargeable": "Recargable", - "Chargement": "Cargando", - "Aucun": "Ninguna" + "Rejoindre un groupe": "Únete a un grupo", + "Répéter": "Repetición", + "Répéter statut": "Repita el estado", + "Station": "Estación", + "Statut": "Estado", + "Statut de lecture": "Estado de lectura", + "Stop": "Detener", + "Suivant": "Próximo", + "TV": "TELEVISOR", + "Titre de la playlist": "Título de lista de reproducción", + "Titre de la radio": "Título de radio", + "Titre du favoris": "Título favorito", + "Transition de volume": "Transición de volumen", + "Type de transition": "Tipo de transición", + "URL de la radio": "URL de radio", + "Veuillez vérifier la configuration": "Por favor verifique la configuración", + "Volume": "Volumen", + "Volume statut": "Volumen de estado" + }, + "plugins\/sonos3\/core\/php\/jeesonos3.php": { + "Vous n\\'etes pas autorisé à effectuer cette action": "No estás autorizado a realizar esta acción" + }, + "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { + "401 - Accès non autorisé": "401 - Acceso no autorizado" }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de control Symfonisk para Sonos\/Ikea. ADVERTENCIA: Requiere PHP 7.4 o posterior" + "plugins\/sonos3\/desktop\/js\/sonos3.js": { + "Afficher": "Mostrar", + "Choisir une icône": "Elige un icono", + "Historiser": "Guardar historial", + "Nom": "Nombre", + "Synchronisation réussie.": "Sincronización exitosa", + "Tester": "Probar" + }, + "plugins\/sonos3\/desktop\/php\/panel.php": { + "401 - Accès non autorisé": "401 - Acceso no autorizado", + "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "No se ha encontrado ningún objeto raíz. Para crear uno, vaya a General -> Objeto. Si no sabe qué hacer o es la primera vez que usa Jeedom, no dude en consultar esta página<\/a>", + "Rechercher": "Buscar" + }, + "plugins\/sonos3\/desktop\/php\/sonos3.php": { + "401 - Accès non autorisé": "401 - Acceso no autorizado", + "Actions": "Comparte", + "Activer": "Activar", + "Adresse IP": "Dirección IP", + "Adresse MAC": "Dirección MAC", + "Aucun": "Ninguna", + "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "No se encontró ningún equipo Sonos. ¿Has iniciado el demonio?", + "Catégorie": "Categoría", + "Commandes": "Comandos", + "Configuration": "Configuración", + "Configuration avancée": "Configuración avanzada", + "Equipement": "Dispositivos", + "Equipement non visible": "Equipo no visible", + "Equipement visible": "Equipos visibles", + "Etat": "Estado", + "Gestion": "Gestión", + "Informations": "Información", + "Mes Sonos": "Mi sonos", + "Modèle": "Modelo", + "Nom": "Nombre", + "Nom de l'équipement Sonos": "Nombre del dispositivo Sonos", + "Nom du Sonos": "Nombre de Sonos", + "Numéro de série": "Número de serie", + "Objet parent": "Objeto padre", + "Options": "Opciones", + "Paramètres généraux": "Configuración general", + "Paramètres spécifiques": "Parámetros específicos", + "Rechercher": "Buscar", + "Sauvegarder": "Guardar", + "Supprimer": "Borrar", + "Synchroniser": "Sincronizar", + "Type": "Tipo", + "Utiliser la tuile préconfigurée": "Usar el mosaico preconfigurado", + "Version": "Versión", + "Version matériel": "Versión del hardware", + "Visible": "Visible" + }, + "plugins\/sonos3\/plugin_info\/configuration.php": { + "401 - Accès non autorisé": "401 - Acceso no autorizado", + "Découverte": "Descubrir", + "Hôte": "Anfitrión", + "Interactions": "Interacciones", + "Le plugin sonos doit réagir aux interactions": "El complemento de sonos debe reaccionar a las interacciones", + "Mot de passe du partage": "Compartir contraseña", + "Nom d'utilisateur du partage": "Compartir nombre de usuario", + "Partage": "Compartir", + "Réseau à scanner": "Red para escanear", + "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Solo si Jeedom no se encuentra en la misma red que tus altavoces Sonos" } } \ No newline at end of file diff --git a/core/i18n/it_IT.json b/core/i18n/it_IT.json index 9659aa2..5f468e7 100644 --- a/core/i18n/it_IT.json +++ b/core/i18n/it_IT.json @@ -1,52 +1,153 @@ { - "plugins\/sonos3\/plugin_info\/configuration.php": { + "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { + "401 - Accès non autorisé": "401 - Accesso non autorizzato", + "Aucune méthode correspondante à": "Nessun metodo corrispondente a" + }, + "plugins\/sonos3\/core\/class\/sonos3.class.php": { + "Aigus": "Alti", + "Aigus statut": "Stato degli alti", + "Album": "Album", + "Aléatoire": "A caso", + "Aléatoire statut": "Stato casuale", + "Arrêté": "Smettere", + "Artiste": "Artiste", + "Aucun": "Nessuno", + "Augmenter le volume": "Alza il volume", + "Balance": "Bilancia", + "Balance statut": "Bilancia di stato", + "Batterie": "Batterie", + "Chargement": "Caricamento in corso", + "Choisir mode de lecture": "Scegli la modalità di riproduzione", + "Commandes tactiles off": "Comandi touch disattivati", + "Commandes tactiles on": "Comandi touch on", + "Commandes tactiles statut": "Comandi touch status", + "Diminuer le volume": "Abbassa il volume", + "Dire": "Dire", + "Disponible": "Disponibile", + "Entrée audio analogique": "Ingresso audio analogico", + "Favorites updated: ": "Favorites updated:", + "Fondu enchaîné off": "Dissolvenza in uscita", + "Fondu enchaîné on": "Dissolvenza in apertura", + "Fondu enchaîné statut": "Dissolvenza incrociata stato", + "Graves": "Graves", + "Graves statut": "Stato grave", + "Groupe statut": "Gruppo stato", + "Image": "Immagine", + "Impossible de lancer le démon": "Impossibile avviare il demone", + "Jouer favoris": "Aggiungi ai preferiti", + "Jouer playlist": "Riproduci playlist", + "Jouer une radio": "Ascoltare la radio", + "Jouer une radio mp3": "Riprodurre una radio mp3", + "Lecture": "Lecture", + "Led statut": "LED di stato", + "Loudness off": "Volume disattivato", + "Loudness on": "Loudness attivato", + "Loudness statut": "Stato del volume", + "Message": "Messaggio", + "Mic statut": "Stato micro", + "Mode de lecture": "Modalità di lettura", + "Mode fête": "Modalità festa", + "Muet": "Muet", + "Muet statut": "Stato muto", + "Nom de la pièce": "Nome della stanza", + "Nom du groupe": "Nome del gruppo", + "Non muet": "Non muto", + "Ok j\\'ai lancé": "Ok, ho avviato", + "Pause": "Pausa", + "Piste": "Pista", + "Play": "Riproduci", + "Playlists updated: ": "Playlists updated:", + "Prochaine alarme": "Prossimo allarme", + "Précédent": "Precedente", + "Quitter le groupe": "Esci dal gruppo", + "Radios updated: ": "Radios updated:", + "Rechargeable": "Ricaricabile", + "Rejoindre un groupe": "Entra in un gruppo", + "Répéter": "Ripeti", + "Répéter statut": "Ripeti stato", + "Station": "Stazione", + "Statut": "Stato", + "Statut de lecture": "Stato di lettura", + "Stop": "Ferma", + "Suivant": "Suivant", + "TV": "TV", + "Titre de la playlist": "Titolo della playlist", + "Titre de la radio": "Titolo della radio", + "Titre du favoris": "Titolo dei preferiti", + "Transition de volume": "Transizione di volume", + "Type de transition": "Tipo di transizione", + "URL de la radio": "URL della radio", + "Veuillez vérifier la configuration": "Si prega di verificare la configurazione", + "Volume": "Volume", + "Volume statut": "Stato volume" + }, + "plugins\/sonos3\/core\/php\/jeesonos3.php": { + "Vous n\\'etes pas autorisé à effectuer cette action": "Non sei autorizzato a eseguire questa operazione" + }, + "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { "401 - Accès non autorisé": "401 - Accesso non autorizzato" }, + "plugins\/sonos3\/desktop\/js\/sonos3.js": { + "Afficher": "Mostra", + "Choisir une icône": "Seleziona un\\'icona", + "Historiser": "Storicizza", + "Nom": "Nome", + "Synchronisation réussie.": "Sincronizzazione riuscita.", + "Tester": "Prova" + }, "plugins\/sonos3\/desktop\/php\/panel.php": { "401 - Accès non autorisé": "401 - Accesso non autorizzato", + "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Nessun oggetto radice trovato. Per crearne uno, vai su Generale -> Oggetto. Se non sai cosa fare o è la prima volta che utilizzi Jeedom, non esitare a consultare questa pagina<\/a>", "Rechercher": "Ricercare" }, "plugins\/sonos3\/desktop\/php\/sonos3.php": { "401 - Accès non autorisé": "401 - Accesso non autorizzato", - "Gestion": "Gestione", + "Actions": "Stock", + "Activer": "Attivare", + "Adresse IP": "Indirizzo IP", + "Adresse MAC": "Indirizzo MAC", + "Aucun": "Nessuno", + "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Non sono stati trovati dispositivi Sonos. Hai avviato il demone?", + "Catégorie": "Categoria", + "Commandes": "Comandi", "Configuration": "Configurazione", - "Rechercher": "Ricercare", "Configuration avancée": "Configurazione avanzata", - "Sauvegarder": "Salva", - "Supprimer": "Rimuovere", "Equipement": "Dispositivo", - "Commandes": "Comandi", - "Nom du Sonos": "Nom du sonos", - "Objet parent": "Oggetto padre", - "Aucun": "Nessuno", - "Options": "Opzioni", - "Activer": "Attivare", - "Visible": "Visibile", + "Equipement non visible": "Apparecchiature non visibili", + "Equipement visible": "Apparecchiature a vista", + "Etat": "Stato", + "Gestion": "Gestione", "Informations": "Informazioni", + "Mes Sonos": "I miei Sonos", "Modèle": "Modello", - "Nom": "Nome" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { "Nom": "Nome", - "Tester": "Prova" - }, - "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { - "401 - Accès non autorisé": "401 - Accesso non autorizzato" - }, - "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Pause": "Pausa", - "Arrêté": "Smettere", - "Favorites updated: ": "Favorites updated:", - "Playlists updated: ": "Playlists updated:", - "Radios updated: ": "Radios updated:", - "Statut": "Stato", - "Stop": "Ferma", - "Précédent": "Precedente", - "Image": "Immagine", - "Message": "Messaggio", - "Aucun": "Nessuno" + "Nom de l'équipement Sonos": "Nome dell'apparecchio Sonos", + "Nom du Sonos": "Nom du sonos", + "Numéro de série": "Numero di serie", + "Objet parent": "Oggetto padre", + "Options": "Opzioni", + "Paramètres généraux": "Impostazioni generali", + "Paramètres spécifiques": "Parametri specifici", + "Rechercher": "Ricercare", + "Sauvegarder": "Salva", + "Supprimer": "Rimuovere", + "Synchroniser": "Sincronizzare", + "Type": "Tipo", + "Utiliser la tuile préconfigurée": "Utilizzare il riquadro preconfigurato", + "Version": "Versione", + "Version matériel": "Versione hardware", + "Visible": "Visibile" }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" + "plugins\/sonos3\/plugin_info\/configuration.php": { + "401 - Accès non autorisé": "401 - Accesso non autorizzato", + "Découverte": "Scopri", + "Hôte": "Nome Host", + "Interactions": "Interazioni", + "Le plugin sonos doit réagir aux interactions": "Il plugin Sonos deve reagire alle interazioni", + "Mot de passe du partage": "Password di condivisione", + "Nom d'utilisateur du partage": "Nome utente della condivisione", + "Partage": "Condivisione", + "Réseau à scanner": "Rete da scansionare", + "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Solo se Jeedom non si trova sulla stessa rete dei tuoi altoparlanti Sonos" } } \ No newline at end of file diff --git a/core/i18n/pt_PT.json b/core/i18n/pt_PT.json index 66207f9..e368ffe 100644 --- a/core/i18n/pt_PT.json +++ b/core/i18n/pt_PT.json @@ -1,146 +1,153 @@ { - "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401 - Acesso não autorizado", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Tome cuidado, sua versão do PHP ('. PHP_VERSION.') É muito antiga, você precisa de pelo menos PHP 7.0", - "Le plugin sonos doit réagir aux interactions": "O plugin sonos deve reagir às interações", - "Partage": "Partilha", - "Hôte": "Hospedar", - "Nom d'utilisateur du partage": "Nome de usuário de compartilhamento", - "Mot de passe du partage": "Compartilhando senha" - }, - "plugins\/sonos3\/desktop\/php\/panel.php": { - "401 - Accès non autorisé": "401 - Acesso não autorizado", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Nenhum objeto raiz encontrado. Para criar um, vá para Geral -> Objeto. Se você não sabe o que fazer ou é a primeira vez que utiliza o Jeedom, não hesite em consultar esta página<\/a>", - "Rechercher": "Pesquisa" - }, - "plugins\/sonos3\/desktop\/php\/sonos3.php": { - "401 - Accès non autorisé": "401 - Acesso não autorizado", - "Gestion": "Gestão", - "Synchroniser": "Sincronizar", - "Configuration": "Configuração", - "Mes Sonos": "My Sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Nenhum equipamento Sonos encontrado. Você iniciou o daemon?", - "Rechercher": "Pesquisa", - "Equipement visible": "Equipamento visível", - "Equipement non visible": "Equipamento não visível", - "Configuration avancée": "Configuração avançada", - "Sauvegarder": "Salvar", - "Supprimer": "Remover", - "Equipement": "Equipamento", - "Commandes": "Comandos", - "Paramètres généraux": "Configurações Gerais", - "Nom du Sonos": "Nome do Sonos", - "Nom de l'équipement Sonos": "Nome do dispositivo Sonos", - "Objet parent": "Objeto pai", - "Aucun": "Nemhum", - "Catégorie": "Categoria", - "Options": "Opções", - "Activer": "Ativar", - "Visible": "Visivél", - "Informations": "Informação", - "Modèle": "Modelo", - "Version": "Versão", - "Version matériel": "Versão de hardware", - "Numéro de série": "Número de série", - "Adresse MAC": "Endereço MAC", - "Adresse IP": "Endereço de IP", - "Nom": "Nome", - "Type": "Gentil", - "Etat": "Estado", - "Actions": "Ações" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { - "Nom": "Nome", - "Choisir une icône": "Escolha um ícone", - "Tester": "Teste", - "Synchronisation réussie.": "Sincronização bem-sucedida" - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 - Acesso não autorizado" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "Você não está autorizado a realizar esta ação" - }, "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { "401 - Accès non autorisé": "401 - Acesso não autorizado", "Aucune méthode correspondante à": "Nenhum método de correspondência" }, "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Por favor, verifique a configuração", - "Impossible de lancer le démon": "Não é possível iniciar o daemon", - "Ok j\\'ai lancé": "Ok eu lancei", - "Sonos controllers synchronized: ": "Controladores Sonos sincronizados:", - "Lecture": "Leitura", - "Pause": "Pausa", - "Arrêté": "Preso", - "Favorites updated: ": "Favoritos atualizados:", - "Playlists updated: ": "Listas de reprodução atualizadas:", - "Radios updated: ": "Rádios atualizadas:", - "Statut de lecture": "Status de leitura", - "Mode de lecture": "Modo de leitura", - "Choisir mode de lecture": "Escolha o modo de leitura", - "Statut": "Estado", - "Play": "Reproduzir", - "Stop": "Pare", - "Suivant": "Seguinte", - "Précédent": "Anterior", - "Groupe statut": "Status do grupo", - "Nom du groupe": "Nome do grupo", - "Muet statut": "Status de mudo", - "Muet": "Silenciar", - "Non muet": "Não muda", - "Répéter": "Repetir", - "Répéter statut": "Repita o status", + "Aigus": "Agudos", + "Aigus statut": "Status triplo", + "Album": "Álbum", "Aléatoire": "Aleatório", "Aléatoire statut": "Status aleatório", - "Volume statut": "Volume de status", + "Arrêté": "Preso", + "Artiste": "Artista", + "Aucun": "Nemhum", "Augmenter le volume": "Aumenta o volume", - "Diminuer le volume": "Diminuir o volume", - "Transition de volume": "Transição de volume", - "Type de transition": "Tipo de transição", - "Balance statut": "Status do saldo", "Balance": "Equilíbrio", - "Graves statut": "Situação séria", + "Balance statut": "Status do saldo", + "Batterie": "Bateria", + "Chargement": "Carregando", + "Choisir mode de lecture": "Escolha o modo de leitura", + "Commandes tactiles off": "Controles de toque desativados", + "Commandes tactiles on": "Controles de toque ativados", + "Commandes tactiles statut": "Controles de toque de status", + "Diminuer le volume": "Diminuir o volume", + "Dire": "Para dizer", + "Disponible": "Disponível", + "Entrée audio analogique": "Entrada de áudio analógico", + "Favorites updated: ": "Favoritos atualizados:", + "Fondu enchaîné off": "Desaparecer", + "Fondu enchaîné on": "Desaparecer", + "Fondu enchaîné statut": "Status de esmaecimento", "Graves": "Sepulturas", - "Aigus statut": "Status triplo", - "Aigus": "Agudos", - "Piste": "Track", - "Artiste": "Artista", + "Graves statut": "Situação séria", + "Groupe statut": "Status do grupo", "Image": "Imagem", - "Jouer playlist": "Reproduzir lista de reprodução", - "Titre de la playlist": "Título da lista de reprodução", + "Impossible de lancer le démon": "Não é possível iniciar o daemon", "Jouer favoris": "Reproduzir Favoritos", - "Titre du favoris": "Título favorito", + "Jouer playlist": "Reproduzir lista de reprodução", "Jouer une radio": "Tocar rádio", - "Titre de la radio": "Título do rádio", "Jouer une radio mp3": "Tocar rádio mp3", - "URL de la radio": "URL da rádio", - "Rejoindre un groupe": "Junte-se a um grupo", - "Nom de la pièce": "Nome do quarto", - "Quitter le groupe": "Sair do grupo", - "Mode fête": "Moda de festa", - "Entrée audio analogique": "Entrada de áudio analógico", - "TV": "Televisão", - "Dire": "Para dizer", - "Message": "Mensagem", - "Prochaine alarme": "Próximo alarme", + "Lecture": "Leitura", "Led statut": "LED de status", - "Fondu enchaîné statut": "Status de esmaecimento", - "Fondu enchaîné on": "Desaparecer", - "Fondu enchaîné off": "Desaparecer", - "Loudness statut": "Status de volume", - "Loudness on": "Volume ativado", "Loudness off": "Volume desligado", - "Commandes tactiles statut": "Controles de toque de status", - "Commandes tactiles on": "Controles de toque ativados", - "Commandes tactiles off": "Controles de toque desativados", + "Loudness on": "Volume ativado", + "Loudness statut": "Status de volume", + "Message": "Mensagem", "Mic statut": "Status do microfone", - "Batterie": "Bateria", + "Mode de lecture": "Modo de leitura", + "Mode fête": "Moda de festa", + "Muet": "Silenciar", + "Muet statut": "Status de mudo", + "Nom de la pièce": "Nome do quarto", + "Nom du groupe": "Nome do grupo", + "Non muet": "Não muda", + "Ok j\\'ai lancé": "Ok eu lancei", + "Pause": "Pausa", + "Piste": "Track", + "Play": "Reproduzir", + "Playlists updated: ": "Listas de reprodução atualizadas:", + "Prochaine alarme": "Próximo alarme", + "Précédent": "Anterior", + "Quitter le groupe": "Sair do grupo", + "Radios updated: ": "Rádios atualizadas:", "Rechargeable": "Recarregável", - "Chargement": "Carregando", - "Aucun": "Nemhum" + "Rejoindre un groupe": "Junte-se a um grupo", + "Répéter": "Repetir", + "Répéter statut": "Repita o status", + "Station": "Estação", + "Statut": "Estado", + "Statut de lecture": "Status de leitura", + "Stop": "Pare", + "Suivant": "Seguinte", + "TV": "Televisão", + "Titre de la playlist": "Título da lista de reprodução", + "Titre de la radio": "Título do rádio", + "Titre du favoris": "Título favorito", + "Transition de volume": "Transição de volume", + "Type de transition": "Tipo de transição", + "URL de la radio": "URL da rádio", + "Veuillez vérifier la configuration": "Por favor, verifique a configuração", + "Volume": "Volume", + "Volume statut": "Volume de status" + }, + "plugins\/sonos3\/core\/php\/jeesonos3.php": { + "Vous n\\'etes pas autorisé à effectuer cette action": "Você não está autorizado a realizar esta ação" + }, + "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { + "401 - Accès non autorisé": "401 - Acesso não autorizado" + }, + "plugins\/sonos3\/desktop\/js\/sonos3.js": { + "Afficher": "Mostrar", + "Choisir une icône": "Escolha um ícone", + "Historiser": "Histórico", + "Nom": "Nome", + "Synchronisation réussie.": "Sincronização bem-sucedida", + "Tester": "Teste" + }, + "plugins\/sonos3\/desktop\/php\/panel.php": { + "401 - Accès non autorisé": "401 - Acesso não autorizado", + "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Nenhum objeto raiz encontrado. Para criar um, vá para Geral -> Objeto. Se você não sabe o que fazer ou é a primeira vez que utiliza o Jeedom, não hesite em consultar esta página<\/a>", + "Rechercher": "Pesquisa" + }, + "plugins\/sonos3\/desktop\/php\/sonos3.php": { + "401 - Accès non autorisé": "401 - Acesso não autorizado", + "Actions": "Ações", + "Activer": "Ativar", + "Adresse IP": "Endereço de IP", + "Adresse MAC": "Endereço MAC", + "Aucun": "Nemhum", + "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Nenhum equipamento Sonos encontrado. Você iniciou o daemon?", + "Catégorie": "Categoria", + "Commandes": "Comandos", + "Configuration": "Configuração", + "Configuration avancée": "Configuração avançada", + "Equipement": "Equipamento", + "Equipement non visible": "Equipamento não visível", + "Equipement visible": "Equipamento visível", + "Etat": "Estado", + "Gestion": "Gestão", + "Informations": "Informação", + "Mes Sonos": "My Sonos", + "Modèle": "Modelo", + "Nom": "Nome", + "Nom de l'équipement Sonos": "Nome do dispositivo Sonos", + "Nom du Sonos": "Nome do Sonos", + "Numéro de série": "Número de série", + "Objet parent": "Objeto pai", + "Options": "Opções", + "Paramètres généraux": "Configurações Gerais", + "Paramètres spécifiques": "Parâmetros específicos", + "Rechercher": "Pesquisa", + "Sauvegarder": "Salvar", + "Supprimer": "Remover", + "Synchroniser": "Sincronizar", + "Type": "Gentil", + "Utiliser la tuile préconfigurée": "Utilizar o mosaico pré-configurado", + "Version": "Versão", + "Version matériel": "Versão de hardware", + "Visible": "Visivél" }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de controle Symfonisk Sonos\/Ikea. AVISO: Requer PHP 7.4 ou posterior" + "plugins\/sonos3\/plugin_info\/configuration.php": { + "401 - Accès non autorisé": "401 - Acesso não autorizado", + "Découverte": "Descoberta", + "Hôte": "Hospedar", + "Interactions": "Interações", + "Le plugin sonos doit réagir aux interactions": "O plugin sonos deve reagir às interações", + "Mot de passe du partage": "Compartilhando senha", + "Nom d'utilisateur du partage": "Nome de usuário de compartilhamento", + "Partage": "Partilha", + "Réseau à scanner": "Rede a ser verificada", + "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Se, e apenas se, o Jeedom não estiver na mesma rede que as suas colunas Sonos" } } \ No newline at end of file diff --git a/plugin_info/info.json b/plugin_info/info.json index 24dba28..0536a71 100644 --- a/plugin_info/info.json +++ b/plugin_info/info.json @@ -1,41 +1,42 @@ { - "id": "sonos3", - "name": "Sonos controller", - "description": { - "fr_FR": "Plugin de contrôle de Sonos\/Ikea Symfonisk" - }, - "licence": "AGPL", - "author": "Jeedom SAS", - "require": "4.5", - "os": { - "min": 11 - }, - "category": "multimedia", - "hasDependency": true, - "hasOwnDeamon": true, - "display": "panel", - "mobile": "panel", - "changelog": "https:\/\/doc.jeedom.com\/#language#\/plugins\/multimedia\/sonos3\/changelog", - "documentation": "https:\/\/doc.jeedom.com\/#language#\/plugins\/multimedia\/sonos3\/", - "language": [ - "fr_FR", - "en_US", - "es_ES", - "de_DE", - "ru_RU", - "id_ID", - "it_IT", - "ja_JP", - "pt_PT", - "tr" - ], - "compatibility": [ - "smart", - "atlas", - "rpi", - "diy", - "v4" - ], - "changelog_beta": "https:\/\/doc.jeedom.com\/#language#\/plugins\/multimedia\/sonos3\/beta\/changelog", - "documentation_beta": "https:\/\/doc.jeedom.com\/#language#\/plugins\/multimedia\/sonos3\/beta" + "id": "sonos3", + "name": "Sonos controller", + "description": { + "fr_FR": "Plugin de contrôle de Sonos/Ikea Symfonisk", + "en_US": "Sonos/Ikea Symfonisk control plugin", + "es_ES": "Complemento de control para Sonos/Ikea Symfonisk", + "de_DE": "Plugin zur Steuerung von Sonos/Ikea Symfonisk", + "it_IT": "Plugin di controllo per Sonos/Ikea Symfonisk", + "pt_PT": "Plugin de controlo do Sonos/Ikea Symfonisk" + }, + "licence": "AGPL", + "author": "Jeedom SAS", + "require": "4.5", + "os": { + "min": 11 + }, + "category": "multimedia", + "hasDependency": true, + "hasOwnDeamon": true, + "display": "panel", + "mobile": "panel", + "changelog": "https://doc.jeedom.com/#language#/plugins/multimedia/sonos3/changelog", + "documentation": "https://doc.jeedom.com/#language#/plugins/multimedia/sonos3/", + "language": [ + "de_DE", + "en_US", + "es_ES", + "fr_FR", + "it_IT", + "pt_PT" + ], + "compatibility": [ + "smart", + "atlas", + "rpi", + "diy", + "v4" + ], + "changelog_beta": "https://doc.jeedom.com/#language#/plugins/multimedia/sonos3/beta/changelog", + "documentation_beta": "https://doc.jeedom.com/#language#/plugins/multimedia/sonos3/beta" } \ No newline at end of file From 9f82e3df0aef9d606032a5ae232bab21834967fb Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Mon, 5 Oct 2026 15:37:17 +0200 Subject: [PATCH 15/28] add new images --- core/img/ERA_100_SL.png | Bin 0 -> 59898 bytes core/img/RAY.png | Bin 20675 -> 45078 bytes resources/requirements.txt | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 core/img/ERA_100_SL.png diff --git a/core/img/ERA_100_SL.png b/core/img/ERA_100_SL.png new file mode 100644 index 0000000000000000000000000000000000000000..67b2c53a94e6752da3364ac3a601e2831dfe62b6 GIT binary patch literal 59898 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

'+ config.traduction.key_do_not_edit_titreMenu +'

'); - } - - /*** Renomme les boutons langues ***/ - $('#blocLangs a.btn').each(function(){ - $(this).text($(this).data('lang').substr(0, 2)); - }); - - /*** Fonction de scrolling ***/ - var a = sessionStorage.getItem('anchor'), yPos, yInitPos, target; - - function scrolling(href, p){ - - yInitPos = $(window).scrollTop(); - - // On ajoute le hash dans l'url. - window.location.hash = href; - - // Comme il est possible que l'ajout du hash perturbe le défilement, on va forcer le scrollTop à son endroit inital. - if(a) $(window).scrollTop(yInitPos); - else $(window).scrollTop(p); - - - // On cible manuellement l'ancre pour en extraire sa position. - // Si c'est un ID on l'obtient. - target = ($(href + ":first")); - - // Sinon on cherche l'ancre dans le name d'un a. - if (target.length == 0) { - target = ($("a[name=" + href.replace(/#/gi,"") + "]:first")) - } - - // Si on a trouvé un name ou un id, on défile. - if (target.length == 1) { - yPos = target.offset().top; // Position de l'ancre. - - // On anime le défilement jusqu'à l'ancre. - $('html,body').animate({ scrollTop: yPos - 85 }, 1000); // On décale de 85 pixels l'affichage pour ne pas coller le bord haut de l'affichage du navigateur et on défile en 1 seconde jusqu'à l'ancre. - } - } - - if(a){ var href = a; scrolling(a); sessionStorage.removeItem('anchor'); } - // Pour tous les liens commençant par #. - $('#toc a').click(function (e) { - - var href = $(this).attr('href'), t = new RegExp('#.*'), anchor = new RegExp('^#.*'), p = $(this).offset().top; - if(href.match(anchor)){ e.preventDefault(); scrolling(href, p); }else if(href.match(t)){ - e.preventDefault(); - sessionStorage.setItem('anchor', href.match(t)); - location.href = href.replace(/#.*/, ''); - } - }); - - //Ajout de la class active sur les liens menu des éléments affiché - var idChapitre = null, nbrChapitre = 0, idAncre = null; - - $('#main_content h1, #main_content h2').on('inview',function(event, isInView, visiblePartX, visiblePartY){ - nbrChapitre = $('#toc a.active').length; - idAncre = $(this).attr('id'); - if(isInView){ - $('#toc a[href="#'+ idAncre +'"]').addClass('active'); - if(idChapitre != null){ - $('#toc a[href="#'+ idChapitre +'"]').removeClass('active'); - idChapitre = null; - } - }else if (nbrChapitre > 1){ - $('#toc a[href="#'+ idAncre +'"]').removeClass('active'); - }else{ - idChapitre = idAncre; - } - }); - - }; - return this; -})(jQuery); diff --git a/docs/js/jquery.inview.min.js b/docs/js/jquery.inview.min.js deleted file mode 100644 index 44b318c..0000000 --- a/docs/js/jquery.inview.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){function i(){var b,c,d={height:f.innerHeight,width:f.innerWidth};return d.height||(b=e.compatMode,(b||!a.support.boxModel)&&(c="CSS1Compat"===b?g:e.body,d={height:c.clientHeight,width:c.clientWidth})),d}function j(){return{top:f.pageYOffset||g.scrollTop||e.body.scrollTop,left:f.pageXOffset||g.scrollLeft||e.body.scrollLeft}}function k(){if(b.length){var e=0,f=a.map(b,function(a){var b=a.data.selector,c=a.$element;return b?c.find(b):c});for(c=c||i(),d=d||j();ed.top&&l.topd.left&&l.left%3\n' - .replace('%1', tocLevel) - .replace('%2', tocSection) - .replace('%3', link); - } - - function checkMaxHead($root) { -//console.log('Début funtion checkMaxHead'); - if ($root.find('h1').length > 0) { - return ['h1', 'h2']; - } else { - return ['h2', 'h3']; - } - } - - $.fn.toc = function(settings) { -//console.log('Début funtion $.fn.toc'); - var config = { - renderIn: 'self', - anchorPrefix: 'tocAnchor-', - showAlways: false, - minItemsToShowToc: 2, - saveShowStatus: true, - contentsText: 'Contents', - hideText: 'hide', - showText: 'show', - showCollapsed: false}; - - if (settings) { - $.extend(config, settings); - } - - var tocHTML = ''; - var tocLevel = 1; - var tocSection = 1; - var itemNumber = 1; - - var tocContainer = $(this); - - var heads = checkMaxHead(tocContainer); - var firstHead = heads[0]; - var secondHead = heads[1]; - - tocContainer.find(firstHead).each(function() { - var levelHTML = ''; - var innerSection = 0; - var h1 = $(this); - - h1.nextUntil(firstHead).filter(secondHead).each(function() { - ++innerSection; - var anchorId = config.anchorPrefix + tocLevel + '-' + tocSection + '-' + + innerSection; - $(this).attr('id', anchorId); - levelHTML += createLevelHTML(anchorId, - tocLevel + 1, - tocSection + innerSection, - itemNumber + '.' + innerSection, - $(this).text()); - }); - if (levelHTML) { - levelHTML = '
    ' + levelHTML + '
\n'; - } - var anchorId = config.anchorPrefix + tocLevel + '-' + tocSection; - h1.attr('id', anchorId); - tocHTML += createLevelHTML(anchorId, - tocLevel, - tocSection, - itemNumber, - h1.text(), - levelHTML); - - tocSection += 1 + innerSection; - ++itemNumber; - }); - - // for convenience itemNumber starts from 1 - // so we decrement it to obtain the index count - var tocIndexCount = itemNumber - 1; - - var show = config.showAlways ? true : config.minItemsToShowToc <= tocIndexCount; - - // check if cookie plugin is present otherwise doesn't try to save - if (config.saveShowStatus && typeof($.cookie) == "undefined") { - config.saveShowStatus = false; - } - - if (show && tocHTML) { - var replacedToggleHTML = toggleHTML - .replace('%1', config.contentsText) - .replace('%2', config.hideText); - var replacedTocContainer = tocContainerHTML - .replace('%1', replacedToggleHTML) - .replace('%2', tocHTML); - - // Renders in default or specificed path - if (config.renderIn != 'self') { - $(config.renderIn).html(replacedTocContainer); - } else { - tocContainer.prepend(replacedTocContainer); - } - - $('#toctogglelink').click(function() { - var ul = $($('#toc ul')[0]); - - if (ul.is(':visible')) { - ul.hide(); - $(this).text(config.showText); - if (config.saveShowStatus) { - $.cookie('toc-hide', '1', { expires: 365, path: '/' }); - } - $('#toc').addClass('tochidden'); - } else { - ul.show(); - $(this).text(config.hideText); - if (config.saveShowStatus) { - $.removeCookie('toc-hide', { path: '/' }); - } - $('#toc').removeClass('tochidden'); - } - return false; - }); - - if (config.saveShowStatus && $.cookie('toc-hide')) { - var ul = $($('#toc ul')[0]); - - ul.hide(); - $('#toctogglelink').text(config.showText); - $('#toc').addClass('tochidden'); - } - - if (config.showCollapsed) { - $('#toctogglelink').click(); - } - } -// console.log('Fin funtion $.fn.toc',this); - return this; - } -//console.log('appel $(#main_content).toc();'); -// $('#main_content').toc(); -})(jQuery); diff --git a/docs/pt_PT/changelog.md b/docs/pt_PT/changelog.md deleted file mode 100644 index 059c1fb..0000000 --- a/docs/pt_PT/changelog.md +++ /dev/null @@ -1,196 +0,0 @@ -# Changelog Sonos controller - ->**IMPORTANTE** -> ->Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto - -# - -- Adicionando um comando de informações **** ) - -# 27-01-2026 - -- Ajout de l'image pour *Ikea Table Lamp* - -# 19-01-2026 - -- Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom -- Corrections pour le message "Subscription renewal failed" et la perte de remontée des informations -- Correções de imagem - -# 26-04-2025 - -> Attention -> Redesenho significativo do plugin : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ; -> -> Requer Jeedom 4.4.8 -> -> Compatível com Debian 11 e 12! -> -> Veja também [este tópico na comunidade](https://community.jeedom.com/t/erreur-you-cannot-create-a-controller-instance-from-a-speaker-that-is-not-the-coordinator-of-its-group/128862) para mais detalhes - -- Reescrita quase total do plugin, o daemon foi completamente reescrito em python (em vez de PHP) -- Compatível com Debian 11 e 12! -- Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon. -- Também é possível pedir para (re)sincronizar equipamentos, favoritos e playlists sem reiniciar o daemon a partir do painel de equipamentos. -- Synchro automatique chaque heure pour corriger les désynchronisations éventuelles -- Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple) -- Redesenho do gerenciamento de grupos (comandos antigos serão excluídos e novos serão adicionados, consulte a documentação). É possível entrar ou sair de um grupo, controlar a reprodução do grupo a partir de qualquer dispositivo do grupo sem se preocupar com quem é o controlador. Le volume est, lui, toujours contrôlé par enceinte. -- Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**. -- Otimização : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant. -- Otimizou a exibição da capa atualmente sendo reproduzida -- Otimização na leitura de favoritos -- Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix... - -- Adicionando um comando de ação **Televisão** para mudar para a entrada *Televisão* em equipamentos compatíveis -- Adicionando um comando de informações **Modo de leitura** e ação **Escolha o modo de leitura** que permite selecionar o modo de leitura entre as seguintes possibilidades: *Normal*, *Repita tudo*, *Aleatório e repita tudo*, *Aleatório sem repetição*, *Repetir música*, *Música aleatória e repetida* -- Adicionando um pedido **Status de leitura** que fornece o valor "bruto" do estado de leitura (o comando existente **Status** fornece um valor traduzido com base no idioma configurado no Jeedom) -- Adicionando comandos **Status do grupo** (indica se o equipamento está agrupado ou não) e **Nome do grupo** no caso em que o equipamento está agrupado -- Adicionando comandos **O presente**, **Partiu** E **LED de status** para verificar o indicador de status -- Adicionando um pedido **Tocar rádio mp3** reproduzir uma rádio mp3 diretamente através de uma URL (acessível na internet por exemplo) -- Adicionando comandos **Aumenta o volume** E **Diminuir o volume** a partir de 1% -- Adicionando um pedido **Transição de volume** o que é muito útil para gerenciar transições de nível de volume. 3 modos possíveis: *LINEAR*, *ALARME*, *REPRODUÇÃO AUTOMÁTICA*. Consulte a documentação para obter mais informações. -- Adicionando comandos **Status de volume**, **Volume ativado**, **Volume desligado** -- Adicionando comandos **Status de esmaecimento**, **Desaparecer**, **Desaparecer** -- Adicionando comandos **Controles de toque de status**, **Controles de toque ativados**, **Controles de toque desativados** -- Adicionando comandos **Equilíbrio** (ação/cursor) e **Status do saldo** que gerencia o saldo de acordo com um valor entre -100 (extrema esquerda) e 100 (extrema direita) -- Adicionando comandos **Sepulturas** (ação/cursor) e **Situação séria** que gerencia os graves de acordo com um valor entre -10 e 10 -- Adicionando comandos **Agudos** (ação/cursor) e **Status triplo** qui gèrent les aigus selon une valeur comprise entre -10 et 10 -- Adicionando o comando **Moda de festa** que permite agrupar todos os Sonos -- Adicionando o comando **Status do microfone** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro -- Adicionando um comando de informações **Bateria** em Sonos equipados com bateria mostrando a porcentagem de carga da bateria -- Adicionando um comando de informações **Carregando** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non -- Adicionando um comando de informações **Próximo alarme** em cada Sonos informando a data do próximo alarme programado neste alto-falante - -# 25/04/2024 - -- Atualização da documentação -- Nettoyage des accents dans les noms de partage (non supportés par le plugin) -- Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom) -- Adicionado Sonos Beam Gen 2 - -# 15/01/2024 - -- Preparando-se para Jeedom 4.4 -- Adicionado Sonos Move 2 - -# 24/08/2023 - -- Adicionado abajur Ikea Symfonisk - -# 25/05/2023 - -- Adicionado Sonos Era - -# 18/10/2022 - -- Atualizar lista de comandos para Jeedom v4.3 -- Adicionado Sonos Ray - -# 22/03/2022 - -- Suporte para o novo alto-falante SYMFONISK - -# 01/02/2022 - -- Corrigido um bug no TTS - -# 27/01/2022 - -- Otimizações da V4.2 - -# 14/01/2022 - -- Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK - -# 27/12/2021 - -- Ajout de la compatibilité avec la nouvelle Sonos One - -# 10/09/2021 - -- Adição dos Sonos Five -- Adicionando Sonos Roam -- Adicionando Symfonisk Framework -- Atualização de volume imediata em caso de mudança pela Jeedom, obrigado @Domochip - -# 24/11/2020 - -- Nova apresentação da lista de objetos -- Adição da tag "compatibilidade V4" - -# 07/08/2020 - -- Suporte Sonos ARC - -# 24/01/2020 - -- Suporte para Sonos One S22 - -# 01/11/2020 - -- Suporte para Sonos Move -- Otimização de código no caso de Sonos não conectado - -# 16/12/2019 - -- Correção de bug se um sistema de som não puder ser alcançado - -# 21/10/2017 - -- Melhoria na recuperação do TTS - -# 15/10/2019 - -- Suporte para porta Sonos -- Script de instalação de dependência aprimorado - -# 07/07/2019 - -- Melhoria do script de instalação de dependências (pode permitir corrigir em alguns casos os problemas de TTS) - -# 23/09/2019 - -- Optimisations - -# 01/09/2019 - -- Suporte de alto-falante para lâmpada Ikea SYMFONISK - -# 12/08/2019 - -- Suporte para alto-falante de estante Ikea SYMFONISK - -# 23/04/2019 - -- Suporte para sonos gen2 - -# 17/01/2019 - -- Erros corrigidos no caso de os sistemas de som serem adicionados manualmente - -# 15/01/2019 - -**IMPORTANTE APENAS FUNCIONA COM PHP7, VEJA A PÁGINA DE SAÚDE DA JEEDOM PARA SUA VERSÃO** - -- Reescrita completa do plug-in -- Suporte para a nova API Sonos -- Suporte para sistemas de som Beam e One -- Correction de nombreux bugs -- Otimizações globais - -**IMPORTANTE** - -- Apenas PHP7 compatível -- Alguns recursos tiveram que ser removidos - -# 2018 - -- Adicionado gerenciamento dos favoritos dos sonos -- Suporte para Sonos One e Playbase -- Correção da língua com picotts -- Adicionando um comando "entrada de linha"" -- Mise à jour de la librairie de communication avec les Sonos -- Carregamento otimizado de playlists -- Adição de picotts para geração de TTS local -- Correção do botão reproduzir / pausar ao atualizar o widget. diff --git a/docs/pt_PT/index.md b/docs/pt_PT/index.md deleted file mode 100644 index 733702d..0000000 --- a/docs/pt_PT/index.md +++ /dev/null @@ -1,174 +0,0 @@ -# Sonos plugin - -O plug-in Sonos permite controlar o Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... , próximo, anterior, volume, escolha de uma playlist…). - -# Configuração do plugin - -A configuração é muito simples, após baixar o plugin basta ativá-lo, instalar as dependências e iniciar o daemon. -O plugin irá procurar Sonos na sua rede e criar o equipamento automaticamente. Além disso, se houver uma correspondência entre os objetos Jeedom e as salas Sonos, o Jeedom atribuirá automaticamente o Sonos às salas certas. - -> **IMPORTANTE** -> Seu equipamento Sonos deve ser acessível diretamente pela máquina que hospeda o Jeedom (transmissão / multicast possível na mesma rede) e deve ser capaz de acessar o Jeedom em troca da porta TCP 1400. - -Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0/24`. Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet. **Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut** - -Se você adicionar um Sonos posteriormente, poderá clicar **Sincronizar** na página do equipamento ou reinicie o daemon. - -- **Partilha**: Configure aqui o nome do host da máquina (ou seu IP), o nome do compartilhamento (sem caminho, sem '/') e o caminho para a pasta. -- **Nome de usuário de compartilhamento**: nome de usuário para acessar o compartilhamento. -- **Compartilhando senha**: Compartilhando senha. - -# Configuração do equipamento - -A configuração do equipamento Sonos pode ser acessada no menu Plugins e depois em multimídia. - -Aqui você encontra toda a configuração usual do seu equipamento : - -- **Nome do Sonos**: nome do seu equipamento Sonos. -- **Objeto pai**: indica o objeto pai ao qual o equipamento pertence. -- **Ativar**: torna seu equipamento ativo. -- **Visivél**: torna visível no painel. - -Bem como informações sobre o seu Sonos: *Modelo*, *Lançamentos*, *Número de série*, *Identificador*, *Endereço MAC* E *Endereço de IP*. - -Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix... - -La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée. - -# As ordens - -Os controles de informações serão atualizados quase em tempo real (normalmente no máximo alguns segundos), mas a imagem do álbum atualmente sendo reproduzido pode demorar um pouco mais para ser exibida no widget durante uma mudança de faixa, isso é perfeitamente normal e independente do plugar: ele deve recuperar a imagem de uma fonte externa (em um Sonos ou na internet) e isso às vezes leva vários segundos (em princípio no máximo cerca de dez segundos). - -## Controles e controles de volume do Sonos - -Esses comandos sempre controlarão o equipamento correspondente, inclusive quando ele estiver em grupo. - -- **Volume**: mude o volume *(de 0 a 100)* -- **Volume de status**: nível de volume (em %) -- **Aumenta o volume**: aumenta o volume em 1%; pode ser útil para integração com outros sistemas ou plugins -- **Diminuir o volume**: diminui o volume em 1%; pode ser útil para integração com outros sistemas ou plugins -- **Transição de volume** permite realizar transições de nível de volume gerenciadas diretamente pelo alto-falante Sonos, não é o plugin que cuida disso e portanto não está bloqueando mas os atrasos não são configuráveis desde definidos pela Sonos. O tipo de transição e o volume alvo devem ser escolhidos ao executar o comando. Existem 3 modos: - - *LINEAR*: transição linear do volume atual para o volume alvo (aumentar ou diminuir), a velocidade é 1.25 por segundo (uma transição *LINEAR* de 50% a 30% levará 16s) - - *ALARME*: inicializa o volume em 0, pausa por cerca de 30 segundos e depois aumenta até o volume solicitado a uma velocidade de 2.5 por segundo (uma transição *ALARME* de 0% a 10% levará 4s) - - *REPRODUÇÃO AUTOMÁTICA*: inicializa o volume para 0 e aumenta rapidamente para o volume solicitado a uma taxa de 50 por segundo (uma transição *REPRODUÇÃO AUTOMÁTICA* de 0% a 50% levará 1s) -- **Silenciar**: Ativar modo mudo. -- **Sem mudo**: Desativar mudo. -- **Status mudo**: indica se estamos no modo mudo ou não. -- **Equilíbrio** (ação/cursor) e **Status do saldo** que gerencia o equilíbrio de acordo com um valor entre -100 (extrema esquerda) e 100 (extrema direita) para Sonos compatíveis -- **Sepulturas** (ação/cursor) e **Situação séria** que gerencia os graves de acordo com um valor entre -10 e 10 -- **Agudos** (ação/cursor) e **Status triplo** que gerencia os agudos de acordo com um valor entre -10 e 10 -- **Status de volume**, **Volume ativado**, **Volume desligado** controla o volume - -- **Televisão**: para mudar para a entrada *Televisão* em equipamentos compatíveis -- **Entrada de áudio analógico**: para mudar para'*Entrada de áudio analógico* (*Entrada de linha*) em equipamentos compatíveis -- **O presente** E **Partiu**: Ativa e desativa o LED, a luz de status -- **LED de status**: indica se a luz de status está acesa ou não. Esta informação só é atualizada uma vez por minuto caso seja modificada fora do Jeedom -- **Controles de toque ativados** E **Controles de toque desativados** Ativa e desativa botões físicos ou de toque no Sonos -- **Controles de toque de status** indica se os controles de toque estão ativados ou não -- **Status do microfone** que indica se o microfone está ativado ou não em Sonos equipados com microfone -- **Bateria** em Sonos equipados com bateria mostrando a porcentagem de carga da bateria -- **Carregando** em Sonos equipados com bateria indicando se o carregamento está ou não em andamento - -## Controles de reprodução - -Estes comandos irão indicar e controlar a reprodução atual no equipamento ou no grupo se estiver agrupado e isso de forma transparente, você não precisa se preocupar em saber se o equipamento está agrupado ou não para utilizá-los. - -- **Estado**: status do leitor traduzido para o idioma configurado em Jeedom. Por exemplo: *Leitura*, *Pausa*, *Parou*. -- **Status de leitura** que fornece o valor "bruto" do status de leitura: *JOGANDO*, *PAUSED_PLAYBACK*, *PAROU*; mais adequado para cenários. -- **Leitura**: ler. -- **Pausa**: pausar. -- **Pare**: pare de ler. -- **Anterior**: faixa anterior. -- **Seguinte**: próxima faixa. -- **Status aleatório**: indica se estamos no modo aleatório ou não. -- **Aleatório**: reverter o status do modo aleatório. -- **Repita o status**: indica se estamos no modo de repetição ou não. -- **Repetir**: reverter o status do modo "repetir"". -- **Status de esmaecimento**, **Desaparecer**, **Desaparecer** controlar e ativar ou não o *Crossfade* -- **Escolha o modo de leitura** permite que você escolha entre as seguintes possibilidades: - - *Normal* (repetir, aleatório), - - *Repita tudo* (aleatório), - - *Aleatório e repita tudo*, - - *Aleatório sem repetição*, - - *Repetir música* (aleatório), - - *Música aleatória e repetida*. - - Eu recomendo usar este comando em um cenário em vez de **Repetir** & **Aleatório** para chegar à configuração desejada mesmo que todos atuem nos mesmos parâmetros. Este comando é, no entanto, a única maneira de mudar para o modo *Repetir música* Ou *Música aleatória e repetida*. -- **Modo de leitura** dando o estado atual que será um dos valores citados acima. -- **Reproduzir lista de reprodução**: comando de tipo de mensagem para iniciar uma lista de reprodução, basta colocar o nome da lista no título. Em um cenário, uma lista de possibilidades será exibida automaticamente quando você começar a digitar. -- **Reproduzir Favoritos**: comando de tipo de mensagem para lançar um favorito, tudo o que você precisa fazer no título é colocar o nome do favorito. Em um cenário, uma lista de possibilidades será exibida automaticamente quando você começar a digitar. -- **Tocar rádio**: comando de tipo de mensagem para lançar uma estação de rádio, tudo o que você precisa fazer é colocar o nome da rádio no título *(Atenção : isso deve estar nas rádios favoritas)*. Em um cenário, uma lista de possibilidades será exibida automaticamente quando você começar a digitar. Não funciona mais nos modelos "S2", é normal ter uma lista vazia em todos os modelos usando o aplicativo Sonos S2. -- **Tocar rádio mp3**: permite-lhe reproduzir uma rádio mp3 através de um URL (por exemplo da internet). Você deve colocar um título na caixa *Título* e o URL (formato http(s))://...mp3) na área *Mensagem*. -- **Imagem**: link para a imagem do álbum. -- **Album**: nome do álbum atualmente sendo reproduzido. -- **Artista**: nome do artista atualmente sendo reproduzido. -- **Track**: nome da faixa atualmente sendo reproduzida. -- **Para dizer**: permite ler um texto no Sonos (consulte a parte TTS). No título, você pode definir o volume e, na mensagem, a mensagem a ser lida. - -> **Dica** -> As listas de reprodução e os favoritos devem ser criados através do aplicativo Sonos (no celular ou computador) e depois a sincronização deve ser feita para atualizar o equipamento e poder utilizá-lo em um cenário. - -## Comandos para gerenciar grupos - -Esses comandos sempre atuam no equipamento correspondente. - -- **Status do grupo**: indica se o equipamento está agrupado ou não. -- **Nome do grupo** se o equipamento estiver agrupado, forneça o nome do grupo. -- **Junte-se a um grupo**: permite que você se junte ao grupo de um determinado alto-falante (um Sonos) (para associar 2 Sonos, por exemplo). Você deve inserir o nome da sala do sistema de som para ingressar. Pode ser qualquer membro de um grupo existente, não precisa ser o coordenador do grupo ou um Sonos isolado. Em um cenário, uma lista de possibilidades será exibida automaticamente quando você começar a digitar. -- **Sair do grupo**: permite que você saia do grupo. -- **Moda de festa** permite agrupar todos os Sonos - -# TTS - -TTS (texto para fala) para Sonos requer compartilhamento SAMBA na rede (imposto pela Sonos, não há como fazer de outra forma). Portanto, você precisa de um NAS ou equivalente na rede. A configuração é bastante simples, você deve inserir o nome ou IP do NAS (cuidado para colocar o mesmo que está declarado no Sonos) e o caminho para a pasta que deve conter os arquivos de áudio bem como o nome do usuário e senha (observe que o usuário deve ter direitos de gravação) - -A criação do arquivo de áudio é gerenciada pelo núcleo Jeedom: o idioma será aquele configurado no Jeedom e o motor TTS utilizado também pode ser selecionado na configuração do Jeedom. - -Ao usar TTS (comando **Para dizer**), o plugin executará as seguintes ações: - -- geração do arquivo de áudio contendo a mensagem com suporte principal Jeedom -- gravando o arquivo no compartilhamento SAMBA -- forçar a reprodução no modo “Normal”, sem repetição -- forçar o modo “ativar som” (apenas no equipamento, não em todo o grupo) -- Alterar o volume para o valor escolhido ao utilizar o comando (apenas no equipamento, não em todo o grupo) -- lendo mensagem -- restaurar o estado do Sonos antes da reprodução (ou seja, o modo de reprodução, mudo ou não, repetir ou não, etc.) e reiniciar o stream se o Sonos estiver reproduzindo - -> **IMPORTANTE** -> -> É absolutamente necessário colocar uma senha para que este procedimento funcione. -> -> Um subdiretório também é absolutamente necessário para que o arquivo de voz seja criado corretamente. -> -> Acima de tudo, não deve haver acentos no nome do compartilhamento ou pasta, espaços ou caracteres especiais. -> -> Mensagens muito longas não podem ser transmitidas em TTS (o limite depende do provedor de TTS, geralmente em torno de 100 caracteres). - -## Exemplo de configuração - -No lado NAS, a seguinte configuração deve ser realizada: - -- a pasta *Jeedom* é compartilhado e contém uma pasta *TTS* -- o usuário *Jeedom* tem acesso de leitura/gravação (necessário para Jeedom). -- o usuário *seu osso* tem acesso somente leitura (necessário para Sonos). - -No lado do plug-in Sonos, a configuração : - -- Partilha : - - Campo 1: 192.168.xxx.aaa - - Campo 2: *Jeedom* - - Campo 3: *TTS* -- Nome de usuário (*Jeedom* no exemplo) e sua senha…​ - -Lado da Biblioteca Sonos (aplicativo para PC) - -- o caminho é : //192.168.xxx.aaa/Jeedom/TTS -- o usuário será *seu osso* (neste exemplo) + senha - -# O painel - -O plugin Sonos também fornece um painel que reúne todos os seus Sonos. Disponível no menu Início → Sonos Controller : - -> **IMPORTANTE** -> -> Para ter o painel você deve tê-lo ativado na configuração do plugin. From 1b53ec384c3e8a99520096e3640c966a3b51dba0 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Tue, 20 Oct 2026 21:37:28 +0200 Subject: [PATCH 23/28] fix(docs): standardize date format in changelog --- docs/fr_FR/changelog.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/fr_FR/changelog.md b/docs/fr_FR/changelog.md index 5661166..e354383 100644 --- a/docs/fr_FR/changelog.md +++ b/docs/fr_FR/changelog.md @@ -4,25 +4,25 @@ > >Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte -# 18-05-2026 +# 18/05/2026 - Correction d'un bug mineur sur la commande **Dire** -# 11-04-2026 +# 11/04/2026 - Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible) -# 27-01-2026 +# 27/01/2026 - Ajout de l'image pour *Ikea Table Lamp* -# 19-01-2026 +# 19/01/2026 - Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom - Corrections pour le message "Subscription renewal failed" et la perte de remontée des informations - Corrections des images -# 26-04-2025 +# 26/04/2025 > Attention > Refonte importante du plugin : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ; From 28f1deead073bdc27d337ec5e2c4086ee7b2690e Mon Sep 17 00:00:00 2001 From: Mips2648 <41119856+Mips2648@users.noreply.github.com> Date: Tue, 20 Oct 2026 19:37:52 +0000 Subject: [PATCH 24/28] chore(docs): update translations --- docs/de_DE/changelog.md | 10 +++++----- docs/en_US/changelog.md | 10 +++++----- docs/es_ES/changelog.md | 10 +++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/de_DE/changelog.md b/docs/de_DE/changelog.md index 861ef0e..61b960e 100644 --- a/docs/de_DE/changelog.md +++ b/docs/de_DE/changelog.md @@ -4,25 +4,25 @@ > >Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich ausschließlich um eine Aktualisierung der Dokumentation, der Übersetzung oder des Textes handelt. -# 18-05-2026 +# 18/05/2026 - Behebung eines kleinen Fehlers beim Befehl **Dire** -# 11-04-2026 +# 11/04/2026 - Hinzufügen eines Befehls „Info **Sender**“, der den aktuell wiedergegebenen Radiosender anzeigt (sofern diese Information verfügbar ist) -# 27-01-2026 +# 27/01/2026 - Bild für *Ikea Tischlampe* hinzugefügt -# 19-01-2026 +# 19/01/2026 - Hinzufügen einer optionalen Konfiguration, um – nur falls erforderlich – das Subnetz (VLAN) anzugeben, in dem sich Ihre Sonos-Lautsprecher befinden, falls dieses vom Subnetz (VLAN) abweicht, in dem sich Jeedom befindet - Korrekturen für die Meldung „Subscription renewal failed“ und den Verlust der Informationsübermittlung - Bildkorrekturen -# 26-04-2025 +# 26/04/2025 > Aufmerksamkeit > Umfassende Überarbeitung des Plugins: Ein Großteil des Plugins wurde neu geschrieben, darunter die gesamte Kommunikation mit Sonos (Daemon), und einige Funktionen wurden geändert und funktionieren nicht mehr wie zuvor, insbesondere die Verwaltung von Gruppen; diff --git a/docs/en_US/changelog.md b/docs/en_US/changelog.md index cfa69cc..b95c707 100644 --- a/docs/en_US/changelog.md +++ b/docs/en_US/changelog.md @@ -4,25 +4,25 @@ > >As a reminder, if there is no information about the update, it means that the update only involves documentation, translations, or text changes. -# 18-05-2026 +# 18/05/2026 - Fixed a minor bug in the **Dire** command -# 11-04-2026 +# 11/04/2026 - Added a **Station** info command that displays the radio station currently playing (if the information is available) -# 27-01-2026 +# 27/01/2026 - Added image for *Ikea Table Lamp* -# 19-01-2026 +# 19/01/2026 - Added an optional setting to specify, only if necessary, the subnet (VLAN) on which your Sonos speakers are located if it is different from the subnet (VLAN) on which Jeedom is located - Fixes for the "Subscription renewal failed" message and the loss of information reporting - Image corrections -# 26-04-2025 +# 26/04/2025 > Caution > Major plugin overhaul: a large portion of the plugin has been rewritten, including all communication with Sonos (daemon), and certain features have been modified and no longer work as they did before, particularly group management; diff --git a/docs/es_ES/changelog.md b/docs/es_ES/changelog.md index f41aa2a..8765274 100644 --- a/docs/es_ES/changelog.md +++ b/docs/es_ES/changelog.md @@ -4,25 +4,25 @@ > >Recuerda que, si no hay información sobre la actualización, es porque esta se refiere únicamente a la actualización de la documentación, la traducción o el texto. -# 18-05-2026 +# 18/05/2026 - Se ha corregido un error menor en el comando **Dire** -# 11-04-2026 +# 11/04/2026 - Se ha añadido un comando de información **Estación** que indica la emisora de radio que se está reproduciendo (si la información está disponible) -# 27-01-2026 +# 27/01/2026 - Se ha añadido la imagen de *Lámpara de mesa de Ikea* -# 19-01-2026 +# 19/01/2026 - Se ha añadido una configuración opcional para indicar, solo si es necesario, la subred (VLAN) en la que se encuentran tus altavoces Sonos, en caso de que sea diferente de la subred (VLAN) en la que se encuentra Jeedom. - Correcciones para el mensaje «Error al renovar la suscripción» y la pérdida de la transmisión de información - Correcciones de imagen -# 26-04-2025 +# 26/04/2025 > Atención > Reestructuración importante del complemento: se ha reescrito una gran parte del complemento, incluida toda la comunicación con Sonos (demonio), y se han modificado algunas funciones, que ya no funcionan como antes, en particular la gestión de grupos; From 2c7f7c101ac8524a9bc23cdd2ccefc88f157bbf2 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Wed, 21 Oct 2026 09:15:56 +0200 Subject: [PATCH 25/28] fix: update changelog and documentation URLs in info.json --- plugin_info/info.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin_info/info.json b/plugin_info/info.json index 0536a71..6a4fcf3 100644 --- a/plugin_info/info.json +++ b/plugin_info/info.json @@ -20,8 +20,8 @@ "hasOwnDeamon": true, "display": "panel", "mobile": "panel", - "changelog": "https://doc.jeedom.com/#language#/plugins/multimedia/sonos3/changelog", - "documentation": "https://doc.jeedom.com/#language#/plugins/multimedia/sonos3/", + "changelog": "https://doc.jeedom.com/plugins/multimedia/sonos3/#language#/changelog", + "documentation": "https://doc.jeedom.com/plugins/multimedia/sonos3/#language#/", "language": [ "de_DE", "en_US", @@ -37,6 +37,6 @@ "diy", "v4" ], - "changelog_beta": "https://doc.jeedom.com/#language#/plugins/multimedia/sonos3/beta/changelog", - "documentation_beta": "https://doc.jeedom.com/#language#/plugins/multimedia/sonos3/beta" + "changelog_beta": "https://doc.jeedom.com/plugins/multimedia/sonos3/beta/#language#/changelog", + "documentation_beta": "https://doc.jeedom.com/plugins/multimedia/sonos3/beta/#language#/" } \ No newline at end of file From a48b77c2497fbff22edddffdd37c3466fce86826 Mon Sep 17 00:00:00 2001 From: Mips Date: Wed, 21 Oct 2026 09:49:12 +0200 Subject: [PATCH 26/28] Update permissions in translations.yml Add permissions for contents and pull-requests in translations workflow Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .github/workflows/translations.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml index d214266..72a940c 100644 --- a/.github/workflows/translations.yml +++ b/.github/workflows/translations.yml @@ -6,6 +6,10 @@ on: branches: - beta +permissions: + contents: write + pull-requests: write + jobs: auto-translate: runs-on: ubuntu-latest From 44e8a1832e0174d84aee8538523c6795656b788c Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Wed, 21 Oct 2026 10:03:31 +0200 Subject: [PATCH 27/28] reorg changelog for stable --- docs/fr_FR/changelog.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/docs/fr_FR/changelog.md b/docs/fr_FR/changelog.md index e354383..001c1c2 100644 --- a/docs/fr_FR/changelog.md +++ b/docs/fr_FR/changelog.md @@ -4,17 +4,11 @@ > >Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte -# 18/05/2026 - -- Correction d'un bug mineur sur la commande **Dire** - -# 11/04/2026 +# 21/10/2026 - Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible) - -# 27/01/2026 - -- Ajout de l'image pour *Ikea Table Lamp* +- Ajout de l'image pour *Ikea Table Lamp* & *Era 100 SL* +- Correction d'un bug mineur sur la commande **Dire** # 19/01/2026 From 658642c63382070227c0501dd348c3c601ca6c2e Mon Sep 17 00:00:00 2001 From: Mips2648 <41119856+Mips2648@users.noreply.github.com> Date: Wed, 21 Oct 2026 08:03:55 +0000 Subject: [PATCH 28/28] chore(docs): update translations --- docs/.translation_memory/de_DE.json | 2 +- docs/.translation_memory/en_US.json | 2 +- docs/.translation_memory/es_ES.json | 2 +- docs/de_DE/changelog.md | 12 +++--------- docs/en_US/changelog.md | 12 +++--------- docs/es_ES/changelog.md | 12 +++--------- 6 files changed, 12 insertions(+), 30 deletions(-) diff --git a/docs/.translation_memory/de_DE.json b/docs/.translation_memory/de_DE.json index 7df2bc8..b7ae859 100644 --- a/docs/.translation_memory/de_DE.json +++ b/docs/.translation_memory/de_DE.json @@ -90,7 +90,7 @@ "Ajout d'une commande info **Prochaine alarme** sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "Hinzufügen eines Befehls „**Nächster Alarm**“ auf jedem Sonos-Gerät, der das Datum des nächsten auf diesem Lautsprecher programmierten Alarms angibt", "Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible)": "Hinzufügen eines Befehls „Info **Sender**“, der den aktuell wiedergegebenen Radiosender anzeigt (sofern diese Information verfügbar ist)", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Hinzufügen einer optionalen Konfiguration, um – nur falls erforderlich – das Subnetz (VLAN) anzugeben, in dem sich Ihre Sonos-Lautsprecher befinden, falls dieses vom Subnetz (VLAN) abweicht, in dem sich Jeedom befindet", - "Ajout de l'image pour *Ikea Table Lamp*": "Bild für *Ikea Tischlampe* hinzugefügt", + "Ajout de l'image pour *Ikea Table Lamp* & *Era 100 SL*": "Bild für *Ikea Tischlampe* & *Era 100 SL* hinzugefügt", "Ajout de la Sonos Five": "Hinzufügung der Sonos Five", "Ajout de la Sonos Ray": "Sonos Ray hinzugefügt", "Ajout de la commande **Mic statut** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "Hinzufügen des Befehls **Mikrofonstatus**, der anzeigt, ob das Mikrofon bei Sonos-Geräten mit Mikrofon aktiviert ist oder nicht", diff --git a/docs/.translation_memory/en_US.json b/docs/.translation_memory/en_US.json index 53fd318..f0c0ec6 100644 --- a/docs/.translation_memory/en_US.json +++ b/docs/.translation_memory/en_US.json @@ -90,7 +90,7 @@ "Ajout d'une commande info **Prochaine alarme** sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "Add a **Next Alarm** info command to each Sonos speaker, displaying the date of the next alarm scheduled on that speaker", "Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible)": "Added a **Station** info command that displays the radio station currently playing (if the information is available)", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Added an optional setting to specify, only if necessary, the subnet (VLAN) on which your Sonos speakers are located if it is different from the subnet (VLAN) on which Jeedom is located", - "Ajout de l'image pour *Ikea Table Lamp*": "Added image for *Ikea Table Lamp*", + "Ajout de l'image pour *Ikea Table Lamp* & *Era 100 SL*": "Added images for *Ikea Table Lamp* & *Era 100 SL*", "Ajout de la Sonos Five": "Addition of the Sonos Five", "Ajout de la Sonos Ray": "Added Sonos Ray", "Ajout de la commande **Mic statut** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "Added the **Mic Status** command, which indicates whether the microphone is enabled or disabled on Sonos devices equipped with a microphone", diff --git a/docs/.translation_memory/es_ES.json b/docs/.translation_memory/es_ES.json index a9c0fb8..8305f64 100644 --- a/docs/.translation_memory/es_ES.json +++ b/docs/.translation_memory/es_ES.json @@ -90,7 +90,7 @@ "Ajout d'une commande info **Prochaine alarme** sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "Se ha añadido un comando de información **Próxima alarma** en cada dispositivo Sonos que indica la fecha de la próxima alarma programada en ese altavoz", "Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible)": "Se ha añadido un comando de información **Estación** que indica la emisora de radio que se está reproduciendo (si la información está disponible)", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Se ha añadido una configuración opcional para indicar, solo si es necesario, la subred (VLAN) en la que se encuentran tus altavoces Sonos, en caso de que sea diferente de la subred (VLAN) en la que se encuentra Jeedom.", - "Ajout de l'image pour *Ikea Table Lamp*": "Se ha añadido la imagen de *Lámpara de mesa de Ikea*", + "Ajout de l'image pour *Ikea Table Lamp* & *Era 100 SL*": "Se ha añadido la imagen de *Lámpara de mesa de Ikea* y *Era 100 SL*", "Ajout de la Sonos Five": "Adición de Sonos Five", "Ajout de la Sonos Ray": "Añadido Sonos Ray", "Ajout de la commande **Mic statut** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "Se ha añadido el comando **Estado del micrófono**, que indica si el micrófono está activado o no en los dispositivos Sonos equipados con micrófono", diff --git a/docs/de_DE/changelog.md b/docs/de_DE/changelog.md index 61b960e..2cd3858 100644 --- a/docs/de_DE/changelog.md +++ b/docs/de_DE/changelog.md @@ -4,17 +4,11 @@ > >Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich ausschließlich um eine Aktualisierung der Dokumentation, der Übersetzung oder des Textes handelt. -# 18/05/2026 - -- Behebung eines kleinen Fehlers beim Befehl **Dire** - -# 11/04/2026 +# 21/10/2026 - Hinzufügen eines Befehls „Info **Sender**“, der den aktuell wiedergegebenen Radiosender anzeigt (sofern diese Information verfügbar ist) - -# 27/01/2026 - -- Bild für *Ikea Tischlampe* hinzugefügt +- Bild für *Ikea Tischlampe* & *Era 100 SL* hinzugefügt +- Behebung eines kleinen Fehlers beim Befehl **Dire** # 19/01/2026 diff --git a/docs/en_US/changelog.md b/docs/en_US/changelog.md index b95c707..ff8e62f 100644 --- a/docs/en_US/changelog.md +++ b/docs/en_US/changelog.md @@ -4,17 +4,11 @@ > >As a reminder, if there is no information about the update, it means that the update only involves documentation, translations, or text changes. -# 18/05/2026 - -- Fixed a minor bug in the **Dire** command - -# 11/04/2026 +# 21/10/2026 - Added a **Station** info command that displays the radio station currently playing (if the information is available) - -# 27/01/2026 - -- Added image for *Ikea Table Lamp* +- Added images for *Ikea Table Lamp* & *Era 100 SL* +- Fixed a minor bug in the **Dire** command # 19/01/2026 diff --git a/docs/es_ES/changelog.md b/docs/es_ES/changelog.md index 8765274..163f65d 100644 --- a/docs/es_ES/changelog.md +++ b/docs/es_ES/changelog.md @@ -4,17 +4,11 @@ > >Recuerda que, si no hay información sobre la actualización, es porque esta se refiere únicamente a la actualización de la documentación, la traducción o el texto. -# 18/05/2026 - -- Se ha corregido un error menor en el comando **Dire** - -# 11/04/2026 +# 21/10/2026 - Se ha añadido un comando de información **Estación** que indica la emisora de radio que se está reproduciendo (si la información está disponible) - -# 27/01/2026 - -- Se ha añadido la imagen de *Lámpara de mesa de Ikea* +- Se ha añadido la imagen de *Lámpara de mesa de Ikea* y *Era 100 SL* +- Se ha corregido un error menor en el comando **Dire** # 19/01/2026

t6J8=Ds)$nY(b)Ujz%)g<9X5 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 T(w$Jp00000NkvXXu0mjf@_Q?1 literal 0 HcmV?d00001 diff --git a/core/img/RAY.png b/core/img/RAY.png index 95dc3ca4c5e3eea8762200ce48fb78ae5744c3ac..da6e09f37b971b6bc08c8a24f3a475f0189beb20 100644 GIT binary patch literal 45078 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 literal 20675 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 b!~S*EFDu{v_4WT;`Huwt|B?V? Date: Tue, 6 Oct 2026 17:23:56 +0200 Subject: [PATCH 16/28] add dependabot configuration and GitHub Actions workflow for documentation updates --- .github/dependabot.yml | 27 +++++++++++++++++++ .github/workflows/docs.yml | 54 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/docs.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..c4005f7 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,27 @@ +# depandabot to update your package.json or requirements.txt - remove useless sections +# check all configuration options : +# https://docs.github.com/fr/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file +# also works with private repository +# https://docs.github.com/fr/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot +version: 2 +updates: + - package-ecosystem: "pip" + directory: "/resources" + target-branch: "beta" + schedule: + interval: weekly + + - package-ecosystem: "composer" + # Files stored in repository root + directory: "/" + schedule: + interval: "weekly" + target-branch: "beta" + + # Maintain any github-actions workflow + # https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" + target-branch: "beta" diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..5cc28cf --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,54 @@ +name: Docs + +on: + push: + branches: + - beta + - master + paths: + - docs/** + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + changes: + runs-on: ubuntu-latest + outputs: + fr_fr: ${{ steps.filter.outputs.fr_fr }} + translated: ${{ steps.filter.outputs.translated }} + images: ${{ steps.filter.outputs.images }} + manual: ${{ github.event_name == 'workflow_dispatch' }} + steps: + - uses: actions/checkout@v7 + - uses: dorny/paths-filter@v4 + id: filter + with: + base: ${{ github.ref_name }} + filters: | + fr_fr: + - 'docs/fr_FR/**' + translated: + - 'docs/en_US/**' + - 'docs/es_ES/**' + - 'docs/de_DE/**' + images: + - 'docs/images/**' + + translate: + needs: changes + if: needs.changes.outputs.fr_fr == 'true' || needs.changes.outputs.manual == 'true' + runs-on: ubuntu-latest + steps: + - uses: jeedom/jeetranslate-docs@main + with: + deepl_api_key: ${{ secrets.DEEPL_API_KEY }} + + publish: + needs: changes + if: needs.changes.outputs.translated == 'true' || needs.changes.outputs.images == 'true' || needs.changes.outputs.manual == 'true' + uses: jeedom/workflows/.github/workflows/docs-publish.yml@main + secrets: + docs_repo_token: ${{ secrets.DOCS_REPO_TOKEN }} From 8a2516e32223d95d4ba4619e73341199100ee26f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Oct 2026 15:24:58 +0000 Subject: [PATCH 17/28] Update soco requirement from ~=0.30.4 to ~=0.31.4 in /resources Updates the requirements on [soco](https://github.com/SoCo/SoCo) to permit the latest version. - [Release notes](https://github.com/SoCo/SoCo/releases) - [Changelog](https://github.com/SoCo/SoCo/blob/master/doc/release_notes.rst) - [Commits](https://github.com/SoCo/SoCo/compare/v0.30.4...v0.31.4) --- updated-dependencies: - dependency-name: soco dependency-version: 0.31.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- resources/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/requirements.txt b/resources/requirements.txt index 8d3b20f..23acb1e 100644 --- a/resources/requirements.txt +++ b/resources/requirements.txt @@ -1,3 +1,3 @@ jeedomdaemon~=2.0.0 -soco~=0.30.4 +soco~=0.31.4 defusedxml~=0.7.1 \ No newline at end of file From eaaa854e61308d3ba98a1c98ce369d2f12a58934 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Tue, 6 Oct 2026 17:29:54 +0200 Subject: [PATCH 18/28] update dependabot --- .github/dependabot.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c4005f7..06ade16 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,17 +5,11 @@ # https://docs.github.com/fr/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot version: 2 updates: - - package-ecosystem: "pip" - directory: "/resources" - target-branch: "beta" - schedule: - interval: weekly - - package-ecosystem: "composer" # Files stored in repository root directory: "/" schedule: - interval: "weekly" + interval: "monthly" target-branch: "beta" # Maintain any github-actions workflow From 40e6d4848edf4cf1462b49a27533d20c6976c566 Mon Sep 17 00:00:00 2001 From: Mips2648 <41119856+Mips2648@users.noreply.github.com> Date: Tue, 6 Oct 2026 15:58:13 +0000 Subject: [PATCH 19/28] chore(docs): update translations --- docs/.translation_memory/de_DE.json | 224 ++++++++ docs/.translation_memory/en_US.json | 224 ++++++++ docs/.translation_memory/es_ES.json | 224 ++++++++ docs/de_DE/changelog.md | 396 +++++++------- docs/de_DE/index.md | 348 ++++++------ docs/en_US/changelog.md | 396 +++++++------- docs/en_US/index.md | 348 ++++++------ docs/es_ES/changelog.md | 396 +++++++------- docs/es_ES/index.md | 348 ++++++------ docs/i18n/de_DE.json | 813 ---------------------------- docs/i18n/en_US.json | 813 ---------------------------- docs/i18n/es_ES.json | 813 ---------------------------- 12 files changed, 1794 insertions(+), 3549 deletions(-) create mode 100644 docs/.translation_memory/de_DE.json create mode 100644 docs/.translation_memory/en_US.json create mode 100644 docs/.translation_memory/es_ES.json delete mode 100644 docs/i18n/de_DE.json delete mode 100644 docs/i18n/en_US.json delete mode 100644 docs/i18n/es_ES.json diff --git a/docs/.translation_memory/de_DE.json b/docs/.translation_memory/de_DE.json new file mode 100644 index 0000000..7df2bc8 --- /dev/null +++ b/docs/.translation_memory/de_DE.json @@ -0,0 +1,224 @@ +{ + " pour plus de détails": " Weitere Informationen", + "**Activer**: permet de rendre votre équipement actif.": "**Aktivieren**: Damit können Sie Ihre Geräte aktivieren.", + "**Aigus** (action/curseur) et **Aigus statut** qui gère la aigus selon une valeur comprise entre -10 et 10": "**Höhen** (Aktion/Schieberegler) und **Höhenstatus**, der die Höhen anhand eines Werts zwischen -10 und 10 regelt", + "**Album**: nom de l’album en cours de lecture.": "**Album**: Name des gerade abgespielten Albums.", + "**Aléatoire statut**: indique si on est en mode aléatoire ou non.": "**Zufallsmodus**: Zeigt an, ob sich das Gerät im Zufallsmodus befindet oder nicht.", + "**Aléatoire**: inverse le statut du mode aléatoire.": "**Zufallsmodus**: Schaltet den Zufallsmodus ein oder aus.", + "**Artiste**: nom de l’artiste en cours de lecture.": "**Interpret**: Name des gerade abgespielten Interpreten.", + "**Augmenter le volume**: augmente le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "**Lautstärke erhöhen**: Erhöht die Lautstärke um 1 %; kann für die Integration mit anderen Systemen oder Plugins nützlich sein", + "**Balance** (action/curseur) et **Balance statut** qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite) pour les Sonos compatibles": "**Balance** (Aktion/Schieberegler) und **Balance-Status**, der die Balance für kompatible Sonos-Geräte anhand eines Werts zwischen -100 (ganz links) und 100 (ganz rechts) regelt", + "**Batterie** sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "**Batterie** bei Sonos-Geräten mit Batterie, die den Ladezustand der Batterie in Prozent anzeigt", + "**Chargement** sur les Sonos équipés d'une batterie indiquant si la charge est en cours ou non": "**Ladevorgang** bei Sonos-Geräten mit Batterie, bei denen angezeigt wird, ob gerade geladen wird oder nicht", + "**Choisir mode de lecture** permet de choisir parmi les possibilités suivantes:": "Mit **„Wiedergabemodus auswählen“** können Sie zwischen folgenden Optionen wählen:", + "**Commandes tactiles on** et **Commandes tactiles off** Active et désactive les boutons physiques ou tactiles sur le Sonos": "**Touch-Bedienelemente ein** und **Touch-Bedienelemente aus** Aktiviert und deaktiviert die physischen oder Touch-Bedienelemente am Sonos", + "**Commandes tactiles statut** indique si les commandes tactiles sont activées ou pas": "**Status der Touch-Bedienelemente** gibt an, ob die Touch-Bedienelemente aktiviert sind oder nicht", + "**Diminuer le volume**: diminue le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "**Lautstärke verringern**: Verringert die Lautstärke um 1 %; kann für die Integration mit anderen Systemen oder Plugins nützlich sein", + "**Dire**: permet de lire un texte sur le Sonos (voir partie TTS). Dans le titre vous pouvez mettre le volume et dans le message, le message à lire.": "**Dire**: Ermöglicht das Vorlesen eines Textes über Sonos (siehe Abschnitt „TTS“). Im Titel können Sie die Lautstärke festlegen und in der Nachricht den vorzulesenden Text eingeben.", + "**Entrée audio analogique**: pour basculer sur l'*Entrée audio analogique* (*Line-in*) sur les équipements compatibles": "**Analoger Audioeingang**: Zum Umschalten auf den *analogen Audioeingang* (*Line-in*) bei kompatiblen Geräten", + "**Fondu enchaîné statut**, **Fondu enchaîné on**, **Fondu enchaîné off** pour contrôler et activer ou non le *Fondu enchaîné*": "**Überblendstatus**, **Überblendung ein**, **Überblendung aus** zum Steuern und Aktivieren bzw. Deaktivieren der *Überblendung*", + "**Graves** (action/curseur) et **Graves statut** qui gère les graves selon une valeur comprise entre -10 et 10": "**Bässe** (Aktion/Schieberegler) und **Bassstatus**, der die Bässe anhand eines Werts zwischen -10 und 10 regelt", + "**Groupe statut**: indique si l'équipement est groupé ou non.": "**Gruppenstatus**: Gibt an, ob das Gerät einer Gruppe zugeordnet ist oder nicht.", + "**Hint**": "**Hinweis**", + "**IMPORTANT NE MARCHE QUE AVEC PHP7, VOIR PAGE SANTE DE JEEDOM POUR VOTRE VERSION**": "**WICHTIG: FUNKTIONIERT NUR MIT PHP7, SIEHE DIE JEEDOM-STATUSSEITE FÜR IHRE VERSION**", + "**IMPORTANT**": "**WICHTIG**", + "**Image**: lien vers l’image de l’album.": "**Bild**: Link zum Bild im Album.", + "**Important**": "**Wichtig**", + "**Jouer favoris**: commande de type message permettant de lancer un favoris, il suffit dans le titre de mettre le nom du favori. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper.": "**Favoriten aufrufen**: Eine Befehlsart, mit der Sie einen Favoriten starten können. Geben Sie dazu einfach den Namen des Favoriten in die Betreffzeile ein. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, sobald Sie mit der Eingabe beginnen.", + "**Jouer playlist**: commande de type message permettant de lancer une playlist, il suffit dans le titre de mettre le nom de la playlist. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper.": "**Playlist abspielen**: Ein Befehl vom Typ „Nachricht“, mit dem eine Playlist gestartet werden kann. Geben Sie dazu einfach den Namen der Playlist in die Betreffzeile ein. In einem Szenario wird automatisch eine Liste mit möglichen Optionen angezeigt, sobald Sie mit der Eingabe beginnen.", + "**Jouer une radio mp3**: permet de lire une radio mp3 via une URL (par exemple depuis internet). Vous devez mettre un titre dans la zone *Titre* et l'url (format http(s)://...mp3) dans la zone *Message*.": "**MP3-Radio abspielen**: Ermöglicht die Wiedergabe eines MP3-Radios über eine URL (z. B. aus dem Internet). Sie müssen einen Titel in das Feld *Titel* und die URL (im Format http(s)://...mp3) in das Feld *Nachricht* eingeben.", + "**Jouer une radio**: commande de type message permettant de lancer une radio, il suffit dans le titre de mettre le nom de la radio *(ATTENTION : celle ci doit être dans les radios favorites)*. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper. Ne fonctionne plus sur les modèles \"S2\", il est normal d'avoir une liste vide sur tous les modèles utilisant l'app Sonos S2.": "**Radio abspielen**: Ein Befehl vom Typ „Nachricht“, mit dem Sie ein Radio starten können. Geben Sie dazu einfach den Namen des Radios in den Titel ein *(ACHTUNG: Das Radio muss zu den Favoriten gehören)*. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, sobald Sie mit der Eingabe beginnen. Funktioniert nicht mehr auf den „S2“-Modellen; es ist normal, dass bei allen Modellen, die die Sonos S2-App verwenden, eine leere Liste angezeigt wird.", + "**Lecture**: passer en lecture.": "**Wiedergabe**: In den Wiedergabemodus wechseln.", + "**Led on** et **Led off**: Active et désactive la led, le voyant d'état": "**LED ein** und **LED aus**: Schaltet die LED, die Statusanzeige, ein bzw. aus", + "**Led statut**: indique si le voyant d'état est allumé ou non. Cette info n'est mise à jour qu'une fois par minute dans le cas où elle est modifiée hors Jeedom": "**Status-LED**: Zeigt an, ob die Status-LED leuchtet oder nicht. Diese Information wird nur einmal pro Minute aktualisiert, sofern sie außerhalb von Jeedom geändert wird.", + "**Loudness statut**, **Loudness on**, **Loudness off** contrôle le loudness": "**Loudness-Status**, **Loudness ein**, **Loudness aus** – steuert die Lautstärke", + "**Mic statut** qui indique si le micro est activé ou non sur les Sonos équipé d'un micro": "**Mikrofonstatus**, der anzeigt, ob das Mikrofon bei Sonos-Geräten mit Mikrofon aktiviert ist oder nicht", + "**Mode de lecture** donnant l'état actuel qui sera une des valeurs citées ci-dessus.": "**Lesemodus**, der den aktuellen Status angibt, der einer der oben genannten Werte sein wird.", + "**Mode fête** permet de grouper tous les Sonos ensemble": "Mit dem **Party-Modus** lassen sich alle Sonos-Geräte zu einer Gruppe zusammenfassen", + "**Mot de passe du partage**: mot de passe du partage.": "**Freigabepasswort**: Passwort für die Freigabe.", + "**Muet statut**: indique si on est en mode muet ou non.": "**Stummschaltungsstatus**: Zeigt an, ob sich das Gerät im Stummschaltungsmodus befindet oder nicht.", + "**Muet**: Active le mode muet.": "**Stumm**: Schaltet den Stummschaltungsmodus ein.", + "**Nom du Sonos**: nom de votre équipement Sonos.": "**Sonos-Name**: Name Ihres Sonos-Geräts.", + "**Nom du groupe** dans le cas où l'équipement est groupé, donne le nom du groupe.": "**Gruppenname**: Wenn das Gerät einer Gruppe zugeordnet ist, wird hier der Name der Gruppe angegeben.", + "**Nom d’utilisateur du partage**: nom d’utilisateur pour accéder au partage.": "**Benutzername für die Freigabe**: Benutzername für den Zugriff auf die Freigabe.", + "**Non Muet**: Désactive le mode muet.": "**Stummschaltung aufheben**: Deaktiviert die Stummschaltung.", + "**Objet parent**: indique l’objet parent auquel appartient l’équipement.": "**Übergeordnetes Objekt**: Gibt das übergeordnete Objekt an, zu dem das Gerät gehört.", + "**Partage**: Configurez ici le nom d'hôte de la machine (ou son IP), le nom du partage (sans le chemin, sans '/') et le chemin vers le dossier.": "**Freigabe**: Konfigurieren Sie hier den Hostnamen des Rechners (oder dessen IP-Adresse), den Namen der Freigabe (ohne Pfad, ohne „/“) und den Pfad zum Ordner.", + "**Pause**: mettre en pause.": "**Pause**: Anhalten.", + "**Piste**: nom de la piste en cours de lecture.": "**Titel**: Name des gerade abgespielten Titels.", + "**Précédent**: piste précédente.": "**Zurück**: Vorheriger Titel.", + "**Quitter le groupe**: permet de quitter le groupe.": "**Gruppe verlassen**: Hiermit können Sie die Gruppe verlassen.", + "**Rejoindre un groupe**: permet de rejoindre le groupe du haut-parleur (un Sonos) donné (pour associer 2 Sonos par exemple). Il faut mettre le nom de la pièce du sonos à rejoindre. Cela peut-être n'importe quel membre d'un groupe existant, cela ne doit pas nécessairement être le coordinateur du groupe, ou un Sonos isolé. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper.": "**Einer Gruppe beitreten**: Ermöglicht es, der Gruppe des angegebenen Lautsprechers (eines Sonos-Geräts) beizutreten (um beispielsweise zwei Sonos-Geräte miteinander zu verbinden). Geben Sie den Raumnamen des Sonos-Geräts ein, dem Sie beitreten möchten. Dies kann jedes beliebige Mitglied einer bestehenden Gruppe sein; es muss nicht unbedingt der Gruppenkoordinator oder ein einzelnes Sonos-Gerät sein. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, sobald Sie mit der Eingabe beginnen.", + "**Répéter statut**: indique si on est en mode répété ou non.": "**Status wiederholen**: Gibt an, ob sich das System im Wiederholungsmodus befindet oder nicht.", + "**Répéter**: inverse le statut du mode \"répéter\".": "**Wiederholen**: Schaltet den Status des Modus „Wiederholen“ um.", + "**Statut de lecture** qui donne la valeur \"brut\" du statut de lecture: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; plus adapté pour les scénarios.": "**Wiedergabestatus**, der den „Rohwert“ des Wiedergabestatus angibt: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; eignet sich besser für Szenarien.", + "**Statut**: statut de lecteur traduit dans la langue configurée sous Jeedom. Par exemple: *Lecture*, *Pause*, *Arrêté*.": "**Status**: Status des Players, übersetzt in die unter Jeedom konfigurierte Sprache. Zum Beispiel: *Wiedergabe*, *Pause*, *Gestoppt*.", + "**Stop**: arrêter la lecture.": "**Stopp**: Wiedergabe anhalten.", + "**Suivant**: piste suivante.": "**Weiter**: nächster Titel.", + "**TV**: pour basculer sur l'entrée *TV* sur les équipements compatibles": "**TV**: Um bei kompatiblen Geräten auf den Eingang *TV* umzuschalten", + "**Transition de volume** permet d'effectuer des transitions de niveau de volume directement géré par l'enceinte Sonos, ce n'est pas le plugin qui s'en charge et donc ce n'est pas bloquant mais les délais ne sont pas configurable puisque défini par Sonos. Le type de transition et le volume cible doivent être choisi lors de l'exécution de la commande. Il existe 3 modes:": "**Lautstärkenübergang** ermöglicht Lautstärkenübergänge, die direkt vom Sonos-Lautsprecher verwaltet werden. Das Plugin übernimmt diese Aufgabe nicht, sodass es zu keinen Verzögerungen kommt. Die Übergangszeiten sind jedoch nicht konfigurierbar, da sie von Sonos festgelegt werden. Die Art des Übergangs und die Ziellautstärke müssen bei der Ausführung des Befehls ausgewählt werden. Es gibt 3 Modi:", + "**Visible**: le rend visible sur le dashboard.": "**Sichtbar**: Macht es auf dem Dashboard sichtbar.", + "**Volume statut**: niveau du volume (en %)": "**Lautstärkestatus**: Lautstärkepegel (in %)", + "**Volume**: modifier le volume *(de 0 à 100)*": "**Lautstärke**: Lautstärke ändern *(von 0 bis 100)*", + "*ALARM*: initialise le volume à 0, pause d'environ 30 secondes et ensuite augmente jusqu'au volume demandé à une vitesse de 2.5 par seconde (une transition *ALARM* de 0% à 10% prendra 4s)": "*ALARM*: Setzt die Lautstärke auf 0, hält etwa 30 Sekunden lang an und erhöht sie anschließend mit einer Geschwindigkeit von 2,5 pro Sekunde auf die gewünschte Lautstärke (ein *ALARM*-Übergang von 0 % auf 10 % dauert 4 Sekunden)", + "*AUTOPLAY*: initialise le volume à 0 et augmente rapidement jusqu'au volume demandé à une vitesse de 50 par seconde (un transition *AUTOPLAY* de 0% à 50% prendra 1s)": "*AUTOPLAY*: Setzt die Lautstärke auf 0 und erhöht sie schnell auf die gewünschte Lautstärke mit einer Geschwindigkeit von 50 pro Sekunde (ein *AUTOPLAY*-Übergang von 0 % auf 50 % dauert 1 s)", + "*Aléatoire et répéter le morceau*.": "*Zufällige Wiedergabe und Titel wiederholen*.", + "*Aléatoire et répéter tout*,": "*Zufällig und alles wiederholen*,", + "*Aléatoire sans répétition*,": "*Zufällig ohne Wiederholung*,", + "*LINEAR*: transition linéaire depuis le volume actuel vers le volume cible (augmentation ou diminution), la vitesse est de 1.25 par seconde (une transition *LINEAR* de 50% à 30% prendra 16s)": "*LINEAR*: Linearer Übergang von der aktuellen Lautstärke zur Ziellautstärke (Ansteigen oder Abfallen), die Geschwindigkeit beträgt 1,25 pro Sekunde (ein *LINEAR*-Übergang von 50 % auf 30 % dauert 16 Sekunden)", + "*Normal* (répétition off, aléatoire off),": "*Normal* (Wiederholung aus, Zufallswiedergabe aus),", + "*Répéter le morceau* (aléatoire off),": "*Titel wiederholen* (Zufallswiedergabe aus),", + "*Répéter tout* (aléatoire off),": "*Alles wiederholen* (Zufallswiedergabe aus),", + ". Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet. **Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut**": ". Es sollte auch möglich sein, die IP-Adresse eines Ihrer Lautsprecher direkt einzugeben, um von diesem aus die anderen zu erkennen, es wird jedoch empfohlen, das gesamte Netzwerk zu konfigurieren. **Achtung: Nehmen Sie keine Konfigurationen vor, wenn Sie sich in diesem Bereich nicht auskennen; testen Sie zunächst die Standardkonfiguration.**", + ">**IMPORTANT**": ">**WICHTIG**", + ">Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": ">Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich ausschließlich um eine Aktualisierung der Dokumentation, der Übersetzung oder des Textes handelt.", + "Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**.": "Anpassung der Text-to-Speech-Funktion (TTS): **Die Konfiguration der SAMBA-Freigabe muss angepasst werden**.", + "Ainsi que des informations sur votre Sonos: *Modèle*, *Versions*, *Numéro de série*, *Identifiant*, *Adresse MAC* et *Adresse IP*.": "Sowie Informationen zu Ihrem Sonos-Gerät: *Modell*, *Versionen*, *Seriennummer*, *ID*, *MAC-Adresse* und *IP-Adresse*.", + "Ajout Ikea Symfonisk Floor Lamp": "Ikea Symfonisk Stehlampe hinzugefügt", + "Ajout Sonos Beam Gen 2": "Sonos Beam Gen 2 hinzugefügt", + "Ajout Sonos Era": "Sonos-Ära hinzugefügt", + "Ajout Sonos Move 2": "Sonos Move 2 hinzugefügt", + "Ajout Sonos Roam": "Hinzufügen von Sonos Roam", + "Ajout Symfonisk Cadre": "Symfonisk Framework hinzufügen", + "Ajout d'une commande **Jouer une radio mp3** pour lire une radio mp3 directement via une URL (accessible sur internet par exemple)": "Hinzufügen eines Befehls **MP3-Radio abspielen**, um ein MP3-Radio direkt über eine URL (z. B. im Internet verfügbar) abzuspielen", + "Ajout d'une commande **Statut de lecture** qui donne la valeur \"brut\" de l'état de lecture (la commande existante **Statut** donne une valeur traduite en fonction de la langue configurée dans Jeedom)": "Hinzufügen eines Befehls **Lesestatus**, der den „rohen“ Wert des Lesestatus angibt (der bereits vorhandene Befehl **Status** gibt einen Wert aus, der entsprechend der in Jeedom konfigurierten Sprache übersetzt wurde)", + "Ajout d'une commande **Transition de volume** qui est très intéressante pour gérer les transitions de niveau de volume. 3 modes possible: *LINEAR*, *ALARM*, *AUTOPLAY*. Voir documentation pour plus d'information.": "Es wurde ein Befehl namens **Lautstärkenübergang** hinzugefügt, der für die Steuerung von Lautstärkenübergängen sehr nützlich ist. Es stehen 3 Modi zur Verfügung: *LINEAR*, *ALARM*, *AUTOPLAY*. Weitere Informationen finden Sie in der Dokumentation.", + "Ajout d'une commande action **TV** pour basculer sur l'entrée *TV* sur les équipements compatibles": "Hinzufügen eines Befehls „**TV**“, um bei kompatiblen Geräten auf den Eingang *TV* umzuschalten", + "Ajout d'une commande info **Batterie** sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "Hinzufügen eines Info-Befehls **Batterie** bei Sonos-Geräten mit Batterie, der den Ladezustand der Batterie in Prozent anzeigt", + "Ajout d'une commande info **Chargement** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "Hinzufügen eines Info-Befehls **Ladevorgang** auf Sonos-Geräten mit Batterie, der anzeigt, ob gerade geladen wird oder nicht", + "Ajout d'une commande info **Mode de lecture** et action **Choisir mode de lecture** qui permet de sélectionner le mode de lecture parmi les possibilités suivantes: *Normal*, *Répéter tout*, *Aléatoire et répéter tout*, *Aléatoire sans répétition*, *Répéter le morceau*, *Aléatoire et répéter le morceau*": "Hinzufügen eines Befehls „**Wiedergabemodus**“ und einer Aktion „**Wiedergabemodus auswählen**“, mit der der Wiedergabemodus aus den folgenden Optionen ausgewählt werden kann: *Normal*, *Alles wiederholen*, *Zufällig und alles wiederholen*, *Zufällig ohne Wiederholung*, *Titel wiederholen*, *Zufällig und Titel wiederholen*", + "Ajout d'une commande info **Prochaine alarme** sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "Hinzufügen eines Befehls „**Nächster Alarm**“ auf jedem Sonos-Gerät, der das Datum des nächsten auf diesem Lautsprecher programmierten Alarms angibt", + "Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible)": "Hinzufügen eines Befehls „Info **Sender**“, der den aktuell wiedergegebenen Radiosender anzeigt (sofern diese Information verfügbar ist)", + "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Hinzufügen einer optionalen Konfiguration, um – nur falls erforderlich – das Subnetz (VLAN) anzugeben, in dem sich Ihre Sonos-Lautsprecher befinden, falls dieses vom Subnetz (VLAN) abweicht, in dem sich Jeedom befindet", + "Ajout de l'image pour *Ikea Table Lamp*": "Bild für *Ikea Tischlampe* hinzugefügt", + "Ajout de la Sonos Five": "Hinzufügung der Sonos Five", + "Ajout de la Sonos Ray": "Sonos Ray hinzugefügt", + "Ajout de la commande **Mic statut** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "Hinzufügen des Befehls **Mikrofonstatus**, der anzeigt, ob das Mikrofon bei Sonos-Geräten mit Mikrofon aktiviert ist oder nicht", + "Ajout de la commande **Mode fête** qui permet de grouper tous les Sonos ensemble": "Hinzufügung der Steuerung **Party-Modus**, mit der alle Sonos-Geräte zusammengefasst werden können", + "Ajout de la compatibilité avec la nouvelle Sonos One": "Kompatibilität mit dem neuen Sonos One hinzugefügt", + "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Kompatibilität mit dem neuen SYMFONISK-Lautsprecher hinzugefügt", + "Ajout de la gestion des favoris sonos": "Verwaltung der Sonos-Favoriten hinzugefügt", + "Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix...": "Es wurde die Möglichkeit hinzugefügt, die vorkonfigurierte Kachel zu deaktivieren: Sie können diese dann nach Belieben konfigurieren, indem Sie die Widgets des Kerns oder Ihre eigenen Widgets verwenden und die gewünschten Befehle ein- oder ausblenden...", + "Ajout de picotts pour la génération du TTS en local": "Zugabe von Picotts zur lokalen TTS-Erzeugung", + "Ajout des commandes **Aigus** (action/curseur) et **Aigus statut** qui gèrent les aigus selon une valeur comprise entre -10 et 10": "Hinzufügen der Befehle **Höhen** (Aktion/Schieberegler) und **Höhenstatus**, die die Höhen anhand eines Werts zwischen -10 und 10 regeln", + "Ajout des commandes **Augmenter le volume** et **Diminuer le volume** de 1%": "Hinzufügen der Befehle **Lautstärke erhöhen** und **Lautstärke verringern** um 1 %", + "Ajout des commandes **Balance** (action/curseur) et **Balance statut** qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite)": "Hinzufügen der Befehle **Waage** (Aktion/Schieberegler) und **Waagenstatus**, die die Waage anhand eines Werts zwischen -100 (ganz links) und 100 (ganz rechts) steuern", + "Ajout des commandes **Commandes tactiles statut**, **Commandes tactiles on**, **Commandes tactiles off**": "Hinzufügen der Befehle **Touch-Befehle „Status“**, **Touch-Befehle „Ein“**, **Touch-Befehle „Aus“**", + "Ajout des commandes **Fondu enchaîné statut**, **Fondu enchaîné on**, **Fondu enchaîné off**": "Hinzufügen der Befehle **Status-Überblendung**, **Überblendung ein**, **Überblendung aus**", + "Ajout des commandes **Graves** (action/curseur) et **Graves statut** qui gère les graves selon une valeur comprise entre -10 et 10": "Hinzufügen der Befehle **Bässe** (Aktion/Schieberegler) und **Bässe-Status**, die die Bässe anhand eines Werts zwischen -10 und 10 steuern", + "Ajout des commandes **Groupe statut** (indique si l'équipement est groupé ou non) et **Nom du groupe** dans le cas où l'équipement est groupé": "Hinzufügen der Befehle **Statusgruppe** (gibt an, ob das Gerät einer Gruppe zugeordnet ist oder nicht) und **Gruppenname**, falls das Gerät einer Gruppe zugeordnet ist", + "Ajout des commandes **Led on**, **Led off** et **Led statut** pour contrôler le voyant d'état": "Hinzufügen der Befehle **LED ein**, **LED aus** und **LED-Status** zur Steuerung der Status-LED", + "Ajout des commandes **Loudness statut**, **Loudness on**, **Loudness off**": "Hinzufügen der Befehle **Loudness-Status**, **Loudness ein**, **Loudness aus**", + "Ajout du tag \"Compatibilité V4\"": "Hinzufügen des Tags „V4-Kompatibilität“", + "Ajout d’une commande \"Entrée de ligne\"": "Hinzufügen eines Befehls „Zeilen-Eingabe“", + "Amélioration de la reprise suite à un TTS": "Verbesserung der Erholung von TTS", + "Amélioration du script d'installation des dépendances": "Verbessertes Skript zur Installation von Abhängigkeiten", + "Amélioration du script d'installation des dépendances (pourra permettre de corriger dans certain cas les soucis de TTS)": "Verbesserung des Skripts zur Installation der Abhängigkeiten (kann in bestimmten Fällen dazu beitragen, TTS-Probleme zu beheben)", + "Attention": "Aufmerksamkeit", + "Certaines fonctionnalités ont dû être retirées": "Einige Funktionen mussten entfernt werden", + "Ces commandes agissent toujours sur l'équipement correspondant.": "Diese Befehle wirken sich immer auf das entsprechende Gerät aus.", + "Ces commandes indiqueront et contrôleront la lecture en cours sur l'équipement ou sur le groupe si celui-ci est groupé et cela de façon transparente, vous ne devez pas vous préoccuper de savoir si l'équipement est groupé ou pas pour les utiliser.": "Diese Befehle zeigen die aktuell auf dem Gerät oder der Gruppe (sofern diese gruppiert ist) laufende Wiedergabe an und steuern sie – und zwar auf transparente Weise. Sie müssen sich keine Gedanken darüber machen, ob das Gerät gruppiert ist oder nicht, um diese Befehle zu verwenden.", + "Ces commandes vont toujours contrôler l'équipement correspondant, y compris lorsque celui-ci est dans un groupe.": "Diese Befehle steuern stets das entsprechende Gerät, auch wenn dieses einer Gruppe angehört.", + "Champ 1: 192.168.xxx.yyy": "Feld 1: 192.168.xxx.yyy", + "Champ 2: *Jeedom*": "Feld 2: *Jeedom*", + "Champ 3: *TTS*": "Feld 3: *TTS*", + "Changelog Sonos controller": "Changelog Sonos Controller", + "Commandes de lecture": "Wiedergabesteuerung", + "Commandes de volume & contrôle du Sonos": "Sonos-Lautstärkeregler und -Regler", + "Commandes pour gérer les groupes": "Befehle zum Verwalten von Gruppen", + "Compatible Debian 11 et 12!": "Kompatibel mit Debian 11 und 12!", + "Compatible PHP7 uniquement": "Nur kompatibles PHP7", + "Configuration des équipements": "Gerätekonfiguration", + "Configuration du plugin": "Plugin Konfiguration", + "Correction d'un bug mineur sur la commande **Dire**": "Behebung eines kleinen Fehlers beim Befehl **Dire**", + "Correction d'un bug sur le TTS": "Fehler im TTS behoben", + "Correction de bug si un sonos n'est pas joignable": "Fehlerbehebung, wenn ein Soundsystem nicht erreicht werden kann", + "Correction de bugs dans le cas où les sonos ont été ajoutés manuellement": "Fehler behoben, falls die Soundsysteme manuell hinzugefügt wurden", + "Correction de la langue avec PicoTTS": "Zungenkorrektur mit Picotts", + "Correction de nombreux bugs": "Behebung zahlreicher Fehler", + "Correction du bouton play/pause lors de la mise à jour du widget.": "Korrektur der Wiedergabe-/Pause-Schaltfläche beim Aktualisieren des Widgets.", + "Corrections des images": "Bildkorrekturen", + "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Korrekturen für die Meldung „Subscription renewal failed“ und den Verlust der Informationsübermittlung", + "Côté Bibliothèque Sonos (appli PC)": "Sonos-Bibliothek (PC-App)", + "Côté NAS, la config suivante doit être effectuée:": "Was das NAS betrifft, muss folgende Konfiguration vorgenommen werden:", + "Côté Plugin Sonos, la config :": "Was das Sonos-Plugin betrifft, so sieht die Konfiguration wie folgt aus:", + "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple ": "Falls sich Ihre Jeedom-Lautsprecher nicht im selben Subnetz wie Jeedom befinden, können Sie dieses vorzugsweise im CIDR-Format konfigurieren, zum Beispiel ", + "Exemple de configuration": "Konfigurationsbeispiel", + "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements.": "Es ist außerdem möglich, über das Geräte-Panel die (Neu-)Synchronisierung von Geräten, Favoriten und Wiedergabelisten anzufordern, ohne den Daemon neu zu starten.", + "Il faut absolument mettre un mot de passe pour que cette procédure fonctionne.": "Damit dieser Vorgang funktioniert, muss unbedingt ein Passwort festgelegt werden.", + "Il faut aussi absolument un sous-répertoire pour que le fichier vocal soit correctement créé.": "Außerdem ist unbedingt ein Unterverzeichnis erforderlich, damit die Sprachdatei korrekt erstellt wird.", + "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon.": "Es muss kein Erkennungsvorgang mehr manuell gestartet werden, und es ist nicht mehr erforderlich (und auch nicht möglich), Geräte manuell hinzuzufügen. Das Plugin erkennt Ihre Sonos-Geräte automatisch und legt bei jedem Start des Daemons die entsprechenden Geräte an.", + "Il ne faut surtout pas d'accent dans le nom du partage ou le dossier, d'espace ou de caractères spéciaux.": "Der Name der Freigabe oder des Ordners darf auf keinen Fall Akzente, Leerzeichen oder Sonderzeichen enthalten.", + "Je recommande d'utiliser cette commande-ci dans un scénario au lieu de **Répéter** & **Aléatoire** afin d'arriver dans la configuration désirée même si toutes agissent sur les mêmes paramètres. Cette commande est par contre le seul moyen de passer en mode *Répéter le morceau* ou *Aléatoire et répéter le morceau*.": "Ich empfehle, diesen Befehl in einem Szenario anstelle von **Wiederholen** und **Zufällig** zu verwenden, um die gewünschte Konfiguration zu erreichen, auch wenn alle Befehle auf dieselben Parameter wirken. Dieser Befehl ist jedoch die einzige Möglichkeit, in den Modus *Titel wiederholen* oder *Zufällig und Titel wiederholen* zu wechseln.", + "La configuration des équipements Sonos est accessible à partir du menu Plugins puis multimédia.": "Die Konfiguration der Sonos-Geräte ist über das Menü „Plugins“ und anschließend „Multimedia“ zugänglich.", + "La configuration est très simple, après téléchargement du plugin, il vous suffit de l’activer, d'installer les dépendances et de démarrer le démon.": "Die Konfiguration ist ganz einfach: Nachdem Sie das Plugin heruntergeladen haben, müssen Sie es nur noch aktivieren, die Abhängigkeiten installieren und den Daemon starten.", + "La création du fichier audio est géré par le core de Jeedom: la langue sera celle configurée dans Jeedom et le moteur TTS utilisé peut également être sélectionné dans la configuration Jeedom.": "Die Erstellung der Audiodatei wird vom Jeedom-Core verwaltet: Als Sprache wird die in Jeedom konfigurierte Sprache verwendet, und die verwendete TTS-Engine kann ebenfalls in der Jeedom-Konfiguration ausgewählt werden.", + "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée.": "Die vorkonfigurierte Kachel berücksichtigt weder den Sichtbarkeitsstatus der Befehle noch die erweiterten Anzeigeoptionen; ihre Konfiguration kann nicht geändert werden.", + "Le TTS (text-to-speech) vers le Sonos nécessite d’avoir un partage SAMBA sur le réseau (imposé par Sonos, pas moyen de faire autrement). Il faut vous donc un NAS ou équivalent sur le réseau. La configuration est assez simple il faut mettre le nom ou l’ip du NAS (attention à bien mettre la même chose que ce qui est déclaré sur Sonos) et le chemin vers le dossier qui doit contenir les fichiers audio ainsi que le nom d’utilisateur et le mot de passe (attention l’utilisateur doit avoir les droits en écriture)": "Für die TTS-Funktion (Text-to-Speech) auf Sonos ist eine SAMBA-Freigabe im Netzwerk erforderlich (von Sonos vorgeschrieben, es gibt keine Alternative). Sie benötigen daher ein NAS oder ein ähnliches Gerät im Netzwerk. Die Konfiguration ist recht einfach: Sie müssen den Namen oder die IP-Adresse des NAS eingeben (achten Sie darauf, genau das anzugeben, was bei Sonos hinterlegt ist) sowie den Pfad zu dem Ordner, der die Audiodateien enthalten soll, und den Benutzernamen sowie das Passwort (Achtung: Der Benutzer muss über Schreibrechte verfügen).", + "Le panel": "Das Panel", + "Le plugin Sonos met aussi à disposition un panel qui rassemble tous vos Sonos. Disponible à partir du menu Accueil → Sonos Controller :": "Das Sonos-Plugin stellt außerdem ein Bedienfeld zur Verfügung, in dem alle Ihre Sonos-Geräte zusammengefasst sind. Erreichbar über das Menü „Startseite“ → „Sonos Controller“:", + "Le plugin Sonos permet de piloter les Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Il va vous permettre de voir l’état du/des Sonos et d’effectuer des actions (lecture, pause, suivant, précédent, volume, choix d’une playlist…).": "Mit dem Sonos-Plugin können Sie die Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk usw. steuern. Damit können Sie den Status der Sonos-Geräte einsehen und verschiedene Aktionen ausführen (Wiedergabe, Pause, nächster Titel, vorheriger Titel, Lautstärke, Auswahl einer Wiedergabeliste usw.).", + "Le plugin va rechercher les Sonos sur votre réseau et créer les équipements automatiquement. De plus, s’il y a une correspondance entre les objets Jeedom et les pièces du Sonos, Jeedom affectera automatiquement les Sonos dans les bonnes pièces.": "Das Plugin sucht nach Sonos-Geräten in Ihrem Netzwerk und legt die Geräte automatisch an. Wenn zudem eine Übereinstimmung zwischen den Jeedom-Objekten und den Sonos-Räumen besteht, ordnet Jeedom die Sonos-Geräte automatisch den richtigen Räumen zu.", + "Les commandes": "Die Aufträge", + "Les commandes infos seront mises à jour en quasi temps réel (délai de quelques secondes maximum normalement) mais l'image de l'album en cours de lecture peut mettre un peu plus de temps à s'afficher sur le widget lors d'un changement de piste, ceci est parfaitement normal et indépendant du plugin: il doit récupérer l'image depuis une source externe (sur un Sonos ou sur internet) et cela prend parfois plusieurs secondes (en principe maximum une dizaine de secondes).": "Die Informationsanzeigen werden nahezu in Echtzeit aktualisiert (normalerweise mit einer Verzögerung von maximal einigen Sekunden), doch die Anzeige des Covers des aktuell wiedergegebenen Albums kann bei einem Titelwechsel etwas länger dauern, bis es im Widget erscheint. Dies ist völlig normal und hat nichts mit dem Plugin zu tun: Es muss das Bild von einer externen Quelle (auf einem Sonos-Gerät oder aus dem Internet) abrufen, was manchmal mehrere Sekunden dauern kann (in der Regel maximal etwa zehn Sekunden).", + "Les messages trop longs ne peuvent être transmis en TTS (la limite dépend du fournisseur de TTS, en général environ 100 caractères).": "Zu lange Nachrichten können nicht per TTS übertragen werden (die Obergrenze hängt vom TTS-Anbieter ab, in der Regel liegen sie bei etwa 100 Zeichen).", + "Les playlists et les favoris doivent être créés via l'app Sonos (sur mobile ou sur ordi) ensuite il faut faire une synchronisation pour mettre à jour les équipements et pouvoir les utiliser dans un scénario.": "Playlists und Favoriten müssen über die Sonos-App (auf dem Handy oder am Computer) erstellt werden. Anschließend muss eine Synchronisierung durchgeführt werden, um die Geräte zu aktualisieren und sie in einem Szenario nutzen zu können.", + "Lors de l'utilisation du TTS (commande **Dire**), le plugin va effectuer les actions suivantes:": "Bei Verwendung von TTS (Befehl **Dire**) führt das Plugin folgende Aktionen aus:", + "Mise à jour de la documentation": "Aktualisierung der Dokumentation", + "Mise à jour de la librairie de communication avec les Sonos": "Aktualisierung der Kommunikationsbibliothek für Sonos", + "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple)": "Aktualisierung der Steuerungsinformationen in (nahezu) Echtzeit (Verzögerung von 0,5 s bis maximal einigen Sekunden), kein minutenspezifischer Cron-Job mehr, auch wenn eine Änderung außerhalb von Jeedom vorgenommen wird (z. B. über die Sonos-App)", + "Mise à jour immediate du volume en cas de changement par Jeedom, merci @Domochip": "Sofortige Volumenaktualisierung bei Änderung durch Jeedom, danke @Domochip", + "Mise à jour liste des commandes pour Jeedom v4.3": "Befehlsliste für Jeedom v4.3 aktualisieren", + "Modification du volume sur la valeur choisie lors de l'utilisation de la commande (uniquement sur l'équipement, pas sur tout le groupe)": "Anpassung der Lautstärke auf den bei Verwendung des Befehls gewählten Wert (nur für das jeweilige Gerät, nicht für die gesamte Gruppe)", + "Nettoyage des accents dans les noms de partage (non supportés par le plugin)": "Entfernen von Akzenten in Freigabenamen (vom Plugin nicht unterstützt)", + "Nom d’utilisateur (*jeedom* dans l'exemple) et son mot de passe…​": "Benutzername (*jeedom* im Beispiel) und Passwort…​", + "Nouvelle présentation de la liste des objets": "Neue Darstellung der Objektliste", + "Nécessite Jeedom 4.4.8": "Erfordert Jeedom 4.4.8", + "Optimisation : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant.": "Optimierung: Keine Speicherverluste mehr beim Daemon, und er verbraucht weniger als zuvor.", + "Optimisation de l'affichage de la pochette de la lecture en cours": "Die Anzeige des aktuell wiedergegebenen Covers wurde optimiert", + "Optimisation du chargement des playlists": "Optimiertes Laden von Wiedergabelisten", + "Optimisation du code en cas de Sonos non connecté": "Codeoptimierung bei nicht verbundenem Sonos", + "Optimisation sur la lecture des favoris": "Optimierung der Lesefavoriten", + "Optimisations": "Optimierungen", + "Optimisations V4.2": "V4.2-Optimierungen", + "Optimisations globales": "Globale Optimierungen", + "Partage :": "Teilen:", + "Plugin Sonos": "Sonos Plugin", + "Pour avoir le panel il faut l’avoir activé dans la configuration du plugin.": "Um das Panel nutzen zu können, muss es in den Plugin-Einstellungen aktiviert werden.", + "Prise en charge de l'enceinte lampe Ikea SYMFONISK": "Unterstützung für Ikea SYMFONISK Lampenlautsprecher", + "Prise en charge de l'enceinte étagere Ikea SYMFONISK": "Unterstützung für Ikea SYMFONISK Regallautsprecher", + "Prise en charge de la nouvelle api Sonos": "Unterstützung für die neue Sonos-API", + "Prise en charge des Sonos One et Playbase": "Unterstützung für Sonos One und Playbase", + "Prise en charge des sonos beam et One": "Unterstützung für Beam- und One-Soundsysteme", + "Prise en charge des sonos one gen2": "Unterstützung für ein Gen2-Sonos", + "Prise en charge du Sonos ARC": "Sonos ARC-Unterstützung", + "Prise en charge du Sonos Move": "Unterstützung für Sonos Move", + "Prise en charge du Sonos One S22": "Unterstützung für Sonos One S22", + "Prise en charge du Sonos port": "Sonos Port-Unterstützung", + "Préparation pour Jeedom 4.4": "Vorbereitung auf Jeedom 4.4", + "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation). Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur. Le volume est, lui, toujours contrôlé par enceinte.": "Überarbeitung der Gruppenverwaltung (die bisherigen Befehle werden entfernt und neue hinzugefügt, siehe Dokumentation). Es ist möglich, einer Gruppe beizutreten oder sie zu verlassen sowie die Wiedergabe der Gruppe von jedem Gerät der Gruppe aus zu steuern, ohne darauf achten zu müssen, welches Gerät als Controller fungiert. Die Lautstärke wird weiterhin pro Lautsprecher geregelt.", + "Refonte importante du plugin : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "Umfassende Überarbeitung des Plugins: Ein Großteil des Plugins wurde neu geschrieben, darunter die gesamte Kommunikation mit Sonos (Daemon), und einige Funktionen wurden geändert und funktionieren nicht mehr wie zuvor, insbesondere die Verwaltung von Gruppen;", + "Réecriture complète du plugin": "Vollständiges Umschreiben des Plugins", + "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP)": "Das Plugin wurde fast vollständig überarbeitet; der Daemon wurde komplett in Python (anstelle von PHP) neu geschrieben.", + "Si plus tard vous ajoutez un Sonos, vous pouvez cliquer sur **Synchroniser** dans la page des équipements ou redémarrer le démon.": "Wenn Sie später ein Sonos-Gerät hinzufügen, können Sie auf der Geräteseite auf **Synchronisieren** klicken oder den Daemon neu starten.", + "Support de la nouvelle enceinte SYMFONISK": "Unterstützung für den neuen SYMFONISK-Lautsprecher", + "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom)": "Beseitigung der Abhängigkeit von PicoTTS (das Plugin nutzt die globale TTS-Engine von Jeedom)", + "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Stündliche automatische Synchronisierung zur Korrektur eventueller Abweichungen", + "TTS": "TTS", + "Voir également ": "Siehe auch ", + "Vos équipements Sonos doivent être joignable directement par la machine hébergeant Jeedom (broadcast / multicast possible sur le même réseau) et ils doivent être capable de joindre Jeedom en retour sur le port TCP 1400.": "Ihre Sonos-Geräte müssen direkt von dem Rechner erreichbar sein, auf dem Jeedom läuft (Broadcast/Multicast im selben Netzwerk möglich), und sie müssen im Gegenzug Jeedom über den TCP-Port 1400 erreichen können.", + "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix...": "Sie haben außerdem die Möglichkeit, die vorkonfigurierte Geräte-Kachel zu deaktivieren (Option standardmäßig aktiviert) und in diesem Fall diese Kachel nach Ihren Wünschen zu konfigurieren, indem Sie die Widgets des Core oder Ihre eigenen Widgets verwenden und die Befehle Ihrer Wahl ein- oder ausblenden...", + "Vous retrouvez ici toute la configuration habituelle de votre équipement :": "Hier finden Sie alle üblichen Einstellungsmöglichkeiten für Ihre Geräte:", + "ce sujet sur community": "dieses Thema auf Community", + "forcer la lecture en mode \"Normal\", sans répétition": "erzwingt die Wiedergabe im „Normal“-Modus ohne Wiederholung", + "forcer le mode \"non muet\" (uniquement sur l'équipement, pas sur tout le groupe)": "Modus „Nicht stumm“ erzwingen (nur für das Gerät, nicht für die gesamte Gruppe)", + "génération du fichier audio contenant le message avec le support du core de Jeedom": "Generierung der Audiodatei, die die Nachricht enthält, mit Jeedom-Kernunterstützung", + "l'utilisateur sera *sonos* (dans cet exemple) + mot de passe": "Der Benutzer ist *sonos* (in diesem Beispiel) + Passwort", + "le chemin est : //192.168.xxx.yyy/Jeedom/TTS": "Der Pfad lautet: //192.168.xxx.yyy/Jeedom/TTS", + "le dossier *Jeedom* est partagé et il contient un dossier *TTS*": "Der Ordner *Jeedom* ist freigegeben und enthält einen Ordner *TTS*", + "lecture du message": "Nachricht lesen", + "l’utilisateur *jeedom* a un accès lecture/écriture (nécessaire pour Jeedom).": "Der Benutzer *jeedom* verfügt über Lese-/Schreibzugriff (erforderlich für Jeedom).", + "l’utilisateur *sonos* a un accès en lecture seule (nécessaire pour les Sonos).": "Der Benutzer *sonos* hat Lesezugriff (erforderlich für Sonos).", + "restauration de l'état du Sonos avant la lecture (donc le mode de lecture, muet ou pas, répétition ou pas...) et redémarrage du flux si le Sonos était en cours de lecture": "Wiederherstellen des Zustands des Sonos vor der Wiedergabe (d. h. des Wiedergabemodus, stumm oder nicht, wiederholen oder nicht usw.) und Neustarten des Streams, wenn der Sonos gerade abgespielt hat", + "écriture du fichier sur le partage SAMBA": "Schreiben der Datei auf die SAMBA-Freigabe" +} \ No newline at end of file diff --git a/docs/.translation_memory/en_US.json b/docs/.translation_memory/en_US.json new file mode 100644 index 0000000..53fd318 --- /dev/null +++ b/docs/.translation_memory/en_US.json @@ -0,0 +1,224 @@ +{ + " pour plus de détails": " for more details", + "**Activer**: permet de rendre votre équipement actif.": "**Activate**: Turns your device active.", + "**Aigus** (action/curseur) et **Aigus statut** qui gère la aigus selon une valeur comprise entre -10 et 10": "**Treble** (action/slider) and **Treble Status**, which controls the treble based on a value between -10 and 10", + "**Album**: nom de l’album en cours de lecture.": "**Album**: Name of the album currently playing.", + "**Aléatoire statut**: indique si on est en mode aléatoire ou non.": "**Random status**: Indicates whether the system is in random mode or not.", + "**Aléatoire**: inverse le statut du mode aléatoire.": "**Random**: Toggles the random mode status.", + "**Artiste**: nom de l’artiste en cours de lecture.": "**Artist**: Name of the artist currently playing.", + "**Augmenter le volume**: augmente le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "**Increase Volume**: Increases the volume by 1%; may be useful for integration with other systems or plugins", + "**Balance** (action/curseur) et **Balance statut** qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite) pour les Sonos compatibles": "**Balance** (action/slider) and **Balance Status**, which controls the balance based on a value ranging from -100 (all the way to the left) to 100 (all the way to the right) for compatible Sonos devices", + "**Batterie** sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "**Battery** on Sonos devices equipped with a battery, showing the battery charge percentage", + "**Chargement** sur les Sonos équipés d'une batterie indiquant si la charge est en cours ou non": "**Charging** on battery-powered Sonos devices, indicating whether charging is in progress or not", + "**Choisir mode de lecture** permet de choisir parmi les possibilités suivantes:": "**Select Playback Mode** lets you choose from the following options:", + "**Commandes tactiles on** et **Commandes tactiles off** Active et désactive les boutons physiques ou tactiles sur le Sonos": "**Touch Controls On** and **Touch Controls Off** Makes the physical or touch buttons on the Sonos active or disabled", + "**Commandes tactiles statut** indique si les commandes tactiles sont activées ou pas": "**Touch Controls Status** indicates whether touch commands are enabled or disabled", + "**Diminuer le volume**: diminue le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "**Lower Volume**: lowers the volume by 1%; may be useful for integration with other systems or plugins", + "**Dire**: permet de lire un texte sur le Sonos (voir partie TTS). Dans le titre vous pouvez mettre le volume et dans le message, le message à lire.": "**Speak**: Allows you to have text read aloud on Sonos (see the TTS section). In the title, you can set the volume, and in the message field, enter the text to be read.", + "**Entrée audio analogique**: pour basculer sur l'*Entrée audio analogique* (*Line-in*) sur les équipements compatibles": "**Analog Audio Input**: to switch to the *Analog Audio Input* (*Line-in*) on compatible devices", + "**Fondu enchaîné statut**, **Fondu enchaîné on**, **Fondu enchaîné off** pour contrôler et activer ou non le *Fondu enchaîné*": "**Crossfade Status**, **Crossfade On**, **Crossfade Off** to control and enable or disable *Crossfade*", + "**Graves** (action/curseur) et **Graves statut** qui gère les graves selon une valeur comprise entre -10 et 10": "**Bass** (action/slider) and **Bass Level**, which controls the bass based on a value between -10 and 10", + "**Groupe statut**: indique si l'équipement est groupé ou non.": "**Group status**: Indicates whether the device is grouped or not.", + "**Hint**": "**Hint**", + "**IMPORTANT NE MARCHE QUE AVEC PHP7, VOIR PAGE SANTE DE JEEDOM POUR VOTRE VERSION**": "**IMPORTANT: ONLY WORKS WITH PHP 7. CHECK THE JEEDOM STATUS PAGE FOR YOUR VERSION**", + "**IMPORTANT**": "**IMPORTANT**", + "**Image**: lien vers l’image de l’album.": "**Image**: link to the image in the album.", + "**Important**": "**Important**", + "**Jouer favoris**: commande de type message permettant de lancer un favoris, il suffit dans le titre de mettre le nom du favori. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper.": "**Play Favorites**: A message-based command that lets you launch a favorite; simply type the name of the favorite in the subject line. In a scenario, a list of options will automatically appear as you start typing.", + "**Jouer playlist**: commande de type message permettant de lancer une playlist, il suffit dans le titre de mettre le nom de la playlist. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper.": "**Play playlist**: a message-based command that lets you start a playlist; simply type the playlist name in the title. In a scenario, a list of options will automatically appear when you start typing.", + "**Jouer une radio mp3**: permet de lire une radio mp3 via une URL (par exemple depuis internet). Vous devez mettre un titre dans la zone *Titre* et l'url (format http(s)://...mp3) dans la zone *Message*.": "**Play an MP3 radio station**: Allows you to play an MP3 radio station via a URL (for example, from the Internet). You must enter a title in the *Title* field and the URL (in the format http(s)://...mp3) in the *Message* field.", + "**Jouer une radio**: commande de type message permettant de lancer une radio, il suffit dans le titre de mettre le nom de la radio *(ATTENTION : celle ci doit être dans les radios favorites)*. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper. Ne fonctionne plus sur les modèles \"S2\", il est normal d'avoir une liste vide sur tous les modèles utilisant l'app Sonos S2.": "**Play a radio station**: a voice command that lets you start a radio station; simply include the station’s name in the title *(NOTE: The station must be in your favorites)*. In a scenario, a list of options will automatically appear as you start typing. This feature no longer works on “S2” models; it’s normal to see an empty list on all models using the Sonos S2 app.", + "**Lecture**: passer en lecture.": "**Playback**: Switch to playback mode.", + "**Led on** et **Led off**: Active et désactive la led, le voyant d'état": "**LED On** and **LED Off**: Makes the LED and the status indicator active and off", + "**Led statut**: indique si le voyant d'état est allumé ou non. Cette info n'est mise à jour qu'une fois par minute dans le cas où elle est modifiée hors Jeedom": "**Status LED**: Indicates whether the status light is on or off. This information is updated only once per minute if it is modified outside of Jeedom.", + "**Loudness statut**, **Loudness on**, **Loudness off** contrôle le loudness": "**Loudness status**, **Loudness on**, **Loudness off** controls the loudness", + "**Mic statut** qui indique si le micro est activé ou non sur les Sonos équipé d'un micro": "**Mic status**, which indicates whether the microphone is enabled or disabled on Sonos devices equipped with a microphone", + "**Mode de lecture** donnant l'état actuel qui sera une des valeurs citées ci-dessus.": "**Read mode** that returns the current status, which will be one of the values listed above.", + "**Mode fête** permet de grouper tous les Sonos ensemble": "**Party mode** lets you group all your Sonos devices together", + "**Mot de passe du partage**: mot de passe du partage.": "**Share password**: Share password.", + "**Muet statut**: indique si on est en mode muet ou non.": "**Mute status**: Indicates whether the system is in mute mode or not.", + "**Muet**: Active le mode muet.": "**Mute**: Turns on mute mode.", + "**Nom du Sonos**: nom de votre équipement Sonos.": "**Sonos Name**: the name of your Sonos device.", + "**Nom du groupe** dans le cas où l'équipement est groupé, donne le nom du groupe.": "**Group Name**: If the device is part of a group, enter the group name.", + "**Nom d’utilisateur du partage**: nom d’utilisateur pour accéder au partage.": "**Share username**: the username used to access the share.", + "**Non Muet**: Désactive le mode muet.": "**Unmute**: Turns off mute mode.", + "**Objet parent**: indique l’objet parent auquel appartient l’équipement.": "**Parent object**: Specifies the parent object to which the device belongs.", + "**Partage**: Configurez ici le nom d'hôte de la machine (ou son IP), le nom du partage (sans le chemin, sans '/') et le chemin vers le dossier.": "**Share**: Configure the machine's hostname (or IP address), the share name (without the path, without '/'), and the path to the folder here.", + "**Pause**: mettre en pause.": "**Pause**: to pause.", + "**Piste**: nom de la piste en cours de lecture.": "**Track**: Name of the track currently playing.", + "**Précédent**: piste précédente.": "**Previous**: previous track.", + "**Quitter le groupe**: permet de quitter le groupe.": "**Leave the group**: allows you to leave the group.", + "**Rejoindre un groupe**: permet de rejoindre le groupe du haut-parleur (un Sonos) donné (pour associer 2 Sonos par exemple). Il faut mettre le nom de la pièce du sonos à rejoindre. Cela peut-être n'importe quel membre d'un groupe existant, cela ne doit pas nécessairement être le coordinateur du groupe, ou un Sonos isolé. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper.": "**Join a Group**: Allows you to join the group of a specific speaker (a Sonos device) (to pair two Sonos devices, for example). You must enter the room name of the Sonos you want to join. This can be any member of an existing group; it does not necessarily have to be the group coordinator or a standalone Sonos. In some cases, a list of options will automatically appear as you start typing.", + "**Répéter statut**: indique si on est en mode répété ou non.": "**Repeat status**: Indicates whether the system is in repeat mode or not.", + "**Répéter**: inverse le statut du mode \"répéter\".": "**Repeat**: Toggles the \"repeat\" mode status.", + "**Statut de lecture** qui donne la valeur \"brut\" du statut de lecture: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; plus adapté pour les scénarios.": "**Playback Status**, which returns the \"raw\" value of the playback status: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; more suitable for scenarios.", + "**Statut**: statut de lecteur traduit dans la langue configurée sous Jeedom. Par exemple: *Lecture*, *Pause*, *Arrêté*.": "**Status**: Reader status translated into the language configured in Jeedom. For example: *Playing*, *Paused*, *Stopped*.", + "**Stop**: arrêter la lecture.": "**Stop**: Stop playback.", + "**Suivant**: piste suivante.": "**Next**: next track.", + "**TV**: pour basculer sur l'entrée *TV* sur les équipements compatibles": "**TV**: to switch to the *TV* input on compatible devices", + "**Transition de volume** permet d'effectuer des transitions de niveau de volume directement géré par l'enceinte Sonos, ce n'est pas le plugin qui s'en charge et donc ce n'est pas bloquant mais les délais ne sont pas configurable puisque défini par Sonos. Le type de transition et le volume cible doivent être choisi lors de l'exécution de la commande. Il existe 3 modes:": "**Volume Transition** allows you to perform volume level transitions managed directly by the Sonos speaker; the plugin does not handle this, so it does not cause any delays, but the transition times are not configurable since they are defined by Sonos. The transition type and target volume must be selected when executing the command. There are 3 modes:", + "**Visible**: le rend visible sur le dashboard.": "**Visible**: Makes it visible on the dashboard.", + "**Volume statut**: niveau du volume (en %)": "**Volume status**: volume level (in %)", + "**Volume**: modifier le volume *(de 0 à 100)*": "**Volume**: Adjust the volume *(from 0 to 100)*", + "*ALARM*: initialise le volume à 0, pause d'environ 30 secondes et ensuite augmente jusqu'au volume demandé à une vitesse de 2.5 par seconde (une transition *ALARM* de 0% à 10% prendra 4s)": "*ALARM*: sets the volume to 0, pauses for about 30 seconds, and then increases to the requested volume at a rate of 2.5 per second (an *ALARM* transition from 0% to 10% will take 4 seconds)", + "*AUTOPLAY*: initialise le volume à 0 et augmente rapidement jusqu'au volume demandé à une vitesse de 50 par seconde (un transition *AUTOPLAY* de 0% à 50% prendra 1s)": "*AUTOPLAY*: sets the volume to 0 and quickly increases it to the requested volume at a rate of 50 per second (an *AUTOPLAY* transition from 0% to 50% will take 1 second)", + "*Aléatoire et répéter le morceau*.": "*Shuffle and repeat the song*.", + "*Aléatoire et répéter tout*,": "*Random and repeat all*,", + "*Aléatoire sans répétition*,": "*Random with no repeats*,", + "*LINEAR*: transition linéaire depuis le volume actuel vers le volume cible (augmentation ou diminution), la vitesse est de 1.25 par seconde (une transition *LINEAR* de 50% à 30% prendra 16s)": "*LINEAR*: linear transition from the current volume to the target volume (increase or decrease); the speed is 1.25 per second (a *LINEAR* transition from 50% to 30% will take 16 seconds)", + "*Normal* (répétition off, aléatoire off),": "*Normal* (repeat off, shuffle off),", + "*Répéter le morceau* (aléatoire off),": "*Repeat the song* (shuffle off),", + "*Répéter tout* (aléatoire off),": "*Repeat All* (random off),", + ". Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet. **Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut**": ". It should also be possible to enter the IP address of one of your speakers directly to discover the others from there, but it is recommended that you configure the entire network. **Warning: Do not configure anything if you are not familiar with this process; test the default configuration first.**", + ">**IMPORTANT**": ">**IMPORTANT**", + ">Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": ">As a reminder, if there is no information about the update, it means that the update only involves documentation, translations, or text changes.", + "Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**.": "When adapting the Text-to-Speech (TTS) feature, **you will need to adjust the SAMBA sharing configuration**.", + "Ainsi que des informations sur votre Sonos: *Modèle*, *Versions*, *Numéro de série*, *Identifiant*, *Adresse MAC* et *Adresse IP*.": "As well as information about your Sonos: *Model*, *Versions*, *Serial Number*, *ID*, *MAC Address*, and *IP Address*.", + "Ajout Ikea Symfonisk Floor Lamp": "Added Ikea Symfonisk Floor Lamp", + "Ajout Sonos Beam Gen 2": "Added Sonos Beam Gen 2", + "Ajout Sonos Era": "Added Sonos Era", + "Ajout Sonos Move 2": "Added Sonos Move 2", + "Ajout Sonos Roam": "Adding Sonos Roam", + "Ajout Symfonisk Cadre": "Adding Symfonisk Framework", + "Ajout d'une commande **Jouer une radio mp3** pour lire une radio mp3 directement via une URL (accessible sur internet par exemple)": "Added a **Play MP3 Radio** command to play an MP3 radio stream directly via a URL (accessible on the internet, for example)", + "Ajout d'une commande **Statut de lecture** qui donne la valeur \"brut\" de l'état de lecture (la commande existante **Statut** donne une valeur traduite en fonction de la langue configurée dans Jeedom)": "Added a **Reading Status** command that returns the \"raw\" value of the reading status (the existing **Status** command returns a value translated based on the language configured in Jeedom)", + "Ajout d'une commande **Transition de volume** qui est très intéressante pour gérer les transitions de niveau de volume. 3 modes possible: *LINEAR*, *ALARM*, *AUTOPLAY*. Voir documentation pour plus d'information.": "Added a **Volume Transition** command, which is very useful for managing volume level transitions. Three modes are available: *LINEAR*, *ALARM*, *AUTOPLAY*. See the documentation for more information.", + "Ajout d'une commande action **TV** pour basculer sur l'entrée *TV* sur les équipements compatibles": "Added a **TV** action command to switch to the *TV* input on compatible devices", + "Ajout d'une commande info **Batterie** sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "Added a **Battery** info command to battery-powered Sonos devices that displays the battery charge percentage", + "Ajout d'une commande info **Chargement** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "Added a **Charging** command to battery-powered Sonos devices that indicates whether charging is in progress or not", + "Ajout d'une commande info **Mode de lecture** et action **Choisir mode de lecture** qui permet de sélectionner le mode de lecture parmi les possibilités suivantes: *Normal*, *Répéter tout*, *Aléatoire et répéter tout*, *Aléatoire sans répétition*, *Répéter le morceau*, *Aléatoire et répéter le morceau*": "Added an **Playback Mode** info command and a **Select Playback Mode** action that allows you to select a playback mode from the following options: *Normal*, *Repeat All*, *Shuffle and Repeat All*, *Shuffle Without Repeat*, *Repeat Track*, *Shuffle and Repeat Track*", + "Ajout d'une commande info **Prochaine alarme** sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "Add a **Next Alarm** info command to each Sonos speaker, displaying the date of the next alarm scheduled on that speaker", + "Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible)": "Added a **Station** info command that displays the radio station currently playing (if the information is available)", + "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Added an optional setting to specify, only if necessary, the subnet (VLAN) on which your Sonos speakers are located if it is different from the subnet (VLAN) on which Jeedom is located", + "Ajout de l'image pour *Ikea Table Lamp*": "Added image for *Ikea Table Lamp*", + "Ajout de la Sonos Five": "Addition of the Sonos Five", + "Ajout de la Sonos Ray": "Added Sonos Ray", + "Ajout de la commande **Mic statut** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "Added the **Mic Status** command, which indicates whether the microphone is enabled or disabled on Sonos devices equipped with a microphone", + "Ajout de la commande **Mode fête** qui permet de grouper tous les Sonos ensemble": "Added the **Party Mode** command, which lets you group all Sonos devices together", + "Ajout de la compatibilité avec la nouvelle Sonos One": "Added compatibility with the new Sonos One", + "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Added compatibility with the new SYMFONISK speaker", + "Ajout de la gestion des favoris sonos": "Added management of sonos favorites", + "Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix...": "Added the ability to disable the preconfigured tile: you are now free to configure it however you like using the core widgets or your own widgets, and to show or hide the commands of your choice...", + "Ajout de picotts pour la génération du TTS en local": "Addition of picotts for local TTS generation", + "Ajout des commandes **Aigus** (action/curseur) et **Aigus statut** qui gèrent les aigus selon une valeur comprise entre -10 et 10": "Added the **Treble** (action/slider) and **Treble Status** commands, which adjust the treble based on a value between -10 and 10", + "Ajout des commandes **Augmenter le volume** et **Diminuer le volume** de 1%": "Added the **Increase Volume** and **Decrease Volume** commands by 1%", + "Ajout des commandes **Balance** (action/curseur) et **Balance statut** qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite)": "Added the **Balance** (action/slider) and **Balance Status** commands, which manage the balance based on a value ranging from -100 (all the way to the left) to 100 (all the way to the right)", + "Ajout des commandes **Commandes tactiles statut**, **Commandes tactiles on**, **Commandes tactiles off**": "Added the **Status Touch Commands**, **On Touch Commands**, and **Off Touch Commands**", + "Ajout des commandes **Fondu enchaîné statut**, **Fondu enchaîné on**, **Fondu enchaîné off**": "Added the commands **Status Crossfade**, **On Crossfade**, **Off Crossfade**", + "Ajout des commandes **Graves** (action/curseur) et **Graves statut** qui gère les graves selon une valeur comprise entre -10 et 10": "Added the **Bass** (action/slider) and **Bass Status** commands, which manage bass levels based on a value between -10 and 10", + "Ajout des commandes **Groupe statut** (indique si l'équipement est groupé ou non) et **Nom du groupe** dans le cas où l'équipement est groupé": "Added the **Group Status** (indicates whether the device is grouped or not) and **Group Name** commands for devices that are grouped", + "Ajout des commandes **Led on**, **Led off** et **Led statut** pour contrôler le voyant d'état": "Added the **LED On**, **LED Off**, and **LED Status** commands to control the status indicator", + "Ajout des commandes **Loudness statut**, **Loudness on**, **Loudness off**": "Added the **Loudness Status**, **Loudness On**, and **Loudness Off** commands", + "Ajout du tag \"Compatibilité V4\"": "Added the \"V4 Compatibility\" tag", + "Ajout d’une commande \"Entrée de ligne\"": "Adding a \"Line Input\" command", + "Amélioration de la reprise suite à un TTS": "Improvement in recovery from TTS", + "Amélioration du script d'installation des dépendances": "Improved dependency installation script", + "Amélioration du script d'installation des dépendances (pourra permettre de corriger dans certain cas les soucis de TTS)": "Improvements to the dependency installation script (may help resolve TTS issues in some cases)", + "Attention": "Caution", + "Certaines fonctionnalités ont dû être retirées": "Some features had to be removed", + "Ces commandes agissent toujours sur l'équipement correspondant.": "These commands always affect the corresponding device.", + "Ces commandes indiqueront et contrôleront la lecture en cours sur l'équipement ou sur le groupe si celui-ci est groupé et cela de façon transparente, vous ne devez pas vous préoccuper de savoir si l'équipement est groupé ou pas pour les utiliser.": "These commands will display and control the currently playing track on the device or on the group if the device is part of a group, and they do so transparently—you don't need to worry about whether the device is part of a group or not to use them.", + "Ces commandes vont toujours contrôler l'équipement correspondant, y compris lorsque celui-ci est dans un groupe.": "These commands will always control the corresponding device, even when it is part of a group.", + "Champ 1: 192.168.xxx.yyy": "Field 1: 192.168.xxx.yyy", + "Champ 2: *Jeedom*": "Field 2: *Jeedom*", + "Champ 3: *TTS*": "Field 3: *TTS*", + "Changelog Sonos controller": "Sonos Controller Changelog", + "Commandes de lecture": "Playback controls", + "Commandes de volume & contrôle du Sonos": "Sonos volume controls & controls", + "Commandes pour gérer les groupes": "Commands for managing groups", + "Compatible Debian 11 et 12!": "Compatible with Debian 11 and 12!", + "Compatible PHP7 uniquement": "Compatible PHP7 only", + "Configuration des équipements": "Equipment configuration", + "Configuration du plugin": "Plugin configuration", + "Correction d'un bug mineur sur la commande **Dire**": "Fixed a minor bug in the **Dire** command", + "Correction d'un bug sur le TTS": "Fixed a bug on the TTS", + "Correction de bug si un sonos n'est pas joignable": "Bug fix if a sound system cannot be reached", + "Correction de bugs dans le cas où les sonos ont été ajoutés manuellement": "Fixed bugs in case the sound systems were added manually", + "Correction de la langue avec PicoTTS": "Tongue correction with picotts", + "Correction de nombreux bugs": "Fixed numerous bugs", + "Correction du bouton play/pause lors de la mise à jour du widget.": "Fixed the play/pause button when updating the widget.", + "Corrections des images": "Image corrections", + "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Fixes for the \"Subscription renewal failed\" message and the loss of information reporting", + "Côté Bibliothèque Sonos (appli PC)": "Sonos Library (PC app)", + "Côté NAS, la config suivante doit être effectuée:": "On the NAS side, the following configuration must be performed:", + "Côté Plugin Sonos, la config :": "As for the Sonos plugin, here's the configuration:", + "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple ": "If your Jeedom speakers are not on the same subnet as Jeedom, you can configure the subnet—preferably in CIDR format—for example ", + "Exemple de configuration": "Configuration example", + "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements.": "It is also possible to request that devices, favorites, and playlists be (re)synchronized without restarting the daemon from the Devices panel.", + "Il faut absolument mettre un mot de passe pour que cette procédure fonctionne.": "You must set a password for this procedure to work.", + "Il faut aussi absolument un sous-répertoire pour que le fichier vocal soit correctement créé.": "A subdirectory is also absolutely necessary for the voice file to be created correctly.", + "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon.": "You no longer need to run a manual discovery, and it is no longer necessary (or possible) to manually add a device; the plugin automatically detects your Sonos devices and creates the corresponding devices each time the daemon starts.", + "Il ne faut surtout pas d'accent dans le nom du partage ou le dossier, d'espace ou de caractères spéciaux.": "Be sure not to use any accents, spaces, or special characters in the share name or folder name.", + "Je recommande d'utiliser cette commande-ci dans un scénario au lieu de **Répéter** & **Aléatoire** afin d'arriver dans la configuration désirée même si toutes agissent sur les mêmes paramètres. Cette commande est par contre le seul moyen de passer en mode *Répéter le morceau* ou *Aléatoire et répéter le morceau*.": "I recommend using this command in a scenario instead of **Repeat** and **Shuffle** to achieve the desired configuration, even though all of them affect the same settings. However, this command is the only way to switch to *Repeat Song* or *Shuffle and Repeat Song* mode.", + "La configuration des équipements Sonos est accessible à partir du menu Plugins puis multimédia.": "You can configure Sonos devices from the Plugins menu, then Multimedia.", + "La configuration est très simple, après téléchargement du plugin, il vous suffit de l’activer, d'installer les dépendances et de démarrer le démon.": "Setup is very simple: after downloading the plugin, just activate it, install the dependencies, and start the daemon.", + "La création du fichier audio est géré par le core de Jeedom: la langue sera celle configurée dans Jeedom et le moteur TTS utilisé peut également être sélectionné dans la configuration Jeedom.": "The creation of the audio file is handled by the Jeedom core: the language will be the one configured in Jeedom, and the TTS engine used can also be selected in the Jeedom configuration.", + "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée.": "The preconfigured tile does not take into account whether commands are visible or hidden, nor does it account for advanced display options; its configuration cannot be modified.", + "Le TTS (text-to-speech) vers le Sonos nécessite d’avoir un partage SAMBA sur le réseau (imposé par Sonos, pas moyen de faire autrement). Il faut vous donc un NAS ou équivalent sur le réseau. La configuration est assez simple il faut mettre le nom ou l’ip du NAS (attention à bien mettre la même chose que ce qui est déclaré sur Sonos) et le chemin vers le dossier qui doit contenir les fichiers audio ainsi que le nom d’utilisateur et le mot de passe (attention l’utilisateur doit avoir les droits en écriture)": "TTS (text-to-speech) to Sonos requires a SAMBA share on the network (required by Sonos; there’s no other way to do it). So you’ll need a NAS or equivalent on the network. The setup is fairly simple: you need to enter the name or IP address of the NAS (make sure to enter exactly what’s specified in Sonos), the path to the folder containing the audio files, and the username and password (note that the user must have write permissions).", + "Le panel": "The panel", + "Le plugin Sonos met aussi à disposition un panel qui rassemble tous vos Sonos. Disponible à partir du menu Accueil → Sonos Controller :": "The Sonos plugin also provides a panel that brings together all your Sonos devices. Available from the Home menu → Sonos Controller:", + "Le plugin Sonos permet de piloter les Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Il va vous permettre de voir l’état du/des Sonos et d’effectuer des actions (lecture, pause, suivant, précédent, volume, choix d’une playlist…).": "The Sonos plugin lets you control the Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, IKEA Symfonisk, and more. It allows you to view the status of your Sonos devices and perform actions such as play, pause, next, previous, adjust volume, and select a playlist.", + "Le plugin va rechercher les Sonos sur votre réseau et créer les équipements automatiquement. De plus, s’il y a une correspondance entre les objets Jeedom et les pièces du Sonos, Jeedom affectera automatiquement les Sonos dans les bonnes pièces.": "The plugin will scan your network for Sonos devices and automatically create the devices. Additionally, if there is a match between Jeedom objects and Sonos rooms, Jeedom will automatically assign the Sonos devices to the correct rooms.", + "Les commandes": "The orders", + "Les commandes infos seront mises à jour en quasi temps réel (délai de quelques secondes maximum normalement) mais l'image de l'album en cours de lecture peut mettre un peu plus de temps à s'afficher sur le widget lors d'un changement de piste, ceci est parfaitement normal et indépendant du plugin: il doit récupérer l'image depuis une source externe (sur un Sonos ou sur internet) et cela prend parfois plusieurs secondes (en principe maximum une dizaine de secondes).": "The commands will be refreshed in near real time (usually within a few seconds at most), but the cover art for the currently playing album may take a little longer to appear on the widget when switching tracks; this is perfectly normal and unrelated to the plugin: it has to retrieve the image from an external source (on a Sonos device or from the internet), and this can sometimes take several seconds (usually no more than about ten seconds).", + "Les messages trop longs ne peuvent être transmis en TTS (la limite dépend du fournisseur de TTS, en général environ 100 caractères).": "Messages that are too long cannot be transmitted via TTS (the limit depends on the TTS provider; generally, about 100 characters).", + "Les playlists et les favoris doivent être créés via l'app Sonos (sur mobile ou sur ordi) ensuite il faut faire une synchronisation pour mettre à jour les équipements et pouvoir les utiliser dans un scénario.": "Playlists and favorites must be created using the Sonos app (on a mobile device or computer); then you must sync to update the devices and be able to use them in a scenario.", + "Lors de l'utilisation du TTS (commande **Dire**), le plugin va effectuer les actions suivantes:": "When using TTS (the **Dire** command), the plugin will perform the following actions:", + "Mise à jour de la documentation": "Documentation update", + "Mise à jour de la librairie de communication avec les Sonos": "Update to the Sonos communication library", + "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple)": "(Near) real-time updates to control and information commands (a delay of 0.5 seconds to a few seconds at most), no more minute-by-minute cron jobs, even when a change is made outside of Jeedom (via the Sonos app, for example)", + "Mise à jour immediate du volume en cas de changement par Jeedom, merci @Domochip": "Immediate volume update in case of change by Jeedom, thank you @Domochip", + "Mise à jour liste des commandes pour Jeedom v4.3": "Update command list for Jeedom v4.3", + "Modification du volume sur la valeur choisie lors de l'utilisation de la commande (uniquement sur l'équipement, pas sur tout le groupe)": "Adjusts the volume to the value selected when using the command (only on the device, not on the entire group)", + "Nettoyage des accents dans les noms de partage (non supportés par le plugin)": "Removing accents from share names (not supported by the plugin)", + "Nom d’utilisateur (*jeedom* dans l'exemple) et son mot de passe…​": "Username (*jeedom* in the example) and password…​", + "Nouvelle présentation de la liste des objets": "New presentation of the list of objects", + "Nécessite Jeedom 4.4.8": "Requires Jeedom 4.4.8", + "Optimisation : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant.": "Optimization: No more memory leaks in the daemon, and it uses less memory than before.", + "Optimisation de l'affichage de la pochette de la lecture en cours": "Optimized the display of the cover of the current reading", + "Optimisation du chargement des playlists": "Optimized loading of playlists", + "Optimisation du code en cas de Sonos non connecté": "Code optimization in case of Sonos not connected", + "Optimisation sur la lecture des favoris": "Optimization on reading favorites", + "Optimisations": "Optimizations", + "Optimisations V4.2": "V4.2 optimizations", + "Optimisations globales": "Global optimizations", + "Partage :": "Share:", + "Plugin Sonos": "Sonos plugin", + "Pour avoir le panel il faut l’avoir activé dans la configuration du plugin.": "To access the dashboard, you must enable it in the plugin settings.", + "Prise en charge de l'enceinte lampe Ikea SYMFONISK": "Ikea SYMFONISK lamp speaker support", + "Prise en charge de l'enceinte étagere Ikea SYMFONISK": "Support for Ikea SYMFONISK bookshelf speaker", + "Prise en charge de la nouvelle api Sonos": "Support for the new Sonos API", + "Prise en charge des Sonos One et Playbase": "Support for Sonos One and Playbase", + "Prise en charge des sonos beam et One": "Support for Beam and One sound systems", + "Prise en charge des sonos one gen2": "Support for one gen2 sonos", + "Prise en charge du Sonos ARC": "Sonos ARC support", + "Prise en charge du Sonos Move": "Support for Sonos Move", + "Prise en charge du Sonos One S22": "Support for Sonos One S22", + "Prise en charge du Sonos port": "Sonos port support", + "Préparation pour Jeedom 4.4": "Preparing for Jeedom 4.4", + "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation). Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur. Le volume est, lui, toujours contrôlé par enceinte.": "Group management has been redesigned (old commands will be removed and new ones added; see documentation). You can join or leave a group and control playback for the group from any device in the group without worrying about which device is the controller. Volume, however, is still controlled on a per-speaker basis.", + "Refonte importante du plugin : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "Major plugin overhaul: a large portion of the plugin has been rewritten, including all communication with Sonos (daemon), and certain features have been modified and no longer work as they did before, particularly group management;", + "Réecriture complète du plugin": "Complete rewrite of the plugin", + "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP)": "The plugin has been almost completely rewritten; the daemon has been entirely rewritten in Python (instead of PHP)", + "Si plus tard vous ajoutez un Sonos, vous pouvez cliquer sur **Synchroniser** dans la page des équipements ou redémarrer le démon.": "If you add a Sonos device later, you can click **Sync** on the devices page or restart the daemon.", + "Support de la nouvelle enceinte SYMFONISK": "Support for the new SYMFONISK loudspeaker", + "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom)": "Removal of the dependency on PicoTTS (the plugin uses Jeedom's global TTS engine)", + "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Automatic synchronization every hour to correct any desynchronization", + "TTS": "TTS", + "Voir également ": "See also ", + "Vos équipements Sonos doivent être joignable directement par la machine hébergeant Jeedom (broadcast / multicast possible sur le même réseau) et ils doivent être capable de joindre Jeedom en retour sur le port TCP 1400.": "Your Sonos devices must be directly accessible by the machine hosting Jeedom (broadcast/multicast is possible on the same network), and they must be able to communicate with Jeedom in return on TCP port 1400.", + "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix...": "You also have the option to disable the preconfigured device tile (this option is active by default); in that case, you can configure the tile however you like using Core widgets or your own widgets, and show or hide the commands of your choice...", + "Vous retrouvez ici toute la configuration habituelle de votre équipement :": "Here you'll find all the usual settings for your equipment:", + "ce sujet sur community": "this topic on community", + "forcer la lecture en mode \"Normal\", sans répétition": "force playback in “Normal” mode, without repetition", + "forcer le mode \"non muet\" (uniquement sur l'équipement, pas sur tout le groupe)": "Force \"unmuted\" mode (only on the device, not on the entire group)", + "génération du fichier audio contenant le message avec le support du core de Jeedom": "generation of the audio file containing the message with Jeedom core support", + "l'utilisateur sera *sonos* (dans cet exemple) + mot de passe": "The username will be *sonos* (in this example) + password", + "le chemin est : //192.168.xxx.yyy/Jeedom/TTS": "The path is: //192.168.xxx.yyy/Jeedom/TTS", + "le dossier *Jeedom* est partagé et il contient un dossier *TTS*": "The *Jeedom* folder is shared and contains a *TTS* folder", + "lecture du message": "reading message", + "l’utilisateur *jeedom* a un accès lecture/écriture (nécessaire pour Jeedom).": "The *jeedom* user has read/write access (required for Jeedom).", + "l’utilisateur *sonos* a un accès en lecture seule (nécessaire pour les Sonos).": "The *sonos* user has read-only access (required for Sonos).", + "restauration de l'état du Sonos avant la lecture (donc le mode de lecture, muet ou pas, répétition ou pas...) et redémarrage du flux si le Sonos était en cours de lecture": "restoring the state of the Sonos before playback (i.e. the playback mode, mute or not, repeat or not, etc.) and restarting the stream if the Sonos was playing", + "écriture du fichier sur le partage SAMBA": "writing the file to the SAMBA share" +} \ No newline at end of file diff --git a/docs/.translation_memory/es_ES.json b/docs/.translation_memory/es_ES.json new file mode 100644 index 0000000..a9c0fb8 --- /dev/null +++ b/docs/.translation_memory/es_ES.json @@ -0,0 +1,224 @@ +{ + " pour plus de détails": " Para más información", + "**Activer**: permet de rendre votre équipement actif.": "**Activar**: permite poner en marcha tu equipo.", + "**Aigus** (action/curseur) et **Aigus statut** qui gère la aigus selon une valeur comprise entre -10 et 10": "**Agudos** (acción/cursor) y **Estado de agudos**, que controla los agudos según un valor comprendido entre -10 y 10", + "**Album**: nom de l’album en cours de lecture.": "**Álbum**: nombre del álbum que se está reproduciendo.", + "**Aléatoire statut**: indique si on est en mode aléatoire ou non.": "**Estado aleatorio**: indica si se está en modo aleatorio o no.", + "**Aléatoire**: inverse le statut du mode aléatoire.": "**Aleatorio**: invierte el estado del modo aleatorio.", + "**Artiste**: nom de l’artiste en cours de lecture.": "**Artista**: nombre del artista que se está reproduciendo.", + "**Augmenter le volume**: augmente le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "**Aumentar el volumen**: aumenta el volumen un 1 %; puede resultar útil para la integración con otros sistemas o complementos", + "**Balance** (action/curseur) et **Balance statut** qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite) pour les Sonos compatibles": "**Balance** (acción/deslizador) y **Balance de estado**, que controla el balance según un valor comprendido entre -100 (extremo izquierdo) y 100 (extremo derecho) para los dispositivos Sonos compatibles", + "**Batterie** sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "**Batería** en los dispositivos Sonos equipados con batería, que indica el porcentaje de carga de la batería", + "**Chargement** sur les Sonos équipés d'une batterie indiquant si la charge est en cours ou non": "**Carga** en los dispositivos Sonos con batería, indicando si se está cargando o no", + "**Choisir mode de lecture** permet de choisir parmi les possibilités suivantes:": "**Seleccionar modo de reproducción** permite elegir entre las siguientes opciones:", + "**Commandes tactiles on** et **Commandes tactiles off** Active et désactive les boutons physiques ou tactiles sur le Sonos": "**Controles táctiles activados** y **Controles táctiles desactivados**: activa y desactiva los botones físicos o táctiles del Sonos", + "**Commandes tactiles statut** indique si les commandes tactiles sont activées ou pas": "**Estado de los controles táctiles** indica si los controles táctiles están activados o no", + "**Diminuer le volume**: diminue le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "**Bajar el volumen**: baja el volumen un 1 %; puede resultar útil para la integración con otros sistemas o complementos", + "**Dire**: permet de lire un texte sur le Sonos (voir partie TTS). Dans le titre vous pouvez mettre le volume et dans le message, le message à lire.": "**Dire**: permite leer un texto en el Sonos (véase la sección TTS). En el título puedes indicar el volumen y, en el mensaje, el texto que se va a leer.", + "**Entrée audio analogique**: pour basculer sur l'*Entrée audio analogique* (*Line-in*) sur les équipements compatibles": "**Entrada de audio analógica**: para cambiar a la *Entrada de audio analógica* (*Line-in*) en los dispositivos compatibles", + "**Fondu enchaîné statut**, **Fondu enchaîné on**, **Fondu enchaîné off** pour contrôler et activer ou non le *Fondu enchaîné*": "**Fundido encadenado: estado**, **Fundido encadenado: activado**, **Fundido encadenado: desactivado** para controlar y activar o desactivar el *fundido encadenado*", + "**Graves** (action/curseur) et **Graves statut** qui gère les graves selon une valeur comprise entre -10 et 10": "**Graves** (acción/cursor) y **Estado de graves**, que gestiona los graves según un valor comprendido entre -10 y 10", + "**Groupe statut**: indique si l'équipement est groupé ou non.": "**Estado del grupo**: indica si el equipo está agrupado o no.", + "**Hint**": "**Sugerencia**", + "**IMPORTANT NE MARCHE QUE AVEC PHP7, VOIR PAGE SANTE DE JEEDOM POUR VOTRE VERSION**": "**IMPORTANTE: SOLO FUNCIONA CON PHP7. CONSULTA LA PÁGINA DE ESTADO DE JEEDOM PARA CONOCER TU VERSIÓN**", + "**IMPORTANT**": "**IMPORTANTE**", + "**Image**: lien vers l’image de l’album.": "**Imagen**: enlace a la imagen del álbum.", + "**Important**": "**Importante**", + "**Jouer favoris**: commande de type message permettant de lancer un favoris, il suffit dans le titre de mettre le nom du favori. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper.": "**Ejecutar favoritos**: comando de tipo mensaje que permite ejecutar un favorito; basta con introducir el nombre del favorito en el título. En un escenario, se mostrará automáticamente una lista de opciones en cuanto empieces a escribir.", + "**Jouer playlist**: commande de type message permettant de lancer une playlist, il suffit dans le titre de mettre le nom de la playlist. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper.": "**Reproducir lista de reproducción**: comando de tipo mensaje que permite iniciar una lista de reproducción; basta con introducir el nombre de la lista de reproducción en el título. En un escenario, se mostrará automáticamente una lista de opciones en cuanto empieces a escribir.", + "**Jouer une radio mp3**: permet de lire une radio mp3 via une URL (par exemple depuis internet). Vous devez mettre un titre dans la zone *Titre* et l'url (format http(s)://...mp3) dans la zone *Message*.": "**Reproducir una radio en formato MP3**: permite reproducir una radio en formato MP3 a través de una URL (por ejemplo, desde Internet). Debes introducir un título en el campo *Título* y la URL (formato http(s)://...mp3) en el campo *Mensaje*.", + "**Jouer une radio**: commande de type message permettant de lancer une radio, il suffit dans le titre de mettre le nom de la radio *(ATTENTION : celle ci doit être dans les radios favorites)*. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper. Ne fonctionne plus sur les modèles \"S2\", il est normal d'avoir une liste vide sur tous les modèles utilisant l'app Sonos S2.": "**Reproducir una emisora de radio**: comando de tipo mensaje que permite poner una emisora de radio; basta con introducir el nombre de la emisora en el título *(ATENCIÓN: esta debe estar entre las emisoras favoritas)*. En un escenario, se mostrará automáticamente una lista de opciones cuando empieces a escribir. Ya no funciona en los modelos «S2»; es normal que la lista esté vacía en todos los modelos que utilicen la aplicación Sonos S2.", + "**Lecture**: passer en lecture.": "**Lectura**: pasar al modo de lectura.", + "**Led on** et **Led off**: Active et désactive la led, le voyant d'état": "**LED encendido** y **LED apagado**: Activa y desactiva el LED, el indicador de estado", + "**Led statut**: indique si le voyant d'état est allumé ou non. Cette info n'est mise à jour qu'une fois par minute dans le cas où elle est modifiée hors Jeedom": "**Estado del LED**: indica si el indicador de estado está encendido o no. Esta información solo se actualiza una vez por minuto en caso de que se modifique fuera de Jeedom.", + "**Loudness statut**, **Loudness on**, **Loudness off** contrôle le loudness": "**Estado de Loudness**, **Loudness activado**, **Loudness desactivado**: controla el volumen", + "**Mic statut** qui indique si le micro est activé ou non sur les Sonos équipé d'un micro": "**Estado del micrófono**, que indica si el micrófono está activado o no en los dispositivos Sonos equipados con micrófono", + "**Mode de lecture** donnant l'état actuel qui sera une des valeurs citées ci-dessus.": "**Modo de lectura** que indica el estado actual, que será uno de los valores mencionados anteriormente.", + "**Mode fête** permet de grouper tous les Sonos ensemble": "**Modo fiesta** permite agrupar todos los dispositivos Sonos", + "**Mot de passe du partage**: mot de passe du partage.": "**Contraseña de uso compartido**: contraseña de uso compartido.", + "**Muet statut**: indique si on est en mode muet ou non.": "**Estado de silencio**: indica si se está en modo silencio o no.", + "**Muet**: Active le mode muet.": "**Silencio**: Activa el modo silencio.", + "**Nom du Sonos**: nom de votre équipement Sonos.": "**Nombre del Sonos**: nombre de tu dispositivo Sonos.", + "**Nom du groupe** dans le cas où l'équipement est groupé, donne le nom du groupe.": "**Nombre del grupo**: en caso de que el equipo esté agrupado, indica el nombre del grupo.", + "**Nom d’utilisateur du partage**: nom d’utilisateur pour accéder au partage.": "**Nombre de usuario del recurso compartido**: nombre de usuario para acceder al recurso compartido.", + "**Non Muet**: Désactive le mode muet.": "**No silenciado**: Desactiva el modo silencioso.", + "**Objet parent**: indique l’objet parent auquel appartient l’équipement.": "**Objeto principal**: indica el objeto principal al que pertenece el equipo.", + "**Partage**: Configurez ici le nom d'hôte de la machine (ou son IP), le nom du partage (sans le chemin, sans '/') et le chemin vers le dossier.": "**Recurso compartido**: Configura aquí el nombre de host del equipo (o su dirección IP), el nombre del recurso compartido (sin la ruta, sin «/») y la ruta a la carpeta.", + "**Pause**: mettre en pause.": "**Pausa**: poner en pausa.", + "**Piste**: nom de la piste en cours de lecture.": "**Pista**: nombre de la pista que se está reproduciendo.", + "**Précédent**: piste précédente.": "**Anterior**: pista anterior.", + "**Quitter le groupe**: permet de quitter le groupe.": "**Salir del grupo**: permite salir del grupo.", + "**Rejoindre un groupe**: permet de rejoindre le groupe du haut-parleur (un Sonos) donné (pour associer 2 Sonos par exemple). Il faut mettre le nom de la pièce du sonos à rejoindre. Cela peut-être n'importe quel membre d'un groupe existant, cela ne doit pas nécessairement être le coordinateur du groupe, ou un Sonos isolé. Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper.": "**Unirse a un grupo**: permite unirse al grupo de un altavoz (un Sonos) concreto (por ejemplo, para emparejar dos Sonos). Hay que introducir el nombre de la habitación del Sonos al que te quieres unir. Puede ser cualquier miembro de un grupo ya existente; no tiene por qué ser necesariamente el coordinador del grupo ni un Sonos independiente. En algunos casos, se mostrará automáticamente una lista de opciones en cuanto empieces a escribir.", + "**Répéter statut**: indique si on est en mode répété ou non.": "**Repetir estado**: indica si se está en modo de repetición o no.", + "**Répéter**: inverse le statut du mode \"répéter\".": "**Repetir**: invierte el estado del modo «Repetir».", + "**Statut de lecture** qui donne la valeur \"brut\" du statut de lecture: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; plus adapté pour les scénarios.": "**Estado de reproducción**, que proporciona el valor «bruto» del estado de reproducción: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; más adecuado para los escenarios.", + "**Statut**: statut de lecteur traduit dans la langue configurée sous Jeedom. Par exemple: *Lecture*, *Pause*, *Arrêté*.": "**Estado**: estado del reproductor traducido al idioma configurado en Jeedom. Por ejemplo: *Reproducción*, *Pausa*, *Detener*.", + "**Stop**: arrêter la lecture.": "**Stop**: detener la reproducción.", + "**Suivant**: piste suivante.": "**Siguiente**: pista siguiente.", + "**TV**: pour basculer sur l'entrée *TV* sur les équipements compatibles": "**TV**: para cambiar a la entrada *TV* en los dispositivos compatibles", + "**Transition de volume** permet d'effectuer des transitions de niveau de volume directement géré par l'enceinte Sonos, ce n'est pas le plugin qui s'en charge et donc ce n'est pas bloquant mais les délais ne sont pas configurable puisque défini par Sonos. Le type de transition et le volume cible doivent être choisi lors de l'exécution de la commande. Il existe 3 modes:": "**Transición de volumen** permite realizar transiciones de nivel de volumen gestionadas directamente por el altavoz Sonos; no es el complemento el que se encarga de ello, por lo que no supone ningún bloqueo, pero los tiempos de espera no son configurables, ya que los define Sonos. El tipo de transición y el volumen de destino deben seleccionarse al ejecutar el comando. Existen tres modos:", + "**Visible**: le rend visible sur le dashboard.": "**Visible**: lo muestra en el panel de control.", + "**Volume statut**: niveau du volume (en %)": "**Volumen actual**: nivel de volumen (en %)", + "**Volume**: modifier le volume *(de 0 à 100)*": "**Volumen**: ajustar el volumen *(de 0 a 100)*", + "*ALARM*: initialise le volume à 0, pause d'environ 30 secondes et ensuite augmente jusqu'au volume demandé à une vitesse de 2.5 par seconde (une transition *ALARM* de 0% à 10% prendra 4s)": "*ALARM*: inicializa el volumen en 0, hace una pausa de unos 30 segundos y, a continuación, lo aumenta hasta el volumen solicitado a una velocidad de 2,5 por segundo (una transición *ALARM* del 0 % al 10 % tardará 4 s)", + "*AUTOPLAY*: initialise le volume à 0 et augmente rapidement jusqu'au volume demandé à une vitesse de 50 par seconde (un transition *AUTOPLAY* de 0% à 50% prendra 1s)": "*AUTOPLAY*: inicializa el volumen en 0 y lo aumenta rápidamente hasta el volumen solicitado a una velocidad de 50 por segundo (una transición *AUTOPLAY* del 0 % al 50 % tardará 1 s)", + "*Aléatoire et répéter le morceau*.": "*Reproducir aleatoriamente y repetir la canción*.", + "*Aléatoire et répéter tout*,": "*Aleatorio y repetir todo*,", + "*Aléatoire sans répétition*,": "*Aleatorio sin repeticiones*,", + "*LINEAR*: transition linéaire depuis le volume actuel vers le volume cible (augmentation ou diminution), la vitesse est de 1.25 par seconde (une transition *LINEAR* de 50% à 30% prendra 16s)": "*LINEAL*: transición lineal desde el volumen actual hasta el volumen de destino (aumento o disminución), a una velocidad de 1,25 por segundo (una transición *LINEAL* del 50 % al 30 % tardará 16 s)", + "*Normal* (répétition off, aléatoire off),": "*Normal* (repetición desactivada, aleatoriedad desactivada),", + "*Répéter le morceau* (aléatoire off),": "*Repetir la canción* (aleatorio desactivado),", + "*Répéter tout* (aléatoire off),": "*Repetir todo* (aleatorio desactivado),", + ". Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet. **Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut**": ". También debería ser posible introducir directamente la dirección IP de uno de tus altavoces para detectar los demás a partir de él, pero se recomienda configurar toda la red. **Atención: no configures nada si no dominas este tema; prueba primero la configuración por defecto**", + ">**IMPORTANT**": ">**IMPORTANTE**", + ">Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": ">Recuerda que, si no hay información sobre la actualización, es porque esta se refiere únicamente a la actualización de la documentación, la traducción o el texto.", + "Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**.": "Adaptación de la función de conversión de texto a voz (TTS): **será necesario ajustar la configuración del uso compartido SAMBA**.", + "Ainsi que des informations sur votre Sonos: *Modèle*, *Versions*, *Numéro de série*, *Identifiant*, *Adresse MAC* et *Adresse IP*.": "Además de información sobre tu Sonos: *Modelo*, *Versiones*, *Número de serie*, *ID*, *Dirección MAC* y *Dirección IP*.", + "Ajout Ikea Symfonisk Floor Lamp": "Lámpara de pie Symfonisk de Ikea añadida", + "Ajout Sonos Beam Gen 2": "Se agregó Sonos Beam Gen 2", + "Ajout Sonos Era": "Se agregó la era de Sonos", + "Ajout Sonos Move 2": "Se agregó Sonos Move 2", + "Ajout Sonos Roam": "Agregar Sonos Roam", + "Ajout Symfonisk Cadre": "Añadiendo Symfonisk Framework", + "Ajout d'une commande **Jouer une radio mp3** pour lire une radio mp3 directement via une URL (accessible sur internet par exemple)": "Se ha añadido un comando **Reproducir radio MP3** para reproducir una emisora de radio MP3 directamente a través de una URL (accesible en Internet, por ejemplo).", + "Ajout d'une commande **Statut de lecture** qui donne la valeur \"brut\" de l'état de lecture (la commande existante **Statut** donne une valeur traduite en fonction de la langue configurée dans Jeedom)": "Se ha añadido un comando **Estado de lectura** que proporciona el valor «en bruto» del estado de lectura (el comando existente **Estado** proporciona un valor traducido según el idioma configurado en Jeedom).", + "Ajout d'une commande **Transition de volume** qui est très intéressante pour gérer les transitions de niveau de volume. 3 modes possible: *LINEAR*, *ALARM*, *AUTOPLAY*. Voir documentation pour plus d'information.": "Se ha añadido un comando **Transición de volumen** que resulta muy útil para gestionar las transiciones de nivel de volumen. Hay tres modos disponibles: *LINEAL*, *ALARMA* y *REPRODUCCIÓN AUTOMÁTICA*. Consulta la documentación para obtener más información.", + "Ajout d'une commande action **TV** pour basculer sur l'entrée *TV* sur les équipements compatibles": "Se ha añadido un comando de acción **TV** para cambiar a la entrada *TV* en los dispositivos compatibles", + "Ajout d'une commande info **Batterie** sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "Se ha añadido un comando de información **Batería** en los dispositivos Sonos equipados con batería, que indica el porcentaje de carga de la batería", + "Ajout d'une commande info **Chargement** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "Se ha añadido un comando de información **Carga** en los dispositivos Sonos con batería que indica si se está cargando o no", + "Ajout d'une commande info **Mode de lecture** et action **Choisir mode de lecture** qui permet de sélectionner le mode de lecture parmi les possibilités suivantes: *Normal*, *Répéter tout*, *Aléatoire et répéter tout*, *Aléatoire sans répétition*, *Répéter le morceau*, *Aléatoire et répéter le morceau*": "Se ha añadido un comando de información **Modo de reproducción** y una acción **Elegir modo de reproducción** que permite seleccionar el modo de reproducción entre las siguientes opciones: *Normal*, *Repetir todo*, *Aleatorio y repetir todo*, *Aleatorio sin repetición*, *Repetir la canción*, *Aleatorio y repetir la canción*", + "Ajout d'une commande info **Prochaine alarme** sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "Se ha añadido un comando de información **Próxima alarma** en cada dispositivo Sonos que indica la fecha de la próxima alarma programada en ese altavoz", + "Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible)": "Se ha añadido un comando de información **Estación** que indica la emisora de radio que se está reproduciendo (si la información está disponible)", + "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Se ha añadido una configuración opcional para indicar, solo si es necesario, la subred (VLAN) en la que se encuentran tus altavoces Sonos, en caso de que sea diferente de la subred (VLAN) en la que se encuentra Jeedom.", + "Ajout de l'image pour *Ikea Table Lamp*": "Se ha añadido la imagen de *Lámpara de mesa de Ikea*", + "Ajout de la Sonos Five": "Adición de Sonos Five", + "Ajout de la Sonos Ray": "Añadido Sonos Ray", + "Ajout de la commande **Mic statut** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "Se ha añadido el comando **Estado del micrófono**, que indica si el micrófono está activado o no en los dispositivos Sonos equipados con micrófono", + "Ajout de la commande **Mode fête** qui permet de grouper tous les Sonos ensemble": "Se ha añadido el comando **Modo fiesta**, que permite agrupar todos los dispositivos Sonos", + "Ajout de la compatibilité avec la nouvelle Sonos One": "Se ha añadido la compatibilidad con el nuevo Sonos One", + "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Se ha añadido la compatibilidad con el nuevo altavoz SYMFONISK", + "Ajout de la gestion des favoris sonos": "Administración agregada de favoritos de sonos", + "Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix...": "Se ha añadido la posibilidad de desactivar el mosaico preconfigurado: así podrás configurarlo como quieras utilizando los widgets del núcleo o tus propios widgets, mostrar u ocultar los controles que elijas...", + "Ajout de picotts pour la génération du TTS en local": "Adición de picotts para la generación local de TTS", + "Ajout des commandes **Aigus** (action/curseur) et **Aigus statut** qui gèrent les aigus selon une valeur comprise entre -10 et 10": "Se han añadido los controles **Agudos** (acción/deslizador) y **Estado de agudos**, que regulan los agudos según un valor comprendido entre -10 y 10.", + "Ajout des commandes **Augmenter le volume** et **Diminuer le volume** de 1%": "Se han añadido los comandos **Subir el volumen** y **Bajar el volumen** en un 1 %.", + "Ajout des commandes **Balance** (action/curseur) et **Balance statut** qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite)": "Se han añadido los controles **Balance** (acción/cursor) y **Balance estado**, que gestionan el equilibrio según un valor comprendido entre -100 (extremo izquierdo) y 100 (extremo derecho).", + "Ajout des commandes **Commandes tactiles statut**, **Commandes tactiles on**, **Commandes tactiles off**": "Se han añadido los controles **Controles táctiles de estado**, **Controles táctiles de encendido** y **Controles táctiles de apagado**", + "Ajout des commandes **Fondu enchaîné statut**, **Fondu enchaîné on**, **Fondu enchaîné off**": "Se han añadido los comandos **Fundido encadenado de estado**, **Fundido encadenado activado** y **Fundido encadenado desactivado**", + "Ajout des commandes **Graves** (action/curseur) et **Graves statut** qui gère les graves selon une valeur comprise entre -10 et 10": "Se han añadido los controles **Graves** (acción/cursor) y **Estado de graves**, que gestionan los graves según un valor comprendido entre -10 y 10.", + "Ajout des commandes **Groupe statut** (indique si l'équipement est groupé ou non) et **Nom du groupe** dans le cas où l'équipement est groupé": "Se han añadido los controles **Estado del grupo** (indica si el equipo está agrupado o no) y **Nombre del grupo** en caso de que el equipo esté agrupado", + "Ajout des commandes **Led on**, **Led off** et **Led statut** pour contrôler le voyant d'état": "Se han añadido los comandos **Led on**, **Led off** y **Led statut** para controlar el indicador de estado", + "Ajout des commandes **Loudness statut**, **Loudness on**, **Loudness off**": "Se han añadido los comandos **Loudness estado**, **Loudness activado** y **Loudness desactivado**", + "Ajout du tag \"Compatibilité V4\"": "Se ha añadido la etiqueta «Compatibilidad con la versión 4»", + "Ajout d’une commande \"Entrée de ligne\"": "Incorporación de un comando «Entrada de línea»", + "Amélioration de la reprise suite à un TTS": "Mejora en la recuperación de TTS", + "Amélioration du script d'installation des dépendances": "Script de instalación de dependencia mejorado", + "Amélioration du script d'installation des dépendances (pourra permettre de corriger dans certain cas les soucis de TTS)": "Mejora del script de instalación de dependencias (podría permitir corregir, en algunos casos, los problemas de TTS)", + "Attention": "Atención", + "Certaines fonctionnalités ont dû être retirées": "Algunas características tuvieron que ser eliminadas", + "Ces commandes agissent toujours sur l'équipement correspondant.": "Estos comandos siempre actúan sobre el equipo correspondiente.", + "Ces commandes indiqueront et contrôleront la lecture en cours sur l'équipement ou sur le groupe si celui-ci est groupé et cela de façon transparente, vous ne devez pas vous préoccuper de savoir si l'équipement est groupé ou pas pour les utiliser.": "Estos comandos mostrarán y controlarán la reproducción actual en el dispositivo o en el grupo, si este está agrupado, y lo harán de forma transparente; no tienes que preocuparte por si el dispositivo está agrupado o no para utilizarlos.", + "Ces commandes vont toujours contrôler l'équipement correspondant, y compris lorsque celui-ci est dans un groupe.": "Estos comandos siempre controlarán el equipo correspondiente, incluso cuando este forme parte de un grupo.", + "Champ 1: 192.168.xxx.yyy": "Campo 1: 192.168.xxx.yyy", + "Champ 2: *Jeedom*": "Campo 2: *Jeedom*", + "Champ 3: *TTS*": "Campo 3: *TTS*", + "Changelog Sonos controller": "Registro de cambios del controlador de Sonos", + "Commandes de lecture": "Controles de reproducción", + "Commandes de volume & contrôle du Sonos": "Controles y controles de volumen de Sonos", + "Commandes pour gérer les groupes": "Comandos para gestionar grupos", + "Compatible Debian 11 et 12!": "¡Compatible con Debian 11 y 12!", + "Compatible PHP7 uniquement": "Solo PHP7 compatible", + "Configuration des équipements": "Configuración del equipo", + "Configuration du plugin": "Configuración del plugin", + "Correction d'un bug mineur sur la commande **Dire**": "Se ha corregido un error menor en el comando **Dire**", + "Correction d'un bug sur le TTS": "Se corrigió un error en el TTS", + "Correction de bug si un sonos n'est pas joignable": "Corrección de errores si no se puede alcanzar un sistema de sonido", + "Correction de bugs dans le cas où les sonos ont été ajoutés manuellement": "Se corrigieron errores en caso de que los sistemas de sonido se agregaran manualmente", + "Correction de la langue avec PicoTTS": "Corrección de lengua con picotts", + "Correction de nombreux bugs": "Se han corregido numerosos errores", + "Correction du bouton play/pause lors de la mise à jour du widget.": "Se ha corregido el botón de reproducción/pausa al actualizar el widget.", + "Corrections des images": "Correcciones de imagen", + "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Correcciones para el mensaje «Error al renovar la suscripción» y la pérdida de la transmisión de información", + "Côté Bibliothèque Sonos (appli PC)": "En la biblioteca de Sonos (aplicación para PC)", + "Côté NAS, la config suivante doit être effectuée:": "En cuanto al NAS, hay que realizar la siguiente configuración:", + "Côté Plugin Sonos, la config :": "En cuanto al plugin de Sonos, la configuración:", + "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple ": "En caso de que tus altavoces Jeedom no estén en la misma subred que Jeedom, puedes configurarlo preferiblemente en formato CIDR, por ejemplo: ", + "Exemple de configuration": "Ejemplo de configuración", + "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements.": "También es posible solicitar la (re)sincronización de los dispositivos, favoritos y listas de reproducción sin necesidad de reiniciar el demonio desde el panel de dispositivos.", + "Il faut absolument mettre un mot de passe pour que cette procédure fonctionne.": "Es imprescindible introducir una contraseña para que este procedimiento funcione.", + "Il faut aussi absolument un sous-répertoire pour que le fichier vocal soit correctement créé.": "También es imprescindible que haya un subdirectorio para que el archivo de voz se cree correctamente.", + "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon.": "Ya no es necesario iniciar el proceso de detección manualmente y tampoco es necesario (ni posible) añadir dispositivos manualmente, ya que el complemento detecta automáticamente tus dispositivos Sonos y crea los dispositivos correspondientes cada vez que se inicia el demonio.", + "Il ne faut surtout pas d'accent dans le nom du partage ou le dossier, d'espace ou de caractères spéciaux.": "Es muy importante que el nombre del recurso compartido o de la carpeta no contenga acentos, espacios ni caracteres especiales.", + "Je recommande d'utiliser cette commande-ci dans un scénario au lieu de **Répéter** & **Aléatoire** afin d'arriver dans la configuration désirée même si toutes agissent sur les mêmes paramètres. Cette commande est par contre le seul moyen de passer en mode *Répéter le morceau* ou *Aléatoire et répéter le morceau*.": "Recomiendo utilizar este comando en un escenario en lugar de **Repetir** y **Aleatorio** para conseguir la configuración deseada, aunque todos actúen sobre los mismos parámetros. Sin embargo, este comando es la única forma de pasar al modo *Repetir la canción* o *Aleatorio y repetir la canción*.", + "La configuration des équipements Sonos est accessible à partir du menu Plugins puis multimédia.": "Se puede acceder a la configuración de los dispositivos Sonos desde el menú «Plugins» y, a continuación, «Multimedia».", + "La configuration est très simple, après téléchargement du plugin, il vous suffit de l’activer, d'installer les dépendances et de démarrer le démon.": "La configuración es muy sencilla: tras descargar el complemento, solo tienes que activarlo, instalar los requisitos previos e iniciar el demonio.", + "La création du fichier audio est géré par le core de Jeedom: la langue sera celle configurée dans Jeedom et le moteur TTS utilisé peut également être sélectionné dans la configuration Jeedom.": "La creación del archivo de audio la gestiona el núcleo de Jeedom: el idioma será el configurado en Jeedom y el motor TTS utilizado también se puede seleccionar en la configuración de Jeedom.", + "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée.": "El mosaico preconfigurado no tiene en cuenta si los controles están visibles o no, ni las opciones avanzadas de visualización; su configuración no se puede modificar.", + "Le TTS (text-to-speech) vers le Sonos nécessite d’avoir un partage SAMBA sur le réseau (imposé par Sonos, pas moyen de faire autrement). Il faut vous donc un NAS ou équivalent sur le réseau. La configuration est assez simple il faut mettre le nom ou l’ip du NAS (attention à bien mettre la même chose que ce qui est déclaré sur Sonos) et le chemin vers le dossier qui doit contenir les fichiers audio ainsi que le nom d’utilisateur et le mot de passe (attention l’utilisateur doit avoir les droits en écriture)": "Para que el TTS (text-to-speech) funcione con Sonos, es necesario tener un recurso compartido SAMBA en la red (es un requisito de Sonos, no hay otra forma de hacerlo). Por lo tanto, necesitas un NAS o equivalente en la red. La configuración es bastante sencilla: hay que introducir el nombre o la IP del NAS (atención: asegúrate de introducir exactamente lo mismo que figura en Sonos), la ruta a la carpeta que debe contener los archivos de audio, así como el nombre de usuario y la contraseña (atención: el usuario debe tener permisos de escritura).", + "Le panel": "El panel", + "Le plugin Sonos met aussi à disposition un panel qui rassemble tous vos Sonos. Disponible à partir du menu Accueil → Sonos Controller :": "El complemento de Sonos también ofrece un panel que reúne todos tus dispositivos Sonos. Disponible desde el menú Inicio → Sonos Controller:", + "Le plugin Sonos permet de piloter les Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Il va vous permettre de voir l’état du/des Sonos et d’effectuer des actions (lecture, pause, suivant, précédent, volume, choix d’une playlist…).": "El complemento de Sonos permite controlar los dispositivos Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Te permitirá ver el estado de los dispositivos Sonos y realizar acciones (reproducir, pausar, canción siguiente, canción anterior, ajustar el volumen, seleccionar una lista de reproducción…).", + "Le plugin va rechercher les Sonos sur votre réseau et créer les équipements automatiquement. De plus, s’il y a une correspondance entre les objets Jeedom et les pièces du Sonos, Jeedom affectera automatiquement les Sonos dans les bonnes pièces.": "El complemento buscará los dispositivos Sonos en tu red y creará los equipos automáticamente. Además, si hay una correspondencia entre los objetos de Jeedom y las habitaciones de Sonos, Jeedom asignará automáticamente los dispositivos Sonos a las habitaciones correctas.", + "Les commandes": "Las órdenes", + "Les commandes infos seront mises à jour en quasi temps réel (délai de quelques secondes maximum normalement) mais l'image de l'album en cours de lecture peut mettre un peu plus de temps à s'afficher sur le widget lors d'un changement de piste, ceci est parfaitement normal et indépendant du plugin: il doit récupérer l'image depuis une source externe (sur un Sonos ou sur internet) et cela prend parfois plusieurs secondes (en principe maximum une dizaine de secondes).": "Los datos de control se actualizarán casi en tiempo real (normalmente con un retraso de unos segundos como máximo), pero la imagen del álbum que se está reproduciendo puede tardar un poco más en aparecer en el widget al cambiar de pista; esto es totalmente normal y no tiene nada que ver con el complemento: tiene que recuperar la imagen de una fuente externa (en un Sonos o en Internet) y eso a veces lleva varios segundos (en principio, como máximo unos diez segundos).", + "Les messages trop longs ne peuvent être transmis en TTS (la limite dépend du fournisseur de TTS, en général environ 100 caractères).": "Los mensajes demasiado largos no se pueden transmitir mediante TTS (el límite depende del proveedor de TTS; por lo general, ronda los 100 caracteres).", + "Les playlists et les favoris doivent être créés via l'app Sonos (sur mobile ou sur ordi) ensuite il faut faire une synchronisation pour mettre à jour les équipements et pouvoir les utiliser dans un scénario.": "Las listas de reproducción y los favoritos deben crearse a través de la aplicación de Sonos (en el móvil o en el ordenador); a continuación, hay que realizar una sincronización para actualizar los dispositivos y poder utilizarlos en un escenario.", + "Lors de l'utilisation du TTS (commande **Dire**), le plugin va effectuer les actions suivantes:": "Al utilizar el TTS (comando **Dire**), el complemento llevará a cabo las siguientes acciones:", + "Mise à jour de la documentation": "Actualización de documentación", + "Mise à jour de la librairie de communication avec les Sonos": "Actualización de la biblioteca de comunicación con Sonos", + "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple)": "Actualización (casi) en tiempo real de los comandos e información (con un retraso de entre 0,5 s y unos segundos como máximo), sin necesidad de tareas programadas por minutos, incluso cuando se realiza un cambio fuera de Jeedom (por ejemplo, a través de la aplicación de Sonos).", + "Mise à jour immediate du volume en cas de changement par Jeedom, merci @Domochip": "Actualización de volumen inmediata en caso de cambio por parte de Jeedom, gracias @Domochip", + "Mise à jour liste des commandes pour Jeedom v4.3": "Lista de comandos de actualización para Jeedom v4.3", + "Modification du volume sur la valeur choisie lors de l'utilisation de la commande (uniquement sur l'équipement, pas sur tout le groupe)": "Ajuste del volumen al valor seleccionado al utilizar el mando (solo en el equipo, no en todo el grupo)", + "Nettoyage des accents dans les noms de partage (non supportés par le plugin)": "Eliminación de acentos en los nombres de recursos compartidos (no compatibles con el complemento)", + "Nom d’utilisateur (*jeedom* dans l'exemple) et son mot de passe…​": "Nombre de usuario (*jeedom* en el ejemplo) y su contraseña…​", + "Nouvelle présentation de la liste des objets": "Nueva presentación de la lista de objetos", + "Nécessite Jeedom 4.4.8": "Requiere Jeedom 4.4.8", + "Optimisation : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant.": "Optimización: ya no hay pérdidas de memoria en el demonio y consume menos que antes.", + "Optimisation de l'affichage de la pochette de la lecture en cours": "Se optimizó la visualización de la portada que se está reproduciendo actualmente", + "Optimisation du chargement des playlists": "Carga optimizada de listas de reproducción", + "Optimisation du code en cas de Sonos non connecté": "Optimización de código en caso de que Sonos no esté conectado", + "Optimisation sur la lecture des favoris": "Optimización en la lectura de favoritos", + "Optimisations": "Optimizaciones", + "Optimisations V4.2": "Optimizaciones V4.2", + "Optimisations globales": "Optimizaciones globales", + "Partage :": "Compartir:", + "Plugin Sonos": "Complemento Sonos", + "Pour avoir le panel il faut l’avoir activé dans la configuration du plugin.": "Para poder acceder al panel, es necesario haberlo activado en la configuración del complemento.", + "Prise en charge de l'enceinte lampe Ikea SYMFONISK": "Soporte de altavoz de lámpara Ikea SYMFONISK", + "Prise en charge de l'enceinte étagere Ikea SYMFONISK": "Soporte para altavoz de estantería Ikea SYMFONISK", + "Prise en charge de la nouvelle api Sonos": "Soporte para la nueva API de Sonos", + "Prise en charge des Sonos One et Playbase": "Soporte para Sonos One y Playbase", + "Prise en charge des sonos beam et One": "Soporte para sistemas de sonido Beam y One", + "Prise en charge des sonos one gen2": "Soporte para un sonos gen2", + "Prise en charge du Sonos ARC": "Compatibilidad con Sonos ARC", + "Prise en charge du Sonos Move": "Soporte para Sonos Move", + "Prise en charge du Sonos One S22": "Soporte para Sonos One S22", + "Prise en charge du Sonos port": "Soporte de puerto de Sonos", + "Préparation pour Jeedom 4.4": "Preparándose para Jeedom 4.4", + "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation). Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur. Le volume est, lui, toujours contrôlé par enceinte.": "Rediseño de la gestión de grupos (se eliminarán los antiguos comandos y se añadirán otros nuevos; consulta la documentación). Es posible unirse a un grupo o abandonarlo, así como controlar la reproducción del grupo desde cualquier dispositivo del grupo sin tener que preocuparse de quién es el controlador. El volumen, por su parte, se controla siempre por altavoz.", + "Refonte importante du plugin : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "Reestructuración importante del complemento: se ha reescrito una gran parte del complemento, incluida toda la comunicación con Sonos (demonio), y se han modificado algunas funciones, que ya no funcionan como antes, en particular la gestión de grupos;", + "Réecriture complète du plugin": "Completa reescritura del complemento", + "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP)": "Reescritura casi total del complemento; el demonio se ha reescrito por completo en Python (en lugar de PHP).", + "Si plus tard vous ajoutez un Sonos, vous pouvez cliquer sur **Synchroniser** dans la page des équipements ou redémarrer le démon.": "Si más adelante añades un Sonos, puedes hacer clic en **Sincronizar** en la página de dispositivos o reiniciar el demonio.", + "Support de la nouvelle enceinte SYMFONISK": "Soporte para el nuevo altavoz SYMFONISK", + "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom)": "Se ha eliminado la dependencia de PicoTTS (el complemento utiliza el motor global de TTS de Jeedom)", + "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Sincronización automática cada hora para corregir posibles desincronizaciones", + "TTS": "TTS", + "Voir également ": "Véase también ", + "Vos équipements Sonos doivent être joignable directement par la machine hébergeant Jeedom (broadcast / multicast possible sur le même réseau) et ils doivent être capable de joindre Jeedom en retour sur le port TCP 1400.": "Tus dispositivos Sonos deben ser accesibles directamente desde el servidor que aloja Jeedom (es posible el broadcast o el multicast en la misma red) y deben poder conectarse a Jeedom a través del puerto TCP 1400.", + "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix...": "También tienes la posibilidad de desactivar el mosaico del equipo preconfigurado (opción activa por defecto) y, en ese caso, configurar dicho mosaico como desees utilizando los widgets del núcleo o tus propios widgets, mostrar u ocultar los controles que elijas...", + "Vous retrouvez ici toute la configuration habituelle de votre équipement :": "Aquí encontrarás toda la configuración habitual de tu equipo:", + "ce sujet sur community": "este tema en la comunidad", + "forcer la lecture en mode \"Normal\", sans répétition": "forzar la reproducción en modo “Normal”, sin repetición", + "forcer le mode \"non muet\" (uniquement sur l'équipement, pas sur tout le groupe)": "forzar el modo «no silenciado» (solo en el equipo, no en todo el grupo)", + "génération du fichier audio contenant le message avec le support du core de Jeedom": "generación del archivo de audio que contiene el mensaje con soporte central de Jeedom", + "l'utilisateur sera *sonos* (dans cet exemple) + mot de passe": "El usuario será *sonos* (en este ejemplo) + contraseña", + "le chemin est : //192.168.xxx.yyy/Jeedom/TTS": "la ruta es: //192.168.xxx.yyy/Jeedom/TTS", + "le dossier *Jeedom* est partagé et il contient un dossier *TTS*": "La carpeta *Jeedom* está compartida y contiene una carpeta *TTS*", + "lecture du message": "mensaje de lectura", + "l’utilisateur *jeedom* a un accès lecture/écriture (nécessaire pour Jeedom).": "El usuario *jeedom* tiene acceso de lectura y escritura (necesario para Jeedom).", + "l’utilisateur *sonos* a un accès en lecture seule (nécessaire pour les Sonos).": "El usuario *sonos* tiene acceso de solo lectura (necesario para los dispositivos Sonos).", + "restauration de l'état du Sonos avant la lecture (donc le mode de lecture, muet ou pas, répétition ou pas...) et redémarrage du flux si le Sonos était en cours de lecture": "restaurar el estado de Sonos antes de la reproducción (es decir, el modo de reproducción, silenciar o no, repetir o no, etc.) y reiniciar la transmisión si Sonos estaba reproduciendo", + "écriture du fichier sur le partage SAMBA": "escribiendo el archivo en el recurso compartido SAMBA" +} \ No newline at end of file diff --git a/docs/de_DE/changelog.md b/docs/de_DE/changelog.md index e6b7c59..861ef0e 100644 --- a/docs/de_DE/changelog.md +++ b/docs/de_DE/changelog.md @@ -1,196 +1,200 @@ -# Changelog Sonos Controller - ->**Wichtig** -> ->Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt - -# - -- Hinzufügen eines Info-Befehls **** ) - -# 27-01-2026 - -- Ajout de l'image pour *Ikea Table Lamp* - -# 19.01.2026 - -- Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom -- Corrections pour le message "Subscription renewal failed" et la perte de remontée des informations -- Bildkorrekturen - -# 26-04-2025 - -> Attention -> Bedeutende Neugestaltung des Plugins : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ; -> -> Erfordert Jeedom 4.4.8 -> -> Debian 11 und 12 kompatibel! -> -> Siehe auch [dieses Thema auf Community](https://community.jeedom.com/t/erreur-you-cannot-create-a-controller-instance-from-a-speaker-that-is-not-the-coordinator-of-its-group/128862) für mehr Details - -- Das Plugin wurde fast komplett neu geschrieben, der Daemon wurde komplett in Python (anstelle von PHP) neu geschrieben) -- Debian 11 und 12 kompatibel! -- Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon. -- Es ist auch möglich, Geräte, Favoriten und Wiedergabelisten (erneut) zu synchronisieren, ohne den Daemon über das Gerätefenster neu zu starten. -- Synchro automatique chaque heure pour corriger les désynchronisations éventuelles -- Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple) -- Neugestaltung der Gruppenverwaltung (alte Befehle werden gelöscht und neue hinzugefügt, siehe Dokumentation). Es ist möglich, einer Gruppe beizutreten oder sie zu verlassen und die Wiedergabe der Gruppe von jedem Gerät in der Gruppe aus zu steuern, ohne sich Gedanken darüber machen zu müssen, wer der Controller ist. Le volume est, lui, toujours contrôlé par enceinte. -- Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**. -- Optimierung : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant. -- Die Anzeige des aktuell wiedergegebenen Covers wurde optimiert -- Optimierung der Lesefavoriten -- Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix... - -- Hinzufügen eines Aktionsbefehls **Fernseher** um zum Eingang zu wechseln *Fernseher* auf kompatiblen Geräten -- Hinzufügen eines Info-Befehls **Lesemodus** und Aktion **Wählen Sie den Lesemodus** Hier können Sie den Lesemodus aus den folgenden Möglichkeiten auswählen: *Normal*, *Wiederhole alles*, *Zufällig und alles wiederholen*, *Zufällig ohne Wiederholung*, *Lied wiederholen*, *Zufälliges und wiederholtes Lied* -- Bestellung hinzufügen **Lesestatus** Dies gibt den „Rohwert“ des Lesestatus (den vorhandenen Befehl) an **Status** Gibt einen übersetzten Wert basierend auf der in Jeedom konfigurierten Sprache an) -- Befehle hinzufügen **Gruppenstatus** (gibt an, ob das Gerät gruppiert ist oder nicht) und **Name der Gruppe** für den Fall, dass die Ausrüstung gruppiert ist -- Befehle hinzufügen **Das Geschenk**, **LED aus** Und **Status-LED** um die Statusanzeige zu überprüfen -- Bestellung hinzufügen **Spielen Sie MP3-Radio** um ein MP3-Radio direkt über eine URL (z. B. im Internet zugänglich) abzuspielen) -- Befehle hinzufügen **Drehe die Lautstärke hoch** Und **Verringern Sie die Lautstärke** ab 1% -- Bestellung hinzufügen **Lautstärkeübergang** Dies ist sehr nützlich für die Verwaltung von Lautstärkeübergängen. 3 mögliche Modi: *LINEAR*, *ALARM*, *AUTOMATISCHES ABSPIELEN*. Weitere Informationen finden Sie in der Dokumentation. -- Befehle hinzufügen **Lautstärkestatus**, **Lautstärke an**, **Lautstärke aus** -- Befehle hinzufügen **Fade-Status**, **Einblenden**, **Ausblenden** -- Befehle hinzufügen **Status-Touch-Steuerelemente**, **Touch-Bedienelemente ein**, **Touch-Steuerung ausgeschaltet** -- Befehle hinzufügen **Gleichgewicht** (Aktion/Cursor) und **Kontostand** die den Saldo nach einem Wert zwischen -100 (ganz links) und 100 (ganz rechts) verwaltet) -- Befehle hinzufügen **Gräber** (Aktion/Cursor) und **Ernsthafter Status** die den Bass nach einem Wert zwischen -10 und 10 verwaltet -- Befehle hinzufügen **Verdreifachen** (Aktion/Cursor) und **Dreifacher Status** qui gèrent les aigus selon une valeur comprise entre -10 et 10 -- Befehl hinzufügen **Partymode** Dadurch können Sie alle Sonos gruppieren -- Befehl hinzufügen **Mikrofonstatus** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro -- Hinzufügen eines Info-Befehls **Batterie** Bei Sonos, die mit einem Akku ausgestattet sind, wird der Akkuladestand in Prozent angezeigt -- Hinzufügen eines Info-Befehls **Laden** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non -- Hinzufügen eines Info-Befehls **Nächster Alarm** Auf jedem Sonos wird das Datum des nächsten auf diesem Lautsprecher programmierten Alarms angezeigt - -# 25.04.2024 - -- Aktualisierung der Dokumentation -- Nettoyage des accents dans les noms de partage (non supportés par le plugin) -- Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom) -- Sonos Beam Gen 2 hinzugefügt - -# 15.01.2024 - -- Vorbereitung auf Jeedom 4.4 -- Sonos Move 2 hinzugefügt - -# 24.08.2023 - -- Ikea Symfonisk Stehlampe hinzugefügt - -# 25.05.2023 - -- Sonos-Ära hinzugefügt - -# 18.10.2022 - -- Befehlsliste für Jeedom v4.3 aktualisieren -- Sonos Ray hinzugefügt - -# 22.03.2022 - -- Unterstützung für den neuen SYMFONISK-Lautsprecher - -# 01.02.2022 - -- Fehler im TTS behoben - -# 27.01.2022 - -- V4.2-Optimierungen - -# 14.01.2022 - -- Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK - -# 27.12.2021 - -- Ajout de la compatibilité avec la nouvelle Sonos One - -# 09.10.2021 - -- Hinzufügung der Sonos Five -- Hinzufügen von Sonos Roam -- Symfonisk Framework hinzufügen -- Sofortige Volumenaktualisierung bei Änderung durch Jeedom, danke @Domochip - -# 24/11/2020 - -- Neue Darstellung der Objektliste -- Hinzufügung des Tags "V4-Kompatibilität" - -# 08/07/2020 - -- Sonos ARC-Unterstützung - -# 24.01.2020 - -- Unterstützung für Sonos One S22 - -# 01/11/2020 - -- Unterstützung für Sonos Move -- Codeoptimierung bei nicht verbundenem Sonos - -# 16.12.2019 - -- Fehlerbehebung, wenn ein Soundsystem nicht erreicht werden kann - -# 21.10.2017 - -- Verbesserung der Erholung von TTS - -# 15.10.2019 - -- Sonos Port-Unterstützung -- Verbessertes Skript zur Installation von Abhängigkeiten - -# 10/07/2019 - -- Verbesserung des Abhängigkeitsinstallationsskripts (kann in einigen Fällen die Behebung der Probleme von TTS ermöglichen) - -# 2019.09.23 - -- Optimisations - -# 09/01/2019 - -- Unterstützung für Ikea SYMFONISK Lampenlautsprecher - -# 08/12/2019 - -- Unterstützung für Ikea SYMFONISK Regallautsprecher - -# 23.04.2019 - -- Unterstützung für ein Gen2-Sonos - -# 17.01.2019 - -- Fehler behoben, falls die Soundsysteme manuell hinzugefügt wurden - -# 2019.01.15 - -**WICHTIG NUR MIT PHP7 ARBEITEN, SIEHE JEEDOM GESUNDHEITSSEITE FÜR IHRE VERSION** - -- Vollständiges Umschreiben des Plugins -- Unterstützung für die neue Sonos-API -- Unterstützung für Beam- und One-Soundsysteme -- Correction de nombreux bugs -- Globale Optimierungen - -**Wichtig** - -- Nur kompatibles PHP7 -- Einige Funktionen mussten entfernt werden - -# 2018 - -- Verwaltung der Sonos-Favoriten hinzugefügt -- Unterstützung für Sonos One und Playbase -- Zungenkorrektur mit Picotts -- Hinzufügen eines Befehls "Zeileneintrag"" -- Mise à jour de la librairie de communication avec les Sonos -- Optimiertes Laden von Wiedergabelisten -- Zugabe von Picotts zur lokalen TTS-Erzeugung -- Korrektur der Wiedergabe- / Pause-Schaltfläche beim Aktualisieren des Widgets. +# Changelog Sonos Controller + +>**WICHTIG** +> +>Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich ausschließlich um eine Aktualisierung der Dokumentation, der Übersetzung oder des Textes handelt. + +# 18-05-2026 + +- Behebung eines kleinen Fehlers beim Befehl **Dire** + +# 11-04-2026 + +- Hinzufügen eines Befehls „Info **Sender**“, der den aktuell wiedergegebenen Radiosender anzeigt (sofern diese Information verfügbar ist) + +# 27-01-2026 + +- Bild für *Ikea Tischlampe* hinzugefügt + +# 19-01-2026 + +- Hinzufügen einer optionalen Konfiguration, um – nur falls erforderlich – das Subnetz (VLAN) anzugeben, in dem sich Ihre Sonos-Lautsprecher befinden, falls dieses vom Subnetz (VLAN) abweicht, in dem sich Jeedom befindet +- Korrekturen für die Meldung „Subscription renewal failed“ und den Verlust der Informationsübermittlung +- Bildkorrekturen + +# 26-04-2025 + +> Aufmerksamkeit +> Umfassende Überarbeitung des Plugins: Ein Großteil des Plugins wurde neu geschrieben, darunter die gesamte Kommunikation mit Sonos (Daemon), und einige Funktionen wurden geändert und funktionieren nicht mehr wie zuvor, insbesondere die Verwaltung von Gruppen; +> +> Erfordert Jeedom 4.4.8 +> +> Kompatibel mit Debian 11 und 12! +> +> Siehe auch [dieses Thema auf Community](https://community.jeedom.com/t/erreur-you-cannot-create-a-controller-instance-from-a-speaker-that-is-not-the-coordinator-of-its-group/128862) Weitere Informationen + +- Das Plugin wurde fast vollständig überarbeitet; der Daemon wurde komplett in Python (anstelle von PHP) neu geschrieben. +- Kompatibel mit Debian 11 und 12! +- Es muss kein Erkennungsvorgang mehr manuell gestartet werden, und es ist nicht mehr erforderlich (und auch nicht möglich), Geräte manuell hinzuzufügen. Das Plugin erkennt Ihre Sonos-Geräte automatisch und legt bei jedem Start des Daemons die entsprechenden Geräte an. +- Es ist außerdem möglich, über das Geräte-Panel die (Neu-)Synchronisierung von Geräten, Favoriten und Wiedergabelisten anzufordern, ohne den Daemon neu zu starten. +- Stündliche automatische Synchronisierung zur Korrektur eventueller Abweichungen +- Aktualisierung der Steuerungsinformationen in (nahezu) Echtzeit (Verzögerung von 0,5 s bis maximal einigen Sekunden), kein minutenspezifischer Cron-Job mehr, auch wenn eine Änderung außerhalb von Jeedom vorgenommen wird (z. B. über die Sonos-App) +- Überarbeitung der Gruppenverwaltung (die bisherigen Befehle werden entfernt und neue hinzugefügt, siehe Dokumentation). Es ist möglich, einer Gruppe beizutreten oder sie zu verlassen sowie die Wiedergabe der Gruppe von jedem Gerät der Gruppe aus zu steuern, ohne darauf achten zu müssen, welches Gerät als Controller fungiert. Die Lautstärke wird weiterhin pro Lautsprecher geregelt. +- Anpassung der Text-to-Speech-Funktion (TTS): **Die Konfiguration der SAMBA-Freigabe muss angepasst werden**. +- Optimierung: Keine Speicherverluste mehr beim Daemon, und er verbraucht weniger als zuvor. +- Die Anzeige des aktuell wiedergegebenen Covers wurde optimiert +- Optimierung der Lesefavoriten +- Es wurde die Möglichkeit hinzugefügt, die vorkonfigurierte Kachel zu deaktivieren: Sie können diese dann nach Belieben konfigurieren, indem Sie die Widgets des Kerns oder Ihre eigenen Widgets verwenden und die gewünschten Befehle ein- oder ausblenden... + +- Hinzufügen eines Befehls „**TV**“, um bei kompatiblen Geräten auf den Eingang *TV* umzuschalten +- Hinzufügen eines Befehls „**Wiedergabemodus**“ und einer Aktion „**Wiedergabemodus auswählen**“, mit der der Wiedergabemodus aus den folgenden Optionen ausgewählt werden kann: *Normal*, *Alles wiederholen*, *Zufällig und alles wiederholen*, *Zufällig ohne Wiederholung*, *Titel wiederholen*, *Zufällig und Titel wiederholen* +- Hinzufügen eines Befehls **Lesestatus**, der den „rohen“ Wert des Lesestatus angibt (der bereits vorhandene Befehl **Status** gibt einen Wert aus, der entsprechend der in Jeedom konfigurierten Sprache übersetzt wurde) +- Hinzufügen der Befehle **Statusgruppe** (gibt an, ob das Gerät einer Gruppe zugeordnet ist oder nicht) und **Gruppenname**, falls das Gerät einer Gruppe zugeordnet ist +- Hinzufügen der Befehle **LED ein**, **LED aus** und **LED-Status** zur Steuerung der Status-LED +- Hinzufügen eines Befehls **MP3-Radio abspielen**, um ein MP3-Radio direkt über eine URL (z. B. im Internet verfügbar) abzuspielen +- Hinzufügen der Befehle **Lautstärke erhöhen** und **Lautstärke verringern** um 1 % +- Es wurde ein Befehl namens **Lautstärkenübergang** hinzugefügt, der für die Steuerung von Lautstärkenübergängen sehr nützlich ist. Es stehen 3 Modi zur Verfügung: *LINEAR*, *ALARM*, *AUTOPLAY*. Weitere Informationen finden Sie in der Dokumentation. +- Hinzufügen der Befehle **Loudness-Status**, **Loudness ein**, **Loudness aus** +- Hinzufügen der Befehle **Status-Überblendung**, **Überblendung ein**, **Überblendung aus** +- Hinzufügen der Befehle **Touch-Befehle „Status“**, **Touch-Befehle „Ein“**, **Touch-Befehle „Aus“** +- Hinzufügen der Befehle **Waage** (Aktion/Schieberegler) und **Waagenstatus**, die die Waage anhand eines Werts zwischen -100 (ganz links) und 100 (ganz rechts) steuern +- Hinzufügen der Befehle **Bässe** (Aktion/Schieberegler) und **Bässe-Status**, die die Bässe anhand eines Werts zwischen -10 und 10 steuern +- Hinzufügen der Befehle **Höhen** (Aktion/Schieberegler) und **Höhenstatus**, die die Höhen anhand eines Werts zwischen -10 und 10 regeln +- Hinzufügung der Steuerung **Party-Modus**, mit der alle Sonos-Geräte zusammengefasst werden können +- Hinzufügen des Befehls **Mikrofonstatus**, der anzeigt, ob das Mikrofon bei Sonos-Geräten mit Mikrofon aktiviert ist oder nicht +- Hinzufügen eines Info-Befehls **Batterie** bei Sonos-Geräten mit Batterie, der den Ladezustand der Batterie in Prozent anzeigt +- Hinzufügen eines Info-Befehls **Ladevorgang** auf Sonos-Geräten mit Batterie, der anzeigt, ob gerade geladen wird oder nicht +- Hinzufügen eines Befehls „**Nächster Alarm**“ auf jedem Sonos-Gerät, der das Datum des nächsten auf diesem Lautsprecher programmierten Alarms angibt + +# 25/04/2024 + +- Aktualisierung der Dokumentation +- Entfernen von Akzenten in Freigabenamen (vom Plugin nicht unterstützt) +- Beseitigung der Abhängigkeit von PicoTTS (das Plugin nutzt die globale TTS-Engine von Jeedom) +- Sonos Beam Gen 2 hinzugefügt + +# 15/01/2024 + +- Vorbereitung auf Jeedom 4.4 +- Sonos Move 2 hinzugefügt + +# 24/08/2023 + +- Ikea Symfonisk Stehlampe hinzugefügt + +# 25/05/2023 + +- Sonos-Ära hinzugefügt + +# 18/10/2022 + +- Befehlsliste für Jeedom v4.3 aktualisieren +- Sonos Ray hinzugefügt + +# 22/03/2022 + +- Unterstützung für den neuen SYMFONISK-Lautsprecher + +# 01/02/2022 + +- Fehler im TTS behoben + +# 27/01/2022 + +- V4.2-Optimierungen + +# 14/01/2022 + +- Kompatibilität mit dem neuen SYMFONISK-Lautsprecher hinzugefügt + +# 27/12/2021 + +- Kompatibilität mit dem neuen Sonos One hinzugefügt + +# 09/10/2021 + +- Hinzufügung der Sonos Five +- Hinzufügen von Sonos Roam +- Symfonisk Framework hinzufügen +- Sofortige Volumenaktualisierung bei Änderung durch Jeedom, danke @Domochip + +# 24/11/2020 + +- Neue Darstellung der Objektliste +- Hinzufügen des Tags „V4-Kompatibilität“ + +# 07/08/2020 + +- Sonos ARC-Unterstützung + +# 24/01/2020 + +- Unterstützung für Sonos One S22 + +# 11/01/2020 + +- Unterstützung für Sonos Move +- Codeoptimierung bei nicht verbundenem Sonos + +# 16/12/2019 + +- Fehlerbehebung, wenn ein Soundsystem nicht erreicht werden kann + +# 21/10/2017 + +- Verbesserung der Erholung von TTS + +# 15/10/2019 + +- Sonos Port-Unterstützung +- Verbessertes Skript zur Installation von Abhängigkeiten + +# 07/10/2019 + +- Verbesserung des Skripts zur Installation der Abhängigkeiten (kann in bestimmten Fällen dazu beitragen, TTS-Probleme zu beheben) + +# 23/09/2019 + +- Optimierungen + +# 01/09/2019 + +- Unterstützung für Ikea SYMFONISK Lampenlautsprecher + +# 12/08/2019 + +- Unterstützung für Ikea SYMFONISK Regallautsprecher + +# 23/04/2019 + +- Unterstützung für ein Gen2-Sonos + +# 17/01/2019 + +- Fehler behoben, falls die Soundsysteme manuell hinzugefügt wurden + +# 15/01/2019 + +**WICHTIG: FUNKTIONIERT NUR MIT PHP7, SIEHE DIE JEEDOM-STATUSSEITE FÜR IHRE VERSION** + +- Vollständiges Umschreiben des Plugins +- Unterstützung für die neue Sonos-API +- Unterstützung für Beam- und One-Soundsysteme +- Behebung zahlreicher Fehler +- Globale Optimierungen + +**WICHTIG** + +- Nur kompatibles PHP7 +- Einige Funktionen mussten entfernt werden + +# 2018 + +- Verwaltung der Sonos-Favoriten hinzugefügt +- Unterstützung für Sonos One und Playbase +- Zungenkorrektur mit Picotts +- Hinzufügen eines Befehls „Zeilen-Eingabe“ +- Aktualisierung der Kommunikationsbibliothek für Sonos +- Optimiertes Laden von Wiedergabelisten +- Zugabe von Picotts zur lokalen TTS-Erzeugung +- Korrektur der Wiedergabe-/Pause-Schaltfläche beim Aktualisieren des Widgets. diff --git a/docs/de_DE/index.md b/docs/de_DE/index.md index 6ca80c7..2072757 100644 --- a/docs/de_DE/index.md +++ b/docs/de_DE/index.md @@ -1,174 +1,174 @@ -# Sonos Plugin - -Mit dem Sonos-Plug-in können Sie Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... steuern. Es ermöglicht Ihnen, den Status von Sonos anzuzeigen und Aktionen auszuführen (Wiedergabe, Pause , nächstes, vorheriges, Lautstärke, Auswahl einer Playlist…). - -# Plugin Konfiguration - -Die Konfiguration ist sehr einfach, nach dem Herunterladen des Plugins müssen Sie es nur noch aktivieren, die Abhängigkeiten installieren und den Daemon starten. -Das Plugin sucht in Ihrem Netzwerk nach Sonos und erstellt die Geräte automatisch. Wenn zwischen Jeedom-Objekten und Sonos-Räumen eine Übereinstimmung besteht, weist Jeedom Sonos automatisch den richtigen Räumen zu. - -> **Wichtig** -> Ihre Sonos-Geräte müssen direkt von der Maschine, auf der Jeedom gehostet wird, erreichbar sein (Broadcast/Multicast im selben Netzwerk möglich) und sie müssen Jeedom im Gegenzug über den TCP-Port 1400 erreichen können. - -Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0/24`. Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet. **Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut** - -Wenn Sie später einen Sonos hinzufügen, können Sie auf klicken **Synchronisieren** auf der Geräteseite oder starten Sie den Daemon neu. - -- **Teilen**: Konfigurieren Sie hier den Hostnamen der Maschine (bzw. deren IP), den Namen der Freigabe (ohne Pfad, ohne „/“) und den Pfad zum Ordner. -- **Teilen Sie den Benutzernamen**: Benutzername für den Zugriff auf die Freigabe. -- **Passwort teilen**: Passwort teilen. - -# Gerätekonfiguration - -Auf die Konfiguration der Sonos-Geräte kann über das Plugins-Menü und dann über Multimedia zugegriffen werden. - -Hier finden Sie die gesamte übliche Konfiguration Ihrer Ausrüstung : - -- **Sonos Name**: Name Ihres Sonos-Geräts. -- **Übergeordnetes Objekt**: Gibt das übergeordnete Objekt an, zu dem das Gerät gehört. -- **Aktivieren**: macht Ihre Ausrüstung aktiv. -- **Sichtbar**: macht es auf dem Dashboard sichtbar. - -Sowie Informationen zu Ihrem Sonos: *Modell*, *Veröffentlichungen*, *Seriennummer*, *Kennung*, *MAC-Adresse* Und *IP Adresse*. - -Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix... - -La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée. - -# Die Aufträge - -Die Info-Steuerelemente werden nahezu in Echtzeit aktualisiert (normalerweise maximal ein paar Sekunden), aber bei einem Titelwechsel kann es etwas länger dauern, bis das Bild des gerade abgespielten Albums im Widget angezeigt wird. Dies ist völlig normal und unabhängig vom Plugin: Er muss das Bild von einer externen Quelle (auf einem Sonos oder im Internet) abrufen, was manchmal mehrere Sekunden dauert (im Prinzip maximal etwa zehn Sekunden)). - -## Sonos-Lautstärkeregler und -Regler - -Diese Befehle steuern immer das entsprechende Gerät, auch wenn es sich in einer Gruppe befindet. - -- **Lautstärke**: Ändern Sie die Lautstärke *(von 0 bis 100)* -- **Statusvolumen**: Lautstärkepegel (in %) -- **Drehe die Lautstärke hoch**: erhöht die Lautstärke um 1 %; kann für die Integration mit anderen Systemen oder Plugins nützlich sein -- **Verringern Sie die Lautstärke**: verringert die Lautstärke um 1 %; kann für die Integration mit anderen Systemen oder Plugins nützlich sein -- **Lautstärkeübergang** Ermöglicht die Durchführung von Lautstärkeübergängen, die direkt vom Sonos-Lautsprecher verwaltet werden. Dies ist nicht das Plug-in, das sich darum kümmert und daher nicht blockiert, aber die Verzögerungen sind nicht konfigurierbar, da sie von Sonos definiert wurden. Beim Ausführen des Befehls müssen der Übergangstyp und das Zielvolume ausgewählt werden. Es gibt 3 Modi: - - *LINEAR*: Linearer Übergang vom aktuellen Volumen zum Zielvolumen (Erhöhung oder Verringerung), Geschwindigkeit ist 1.25 pro Sekunde (ein Übergang *LINEAR* Von 50 % auf 30 % dauert es 16 Sekunden) - - *ALARM*: initialisiert die Lautstärke auf 0, pausiert etwa 30 Sekunden und erhöht dann mit der Geschwindigkeit 2 auf die gewünschte Lautstärke.5 pro Sekunde (ein Übergang *ALARM* Von 0 % auf 10 % dauert es 4 Sekunden) - - *AUTOMATISCHES ABSPIELEN*: Initialisiert die Lautstärke auf 0 und erhöht sich schnell mit einer Rate von 50 pro Sekunde auf die angeforderte Lautstärke (ein Übergang) *AUTOMATISCHES ABSPIELEN* Von 0 % auf 50 % dauert es 1 Sekunde) -- **Stumm**: Stummschaltung aktivieren. -- **Keine Stummschaltung**: Schalten Sie die Stummschaltung aus. -- **Stummschaltungsstatus**: zeigt an, ob wir uns im Stummmodus befinden oder nicht. -- **Gleichgewicht** (Aktion/Cursor) und **Kontostand** die die Balance nach einem Wert zwischen -100 (ganz links) und 100 (ganz rechts) für kompatible Sonos verwaltet -- **Gräber** (Aktion/Cursor) und **Ernsthafter Status** die den Bass nach einem Wert zwischen -10 und 10 verwaltet -- **Verdreifachen** (Aktion/Cursor) und **Dreifacher Status** der die Höhen nach einem Wert zwischen -10 und 10 verwaltet -- **Lautstärkestatus**, **Lautstärke an**, **Lautstärke aus** steuert die Lautstärke - -- **Fernseher**: um zum Eingang zu wechseln *Fernseher* auf kompatiblen Geräten -- **Analoger Audioeingang**: zu wechseln'*Analoger Audioeingang* (*Line-in*) auf kompatiblen Geräten -- **Das Geschenk** Und **LED aus**: Aktiviert und deaktiviert die LED, das Statuslicht -- **Status-LED**: Zeigt an, ob die Statusleuchte leuchtet oder nicht. Diese Informationen werden nur einmal pro Minute aktualisiert, falls sie außerhalb von Jeedom geändert werden -- **Touch-Bedienelemente ein** Und **Touch-Steuerung ausgeschaltet** Aktiviert und deaktiviert physische oder Touch-Tasten auf Sonos -- **Status-Touch-Steuerelemente** Zeigt an, ob die Touch-Steuerung aktiviert ist oder nicht -- **Mikrofonstatus** Dies zeigt an, ob das Mikrofon bei Sonos, die mit einem Mikrofon ausgestattet sind, aktiviert ist oder nicht -- **Batterie** Bei Sonos, die mit einem Akku ausgestattet sind, wird der Akkuladestand in Prozent angezeigt -- **Laden** Bei Sonos, die mit einem Akku ausgestattet sind, wird angezeigt, ob der Ladevorgang läuft oder nicht - -## Wiedergabesteuerung - -Diese Befehle zeigen und steuern die aktuelle Wiedergabe auf dem Gerät oder in der Gruppe, wenn diese gruppiert ist, und zwar auf transparente Weise. Sie müssen sich keine Gedanken darüber machen, ob das Gerät gruppiert ist oder ob Sie sie nicht verwenden sollen. - -- **Status**: Leserstatus in die unter Jeedom konfigurierte Sprache übersetzt. Zum Beispiel: *Lesen*, *Pause*, *Gestoppt*. -- **Lesestatus** Dies gibt den „Rohwert“ des Lesestatus an: *SPIELEN*, *PAUSED_PLAYBACK*, *GESTOPPT*; besser geeignet für Szenarien. -- **Lesen**: lesen. -- **Pause**: Pause. -- **STOP**: Hör auf zu lesen. -- **Früher**: vorheriger Titel. -- **Folgende**: nächster Track. -- **Zufälliger Status**: zeigt an, ob wir uns im Zufallsmodus befinden oder nicht. -- **Zufällig**: Kehren Sie den Status des Zufallsmodus um. -- **Status wiederholen**: zeigt an, ob wir uns im Wiederholungsmodus befinden oder nicht. -- **Wiederholung**: Kehren Sie den Status des "Wiederholungs" -Modus um". -- **Fade-Status**, **Einblenden**, **Ausblenden** zu steuern und zu aktivieren oder nicht *Überblendung* -- **Wählen Sie den Lesemodus** ermöglicht Ihnen die Auswahl aus den folgenden Möglichkeiten: - - *Normal* (Wiederholung aus, Zufall aus), - - *Wiederhole alles* (zufällig aus), - - *Zufällig und alles wiederholen*, - - *Zufällig ohne Wiederholung*, - - *Lied wiederholen* (zufällig aus), - - *Zufälliges und wiederholtes Lied*. - - Ich empfehle, diesen Befehl stattdessen in einem Szenario zu verwenden **Wiederholung** & **Zufällig** um zur gewünschten Konfiguration zu gelangen, auch wenn alle auf die gleichen Parameter einwirken. Dieser Befehl ist jedoch die einzige Möglichkeit, in den Modus zu wechseln *Lied wiederholen* Oder *Zufälliges und wiederholtes Lied*. -- **Lesemodus** Angabe des aktuellen Zustands, der einer der oben genannten Werte sein wird. -- **Playlist abspielen**: Befehl zum Nachrichtentyp, um eine Wiedergabeliste zu starten. Geben Sie einfach den Namen der Wiedergabeliste in den Titel ein. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, wenn Sie mit der Eingabe beginnen. -- **Favoriten spielen**: Befehl zum Nachrichtentyp, um einen Favoriten zu starten. Im Titel müssen Sie lediglich den Namen des Favoriten eingeben. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, wenn Sie mit der Eingabe beginnen. -- **Spielen Sie ein Radio**: Wenn Sie einen Befehl zum Starten eines Radiosenders eingeben, müssen Sie lediglich den Namen des Radios in den Titel einfügen *(Achtung : Dies muss in den Lieblingsradios sein)*. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, wenn Sie mit der Eingabe beginnen. Funktioniert nicht mehr bei „S2“-Modellen, es ist normal, dass bei allen Modellen, die die Sonos S2-App verwenden, eine leere Liste vorhanden ist. -- **Spielen Sie MP3-Radio**: ermöglicht das Abspielen eines MP3-Radios über eine URL (z. B. aus dem Internet)). Sie müssen einen Titel in das Feld eingeben *Titel* und die URL (http(s)-Format))://...mp3) in der Gegend *Nachricht*. -- **Bild**: Link zum Albumbild. -- **Album**: Name des aktuell wiedergegebenen Albums. -- **Künstler**: Künstlername spielt gerade. -- **Verfolgen**: Name des aktuell wiedergegebenen Titels. -- **Zu sagen**: ermöglicht das Lesen eines Textes auf Sonos (siehe TTS-Teil). Im Titel können Sie die Lautstärke und in der Nachricht die zu lesende Nachricht einstellen. - -> **Hinweis** -> Wiedergabelisten und Favoriten müssen über die Sonos-App (auf dem Handy oder Computer) erstellt werden. Anschließend muss eine Synchronisierung durchgeführt werden, um die Geräte zu aktualisieren und in einem Szenario verwenden zu können. - -## Befehle zum Verwalten von Gruppen - -Diese Befehle wirken sich immer auf das entsprechende Gerät aus. - -- **Gruppenstatus**: Gibt an, ob das Gerät gruppiert ist oder nicht. -- **Name der Gruppe** Wenn das Gerät gruppiert ist, geben Sie den Namen der Gruppe an. -- **Einer Gruppe beitreten**: ermöglicht es Ihnen, der Gruppe des angegebenen Lautsprechers (einem Sonos) beizutreten (um beispielsweise zwei Sonos zuzuordnen)). Sie müssen den Namen des Soundsystem-Raums eingeben, dem Sie beitreten möchten. Dies kann ein beliebiges Mitglied einer bestehenden Gruppe sein, es muss nicht der Gruppenkoordinator oder ein isolierter Sonos sein. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, wenn Sie mit der Eingabe beginnen. -- **Die Gruppe verlassen**: ermöglicht es Ihnen, die Gruppe zu verlassen. -- **Partymode** ermöglicht es Ihnen, alle Sonos zusammenzufassen - -# TTS - -TTS (Text-to-Speech) zu Sonos erfordert die SAMBA-Freigabe im Netzwerk (wird von Sonos vorgeschrieben, es gibt keine andere Möglichkeit)). Sie benötigen daher ein NAS oder ein gleichwertiges Gerät im Netzwerk. Die Konfiguration ist ganz einfach: Sie müssen den Namen oder die IP-Adresse des NAS eingeben (achten Sie darauf, dasselbe wie bei Sonos anzugeben) und den Pfad zu dem Ordner, der die Audiodateien enthalten muss, sowie den Namen des Benutzers und Passwort (beachten Sie, dass der Benutzer über Schreibrechte verfügen muss) - -Die Erstellung der Audiodatei wird vom Jeedom-Kern verwaltet: Die Sprache ist die in Jeedom konfigurierte und die verwendete TTS-Engine kann auch in der Jeedom-Konfiguration ausgewählt werden. - -Bei Verwendung von TTS (Befehl **Zu sagen**), Das Plugin führt die folgenden Aktionen aus: - -- Generierung der Audiodatei, die die Nachricht enthält, mit Jeedom-Kernunterstützung -- Schreiben der Datei auf die SAMBA-Freigabe -- erzwingt die Wiedergabe im „Normal“-Modus ohne Wiederholung -- „Stummschaltung aufheben“-Modus erzwingen (nur für das Gerät, nicht für die gesamte Gruppe)) -- Ändern der Lautstärke auf den gewählten Wert bei Verwendung des Befehls (nur für das Gerät, nicht für die gesamte Gruppe)) -- Nachricht lesen -- Wiederherstellen des Zustands des Sonos vor der Wiedergabe (d. h. des Wiedergabemodus, stumm oder nicht, wiederholen oder nicht usw.) und Neustarten des Streams, wenn der Sonos gerade abgespielt hat - -> **Wichtig** -> -> Es ist unbedingt erforderlich, ein Passwort einzugeben, damit dieses Verfahren funktioniert. -> -> Ein Unterverzeichnis ist auch unbedingt erforderlich, damit die Sprachdatei korrekt erstellt wird. -> -> Vor allem dürfen im Namen der Freigabe oder des Ordners keine Akzente, Leerzeichen oder Sonderzeichen enthalten sein. -> -> Zu lange Nachrichten können im TTS nicht übertragen werden (Grenze abhängig vom TTS-Anbieter, in der Regel ca. 100 Zeichen)). - -## Konfigurationsbeispiel - -Auf der NAS-Seite muss die folgende Konfiguration durchgeführt werden: - -- der Ordner *Jeedom* ist freigegeben und enthält einen Ordner *TTS* -- der Benutzer *Jeedom* hat Lese-/Schreibzugriff (notwendig für Jeedom)). -- der Benutzer *sein Knochen* hat nur Lesezugriff (notwendig für Sonos)). - -Auf der Sonos-Plugin-Seite ist die config : - -- Teilen : - - Feld 1: 192.168.xxx.yyy - - Feld 2: *Jeedom* - - Feld 3: *TTS* -- Nutzername (*Jeedom* im Beispiel) und sein Passwort…​ - -Sonos Library Seite (PC App) - -- der Weg ist : //192.168.xxx.yyy/Jeedom/TTS -- der Benutzer wird sein *sein Knochen* (in diesem Beispiel) + Passwort - -# Das Panel - -Das Sonos-Plugin bietet auch ein Bedienfeld, in dem alle Ihre Sonos zusammengefasst sind. Verfügbar über das Home-Menü → Sonos Controller : - -> **Wichtig** -> -> Um das Panel zu haben, müssen Sie es in der Plugin-Konfiguration aktiviert haben. +# Sonos Plugin + +Mit dem Sonos-Plugin können Sie die Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk usw. steuern. Damit können Sie den Status der Sonos-Geräte einsehen und verschiedene Aktionen ausführen (Wiedergabe, Pause, nächster Titel, vorheriger Titel, Lautstärke, Auswahl einer Wiedergabeliste usw.). + +# Plugin Konfiguration + +Die Konfiguration ist ganz einfach: Nachdem Sie das Plugin heruntergeladen haben, müssen Sie es nur noch aktivieren, die Abhängigkeiten installieren und den Daemon starten. +Das Plugin sucht nach Sonos-Geräten in Ihrem Netzwerk und legt die Geräte automatisch an. Wenn zudem eine Übereinstimmung zwischen den Jeedom-Objekten und den Sonos-Räumen besteht, ordnet Jeedom die Sonos-Geräte automatisch den richtigen Räumen zu. + +> **Wichtig** +> Ihre Sonos-Geräte müssen direkt von dem Rechner erreichbar sein, auf dem Jeedom läuft (Broadcast/Multicast im selben Netzwerk möglich), und sie müssen im Gegenzug Jeedom über den TCP-Port 1400 erreichen können. + +Falls sich Ihre Jeedom-Lautsprecher nicht im selben Subnetz wie Jeedom befinden, können Sie dieses vorzugsweise im CIDR-Format konfigurieren, zum Beispiel `192.168.1.0/24`. Es sollte auch möglich sein, die IP-Adresse eines Ihrer Lautsprecher direkt einzugeben, um von diesem aus die anderen zu erkennen, es wird jedoch empfohlen, das gesamte Netzwerk zu konfigurieren. **Achtung: Nehmen Sie keine Konfigurationen vor, wenn Sie sich in diesem Bereich nicht auskennen; testen Sie zunächst die Standardkonfiguration.** + +Wenn Sie später ein Sonos-Gerät hinzufügen, können Sie auf der Geräteseite auf **Synchronisieren** klicken oder den Daemon neu starten. + +- **Freigabe**: Konfigurieren Sie hier den Hostnamen des Rechners (oder dessen IP-Adresse), den Namen der Freigabe (ohne Pfad, ohne „/“) und den Pfad zum Ordner. +- **Benutzername für die Freigabe**: Benutzername für den Zugriff auf die Freigabe. +- **Freigabepasswort**: Passwort für die Freigabe. + +# Gerätekonfiguration + +Die Konfiguration der Sonos-Geräte ist über das Menü „Plugins“ und anschließend „Multimedia“ zugänglich. + +Hier finden Sie alle üblichen Einstellungsmöglichkeiten für Ihre Geräte: + +- **Sonos-Name**: Name Ihres Sonos-Geräts. +- **Übergeordnetes Objekt**: Gibt das übergeordnete Objekt an, zu dem das Gerät gehört. +- **Aktivieren**: Damit können Sie Ihre Geräte aktivieren. +- **Sichtbar**: Macht es auf dem Dashboard sichtbar. + +Sowie Informationen zu Ihrem Sonos-Gerät: *Modell*, *Versionen*, *Seriennummer*, *ID*, *MAC-Adresse* und *IP-Adresse*. + +Sie haben außerdem die Möglichkeit, die vorkonfigurierte Geräte-Kachel zu deaktivieren (Option standardmäßig aktiviert) und in diesem Fall diese Kachel nach Ihren Wünschen zu konfigurieren, indem Sie die Widgets des Core oder Ihre eigenen Widgets verwenden und die Befehle Ihrer Wahl ein- oder ausblenden... + +Die vorkonfigurierte Kachel berücksichtigt weder den Sichtbarkeitsstatus der Befehle noch die erweiterten Anzeigeoptionen; ihre Konfiguration kann nicht geändert werden. + +# Die Aufträge + +Die Informationsanzeigen werden nahezu in Echtzeit aktualisiert (normalerweise mit einer Verzögerung von maximal einigen Sekunden), doch die Anzeige des Covers des aktuell wiedergegebenen Albums kann bei einem Titelwechsel etwas länger dauern, bis es im Widget erscheint. Dies ist völlig normal und hat nichts mit dem Plugin zu tun: Es muss das Bild von einer externen Quelle (auf einem Sonos-Gerät oder aus dem Internet) abrufen, was manchmal mehrere Sekunden dauern kann (in der Regel maximal etwa zehn Sekunden). + +## Sonos-Lautstärkeregler und -Regler + +Diese Befehle steuern stets das entsprechende Gerät, auch wenn dieses einer Gruppe angehört. + +- **Lautstärke**: Lautstärke ändern *(von 0 bis 100)* +- **Lautstärkestatus**: Lautstärkepegel (in %) +- **Lautstärke erhöhen**: Erhöht die Lautstärke um 1 %; kann für die Integration mit anderen Systemen oder Plugins nützlich sein +- **Lautstärke verringern**: Verringert die Lautstärke um 1 %; kann für die Integration mit anderen Systemen oder Plugins nützlich sein +- **Lautstärkenübergang** ermöglicht Lautstärkenübergänge, die direkt vom Sonos-Lautsprecher verwaltet werden. Das Plugin übernimmt diese Aufgabe nicht, sodass es zu keinen Verzögerungen kommt. Die Übergangszeiten sind jedoch nicht konfigurierbar, da sie von Sonos festgelegt werden. Die Art des Übergangs und die Ziellautstärke müssen bei der Ausführung des Befehls ausgewählt werden. Es gibt 3 Modi: + - *LINEAR*: Linearer Übergang von der aktuellen Lautstärke zur Ziellautstärke (Ansteigen oder Abfallen), die Geschwindigkeit beträgt 1,25 pro Sekunde (ein *LINEAR*-Übergang von 50 % auf 30 % dauert 16 Sekunden) + - *ALARM*: Setzt die Lautstärke auf 0, hält etwa 30 Sekunden lang an und erhöht sie anschließend mit einer Geschwindigkeit von 2,5 pro Sekunde auf die gewünschte Lautstärke (ein *ALARM*-Übergang von 0 % auf 10 % dauert 4 Sekunden) + - *AUTOPLAY*: Setzt die Lautstärke auf 0 und erhöht sie schnell auf die gewünschte Lautstärke mit einer Geschwindigkeit von 50 pro Sekunde (ein *AUTOPLAY*-Übergang von 0 % auf 50 % dauert 1 s) +- **Stumm**: Schaltet den Stummschaltungsmodus ein. +- **Stummschaltung aufheben**: Deaktiviert die Stummschaltung. +- **Stummschaltungsstatus**: Zeigt an, ob sich das Gerät im Stummschaltungsmodus befindet oder nicht. +- **Balance** (Aktion/Schieberegler) und **Balance-Status**, der die Balance für kompatible Sonos-Geräte anhand eines Werts zwischen -100 (ganz links) und 100 (ganz rechts) regelt +- **Bässe** (Aktion/Schieberegler) und **Bassstatus**, der die Bässe anhand eines Werts zwischen -10 und 10 regelt +- **Höhen** (Aktion/Schieberegler) und **Höhenstatus**, der die Höhen anhand eines Werts zwischen -10 und 10 regelt +- **Loudness-Status**, **Loudness ein**, **Loudness aus** – steuert die Lautstärke + +- **TV**: Um bei kompatiblen Geräten auf den Eingang *TV* umzuschalten +- **Analoger Audioeingang**: Zum Umschalten auf den *analogen Audioeingang* (*Line-in*) bei kompatiblen Geräten +- **LED ein** und **LED aus**: Schaltet die LED, die Statusanzeige, ein bzw. aus +- **Status-LED**: Zeigt an, ob die Status-LED leuchtet oder nicht. Diese Information wird nur einmal pro Minute aktualisiert, sofern sie außerhalb von Jeedom geändert wird. +- **Touch-Bedienelemente ein** und **Touch-Bedienelemente aus** Aktiviert und deaktiviert die physischen oder Touch-Bedienelemente am Sonos +- **Status der Touch-Bedienelemente** gibt an, ob die Touch-Bedienelemente aktiviert sind oder nicht +- **Mikrofonstatus**, der anzeigt, ob das Mikrofon bei Sonos-Geräten mit Mikrofon aktiviert ist oder nicht +- **Batterie** bei Sonos-Geräten mit Batterie, die den Ladezustand der Batterie in Prozent anzeigt +- **Ladevorgang** bei Sonos-Geräten mit Batterie, bei denen angezeigt wird, ob gerade geladen wird oder nicht + +## Wiedergabesteuerung + +Diese Befehle zeigen die aktuell auf dem Gerät oder der Gruppe (sofern diese gruppiert ist) laufende Wiedergabe an und steuern sie – und zwar auf transparente Weise. Sie müssen sich keine Gedanken darüber machen, ob das Gerät gruppiert ist oder nicht, um diese Befehle zu verwenden. + +- **Status**: Status des Players, übersetzt in die unter Jeedom konfigurierte Sprache. Zum Beispiel: *Wiedergabe*, *Pause*, *Gestoppt*. +- **Wiedergabestatus**, der den „Rohwert“ des Wiedergabestatus angibt: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; eignet sich besser für Szenarien. +- **Wiedergabe**: In den Wiedergabemodus wechseln. +- **Pause**: Anhalten. +- **Stopp**: Wiedergabe anhalten. +- **Zurück**: Vorheriger Titel. +- **Weiter**: nächster Titel. +- **Zufallsmodus**: Zeigt an, ob sich das Gerät im Zufallsmodus befindet oder nicht. +- **Zufallsmodus**: Schaltet den Zufallsmodus ein oder aus. +- **Status wiederholen**: Gibt an, ob sich das System im Wiederholungsmodus befindet oder nicht. +- **Wiederholen**: Schaltet den Status des Modus „Wiederholen“ um. +- **Überblendstatus**, **Überblendung ein**, **Überblendung aus** zum Steuern und Aktivieren bzw. Deaktivieren der *Überblendung* +- Mit **„Wiedergabemodus auswählen“** können Sie zwischen folgenden Optionen wählen: + - *Normal* (Wiederholung aus, Zufallswiedergabe aus), + - *Alles wiederholen* (Zufallswiedergabe aus), + - *Zufällig und alles wiederholen*, + - *Zufällig ohne Wiederholung*, + - *Titel wiederholen* (Zufallswiedergabe aus), + - *Zufällige Wiedergabe und Titel wiederholen*. + +Ich empfehle, diesen Befehl in einem Szenario anstelle von **Wiederholen** und **Zufällig** zu verwenden, um die gewünschte Konfiguration zu erreichen, auch wenn alle Befehle auf dieselben Parameter wirken. Dieser Befehl ist jedoch die einzige Möglichkeit, in den Modus *Titel wiederholen* oder *Zufällig und Titel wiederholen* zu wechseln. +- **Lesemodus**, der den aktuellen Status angibt, der einer der oben genannten Werte sein wird. +- **Playlist abspielen**: Ein Befehl vom Typ „Nachricht“, mit dem eine Playlist gestartet werden kann. Geben Sie dazu einfach den Namen der Playlist in die Betreffzeile ein. In einem Szenario wird automatisch eine Liste mit möglichen Optionen angezeigt, sobald Sie mit der Eingabe beginnen. +- **Favoriten aufrufen**: Eine Befehlsart, mit der Sie einen Favoriten starten können. Geben Sie dazu einfach den Namen des Favoriten in die Betreffzeile ein. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, sobald Sie mit der Eingabe beginnen. +- **Radio abspielen**: Ein Befehl vom Typ „Nachricht“, mit dem Sie ein Radio starten können. Geben Sie dazu einfach den Namen des Radios in den Titel ein *(ACHTUNG: Das Radio muss zu den Favoriten gehören)*. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, sobald Sie mit der Eingabe beginnen. Funktioniert nicht mehr auf den „S2“-Modellen; es ist normal, dass bei allen Modellen, die die Sonos S2-App verwenden, eine leere Liste angezeigt wird. +- **MP3-Radio abspielen**: Ermöglicht die Wiedergabe eines MP3-Radios über eine URL (z. B. aus dem Internet). Sie müssen einen Titel in das Feld *Titel* und die URL (im Format http(s)://...mp3) in das Feld *Nachricht* eingeben. +- **Bild**: Link zum Bild im Album. +- **Album**: Name des gerade abgespielten Albums. +- **Interpret**: Name des gerade abgespielten Interpreten. +- **Titel**: Name des gerade abgespielten Titels. +- **Dire**: Ermöglicht das Vorlesen eines Textes über Sonos (siehe Abschnitt „TTS“). Im Titel können Sie die Lautstärke festlegen und in der Nachricht den vorzulesenden Text eingeben. + +> **Hinweis** +> Playlists und Favoriten müssen über die Sonos-App (auf dem Handy oder am Computer) erstellt werden. Anschließend muss eine Synchronisierung durchgeführt werden, um die Geräte zu aktualisieren und sie in einem Szenario nutzen zu können. + +## Befehle zum Verwalten von Gruppen + +Diese Befehle wirken sich immer auf das entsprechende Gerät aus. + +- **Gruppenstatus**: Gibt an, ob das Gerät einer Gruppe zugeordnet ist oder nicht. +- **Gruppenname**: Wenn das Gerät einer Gruppe zugeordnet ist, wird hier der Name der Gruppe angegeben. +- **Einer Gruppe beitreten**: Ermöglicht es, der Gruppe des angegebenen Lautsprechers (eines Sonos-Geräts) beizutreten (um beispielsweise zwei Sonos-Geräte miteinander zu verbinden). Geben Sie den Raumnamen des Sonos-Geräts ein, dem Sie beitreten möchten. Dies kann jedes beliebige Mitglied einer bestehenden Gruppe sein; es muss nicht unbedingt der Gruppenkoordinator oder ein einzelnes Sonos-Gerät sein. In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, sobald Sie mit der Eingabe beginnen. +- **Gruppe verlassen**: Hiermit können Sie die Gruppe verlassen. +- Mit dem **Party-Modus** lassen sich alle Sonos-Geräte zu einer Gruppe zusammenfassen + +# TTS + +Für die TTS-Funktion (Text-to-Speech) auf Sonos ist eine SAMBA-Freigabe im Netzwerk erforderlich (von Sonos vorgeschrieben, es gibt keine Alternative). Sie benötigen daher ein NAS oder ein ähnliches Gerät im Netzwerk. Die Konfiguration ist recht einfach: Sie müssen den Namen oder die IP-Adresse des NAS eingeben (achten Sie darauf, genau das anzugeben, was bei Sonos hinterlegt ist) sowie den Pfad zu dem Ordner, der die Audiodateien enthalten soll, und den Benutzernamen sowie das Passwort (Achtung: Der Benutzer muss über Schreibrechte verfügen). + +Die Erstellung der Audiodatei wird vom Jeedom-Core verwaltet: Als Sprache wird die in Jeedom konfigurierte Sprache verwendet, und die verwendete TTS-Engine kann ebenfalls in der Jeedom-Konfiguration ausgewählt werden. + +Bei Verwendung von TTS (Befehl **Dire**) führt das Plugin folgende Aktionen aus: + +- Generierung der Audiodatei, die die Nachricht enthält, mit Jeedom-Kernunterstützung +- Schreiben der Datei auf die SAMBA-Freigabe +- erzwingt die Wiedergabe im „Normal“-Modus ohne Wiederholung +- Modus „Nicht stumm“ erzwingen (nur für das Gerät, nicht für die gesamte Gruppe) +- Anpassung der Lautstärke auf den bei Verwendung des Befehls gewählten Wert (nur für das jeweilige Gerät, nicht für die gesamte Gruppe) +- Nachricht lesen +- Wiederherstellen des Zustands des Sonos vor der Wiedergabe (d. h. des Wiedergabemodus, stumm oder nicht, wiederholen oder nicht usw.) und Neustarten des Streams, wenn der Sonos gerade abgespielt hat + +> **WICHTIG** +> +> Damit dieser Vorgang funktioniert, muss unbedingt ein Passwort festgelegt werden. +> +> Außerdem ist unbedingt ein Unterverzeichnis erforderlich, damit die Sprachdatei korrekt erstellt wird. +> +> Der Name der Freigabe oder des Ordners darf auf keinen Fall Akzente, Leerzeichen oder Sonderzeichen enthalten. +> +> Zu lange Nachrichten können nicht per TTS übertragen werden (die Obergrenze hängt vom TTS-Anbieter ab, in der Regel liegen sie bei etwa 100 Zeichen). + +## Konfigurationsbeispiel + +Was das NAS betrifft, muss folgende Konfiguration vorgenommen werden: + +- Der Ordner *Jeedom* ist freigegeben und enthält einen Ordner *TTS* +- Der Benutzer *jeedom* verfügt über Lese-/Schreibzugriff (erforderlich für Jeedom). +- Der Benutzer *sonos* hat Lesezugriff (erforderlich für Sonos). + +Was das Sonos-Plugin betrifft, so sieht die Konfiguration wie folgt aus: + +- Teilen: + - Feld 1: 192.168.xxx.yyy + - Feld 2: *Jeedom* + - Feld 3: *TTS* +- Benutzername (*jeedom* im Beispiel) und Passwort…​ + +Sonos-Bibliothek (PC-App) + +- Der Pfad lautet: //192.168.xxx.yyy/Jeedom/TTS +- Der Benutzer ist *sonos* (in diesem Beispiel) + Passwort + +# Das Panel + +Das Sonos-Plugin stellt außerdem ein Bedienfeld zur Verfügung, in dem alle Ihre Sonos-Geräte zusammengefasst sind. Erreichbar über das Menü „Startseite“ → „Sonos Controller“: + +> **WICHTIG** +> +> Um das Panel nutzen zu können, muss es in den Plugin-Einstellungen aktiviert werden. diff --git a/docs/en_US/changelog.md b/docs/en_US/changelog.md index 699c8b9..cfa69cc 100644 --- a/docs/en_US/changelog.md +++ b/docs/en_US/changelog.md @@ -1,196 +1,200 @@ -# Changelog Sonos controller - ->**Important** -> ->As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text - -# - -- Adding an info command **** ) - -# 27-01-2026 - -- Ajout de l'image pour *Ikea Table Lamp* - -# 19-01-2026 - -- Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom -- Corrections pour le message "Subscription renewal failed" et la perte de remontée des informations -- Image corrections - -# 26-04-2025 - -> Attention -> Significant plugin redesign : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ; -> -> Requires Jeedom 4.4.8 -> -> Debian 11 and 12 compatible! -> -> See also [this topic on community](https://community.jeedom.com/t/erreur-you-cannot-create-a-controller-instance-from-a-speaker-that-is-not-the-coordinator-of-its-group/128862) for more details - -- Almost total rewrite of the plugin, the daemon has been completely rewritten in python (instead of PHP) -- Debian 11 and 12 compatible! -- Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon. -- It is also possible to ask to (re)synchronize equipment, favorites and playlists without restarting the daemon from the equipment panel. -- Synchro automatique chaque heure pour corriger les désynchronisations éventuelles -- Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple) -- Redesign of group management (old commands will be deleted and new ones added, see documentation). It is possible to join or leave a group, control the playback of the group from any device in the group without worrying about who is the controller. Le volume est, lui, toujours contrôlé par enceinte. -- Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**. -- Optimization : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant. -- Optimized the display of the cover of the current reading -- Optimization on reading favorites -- Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix... - -- Adding an action command **TV** to switch to the input *TV* on compatible equipment -- Adding an info command **Reading mode** and action **Choose reading mode** which allows you to select the reading mode from the following possibilities: *Normal*, *Repeat all*, *Random and repeat all*, *Random without repetition*, *Repeat song*, *Random and repeat song* -- Adding an order **Reading status** which gives the "raw" value of the reading state (the existing command **Status** gives a translated value based on the language configured in Jeedom) -- Adding commands **Group status** (indicates whether the equipment is grouped or not) and **Name of the group** in the case where the equipment is grouped -- Adding commands **The gift**, **Led off** And **Status LED** to check the status indicator -- Adding an order **Play mp3 radio** to play an mp3 radio directly via a URL (accessible on the internet for example) -- Adding commands **Turn up the volume** And **Decrease the volume** from 1% -- Adding an order **Volume transition** which is very useful for managing volume level transitions. 3 possible modes: *LINEAR*, *ALARM*, *AUTOPLAY*. See documentation for more information. -- Adding commands **Loudness status**, **Loudness on**, **Loudness off** -- Adding commands **Crossfade status**, **Crossfade on**, **Fade off** -- Adding commands **Touch controls status**, **Touch controls on**, **Touch controls off** -- Adding commands **Balance** (action/cursor) and **Balance status** which manages the balance according to a value between -100 (far left) and 100 (far right)) -- Adding commands **Graves** (action/cursor) and **Serious status** which manages the bass according to a value between -10 and 10 -- Adding commands **Highs** (action/cursor) and **Acute status** qui gèrent les aigus selon une valeur comprise entre -10 et 10 -- Adding the command **Party mode** which allows you to group all Sonos together -- Adding the command **Mic status** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro -- Adding an info command **Battery** on Sonos equipped with a battery indicating the battery charge percentage -- Adding an info command **Loading** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non -- Adding an info command **Next alarm** on each Sonos giving the date of the next alarm programmed on this speaker - -# 04/25/2024 - -- Documentation update -- Nettoyage des accents dans les noms de partage (non supportés par le plugin) -- Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom) -- Added Sonos Beam Gen 2 - -# 01/15/2024 - -- Preparing for Jeedom 4.4 -- Added Sonos Move 2 - -# 08/24/2023 - -- Added Ikea Symfonisk Floor Lamp - -# 05/25/2023 - -- Added Sonos Era - -# 10/18/2022 - -- Update command list for Jeedom v4.3 -- Added Sonos Ray - -# 03/22/2022 - -- Support for the new SYMFONISK loudspeaker - -# 02/01/2022 - -- Fixed a bug on the TTS - -# 01/27/2022 - -- V4.2 optimizations - -# 01/14/2022 - -- Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK - -# 12/27/2021 - -- Ajout de la compatibilité avec la nouvelle Sonos One - -# 09/10/2021 - -- Addition of the Sonos Five -- Adding Sonos Roam -- Adding Symfonisk Framework -- Immediate volume update in case of change by Jeedom, thank you @Domochip - -# 24/11/2020 - -- New presentation of the list of objects -- Addition of the tag "V4 compatibility" - -# 08/07/2020 - -- Sonos ARC support - -# 01/24/2020 - -- Support for Sonos One S22 - -# 01/11/2020 - -- Support for Sonos Move -- Code optimization in case of Sonos not connected - -# 12/16/2019 - -- Bug fix if a sound system cannot be reached - -# 10/21/2017 - -- Improvement in recovery from TTS - -# 10/15/2019 - -- Sonos port support -- Improved dependency installation script - -# 10/07/2019 - -- Improvement of the dependency installation script (may allow to correct in some cases the problems of TTS) - -# 09/23/2019 - -- Optimisations - -# 09/01/2019 - -- Ikea SYMFONISK lamp speaker support - -# 08/12/2019 - -- Support for Ikea SYMFONISK bookshelf speaker - -# 04/23/2019 - -- Support for one gen2 sonos - -# 01/17/2019 - -- Fixed bugs in case the sound systems were added manually - -# 01/15/2019 - -**IMPORTANT ONLY WORKS WITH PHP7, SEE JEEDOM HEALTH PAGE FOR YOUR VERSION** - -- Complete rewrite of the plugin -- Support for the new Sonos API -- Support for Beam and One sound systems -- Correction de nombreux bugs -- Global optimizations - -**Important** - -- Compatible PHP7 only -- Some features had to be removed - -# 2018 - -- Added management of sonos favorites -- Support for Sonos One and Playbase -- Tongue correction with picotts -- Adding a "line entry" command" -- Mise à jour de la librairie de communication avec les Sonos -- Optimized loading of playlists -- Addition of picotts for local TTS generation -- Correction of the play / pause button when updating the widget. +# Sonos Controller Changelog + +>**IMPORTANT** +> +>As a reminder, if there is no information about the update, it means that the update only involves documentation, translations, or text changes. + +# 18-05-2026 + +- Fixed a minor bug in the **Dire** command + +# 11-04-2026 + +- Added a **Station** info command that displays the radio station currently playing (if the information is available) + +# 27-01-2026 + +- Added image for *Ikea Table Lamp* + +# 19-01-2026 + +- Added an optional setting to specify, only if necessary, the subnet (VLAN) on which your Sonos speakers are located if it is different from the subnet (VLAN) on which Jeedom is located +- Fixes for the "Subscription renewal failed" message and the loss of information reporting +- Image corrections + +# 26-04-2025 + +> Caution +> Major plugin overhaul: a large portion of the plugin has been rewritten, including all communication with Sonos (daemon), and certain features have been modified and no longer work as they did before, particularly group management; +> +> Requires Jeedom 4.4.8 +> +> Compatible with Debian 11 and 12! +> +> See also [this topic on community](https://community.jeedom.com/t/erreur-you-cannot-create-a-controller-instance-from-a-speaker-that-is-not-the-coordinator-of-its-group/128862) for more details + +- The plugin has been almost completely rewritten; the daemon has been entirely rewritten in Python (instead of PHP) +- Compatible with Debian 11 and 12! +- You no longer need to run a manual discovery, and it is no longer necessary (or possible) to manually add a device; the plugin automatically detects your Sonos devices and creates the corresponding devices each time the daemon starts. +- It is also possible to request that devices, favorites, and playlists be (re)synchronized without restarting the daemon from the Devices panel. +- Automatic synchronization every hour to correct any desynchronization +- (Near) real-time updates to control and information commands (a delay of 0.5 seconds to a few seconds at most), no more minute-by-minute cron jobs, even when a change is made outside of Jeedom (via the Sonos app, for example) +- Group management has been redesigned (old commands will be removed and new ones added; see documentation). You can join or leave a group and control playback for the group from any device in the group without worrying about which device is the controller. Volume, however, is still controlled on a per-speaker basis. +- When adapting the Text-to-Speech (TTS) feature, **you will need to adjust the SAMBA sharing configuration**. +- Optimization: No more memory leaks in the daemon, and it uses less memory than before. +- Optimized the display of the cover of the current reading +- Optimization on reading favorites +- Added the ability to disable the preconfigured tile: you are now free to configure it however you like using the core widgets or your own widgets, and to show or hide the commands of your choice... + +- Added a **TV** action command to switch to the *TV* input on compatible devices +- Added an **Playback Mode** info command and a **Select Playback Mode** action that allows you to select a playback mode from the following options: *Normal*, *Repeat All*, *Shuffle and Repeat All*, *Shuffle Without Repeat*, *Repeat Track*, *Shuffle and Repeat Track* +- Added a **Reading Status** command that returns the "raw" value of the reading status (the existing **Status** command returns a value translated based on the language configured in Jeedom) +- Added the **Group Status** (indicates whether the device is grouped or not) and **Group Name** commands for devices that are grouped +- Added the **LED On**, **LED Off**, and **LED Status** commands to control the status indicator +- Added a **Play MP3 Radio** command to play an MP3 radio stream directly via a URL (accessible on the internet, for example) +- Added the **Increase Volume** and **Decrease Volume** commands by 1% +- Added a **Volume Transition** command, which is very useful for managing volume level transitions. Three modes are available: *LINEAR*, *ALARM*, *AUTOPLAY*. See the documentation for more information. +- Added the **Loudness Status**, **Loudness On**, and **Loudness Off** commands +- Added the commands **Status Crossfade**, **On Crossfade**, **Off Crossfade** +- Added the **Status Touch Commands**, **On Touch Commands**, and **Off Touch Commands** +- Added the **Balance** (action/slider) and **Balance Status** commands, which manage the balance based on a value ranging from -100 (all the way to the left) to 100 (all the way to the right) +- Added the **Bass** (action/slider) and **Bass Status** commands, which manage bass levels based on a value between -10 and 10 +- Added the **Treble** (action/slider) and **Treble Status** commands, which adjust the treble based on a value between -10 and 10 +- Added the **Party Mode** command, which lets you group all Sonos devices together +- Added the **Mic Status** command, which indicates whether the microphone is enabled or disabled on Sonos devices equipped with a microphone +- Added a **Battery** info command to battery-powered Sonos devices that displays the battery charge percentage +- Added a **Charging** command to battery-powered Sonos devices that indicates whether charging is in progress or not +- Add a **Next Alarm** info command to each Sonos speaker, displaying the date of the next alarm scheduled on that speaker + +# 25/04/2024 + +- Documentation update +- Removing accents from share names (not supported by the plugin) +- Removal of the dependency on PicoTTS (the plugin uses Jeedom's global TTS engine) +- Added Sonos Beam Gen 2 + +# 15/01/2024 + +- Preparing for Jeedom 4.4 +- Added Sonos Move 2 + +# 24/08/2023 + +- Added Ikea Symfonisk Floor Lamp + +# 25/05/2023 + +- Added Sonos Era + +# 18/10/2022 + +- Update command list for Jeedom v4.3 +- Added Sonos Ray + +# 22/03/2022 + +- Support for the new SYMFONISK loudspeaker + +# 01/02/2022 + +- Fixed a bug on the TTS + +# 27/01/2022 + +- V4.2 optimizations + +# 14/01/2022 + +- Added compatibility with the new SYMFONISK speaker + +# 27/12/2021 + +- Added compatibility with the new Sonos One + +# 09/10/2021 + +- Addition of the Sonos Five +- Adding Sonos Roam +- Adding Symfonisk Framework +- Immediate volume update in case of change by Jeedom, thank you @Domochip + +# 24/11/2020 + +- New presentation of the list of objects +- Added the "V4 Compatibility" tag + +# 07/08/2020 + +- Sonos ARC support + +# 24/01/2020 + +- Support for Sonos One S22 + +# 11/01/2020 + +- Support for Sonos Move +- Code optimization in case of Sonos not connected + +# 16/12/2019 + +- Bug fix if a sound system cannot be reached + +# 21/10/2017 + +- Improvement in recovery from TTS + +# 15/10/2019 + +- Sonos port support +- Improved dependency installation script + +# 07/10/2019 + +- Improvements to the dependency installation script (may help resolve TTS issues in some cases) + +# 23/09/2019 + +- Optimizations + +# 01/09/2019 + +- Ikea SYMFONISK lamp speaker support + +# 12/08/2019 + +- Support for Ikea SYMFONISK bookshelf speaker + +# 23/04/2019 + +- Support for one gen2 sonos + +# 17/01/2019 + +- Fixed bugs in case the sound systems were added manually + +# 15/01/2019 + +**IMPORTANT: ONLY WORKS WITH PHP 7. CHECK THE JEEDOM STATUS PAGE FOR YOUR VERSION** + +- Complete rewrite of the plugin +- Support for the new Sonos API +- Support for Beam and One sound systems +- Fixed numerous bugs +- Global optimizations + +**IMPORTANT** + +- Compatible PHP7 only +- Some features had to be removed + +# 2018 + +- Added management of sonos favorites +- Support for Sonos One and Playbase +- Tongue correction with picotts +- Adding a "Line Input" command +- Update to the Sonos communication library +- Optimized loading of playlists +- Addition of picotts for local TTS generation +- Fixed the play/pause button when updating the widget. diff --git a/docs/en_US/index.md b/docs/en_US/index.md index f9d5f23..53b7241 100644 --- a/docs/en_US/index.md +++ b/docs/en_US/index.md @@ -1,174 +1,174 @@ -# Sonos plugin - -The Sonos plugin allows you to control the Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... It will allow you to see the status of the Sonos and to perform actions ( play, pause, next, previous, volume, choice of a playlist…). - -# Plugin configuration - -The configuration is very simple, after downloading the plugin, you just need to activate it, install the dependencies and start the daemon. -The plugin will search for Sonos on your network and create the equipment automatically. In addition, if there is a match between Jeedom objects and Sonos rooms, Jeedom will automatically assign Sonos to the right rooms. - -> **Important** -> Your Sonos equipment must be reachable directly by the machine hosting Jeedom (broadcast / multicast possible on the same network) and they must be able to reach Jeedom in return on TCP port 1400. - -Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0/24`. Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet. **Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut** - -If you later add a Sonos, you can click **Synchronize** in the equipment page or restart the daemon. - -- **Sharing**: Configure here the host name of the machine (or its IP), the name of the share (without the path, without '/') and the path to the folder. -- **Share username**: username to access share. -- **Sharing password**: Sharing password. - -# Equipment configuration - -The configuration of Sonos equipment is accessible from the Plugins menu then multimedia. - -Here you find all the usual configuration of your equipment : - -- **Sonos name**: name of your Sonos equipment. -- **Parent object**: indicates the parent object to which the equipment belongs. -- **Activate**: makes your equipment active. -- **Visible**: makes it visible on the dashboard. - -As well as information about your Sonos: *Model*, *Releases*, *Serial number*, *Identifier*, *MAC address* And *IP adress*. - -Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix... - -La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée. - -# The orders - -The information controls will be updated in near real time (normally a few seconds maximum) but the image of the album currently playing may take a little longer to display on the widget when a change occurs. track, this is perfectly normal and independent of the plugin: he must retrieve the image from an external source (on a Sonos or on the internet) and this sometimes takes several seconds (in principle maximum around ten seconds). - -## Sonos volume controls & controls - -These commands will always control the corresponding equipment, including when it is in a group. - -- **Volume**: change the volume *(from 0 to 100)* -- **Status volume**: volume level (in %) -- **Turn up the volume**: increases volume by 1%; can be useful for integration with other systems or plugins -- **Decrease the volume**: decreases volume by 1%; can be useful for integration with other systems or plugins -- **Volume transition** allows you to perform volume level transitions directly managed by the Sonos speaker, it is not the plugin that takes care of this and therefore it is not blocking but the delays are not configurable since defined by Sonos. The transition type and target volume must be chosen when executing the command. There are 3 modes: - - *LINEAR*: linear transition from current volume to target volume (increase or decrease), speed is 1.25 per second (a transition *LINEAR* from 50% to 30% will take 16s) - - *ALARM*: initializes the volume to 0, pauses for about 30 seconds and then increases to the requested volume at a speed of 2.5 per second (a transition *ALARM* from 0% to 10% will take 4s) - - *AUTOPLAY*: initializes the volume to 0 and rapidly increases to the requested volume at a rate of 50 per second (a transition *AUTOPLAY* from 0% to 50% will take 1s) -- **Mute**: Activate mute mode. -- **No Mute**: Turn off mute. -- **Mute status**: indicates whether we are in mute mode or not. -- **Balance** (action/cursor) and **Balance status** which manages the balance according to a value between -100 (far left) and 100 (far right) for compatible Sonos -- **Graves** (action/cursor) and **Serious status** which manages the bass according to a value between -10 and 10 -- **Highs** (action/cursor) and **Acute status** which manages the treble according to a value between -10 and 10 -- **Loudness status**, **Loudness on**, **Loudness off** control loudness - -- **TV**: to switch to the input *TV* on compatible equipment -- **Analog audio input**: to switch to'*Analog audio input* (*Line-in*) on compatible equipment -- **The gift** And **Led off**: Activates and deactivates the LED, the status indicator -- **Status LED**: indicates whether the status light is on or not. This information is only updated once per minute in case it is modified outside Jeedom -- **Touch controls on** And **Touch controls off** Enables and disables physical or touch buttons on Sonos -- **Touch controls status** indicates whether touch controls are enabled or not -- **Mic status** which indicates whether the microphone is activated or not on Sonos equipped with a microphone -- **Battery** on Sonos equipped with a battery indicating the battery charge percentage -- **Loading** on Sonos equipped with a battery indicating whether charging is in progress or not - -## Playback controls - -These commands will indicate and control the current playback on the equipment or on the group if it is grouped and this in a transparent way, you do not have to worry about knowing if the equipment is grouped or not to use them. - -- **Status**: reader status translated into the language configured under Jeedom. For example: *Play*, *Pause*, *Stopped*. -- **Reading status** which gives the "raw" value of the reading status: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; more suitable for scenarios. -- **Play**: read. -- **Pause**: Pause. -- **STOP**: stop reading. -- **Previous**: previous track. -- **Next**: next track. -- **Random status**: indicates if we are in random mode or not. -- **Random**: reverse the status of random mode. -- **Repeat status**: indicates if we are in repeat mode or not. -- **Repeat**: reverse the status of the "repeat" mode". -- **Crossfade status**, **Crossfade on**, **Fade off** to control and activate or not the *Crossfade* -- **Choose reading mode** allows you to choose from the following possibilities: - - *Normal* (repeat off, random off), - - *Repeat all* (random off), - - *Random and repeat all*, - - *Random without repetition*, - - *Repeat song* (random off), - - *Random and repeat song*. - - I recommend using this command in a scenario instead of **Repeat** & **Random** in order to arrive at the desired configuration even if all act on the same parameters. This command is, however, the only way to switch to mode *Repeat song* Or *Random and repeat song*. -- **Reading mode** giving the current state which will be one of the values cited above. -- **Play Playlist**: message type command to launch a playlist, just put the name of the playlist in the title. In a scenario, a list of possibilities will automatically be displayed when you start typing. -- **Play Favorites**: message type command to launch a favorite, all you have to do in the title is to put the name of the favorite. In a scenario, a list of possibilities will automatically be displayed when you start typing. -- **Play a radio**: message type command to launch a radio station, all you have to do is put the name of the radio in the title *(Be careful : this must be in the favorite radios)*. In a scenario, a list of possibilities will automatically be displayed when you start typing. No longer works on "S2" models, it is normal to have an empty list on all models using the Sonos S2 app. -- **Play mp3 radio**: allows you to play an mp3 radio via a URL (for example from the internet). You must put a title in the box *Title* and the url (http(s format))://...mp3) in the area *Message*. -- **Picture**: link to the album image. -- **Album**: name of album currently playing. -- **Artist**: artist name currently playing. -- **Track**: name of the track currently playing. -- **Say**: allows to read a text on Sonos (see TTS part). In the title you can set the volume and in the message, the message to read. - -> **Hint** -> Playlists and favorites must be created via the Sonos app (on mobile or computer) then synchronization must be done to update the equipment and be able to use it in a scenario. - -## Commands for managing groups - -These commands always act on the corresponding equipment. - -- **Group status**: indicates whether the equipment is grouped or not. -- **Name of the group** if the equipment is grouped, give the name of the group. -- **Join a group**: allows you to join the group of the given speaker (a Sonos) (to associate 2 Sonos for example). You must enter the name of the sound system room to join. This can be any member of an existing group, it doesn't have to be the group coordinator, or an isolated Sonos. In a scenario, a list of possibilities will automatically be displayed when you start typing. -- **Leave the group**: allows you to leave the group. -- **Party mode** allows you to group all Sonos together - -# TTS - -TTS (text-to-speech) to Sonos requires SAMBA sharing on the network (imposed by Sonos, no way to do otherwise). You therefore need a NAS or equivalent on the network. The configuration is quite simple, you must enter the name or IP of the NAS (be careful to put the same thing as what is declared on Sonos) and the path to the folder which must contain the audio files as well as the name of user and password (note that the user must have write rights) - -The creation of the audio file is managed by the Jeedom core: the language will be the one configured in Jeedom and the TTS engine used can also be selected in the Jeedom configuration. - -When using TTS (command **Say**), the plugin will perform the following actions: - -- generation of the audio file containing the message with Jeedom core support -- writing the file to the SAMBA share -- force playback in “Normal” mode, without repetition -- force “unmute” mode (only on the equipment, not on the entire group) -- Changing the volume to the chosen value when using the command (only on the equipment, not on the entire group) -- reading message -- restoring the state of the Sonos before playback (i.e. the playback mode, mute or not, repeat or not, etc.) and restarting the stream if the Sonos was playing - -> **Important** -> -> It is absolutely necessary to put a password for this procedure to work. -> -> A subdirectory is also absolutely necessary for the voice file to be correctly created. -> -> Above all, there must be no accent in the name of the share or folder, spaces or special characters. -> -> Messages that are too long cannot be transmitted in TTS (the limit depends on the TTS provider, generally around 100 characters). - -## Configuration example - -On the NAS side, the following configuration must be carried out: - -- the folder *Jeedom* is shared and it contains a folder *TTS* -- the user *Jeedom* has read/write access (necessary for Jeedom). -- the user *his bone* has read-only access (necessary for Sonos). - -On the Sonos Plugin side, the config : - -- Sharing : - - Field 1: 192.168.xxx.yyy - - Field 2: *Jeedom* - - Field 3: *TTS* -- Username (*Jeedom* in the example) and its password…​ - -Sonos Library side (PC app) - -- the way is : //192.168.xxx.yyy/Jeedom/TTS -- the user will be *his bone* (in this example) + password - -# The panel - -The Sonos plugin also provides a panel that brings together all of your Sonos. Available from the Home menu → Sonos Controller : - -> **Important** -> -> To have the panel you must have activated it in the plugin configuration. +# Sonos plugin + +The Sonos plugin lets you control the Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, IKEA Symfonisk, and more. It allows you to view the status of your Sonos devices and perform actions such as play, pause, next, previous, adjust volume, and select a playlist. + +# Plugin configuration + +Setup is very simple: after downloading the plugin, just activate it, install the dependencies, and start the daemon. +The plugin will scan your network for Sonos devices and automatically create the devices. Additionally, if there is a match between Jeedom objects and Sonos rooms, Jeedom will automatically assign the Sonos devices to the correct rooms. + +> **Important** +> Your Sonos devices must be directly accessible by the machine hosting Jeedom (broadcast/multicast is possible on the same network), and they must be able to communicate with Jeedom in return on TCP port 1400. + +If your Jeedom speakers are not on the same subnet as Jeedom, you can configure the subnet—preferably in CIDR format—for example `192.168.1.0/24`. It should also be possible to enter the IP address of one of your speakers directly to discover the others from there, but it is recommended that you configure the entire network. **Warning: Do not configure anything if you are not familiar with this process; test the default configuration first.** + +If you add a Sonos device later, you can click **Sync** on the devices page or restart the daemon. + +- **Share**: Configure the machine's hostname (or IP address), the share name (without the path, without '/'), and the path to the folder here. +- **Share username**: the username used to access the share. +- **Share password**: Share password. + +# Equipment configuration + +You can configure Sonos devices from the Plugins menu, then Multimedia. + +Here you'll find all the usual settings for your equipment: + +- **Sonos Name**: the name of your Sonos device. +- **Parent object**: Specifies the parent object to which the device belongs. +- **Activate**: Turns your device active. +- **Visible**: Makes it visible on the dashboard. + +As well as information about your Sonos: *Model*, *Versions*, *Serial Number*, *ID*, *MAC Address*, and *IP Address*. + +You also have the option to disable the preconfigured device tile (this option is active by default); in that case, you can configure the tile however you like using Core widgets or your own widgets, and show or hide the commands of your choice... + +The preconfigured tile does not take into account whether commands are visible or hidden, nor does it account for advanced display options; its configuration cannot be modified. + +# The orders + +The commands will be refreshed in near real time (usually within a few seconds at most), but the cover art for the currently playing album may take a little longer to appear on the widget when switching tracks; this is perfectly normal and unrelated to the plugin: it has to retrieve the image from an external source (on a Sonos device or from the internet), and this can sometimes take several seconds (usually no more than about ten seconds). + +## Sonos volume controls & controls + +These commands will always control the corresponding device, even when it is part of a group. + +- **Volume**: Adjust the volume *(from 0 to 100)* +- **Volume status**: volume level (in %) +- **Increase Volume**: Increases the volume by 1%; may be useful for integration with other systems or plugins +- **Lower Volume**: lowers the volume by 1%; may be useful for integration with other systems or plugins +- **Volume Transition** allows you to perform volume level transitions managed directly by the Sonos speaker; the plugin does not handle this, so it does not cause any delays, but the transition times are not configurable since they are defined by Sonos. The transition type and target volume must be selected when executing the command. There are 3 modes: + - *LINEAR*: linear transition from the current volume to the target volume (increase or decrease); the speed is 1.25 per second (a *LINEAR* transition from 50% to 30% will take 16 seconds) + - *ALARM*: sets the volume to 0, pauses for about 30 seconds, and then increases to the requested volume at a rate of 2.5 per second (an *ALARM* transition from 0% to 10% will take 4 seconds) + - *AUTOPLAY*: sets the volume to 0 and quickly increases it to the requested volume at a rate of 50 per second (an *AUTOPLAY* transition from 0% to 50% will take 1 second) +- **Mute**: Turns on mute mode. +- **Unmute**: Turns off mute mode. +- **Mute status**: Indicates whether the system is in mute mode or not. +- **Balance** (action/slider) and **Balance Status**, which controls the balance based on a value ranging from -100 (all the way to the left) to 100 (all the way to the right) for compatible Sonos devices +- **Bass** (action/slider) and **Bass Level**, which controls the bass based on a value between -10 and 10 +- **Treble** (action/slider) and **Treble Status**, which controls the treble based on a value between -10 and 10 +- **Loudness status**, **Loudness on**, **Loudness off** controls the loudness + +- **TV**: to switch to the *TV* input on compatible devices +- **Analog Audio Input**: to switch to the *Analog Audio Input* (*Line-in*) on compatible devices +- **LED On** and **LED Off**: Makes the LED and the status indicator active and off +- **Status LED**: Indicates whether the status light is on or off. This information is updated only once per minute if it is modified outside of Jeedom. +- **Touch Controls On** and **Touch Controls Off** Makes the physical or touch buttons on the Sonos active or disabled +- **Touch Controls Status** indicates whether touch commands are enabled or disabled +- **Mic status**, which indicates whether the microphone is enabled or disabled on Sonos devices equipped with a microphone +- **Battery** on Sonos devices equipped with a battery, showing the battery charge percentage +- **Charging** on battery-powered Sonos devices, indicating whether charging is in progress or not + +## Playback controls + +These commands will display and control the currently playing track on the device or on the group if the device is part of a group, and they do so transparently—you don't need to worry about whether the device is part of a group or not to use them. + +- **Status**: Reader status translated into the language configured in Jeedom. For example: *Playing*, *Paused*, *Stopped*. +- **Playback Status**, which returns the "raw" value of the playback status: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; more suitable for scenarios. +- **Playback**: Switch to playback mode. +- **Pause**: to pause. +- **Stop**: Stop playback. +- **Previous**: previous track. +- **Next**: next track. +- **Random status**: Indicates whether the system is in random mode or not. +- **Random**: Toggles the random mode status. +- **Repeat status**: Indicates whether the system is in repeat mode or not. +- **Repeat**: Toggles the "repeat" mode status. +- **Crossfade Status**, **Crossfade On**, **Crossfade Off** to control and enable or disable *Crossfade* +- **Select Playback Mode** lets you choose from the following options: + - *Normal* (repeat off, shuffle off), + - *Repeat All* (random off), + - *Random and repeat all*, + - *Random with no repeats*, + - *Repeat the song* (shuffle off), + - *Shuffle and repeat the song*. + +I recommend using this command in a scenario instead of **Repeat** and **Shuffle** to achieve the desired configuration, even though all of them affect the same settings. However, this command is the only way to switch to *Repeat Song* or *Shuffle and Repeat Song* mode. +- **Read mode** that returns the current status, which will be one of the values listed above. +- **Play playlist**: a message-based command that lets you start a playlist; simply type the playlist name in the title. In a scenario, a list of options will automatically appear when you start typing. +- **Play Favorites**: A message-based command that lets you launch a favorite; simply type the name of the favorite in the subject line. In a scenario, a list of options will automatically appear as you start typing. +- **Play a radio station**: a voice command that lets you start a radio station; simply include the station’s name in the title *(NOTE: The station must be in your favorites)*. In a scenario, a list of options will automatically appear as you start typing. This feature no longer works on “S2” models; it’s normal to see an empty list on all models using the Sonos S2 app. +- **Play an MP3 radio station**: Allows you to play an MP3 radio station via a URL (for example, from the Internet). You must enter a title in the *Title* field and the URL (in the format http(s)://...mp3) in the *Message* field. +- **Image**: link to the image in the album. +- **Album**: Name of the album currently playing. +- **Artist**: Name of the artist currently playing. +- **Track**: Name of the track currently playing. +- **Speak**: Allows you to have text read aloud on Sonos (see the TTS section). In the title, you can set the volume, and in the message field, enter the text to be read. + +> **Hint** +> Playlists and favorites must be created using the Sonos app (on a mobile device or computer); then you must sync to update the devices and be able to use them in a scenario. + +## Commands for managing groups + +These commands always affect the corresponding device. + +- **Group status**: Indicates whether the device is grouped or not. +- **Group Name**: If the device is part of a group, enter the group name. +- **Join a Group**: Allows you to join the group of a specific speaker (a Sonos device) (to pair two Sonos devices, for example). You must enter the room name of the Sonos you want to join. This can be any member of an existing group; it does not necessarily have to be the group coordinator or a standalone Sonos. In some cases, a list of options will automatically appear as you start typing. +- **Leave the group**: allows you to leave the group. +- **Party mode** lets you group all your Sonos devices together + +# TTS + +TTS (text-to-speech) to Sonos requires a SAMBA share on the network (required by Sonos; there’s no other way to do it). So you’ll need a NAS or equivalent on the network. The setup is fairly simple: you need to enter the name or IP address of the NAS (make sure to enter exactly what’s specified in Sonos), the path to the folder containing the audio files, and the username and password (note that the user must have write permissions). + +The creation of the audio file is handled by the Jeedom core: the language will be the one configured in Jeedom, and the TTS engine used can also be selected in the Jeedom configuration. + +When using TTS (the **Dire** command), the plugin will perform the following actions: + +- generation of the audio file containing the message with Jeedom core support +- writing the file to the SAMBA share +- force playback in “Normal” mode, without repetition +- Force "unmuted" mode (only on the device, not on the entire group) +- Adjusts the volume to the value selected when using the command (only on the device, not on the entire group) +- reading message +- restoring the state of the Sonos before playback (i.e. the playback mode, mute or not, repeat or not, etc.) and restarting the stream if the Sonos was playing + +> **IMPORTANT** +> +> You must set a password for this procedure to work. +> +> A subdirectory is also absolutely necessary for the voice file to be created correctly. +> +> Be sure not to use any accents, spaces, or special characters in the share name or folder name. +> +> Messages that are too long cannot be transmitted via TTS (the limit depends on the TTS provider; generally, about 100 characters). + +## Configuration example + +On the NAS side, the following configuration must be performed: + +- The *Jeedom* folder is shared and contains a *TTS* folder +- The *jeedom* user has read/write access (required for Jeedom). +- The *sonos* user has read-only access (required for Sonos). + +As for the Sonos plugin, here's the configuration: + +- Share: + - Field 1: 192.168.xxx.yyy + - Field 2: *Jeedom* + - Field 3: *TTS* +- Username (*jeedom* in the example) and password…​ + +Sonos Library (PC app) + +- The path is: //192.168.xxx.yyy/Jeedom/TTS +- The username will be *sonos* (in this example) + password + +# The panel + +The Sonos plugin also provides a panel that brings together all your Sonos devices. Available from the Home menu → Sonos Controller: + +> **IMPORTANT** +> +> To access the dashboard, you must enable it in the plugin settings. diff --git a/docs/es_ES/changelog.md b/docs/es_ES/changelog.md index 53065d5..f41aa2a 100644 --- a/docs/es_ES/changelog.md +++ b/docs/es_ES/changelog.md @@ -1,196 +1,200 @@ -# Changelog Sonos controller - ->**Importante** -> ->Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto - -# - -- Agregar un comando de información **** ) - -# 27-01-2026 - -- Ajout de l'image pour *Ikea Table Lamp* - -# 19-01-2026 - -- Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom -- Corrections pour le message "Subscription renewal failed" et la perte de remontée des informations -- Correcciones de imagen - -# 26-04-2025 - -> Attention -> Rediseño significativo del complemento : une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ; -> -> Requiere Jeedom 4.4.8 -> -> Compatible con Debian 11 y 12! -> -> Ver también [este tema en la comunidad](https://community.jeedom.com/t/erreur-you-cannot-create-a-controller-instance-from-a-speaker-that-is-not-the-coordinator-of-its-group/128862) para más detalles - -- Reescritura casi total del complemento, el demonio ha sido reescrito completamente en Python (en lugar de PHP)) -- Compatible con Debian 11 y 12! -- Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon. -- También es posible solicitar (re)sincronizar equipos, favoritos y listas de reproducción sin reiniciar el demonio desde el panel del equipo. -- Synchro automatique chaque heure pour corriger les désynchronisations éventuelles -- Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple) -- Rediseño de la gestión de grupos (se eliminarán los comandos antiguos y se agregarán otros nuevos, consulte la documentación)). Es posible unirse o salir de un grupo, controlar la reproducción del grupo desde cualquier dispositivo del grupo sin preocuparse de quién es el controlador. Le volume est, lui, toujours contrôlé par enceinte. -- Adaptation sur la fonction Text-to-Speech (TTS), **il sera nécessaire d'adapter la configuration du partage SAMBA**. -- Mejoramiento : plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant. -- Se optimizó la visualización de la portada que se está reproduciendo actualmente -- Optimización en la lectura de favoritos -- Ajout de la possibilité de désactiver la tuile pré-configurée : vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix... - -- Agregar un comando de acción **TELEVISOR** para cambiar a la entrada *TELEVISOR* en equipos compatibles -- Agregar un comando de información **Modo de lectura** y acción **Elige el modo de lectura** que le permite seleccionar el modo de lectura entre las siguientes posibilidades: *Normal*, *Repite todo*, *Aleatorio y repetir todo*, *Aleatorio sin repetición*, *Repetir canción*, *Canción aleatoria y repetida* -- Agregar un pedido **Estado de lectura** que da el valor "bruto" del estado de lectura (el comando existente **Estado** da un valor traducido basado en el idioma configurado en Jeedom) -- Agregar comandos **Estado del grupo** (indica si el equipo está agrupado o no) y **Nombre del grupo** en el caso de que el equipo esté agrupado -- Agregar comandos **El don**, **Llevar afuera** Y **LED de estado** para comprobar el indicador de estado -- Agregar un pedido **Reproducir radio mp3** reproducir una radio mp3 directamente a través de una URL (accesible en Internet, por ejemplo)) -- Agregar comandos **Sube el volumen** Y **Disminuir el volumen** de 1% -- Agregar un pedido **Transición de volumen** lo cual es muy útil para gestionar las transiciones de niveles de volumen. 3 modos posibles: *LINEAL*, *ALARMA*, *AUTO-REPRODUCCIÓN*. Ver documentación para más información. -- Agregar comandos **Estado de sonoridad**, **Volumen encendido**, **Volumen apagado** -- Agregar comandos **Estado de desvanecimiento**, **Desvanecerse**, **Desaparecer** -- Agregar comandos **Controles táctiles de estado**, **Controles táctiles activados**, **Controles táctiles desactivados** -- Agregar comandos **Balance** (acción/cursor) y **Estado del saldo** que gestiona el saldo según un valor entre -100 (extremo izquierdo) y 100 (extremo derecho)) -- Agregar comandos **Tumbas** (acción/cursor) y **Estado serio** que gestiona los graves según un valor entre -10 y 10 -- Agregar comandos **Triplicar** (acción/cursor) y **Estado de agudos** qui gèrent les aigus selon une valeur comprise entre -10 et 10 -- Agregando el comando **Moda de fiesta** que te permite agrupar todos los Sonos juntos -- Agregando el comando **Estado del micrófono** qui indique si le micro est activé ou non sur les Sonos équipés d'un micro -- Agregar un comando de información **Batería** en Sonos equipado con una batería que muestra el porcentaje de carga de la batería -- Agregar un comando de información **Cargando** sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non -- Agregar un comando de información **Próxima alarma** en cada Sonos indicando la fecha de la próxima alarma programada en este altavoz - -# 25/04/2024 - -- Actualización de documentación -- Nettoyage des accents dans les noms de partage (non supportés par le plugin) -- Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom) -- Se agregó Sonos Beam Gen 2 - -# 15/01/2024 - -- Preparándose para Jeedom 4.4 -- Se agregó Sonos Move 2 - -# 24/08/2023 - -- Lámpara de pie Symfonisk de Ikea añadida - -# 25/05/2023 - -- Se agregó la era de Sonos - -# 18/10/2022 - -- Lista de comandos de actualización para Jeedom v4.3 -- Añadido Sonos Ray - -# 22/03/2022 - -- Soporte para el nuevo altavoz SYMFONISK - -# 02/01/2022 - -- Se corrigió un error en el TTS - -# 27/01/2022 - -- Optimizaciones V4.2 - -# 14/01/2022 - -- Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK - -# 27/12/2021 - -- Ajout de la compatibilité avec la nouvelle Sonos One - -# 10/09/2021 - -- Adición de Sonos Five -- Agregar Sonos Roam -- Añadiendo Symfonisk Framework -- Actualización de volumen inmediata en caso de cambio por parte de Jeedom, gracias @Domochip - -# 24/11/2020 - -- Nueva presentación de la lista de objetos -- Adición de la etiqueta "compatibilidad V4" - -# 07/08/2020 - -- Compatibilidad con Sonos ARC - -# 24/01/2020 - -- Soporte para Sonos One S22 - -# 01/11/2020 - -- Soporte para Sonos Move -- Optimización de código en caso de que Sonos no esté conectado - -# 16/12/2019 - -- Corrección de errores si no se puede alcanzar un sistema de sonido - -# 21/10/2017 - -- Mejora en la recuperación de TTS - -# 15/10/2019 - -- Soporte de puerto de Sonos -- Script de instalación de dependencia mejorado - -# 10/07/2019 - -- Mejora del script de instalación de dependencias (puede permitir corregir en algunos casos los problemas de TTS) - -# 09/23/2019 - -- Optimisations - -# 01/09/2019 - -- Soporte de altavoz de lámpara Ikea SYMFONISK - -# 08/12/2019 - -- Soporte para altavoz de estantería Ikea SYMFONISK - -# 23/04/2019 - -- Soporte para un sonos gen2 - -# 17/01/2019 - -- Se corrigieron errores en caso de que los sistemas de sonido se agregaran manualmente - -# 01/15/2019 - -**IMPORTANTE SOLO FUNCIONA CON PHP7, VEA LA PÁGINA DE SALUD DE JEEDOM PARA SU VERSIÓN** - -- Completa reescritura del complemento -- Soporte para la nueva API de Sonos -- Soporte para sistemas de sonido Beam y One -- Correction de nombreux bugs -- Optimizaciones globales - -**Importante** - -- Solo PHP7 compatible -- Algunas características tuvieron que ser eliminadas - -# 2018 - -- Administración agregada de favoritos de sonos -- Soporte para Sonos One y Playbase -- Corrección de lengua con picotts -- Agregar un comando de "entrada de línea"" -- Mise à jour de la librairie de communication avec les Sonos -- Carga optimizada de listas de reproducción -- Adición de picotts para la generación local de TTS -- Corrección del botón de reproducción / pausa al actualizar el widget. +# Registro de cambios del controlador de Sonos + +>**IMPORTANTE** +> +>Recuerda que, si no hay información sobre la actualización, es porque esta se refiere únicamente a la actualización de la documentación, la traducción o el texto. + +# 18-05-2026 + +- Se ha corregido un error menor en el comando **Dire** + +# 11-04-2026 + +- Se ha añadido un comando de información **Estación** que indica la emisora de radio que se está reproduciendo (si la información está disponible) + +# 27-01-2026 + +- Se ha añadido la imagen de *Lámpara de mesa de Ikea* + +# 19-01-2026 + +- Se ha añadido una configuración opcional para indicar, solo si es necesario, la subred (VLAN) en la que se encuentran tus altavoces Sonos, en caso de que sea diferente de la subred (VLAN) en la que se encuentra Jeedom. +- Correcciones para el mensaje «Error al renovar la suscripción» y la pérdida de la transmisión de información +- Correcciones de imagen + +# 26-04-2025 + +> Atención +> Reestructuración importante del complemento: se ha reescrito una gran parte del complemento, incluida toda la comunicación con Sonos (demonio), y se han modificado algunas funciones, que ya no funcionan como antes, en particular la gestión de grupos; +> +> Requiere Jeedom 4.4.8 +> +> ¡Compatible con Debian 11 y 12! +> +> Véase también [este tema en la comunidad](https://community.jeedom.com/t/erreur-you-cannot-create-a-controller-instance-from-a-speaker-that-is-not-the-coordinator-of-its-group/128862) Para más información + +- Reescritura casi total del complemento; el demonio se ha reescrito por completo en Python (en lugar de PHP). +- ¡Compatible con Debian 11 y 12! +- Ya no es necesario iniciar el proceso de detección manualmente y tampoco es necesario (ni posible) añadir dispositivos manualmente, ya que el complemento detecta automáticamente tus dispositivos Sonos y crea los dispositivos correspondientes cada vez que se inicia el demonio. +- También es posible solicitar la (re)sincronización de los dispositivos, favoritos y listas de reproducción sin necesidad de reiniciar el demonio desde el panel de dispositivos. +- Sincronización automática cada hora para corregir posibles desincronizaciones +- Actualización (casi) en tiempo real de los comandos e información (con un retraso de entre 0,5 s y unos segundos como máximo), sin necesidad de tareas programadas por minutos, incluso cuando se realiza un cambio fuera de Jeedom (por ejemplo, a través de la aplicación de Sonos). +- Rediseño de la gestión de grupos (se eliminarán los antiguos comandos y se añadirán otros nuevos; consulta la documentación). Es posible unirse a un grupo o abandonarlo, así como controlar la reproducción del grupo desde cualquier dispositivo del grupo sin tener que preocuparse de quién es el controlador. El volumen, por su parte, se controla siempre por altavoz. +- Adaptación de la función de conversión de texto a voz (TTS): **será necesario ajustar la configuración del uso compartido SAMBA**. +- Optimización: ya no hay pérdidas de memoria en el demonio y consume menos que antes. +- Se optimizó la visualización de la portada que se está reproduciendo actualmente +- Optimización en la lectura de favoritos +- Se ha añadido la posibilidad de desactivar el mosaico preconfigurado: así podrás configurarlo como quieras utilizando los widgets del núcleo o tus propios widgets, mostrar u ocultar los controles que elijas... + +- Se ha añadido un comando de acción **TV** para cambiar a la entrada *TV* en los dispositivos compatibles +- Se ha añadido un comando de información **Modo de reproducción** y una acción **Elegir modo de reproducción** que permite seleccionar el modo de reproducción entre las siguientes opciones: *Normal*, *Repetir todo*, *Aleatorio y repetir todo*, *Aleatorio sin repetición*, *Repetir la canción*, *Aleatorio y repetir la canción* +- Se ha añadido un comando **Estado de lectura** que proporciona el valor «en bruto» del estado de lectura (el comando existente **Estado** proporciona un valor traducido según el idioma configurado en Jeedom). +- Se han añadido los controles **Estado del grupo** (indica si el equipo está agrupado o no) y **Nombre del grupo** en caso de que el equipo esté agrupado +- Se han añadido los comandos **Led on**, **Led off** y **Led statut** para controlar el indicador de estado +- Se ha añadido un comando **Reproducir radio MP3** para reproducir una emisora de radio MP3 directamente a través de una URL (accesible en Internet, por ejemplo). +- Se han añadido los comandos **Subir el volumen** y **Bajar el volumen** en un 1 %. +- Se ha añadido un comando **Transición de volumen** que resulta muy útil para gestionar las transiciones de nivel de volumen. Hay tres modos disponibles: *LINEAL*, *ALARMA* y *REPRODUCCIÓN AUTOMÁTICA*. Consulta la documentación para obtener más información. +- Se han añadido los comandos **Loudness estado**, **Loudness activado** y **Loudness desactivado** +- Se han añadido los comandos **Fundido encadenado de estado**, **Fundido encadenado activado** y **Fundido encadenado desactivado** +- Se han añadido los controles **Controles táctiles de estado**, **Controles táctiles de encendido** y **Controles táctiles de apagado** +- Se han añadido los controles **Balance** (acción/cursor) y **Balance estado**, que gestionan el equilibrio según un valor comprendido entre -100 (extremo izquierdo) y 100 (extremo derecho). +- Se han añadido los controles **Graves** (acción/cursor) y **Estado de graves**, que gestionan los graves según un valor comprendido entre -10 y 10. +- Se han añadido los controles **Agudos** (acción/deslizador) y **Estado de agudos**, que regulan los agudos según un valor comprendido entre -10 y 10. +- Se ha añadido el comando **Modo fiesta**, que permite agrupar todos los dispositivos Sonos +- Se ha añadido el comando **Estado del micrófono**, que indica si el micrófono está activado o no en los dispositivos Sonos equipados con micrófono +- Se ha añadido un comando de información **Batería** en los dispositivos Sonos equipados con batería, que indica el porcentaje de carga de la batería +- Se ha añadido un comando de información **Carga** en los dispositivos Sonos con batería que indica si se está cargando o no +- Se ha añadido un comando de información **Próxima alarma** en cada dispositivo Sonos que indica la fecha de la próxima alarma programada en ese altavoz + +# 25/04/2024 + +- Actualización de documentación +- Eliminación de acentos en los nombres de recursos compartidos (no compatibles con el complemento) +- Se ha eliminado la dependencia de PicoTTS (el complemento utiliza el motor global de TTS de Jeedom) +- Se agregó Sonos Beam Gen 2 + +# 15/01/2024 + +- Preparándose para Jeedom 4.4 +- Se agregó Sonos Move 2 + +# 24/08/2023 + +- Lámpara de pie Symfonisk de Ikea añadida + +# 25/05/2023 + +- Se agregó la era de Sonos + +# 18/10/2022 + +- Lista de comandos de actualización para Jeedom v4.3 +- Añadido Sonos Ray + +# 22/03/2022 + +- Soporte para el nuevo altavoz SYMFONISK + +# 01/02/2022 + +- Se corrigió un error en el TTS + +# 27/01/2022 + +- Optimizaciones V4.2 + +# 14/01/2022 + +- Se ha añadido la compatibilidad con el nuevo altavoz SYMFONISK + +# 27/12/2021 + +- Se ha añadido la compatibilidad con el nuevo Sonos One + +# 09/10/2021 + +- Adición de Sonos Five +- Agregar Sonos Roam +- Añadiendo Symfonisk Framework +- Actualización de volumen inmediata en caso de cambio por parte de Jeedom, gracias @Domochip + +# 24/11/2020 + +- Nueva presentación de la lista de objetos +- Se ha añadido la etiqueta «Compatibilidad con la versión 4» + +# 07/08/2020 + +- Compatibilidad con Sonos ARC + +# 24/01/2020 + +- Soporte para Sonos One S22 + +# 11/01/2020 + +- Soporte para Sonos Move +- Optimización de código en caso de que Sonos no esté conectado + +# 16/12/2019 + +- Corrección de errores si no se puede alcanzar un sistema de sonido + +# 21/10/2017 + +- Mejora en la recuperación de TTS + +# 15/10/2019 + +- Soporte de puerto de Sonos +- Script de instalación de dependencia mejorado + +# 07/10/2019 + +- Mejora del script de instalación de dependencias (podría permitir corregir, en algunos casos, los problemas de TTS) + +# 23/09/2019 + +- Optimizaciones + +# 01/09/2019 + +- Soporte de altavoz de lámpara Ikea SYMFONISK + +# 12/08/2019 + +- Soporte para altavoz de estantería Ikea SYMFONISK + +# 23/04/2019 + +- Soporte para un sonos gen2 + +# 17/01/2019 + +- Se corrigieron errores en caso de que los sistemas de sonido se agregaran manualmente + +# 15/01/2019 + +**IMPORTANTE: SOLO FUNCIONA CON PHP7. CONSULTA LA PÁGINA DE ESTADO DE JEEDOM PARA CONOCER TU VERSIÓN** + +- Completa reescritura del complemento +- Soporte para la nueva API de Sonos +- Soporte para sistemas de sonido Beam y One +- Se han corregido numerosos errores +- Optimizaciones globales + +**IMPORTANTE** + +- Solo PHP7 compatible +- Algunas características tuvieron que ser eliminadas + +# 2018 + +- Administración agregada de favoritos de sonos +- Soporte para Sonos One y Playbase +- Corrección de lengua con picotts +- Incorporación de un comando «Entrada de línea» +- Actualización de la biblioteca de comunicación con Sonos +- Carga optimizada de listas de reproducción +- Adición de picotts para la generación local de TTS +- Se ha corregido el botón de reproducción/pausa al actualizar el widget. diff --git a/docs/es_ES/index.md b/docs/es_ES/index.md index 15c1b9c..2bdd475 100644 --- a/docs/es_ES/index.md +++ b/docs/es_ES/index.md @@ -1,174 +1,174 @@ -# Complemento Sonos - -El plugin de Sonos te permite controlar el Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Te permitirá ver el estado del Sonos y realizar acciones (reproducir, pausar , siguiente, anterior, volumen, elección de una lista de reproducción). - -# Configuración del plugin - -La configuración es muy sencilla, después de descargar el complemento, solo necesitas activarlo, instalar las dependencias e iniciar el demonio. -El complemento buscará Sonos en su red y creará el equipo automáticamente. Además, si hay una coincidencia entre los objetos Jeedom y las habitaciones de Sonos, Jeedom asignará automáticamente Sonos a las habitaciones correctas. - -> **Importante** -> Su equipo Sonos debe ser accesible directamente desde la máquina que aloja Jeedom (transmisión/multidifusión posible en la misma red) y deben poder comunicarse con Jeedom a cambio en el puerto TCP 1400. - -Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0/24`. Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet. **Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut** - -Si luego agrega un Sonos, puede hacer clic en **Sincronizar** en la página del equipo o reinicie el demonio. - -- **Compartir**: Configure aquí el nombre de host de la máquina (o su IP), el nombre del recurso compartido (sin la ruta, sin '/') y la ruta a la carpeta. -- **Compartir nombre de usuario**: nombre de usuario para acceder a compartir. -- **Compartir contraseña**: Compartir contraseña. - -# Configuración del equipo - -Se puede acceder a la configuración del equipo Sonos desde el menú Complementos y luego multimedia. - -Aquí encontrarás toda la configuración habitual de tu equipo : - -- **Nombre de Sonos**: nombre de su equipo Sonos. -- **Objeto padre**: indica el objeto padre al que pertenece el equipo. -- **Activar**: activa su equipo. -- **Visible**: lo hace visible en el tablero. - -Además de información sobre tu Sonos: *Modelo*, *Lanzamientos*, *Número de serie*, *Identificador*, *Dirección MAC* Y *Dirección IP*. - -Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix... - -La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée. - -# Las órdenes - -Los controles de información se actualizarán casi en tiempo real (normalmente unos segundos como máximo), pero la imagen del álbum que se está reproduciendo actualmente puede tardar un poco más en mostrarse en el widget cuando se produce un cambio de pista, esto es perfectamente normal e independiente de la pista. enchufar: debe recuperar la imagen de una fuente externa (en un Sonos o en Internet) y esto a veces lleva varios segundos (en principio, un máximo de diez segundos)). - -## Controles y controles de volumen de Sonos - -Estos comandos controlarán siempre el equipo correspondiente, incluso cuando esté en grupo. - -- **Volumen**: cambiar el volumen *(de 0 a 100)* -- **Volumen de estado**: nivel de volumen (en %) -- **Sube el volumen**: aumenta el volumen en un 1%; Puede ser útil para la integración con otros sistemas o complementos -- **Disminuir el volumen**: disminuye el volumen en un 1%; Puede ser útil para la integración con otros sistemas o complementos -- **Transición de volumen** le permite realizar transiciones de nivel de volumen administradas directamente por el altavoz Sonos, no es el complemento el que se encarga de esto y por lo tanto no bloquea pero los retrasos no son configurables desde que los define Sonos. El tipo de transición y el volumen de destino deben elegirse al ejecutar el comando. Hay 3 modos: - - *LINEAL*: transición lineal del volumen actual al volumen objetivo (aumentar o disminuir), la velocidad es 1.25 por segundo (una transición *LINEAL* Del 50% al 30% se necesitarán 16s) - - *ALARMA*: inicializa el volumen a 0, hace una pausa de unos 30 segundos y luego aumenta al volumen solicitado a una velocidad de 2.5 por segundo (una transición *ALARMA* del 0% al 10% tardará 4s) - - *AUTO-REPRODUCCIÓN*: inicializa el volumen a 0 y aumenta rápidamente al volumen solicitado a una velocidad de 50 por segundo (una transición *AUTO-REPRODUCCIÓN* de 0% a 50% tomará 1s) -- **Mudo**: Activar el modo silencio. -- **Sin silencio**: Desactivar silencio. -- **Estado de silencio**: indica si estamos en modo silencio o no. -- **Balance** (acción/cursor) y **Estado del saldo** que gestiona el equilibrio según un valor entre -100 (extremo izquierdo) y 100 (extremo derecho) para Sonos compatibles -- **Tumbas** (acción/cursor) y **Estado serio** que gestiona los graves según un valor entre -10 y 10 -- **Triplicar** (acción/cursor) y **Estado de agudos** que gestiona los agudos según un valor entre -10 y 10 -- **Estado de sonoridad**, **Volumen encendido**, **Volumen apagado** controla el volumen - -- **TELEVISOR**: para cambiar a la entrada *TELEVISOR* en equipos compatibles -- **Entrada de audio analógico**: para cambiar a'*Entrada de audio analógico* (*En linea*) en equipos compatibles -- **El don** Y **Llevar afuera**: Activa y desactiva el LED, la luz de estado -- **LED de estado**: indica si la luz de estado está encendida o no. Esta información solo se actualiza una vez por minuto en caso de que se modifique fuera de Jeedom -- **Controles táctiles activados** Y **Controles táctiles desactivados** Activa y desactiva los botones físicos o táctiles en Sonos -- **Controles táctiles de estado** indica si los controles táctiles están habilitados o no -- **Estado del micrófono** que indica si el micrófono está activado o no en Sonos equipado con un micrófono -- **Batería** en Sonos equipado con una batería que muestra el porcentaje de carga de la batería -- **Cargando** en Sonos equipado con una batería que indica si la carga está en curso o no - -## Controles de reproducción - -Estos comandos indicarán y controlarán la reproducción actual en el equipo o en el grupo si está agrupado y esto de forma transparente, no tienes que preocuparte por saber si los equipos están agrupados o no para usarlos. - -- **Estado**: estado del lector traducido al idioma configurado en Jeedom. Por ejemplo: *Lectura*, *Pausa*, *Interrumpido*. -- **Estado de lectura** que da el valor "bruto" del estado de lectura: *JUGANDO*, *PAUSAD_REPRODUCCIÓN*, *INTERRUMPIDO*; más adecuado para escenarios. -- **Lectura**: leer. -- **Pausa**: pausa. -- **Detener**: deja de leer. -- **Anterior**: pista anterior. -- **Próximo**: siguiente pista. -- **Estado aleatorio**: indica si estamos en modo aleatorio o no. -- **Al azar**: invertir el estado del modo aleatorio. -- **Repita el estado**: indica si estamos en modo de repetición o no. -- **Repetición**: invertir el estado del modo "repetir"". -- **Estado de desvanecimiento**, **Desvanecerse**, **Desaparecer** controlar y activar o no el *Fundido cruzado* -- **Elige el modo de lectura** le permite elegir entre las siguientes posibilidades: - - *Normal* (repetir, desactivar aleatoriamente), - - *Repite todo* (aleatorio apagado), - - *Aleatorio y repetir todo*, - - *Aleatorio sin repetición*, - - *Repetir canción* (aleatorio apagado), - - *Canción aleatoria y repetida*. - - Recomiendo usar este comando en un escenario en lugar de **Repetición** & **Al azar** para llegar a la configuración deseada incluso si todos actúan sobre los mismos parámetros. Este comando es, sin embargo, la única manera de cambiar al modo *Repetir canción* O *Canción aleatoria y repetida*. -- **Modo de lectura** dando el estado actual que será uno de los valores citados anteriormente. -- **Reproducir lista de reproducción**: comando de tipo de mensaje para iniciar una lista de reproducción, solo ponga el nombre de la lista de reproducción en el título. En un escenario, se mostrará automáticamente una lista de posibilidades cuando empieces a escribir. -- **Jugar favoritos**: comando de tipo de mensaje para lanzar un favorito, todo lo que tienes que hacer en el título es poner el nombre del favorito. En un escenario, se mostrará automáticamente una lista de posibilidades cuando empieces a escribir. -- **Tocar una radio**: comando de tipo de mensaje para lanzar una estación de radio, todo lo que tiene que hacer es poner el nombre de la radio en el título *(Atención : esto debe estar en las radios favoritas)*. En un escenario, se mostrará automáticamente una lista de posibilidades cuando empieces a escribir. Ya no funciona en los modelos "S2", es normal tener una lista vacía en todos los modelos que usan la aplicación Sonos S2. -- **Reproducir radio mp3**: le permite reproducir una radio mp3 a través de una URL (por ejemplo, desde Internet)). Debes poner un título en el cuadro *Título* y la URL (http(formato s))://...mp3) en el área *Mensaje*. -- **Imagen**: enlace a la imagen del álbum. -- **Álbum**: nombre del álbum actualmente en reproducción. -- **Artista**: nombre del artista actualmente en reproducción. -- **Seguir**: nombre de la pista que se está reproduciendo actualmente. -- **Decir**: permite leer un texto en Sonos (ver parte de TTS). En el título puede configurar el volumen y en el mensaje, el mensaje a leer. - -> **Pista** -> Las listas de reproducción y favoritos deben crearse a través de la aplicación Sonos (en el móvil o en la computadora) luego se debe realizar la sincronización para actualizar el equipo y poder usarlo en un escenario. - -## Comandos para gestionar grupos - -Estos comandos actúan siempre sobre el equipo correspondiente. - -- **Estado del grupo**: Indica si el equipo está agrupado o no. -- **Nombre del grupo** si el equipo está agrupado, indique el nombre del grupo. -- **Únete a un grupo**: le permite unirse al grupo del hablante determinado (un Sonos) (para asociar 2 Sonos, por ejemplo)). Debe ingresar el nombre de la sala del sistema de sonido para unirse. Puede ser cualquier miembro de un grupo existente, no tiene que ser el coordinador del grupo ni un Sonos aislado. En un escenario, se mostrará automáticamente una lista de posibilidades cuando empieces a escribir. -- **Abandonar el grupo**: te permite salir del grupo. -- **Moda de fiesta** te permite agrupar todos los Sonos - -# TTS - -TTS (texto a voz) para Sonos requiere compartir SAMBA en la red (impuesto por Sonos, no hay forma de hacerlo de otra manera)). Por lo tanto, necesita un NAS o equivalente en la red. La configuración es bastante sencilla, debes ingresar el nombre o IP del NAS (cuidado de poner lo mismo que se declara en Sonos) y la ruta a la carpeta que debe contener los archivos de audio así como el nombre del usuario. y contraseña (tenga en cuenta que el usuario debe tener derechos de escritura) - -La creación del archivo de audio es gestionada por el núcleo Jeedom: el idioma será el configurado en Jeedom y el motor TTS utilizado también se podrá seleccionar en la configuración de Jeedom. - -Cuando se utiliza TTS (comando **Decir**), el complemento realizará las siguientes acciones: - -- generación del archivo de audio que contiene el mensaje con soporte central de Jeedom -- escribiendo el archivo en el recurso compartido SAMBA -- forzar la reproducción en modo “Normal”, sin repetición -- forzar el modo “activar silencio” (solo en el equipo, no en todo el grupo)) -- Cambiar el volumen al valor elegido al utilizar el comando (solo en el equipo, no en todo el grupo)) -- mensaje de lectura -- restaurar el estado de Sonos antes de la reproducción (es decir, el modo de reproducción, silenciar o no, repetir o no, etc.) y reiniciar la transmisión si Sonos estaba reproduciendo - -> **Importante** -> -> Es absolutamente necesario poner una contraseña para que este procedimiento funcione. -> -> Un subdirectorio también es absolutamente necesario para que el archivo de voz se cree correctamente. -> -> Sobre todo, no debe haber acentos en el nombre del recurso compartido o carpeta, espacios o caracteres especiales. -> -> Los mensajes demasiado largos no se pueden transmitir en TTS (el límite depende del proveedor de TTS, generalmente alrededor de 100 caracteres)). - -## Ejemplo de configuración - -Del lado del NAS se debe realizar la siguiente configuración: - -- el registro *Jeedom* es compartido y contiene una carpeta *TTS* -- el usuario *Jeedom* tiene acceso de lectura/escritura (necesario para Jeedom). -- el usuario *su hueso* tiene acceso de solo lectura (necesario para Sonos). - -En el lado del complemento de Sonos, la configuración : - -- Compartir : - - Campo 1: 192.168.xxx.yyy - - Campo 2: *Jeedom* - - Campo 3: *TTS* -- Nombre del usuario (*Jeedom* en el ejemplo) y su contraseña…​ - -Sonos Library side (aplicación para PC) - -- el camino es : //192.168.xxx.yyy/Jeedom/TTS -- el usuario será *su hueso* (en este ejemplo) + contraseña - -# El panel - -El complemento de Sonos también proporciona un panel que reúne a todos sus Sonos. Disponible desde el menú Inicio → Sonos Controller : - -> **Importante** -> -> Para tener el panel debes tenerlo activado en la configuración del plugin. +# Complemento Sonos + +El complemento de Sonos permite controlar los dispositivos Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Te permitirá ver el estado de los dispositivos Sonos y realizar acciones (reproducir, pausar, canción siguiente, canción anterior, ajustar el volumen, seleccionar una lista de reproducción…). + +# Configuración del plugin + +La configuración es muy sencilla: tras descargar el complemento, solo tienes que activarlo, instalar los requisitos previos e iniciar el demonio. +El complemento buscará los dispositivos Sonos en tu red y creará los equipos automáticamente. Además, si hay una correspondencia entre los objetos de Jeedom y las habitaciones de Sonos, Jeedom asignará automáticamente los dispositivos Sonos a las habitaciones correctas. + +> **Importante** +> Tus dispositivos Sonos deben ser accesibles directamente desde el servidor que aloja Jeedom (es posible el broadcast o el multicast en la misma red) y deben poder conectarse a Jeedom a través del puerto TCP 1400. + +En caso de que tus altavoces Jeedom no estén en la misma subred que Jeedom, puedes configurarlo preferiblemente en formato CIDR, por ejemplo: `192.168.1.0/24`. También debería ser posible introducir directamente la dirección IP de uno de tus altavoces para detectar los demás a partir de él, pero se recomienda configurar toda la red. **Atención: no configures nada si no dominas este tema; prueba primero la configuración por defecto** + +Si más adelante añades un Sonos, puedes hacer clic en **Sincronizar** en la página de dispositivos o reiniciar el demonio. + +- **Recurso compartido**: Configura aquí el nombre de host del equipo (o su dirección IP), el nombre del recurso compartido (sin la ruta, sin «/») y la ruta a la carpeta. +- **Nombre de usuario del recurso compartido**: nombre de usuario para acceder al recurso compartido. +- **Contraseña de uso compartido**: contraseña de uso compartido. + +# Configuración del equipo + +Se puede acceder a la configuración de los dispositivos Sonos desde el menú «Plugins» y, a continuación, «Multimedia». + +Aquí encontrarás toda la configuración habitual de tu equipo: + +- **Nombre del Sonos**: nombre de tu dispositivo Sonos. +- **Objeto principal**: indica el objeto principal al que pertenece el equipo. +- **Activar**: permite poner en marcha tu equipo. +- **Visible**: lo muestra en el panel de control. + +Además de información sobre tu Sonos: *Modelo*, *Versiones*, *Número de serie*, *ID*, *Dirección MAC* y *Dirección IP*. + +También tienes la posibilidad de desactivar el mosaico del equipo preconfigurado (opción activa por defecto) y, en ese caso, configurar dicho mosaico como desees utilizando los widgets del núcleo o tus propios widgets, mostrar u ocultar los controles que elijas... + +El mosaico preconfigurado no tiene en cuenta si los controles están visibles o no, ni las opciones avanzadas de visualización; su configuración no se puede modificar. + +# Las órdenes + +Los datos de control se actualizarán casi en tiempo real (normalmente con un retraso de unos segundos como máximo), pero la imagen del álbum que se está reproduciendo puede tardar un poco más en aparecer en el widget al cambiar de pista; esto es totalmente normal y no tiene nada que ver con el complemento: tiene que recuperar la imagen de una fuente externa (en un Sonos o en Internet) y eso a veces lleva varios segundos (en principio, como máximo unos diez segundos). + +## Controles y controles de volumen de Sonos + +Estos comandos siempre controlarán el equipo correspondiente, incluso cuando este forme parte de un grupo. + +- **Volumen**: ajustar el volumen *(de 0 a 100)* +- **Volumen actual**: nivel de volumen (en %) +- **Aumentar el volumen**: aumenta el volumen un 1 %; puede resultar útil para la integración con otros sistemas o complementos +- **Bajar el volumen**: baja el volumen un 1 %; puede resultar útil para la integración con otros sistemas o complementos +- **Transición de volumen** permite realizar transiciones de nivel de volumen gestionadas directamente por el altavoz Sonos; no es el complemento el que se encarga de ello, por lo que no supone ningún bloqueo, pero los tiempos de espera no son configurables, ya que los define Sonos. El tipo de transición y el volumen de destino deben seleccionarse al ejecutar el comando. Existen tres modos: + - *LINEAL*: transición lineal desde el volumen actual hasta el volumen de destino (aumento o disminución), a una velocidad de 1,25 por segundo (una transición *LINEAL* del 50 % al 30 % tardará 16 s) + - *ALARM*: inicializa el volumen en 0, hace una pausa de unos 30 segundos y, a continuación, lo aumenta hasta el volumen solicitado a una velocidad de 2,5 por segundo (una transición *ALARM* del 0 % al 10 % tardará 4 s) + - *AUTOPLAY*: inicializa el volumen en 0 y lo aumenta rápidamente hasta el volumen solicitado a una velocidad de 50 por segundo (una transición *AUTOPLAY* del 0 % al 50 % tardará 1 s) +- **Silencio**: Activa el modo silencio. +- **No silenciado**: Desactiva el modo silencioso. +- **Estado de silencio**: indica si se está en modo silencio o no. +- **Balance** (acción/deslizador) y **Balance de estado**, que controla el balance según un valor comprendido entre -100 (extremo izquierdo) y 100 (extremo derecho) para los dispositivos Sonos compatibles +- **Graves** (acción/cursor) y **Estado de graves**, que gestiona los graves según un valor comprendido entre -10 y 10 +- **Agudos** (acción/cursor) y **Estado de agudos**, que controla los agudos según un valor comprendido entre -10 y 10 +- **Estado de Loudness**, **Loudness activado**, **Loudness desactivado**: controla el volumen + +- **TV**: para cambiar a la entrada *TV* en los dispositivos compatibles +- **Entrada de audio analógica**: para cambiar a la *Entrada de audio analógica* (*Line-in*) en los dispositivos compatibles +- **LED encendido** y **LED apagado**: Activa y desactiva el LED, el indicador de estado +- **Estado del LED**: indica si el indicador de estado está encendido o no. Esta información solo se actualiza una vez por minuto en caso de que se modifique fuera de Jeedom. +- **Controles táctiles activados** y **Controles táctiles desactivados**: activa y desactiva los botones físicos o táctiles del Sonos +- **Estado de los controles táctiles** indica si los controles táctiles están activados o no +- **Estado del micrófono**, que indica si el micrófono está activado o no en los dispositivos Sonos equipados con micrófono +- **Batería** en los dispositivos Sonos equipados con batería, que indica el porcentaje de carga de la batería +- **Carga** en los dispositivos Sonos con batería, indicando si se está cargando o no + +## Controles de reproducción + +Estos comandos mostrarán y controlarán la reproducción actual en el dispositivo o en el grupo, si este está agrupado, y lo harán de forma transparente; no tienes que preocuparte por si el dispositivo está agrupado o no para utilizarlos. + +- **Estado**: estado del reproductor traducido al idioma configurado en Jeedom. Por ejemplo: *Reproducción*, *Pausa*, *Detener*. +- **Estado de reproducción**, que proporciona el valor «bruto» del estado de reproducción: *PLAYING*, *PAUSED_PLAYBACK*, *STOPPED*; más adecuado para los escenarios. +- **Lectura**: pasar al modo de lectura. +- **Pausa**: poner en pausa. +- **Stop**: detener la reproducción. +- **Anterior**: pista anterior. +- **Siguiente**: pista siguiente. +- **Estado aleatorio**: indica si se está en modo aleatorio o no. +- **Aleatorio**: invierte el estado del modo aleatorio. +- **Repetir estado**: indica si se está en modo de repetición o no. +- **Repetir**: invierte el estado del modo «Repetir». +- **Fundido encadenado: estado**, **Fundido encadenado: activado**, **Fundido encadenado: desactivado** para controlar y activar o desactivar el *fundido encadenado* +- **Seleccionar modo de reproducción** permite elegir entre las siguientes opciones: + - *Normal* (repetición desactivada, aleatoriedad desactivada), + - *Repetir todo* (aleatorio desactivado), + - *Aleatorio y repetir todo*, + - *Aleatorio sin repeticiones*, + - *Repetir la canción* (aleatorio desactivado), + - *Reproducir aleatoriamente y repetir la canción*. + +Recomiendo utilizar este comando en un escenario en lugar de **Repetir** y **Aleatorio** para conseguir la configuración deseada, aunque todos actúen sobre los mismos parámetros. Sin embargo, este comando es la única forma de pasar al modo *Repetir la canción* o *Aleatorio y repetir la canción*. +- **Modo de lectura** que indica el estado actual, que será uno de los valores mencionados anteriormente. +- **Reproducir lista de reproducción**: comando de tipo mensaje que permite iniciar una lista de reproducción; basta con introducir el nombre de la lista de reproducción en el título. En un escenario, se mostrará automáticamente una lista de opciones en cuanto empieces a escribir. +- **Ejecutar favoritos**: comando de tipo mensaje que permite ejecutar un favorito; basta con introducir el nombre del favorito en el título. En un escenario, se mostrará automáticamente una lista de opciones en cuanto empieces a escribir. +- **Reproducir una emisora de radio**: comando de tipo mensaje que permite poner una emisora de radio; basta con introducir el nombre de la emisora en el título *(ATENCIÓN: esta debe estar entre las emisoras favoritas)*. En un escenario, se mostrará automáticamente una lista de opciones cuando empieces a escribir. Ya no funciona en los modelos «S2»; es normal que la lista esté vacía en todos los modelos que utilicen la aplicación Sonos S2. +- **Reproducir una radio en formato MP3**: permite reproducir una radio en formato MP3 a través de una URL (por ejemplo, desde Internet). Debes introducir un título en el campo *Título* y la URL (formato http(s)://...mp3) en el campo *Mensaje*. +- **Imagen**: enlace a la imagen del álbum. +- **Álbum**: nombre del álbum que se está reproduciendo. +- **Artista**: nombre del artista que se está reproduciendo. +- **Pista**: nombre de la pista que se está reproduciendo. +- **Dire**: permite leer un texto en el Sonos (véase la sección TTS). En el título puedes indicar el volumen y, en el mensaje, el texto que se va a leer. + +> **Sugerencia** +> Las listas de reproducción y los favoritos deben crearse a través de la aplicación de Sonos (en el móvil o en el ordenador); a continuación, hay que realizar una sincronización para actualizar los dispositivos y poder utilizarlos en un escenario. + +## Comandos para gestionar grupos + +Estos comandos siempre actúan sobre el equipo correspondiente. + +- **Estado del grupo**: indica si el equipo está agrupado o no. +- **Nombre del grupo**: en caso de que el equipo esté agrupado, indica el nombre del grupo. +- **Unirse a un grupo**: permite unirse al grupo de un altavoz (un Sonos) concreto (por ejemplo, para emparejar dos Sonos). Hay que introducir el nombre de la habitación del Sonos al que te quieres unir. Puede ser cualquier miembro de un grupo ya existente; no tiene por qué ser necesariamente el coordinador del grupo ni un Sonos independiente. En algunos casos, se mostrará automáticamente una lista de opciones en cuanto empieces a escribir. +- **Salir del grupo**: permite salir del grupo. +- **Modo fiesta** permite agrupar todos los dispositivos Sonos + +# TTS + +Para que el TTS (text-to-speech) funcione con Sonos, es necesario tener un recurso compartido SAMBA en la red (es un requisito de Sonos, no hay otra forma de hacerlo). Por lo tanto, necesitas un NAS o equivalente en la red. La configuración es bastante sencilla: hay que introducir el nombre o la IP del NAS (atención: asegúrate de introducir exactamente lo mismo que figura en Sonos), la ruta a la carpeta que debe contener los archivos de audio, así como el nombre de usuario y la contraseña (atención: el usuario debe tener permisos de escritura). + +La creación del archivo de audio la gestiona el núcleo de Jeedom: el idioma será el configurado en Jeedom y el motor TTS utilizado también se puede seleccionar en la configuración de Jeedom. + +Al utilizar el TTS (comando **Dire**), el complemento llevará a cabo las siguientes acciones: + +- generación del archivo de audio que contiene el mensaje con soporte central de Jeedom +- escribiendo el archivo en el recurso compartido SAMBA +- forzar la reproducción en modo “Normal”, sin repetición +- forzar el modo «no silenciado» (solo en el equipo, no en todo el grupo) +- Ajuste del volumen al valor seleccionado al utilizar el mando (solo en el equipo, no en todo el grupo) +- mensaje de lectura +- restaurar el estado de Sonos antes de la reproducción (es decir, el modo de reproducción, silenciar o no, repetir o no, etc.) y reiniciar la transmisión si Sonos estaba reproduciendo + +> **IMPORTANTE** +> +> Es imprescindible introducir una contraseña para que este procedimiento funcione. +> +> También es imprescindible que haya un subdirectorio para que el archivo de voz se cree correctamente. +> +> Es muy importante que el nombre del recurso compartido o de la carpeta no contenga acentos, espacios ni caracteres especiales. +> +> Los mensajes demasiado largos no se pueden transmitir mediante TTS (el límite depende del proveedor de TTS; por lo general, ronda los 100 caracteres). + +## Ejemplo de configuración + +En cuanto al NAS, hay que realizar la siguiente configuración: + +- La carpeta *Jeedom* está compartida y contiene una carpeta *TTS* +- El usuario *jeedom* tiene acceso de lectura y escritura (necesario para Jeedom). +- El usuario *sonos* tiene acceso de solo lectura (necesario para los dispositivos Sonos). + +En cuanto al plugin de Sonos, la configuración: + +- Compartir: + - Campo 1: 192.168.xxx.yyy + - Campo 2: *Jeedom* + - Campo 3: *TTS* +- Nombre de usuario (*jeedom* en el ejemplo) y su contraseña…​ + +En la biblioteca de Sonos (aplicación para PC) + +- la ruta es: //192.168.xxx.yyy/Jeedom/TTS +- El usuario será *sonos* (en este ejemplo) + contraseña + +# El panel + +El complemento de Sonos también ofrece un panel que reúne todos tus dispositivos Sonos. Disponible desde el menú Inicio → Sonos Controller: + +> **IMPORTANTE** +> +> Para poder acceder al panel, es necesario haberlo activado en la configuración del complemento. diff --git a/docs/i18n/de_DE.json b/docs/i18n/de_DE.json deleted file mode 100644 index 6b5fed8..0000000 --- a/docs/i18n/de_DE.json +++ /dev/null @@ -1,813 +0,0 @@ -{ - "changelog.md": { - "Changelog Sonos controller": "Changelog Sonos Controller", - "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt", - "11-04-2026": "", - "Ajout d'une commande info": "Hinzufügen eines Info-Befehls", - "qui indique la station radio en cours de lecture (si l'info est disponible": "", - "27-01-2026": "27-01-2026", - "Ikea Table Lamp": "Ikea Table Lamp", - "Ajout de l'image pour": "Ajout de l'image pour", - "19-01-2026": "19.01.2026", - "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", - "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", - "Corrections des images": "Bildkorrekturen", - "26-04-2025": "26-04-2025", - "Refonte importante du plugin": "Bedeutende Neugestaltung des Plugins", - "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;", - "Nécessite Jeedom 4.4.8": "Erfordert Jeedom 4.4.8", - "Compatible Debian 11 et 12": "Debian 11 und 12 kompatibel", - "ce sujet sur community": "dieses Thema auf Community", - "Voir également": "Siehe auch", - "pour plus de détails": "für mehr Details", - "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP": "Das Plugin wurde fast komplett neu geschrieben, der Daemon wurde komplett in Python (anstelle von PHP) neu geschrieben", - "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon", - "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements": "Es ist auch möglich, Geräte, Favoriten und Wiedergabelisten (erneut) zu synchronisieren, ohne den Daemon über das Gerätefenster neu zu starten", - "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles", - "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple", - "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation": "Neugestaltung der Gruppenverwaltung (alte Befehle werden gelöscht und neue hinzugefügt, siehe Dokumentation", - "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur": "Es ist möglich, einer Gruppe beizutreten oder sie zu verlassen und die Wiedergabe der Gruppe von jedem Gerät in der Gruppe aus zu steuern, ohne sich Gedanken darüber machen zu müssen, wer der Controller ist", - "Le volume est, lui, toujours contrôlé par enceinte": "Le volume est, lui, toujours contrôlé par enceinte", - "il sera nécessaire d'adapter la configuration du partage SAMBA": "il sera nécessaire d'adapter la configuration du partage SAMBA", - "Adaptation sur la fonction Text-to-Speech (TTS": "Adaptation sur la fonction Text-to-Speech (TTS", - "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant", - "Optimisation de l'affichage de la pochette de la lecture en cours": "Die Anzeige des aktuell wiedergegebenen Covers wurde optimiert", - "Optimisation sur la lecture des favoris": "Optimierung der Lesefavoriten", - "Ajout de la possibilité de désactiver la tuile pré-configurée": "Ajout de la possibilité de désactiver la tuile pré-configurée", - "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix", - "Ajout d'une commande action": "Hinzufügen eines Aktionsbefehls", - "pour basculer sur l'entrée": "um zum Eingang zu wechseln", - "sur les équipements compatibles": "auf kompatiblen Geräten", - "Mode de lecture": "Lesemodus", - "Choisir mode de lecture": "Wählen Sie den Lesemodus", - "Répéter tout": "Wiederhole alles", - "Aléatoire et répéter tout": "Zufällig und alles wiederholen", - "Aléatoire sans répétition": "Zufällig ohne Wiederholung", - "Répéter le morceau": "Lied wiederholen", - "Aléatoire et répéter le morceau": "Zufälliges und wiederholtes Lied", - "et action": "und Aktion", - "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "Hier können Sie den Lesemodus aus den folgenden Möglichkeiten auswählen", - "Statut de lecture": "Lesestatus", - "Ajout d'une commande": "Bestellung hinzufügen", - "qui donne la valeur \"brut\" de l'état de lecture (la commande existante": "Dies gibt den „Rohwert“ des Lesestatus (den vorhandenen Befehl) an", - "donne une valeur traduite en fonction de la langue configurée dans Jeedom": "Gibt einen übersetzten Wert basierend auf der in Jeedom konfigurierten Sprache an", - "Groupe statut": "Gruppenstatus", - "Nom du groupe": "Name der Gruppe", - "Ajout des commandes": "Befehle hinzufügen", - "indique si l'équipement est groupé ou non) et": "gibt an, ob das Gerät gruppiert ist oder nicht) und", - "dans le cas où l'équipement est groupé": "für den Fall, dass die Ausrüstung gruppiert ist", - "Led on": "Das Geschenk", - "Led off": "LED aus", - "Led statut": "Status-LED", - "pour contrôler le voyant d'état": "um die Statusanzeige zu überprüfen", - "Jouer une radio mp3": "Spielen Sie MP3-Radio", - "pour lire une radio mp3 directement via une URL (accessible sur internet par exemple": "um ein MP3-Radio direkt über eine URL (z. B. im Internet zugänglich) abzuspielen", - "Augmenter le volume": "Drehe die Lautstärke hoch", - "Diminuer le volume": "Verringern Sie die Lautstärke", - "de 1%": "ab 1%", - "Transition de volume": "Lautstärkeübergang", - "qui est très intéressante pour gérer les transitions de niveau de volume": "Dies ist sehr nützlich für die Verwaltung von Lautstärkeübergängen", - "3 modes possible": "3 mögliche Modi", - "Voir documentation pour plus d'information": "Weitere Informationen finden Sie in der Dokumentation", - "Loudness statut": "Lautstärkestatus", - "Loudness on": "Lautstärke an", - "Loudness off": "Lautstärke aus", - "Fondu enchaîné statut": "Fade-Status", - "Fondu enchaîné on": "Einblenden", - "Fondu enchaîné off": "Ausblenden", - "Commandes tactiles statut": "Status-Touch-Steuerelemente", - "Commandes tactiles on": "Touch-Bedienelemente ein", - "Commandes tactiles off": "Touch-Steuerung ausgeschaltet", - "Balance statut": "Kontostand", - "action\/curseur) et": "Aktion\/Cursor) und", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite": "die den Saldo nach einem Wert zwischen -100 (ganz links) und 100 (ganz rechts) verwaltet", - "Graves statut": "Ernsthafter Status", - "qui gère les graves selon une valeur comprise entre -10 et 10": "die den Bass nach einem Wert zwischen -10 und 10 verwaltet", - "Aigus statut": "Dreifacher Status", - "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "qui gèrent les aigus selon une valeur comprise entre -10 et 10", - "Mode fête": "Partymode", - "Ajout de la commande": "Befehl hinzufügen", - "qui permet de grouper tous les Sonos ensemble": "Dadurch können Sie alle Sonos gruppieren", - "Mic statut": "Mikrofonstatus", - "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "Bei Sonos, die mit einem Akku ausgestattet sind, wird der Akkuladestand in Prozent angezeigt", - "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non", - "Prochaine alarme": "Nächster Alarm", - "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "Auf jedem Sonos wird das Datum des nächsten auf diesem Lautsprecher programmierten Alarms angezeigt", - "25\/04\/2024": "25.04.2024", - "Mise à jour de la documentation": "Aktualisierung der Dokumentation", - "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "Nettoyage des accents dans les noms de partage (non supportés par le plugin", - "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom", - "Ajout Sonos Beam Gen 2": "Sonos Beam Gen 2 hinzugefügt", - "15\/01\/2024": "15.01.2024", - "Préparation pour Jeedom 4.4": "Vorbereitung auf Jeedom 4.4", - "Ajout Sonos Move 2": "Sonos Move 2 hinzugefügt", - "24\/08\/2023": "24.08.2023", - "Ajout Ikea Symfonisk Floor Lamp": "Ikea Symfonisk Stehlampe hinzugefügt", - "25\/05\/2023": "25.05.2023", - "Ajout Sonos Era": "Sonos-Ära hinzugefügt", - "18\/10\/2022": "18.10.2022", - "Mise à jour liste des commandes pour Jeedom v4.3": "Befehlsliste für Jeedom v4.3 aktualisieren", - "Ajout de la Sonos Ray": "Sonos Ray hinzugefügt", - "22\/03\/2022": "22.03.2022", - "Support de la nouvelle enceinte SYMFONISK": "Unterstützung für den neuen SYMFONISK-Lautsprecher", - "01\/02\/2022": "01.02.2022", - "Correction d'un bug sur le TTS": "Fehler im TTS behoben", - "27\/01\/2022": "27.01.2022", - "Optimisations V4.2": "V4.2-Optimierungen", - "14\/01\/2022": "14.01.2022", - "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK", - "27\/12\/2021": "27.12.2021", - "Ajout de la compatibilité avec la nouvelle Sonos One": "Ajout de la compatibilité avec la nouvelle Sonos One", - "09\/10\/2021": "09.10.2021", - "Ajout de la Sonos Five": "Hinzufügung der Sonos Five", - "Ajout Sonos Roam": "Hinzufügen von Sonos Roam", - "Ajout Symfonisk Cadre": "Symfonisk Framework hinzufügen", - "Mise à jour immediate du volume en cas de changement par Jeedom, merci @Domochip": "Sofortige Volumenaktualisierung bei Änderung durch Jeedom, danke @Domochip", - "24\/11\/2020": "24\/11\/2020", - "Nouvelle présentation de la liste des objets": "Neue Darstellung der Objektliste", - "Ajout du tag \"Compatibilité V4": "Hinzufügung des Tags \"V4-Kompatibilität", - "07\/08\/2020": "08\/07\/2020", - "Prise en charge du Sonos ARC": "Sonos ARC-Unterstützung", - "24\/01\/2020": "24.01.2020", - "Prise en charge du Sonos One S22": "Unterstützung für Sonos One S22", - "11\/01\/2020": "01\/11\/2020", - "Prise en charge du Sonos Move": "Unterstützung für Sonos Move", - "Optimisation du code en cas de Sonos non connecté": "Codeoptimierung bei nicht verbundenem Sonos", - "16\/12\/2019": "16.12.2019", - "Correction de bug si un sonos n'est pas joignable": "Fehlerbehebung, wenn ein Soundsystem nicht erreicht werden kann", - "21\/10\/2017": "21.10.2017", - "Amélioration de la reprise suite à un TTS": "Verbesserung der Erholung von TTS", - "15\/10\/2019": "15.10.2019", - "Prise en charge du Sonos port": "Sonos Port-Unterstützung", - "Amélioration du script d'installation des dépendances": "Verbessertes Skript zur Installation von Abhängigkeiten", - "07\/10\/2019": "10\/07\/2019", - "Amélioration du script d'installation des dépendances (pourra permettre de corriger dans certain cas les soucis de TTS": "Verbesserung des Abhängigkeitsinstallationsskripts (kann in einigen Fällen die Behebung der Probleme von TTS ermöglichen", - "23\/09\/2019": "2019.09.23", - "01\/09\/2019": "09\/01\/2019", - "Prise en charge de l'enceinte lampe Ikea SYMFONISK": "Unterstützung für Ikea SYMFONISK Lampenlautsprecher", - "12\/08\/2019": "08\/12\/2019", - "Prise en charge de l'enceinte étagere Ikea SYMFONISK": "Unterstützung für Ikea SYMFONISK Regallautsprecher", - "23\/04\/2019": "23.04.2019", - "Prise en charge des sonos one gen2": "Unterstützung für ein Gen2-Sonos", - "17\/01\/2019": "17.01.2019", - "Correction de bugs dans le cas où les sonos ont été ajoutés manuellement": "Fehler behoben, falls die Soundsysteme manuell hinzugefügt wurden", - "15\/01\/2019": "2019.01.15", - "IMPORTANT NE MARCHE QUE AVEC PHP7, VOIR PAGE SANTE DE JEEDOM POUR VOTRE VERSION": "WICHTIG NUR MIT PHP7 ARBEITEN, SIEHE JEEDOM GESUNDHEITSSEITE FÜR IHRE VERSION", - "Réecriture complète du plugin": "Vollständiges Umschreiben des Plugins", - "Prise en charge de la nouvelle api Sonos": "Unterstützung für die neue Sonos-API", - "Prise en charge des sonos beam et One": "Unterstützung für Beam- und One-Soundsysteme", - "Correction de nombreux bugs": "Correction de nombreux bugs", - "Optimisations globales": "Globale Optimierungen", - "Compatible PHP7 uniquement": "Nur kompatibles PHP7", - "Certaines fonctionnalités ont dû être retirées": "Einige Funktionen mussten entfernt werden", - "Ajout de la gestion des favoris sonos": "Verwaltung der Sonos-Favoriten hinzugefügt", - "Prise en charge des Sonos One et Playbase": "Unterstützung für Sonos One und Playbase", - "Correction de la langue avec PicoTTS": "Zungenkorrektur mit Picotts", - "Ajout d'une commande \"Entrée de ligne": "Hinzufügen eines Befehls \"Zeileneintrag\"", - "Mise à jour de la librairie de communication avec les Sonos": "Mise à jour de la librairie de communication avec les Sonos", - "Optimisation du chargement des playlists": "Optimiertes Laden von Wiedergabelisten", - "Ajout de picotts pour la génération du TTS en local": "Zugabe von Picotts zur lokalen TTS-Erzeugung", - "Correction du bouton play\/pause lors de la mise à jour du widget": "Korrektur der Wiedergabe- \/ Pause-Schaltfläche beim Aktualisieren des Widgets", - " IMPORTANT.": " Wichtig.", - " IMPORTANT?": " Wichtig?", - "IMPORTANT ": "Wichtig ", - " IMPORTANT]": " Wichtig]", - "[IMPORTANT]": "[Wichtig]", - "*IMPORTANT*": "*Wichtig*", - " IMPORTANT*": " Wichtig*", - " Station.": " .", - " Station?": " ?", - "Station ": " ", - " Station]": " ]", - "[Station]": "[]", - "*Station*": "**", - " Station*": " *", - " Attention.": " Aufmerksamkeit.", - " Attention?": " Aufmerksamkeit?", - "Attention ": "Aufmerksamkeit ", - " Attention]": " Aufmerksamkeit]", - "[Attention]": "[Aufmerksamkeit]", - "*Attention*": "*Aufmerksamkeit*", - " Attention*": " Aufmerksamkeit*", - " Optimisation.": " Optimierung.", - " Optimisation?": " Optimierung?", - "Optimisation ": "Optimierung ", - " Optimisation]": " Optimierung]", - "[Optimisation]": "[Optimierung]", - "*Optimisation*": "*Optimierung*", - " Optimisation*": " Optimierung*", - " TV.": " Fernseher.", - " TV?": " Fernseher?", - "TV ": "Fernseher ", - " TV]": " Fernseher]", - "[TV]": "[Fernseher]", - "*TV*": "*Fernseher*", - " TV*": " Fernseher*", - " Normal.": " Normal.", - " Normal?": " Normal?", - "Normal ": "Normal ", - " Normal]": " Normal]", - "[Normal]": "[Normal]", - "*Normal*": "*Normal*", - " Normal*": " Normal*", - " Statut.": " Status.", - " Statut?": " Status?", - "Statut ": "Status ", - " Statut]": " Status]", - "[Statut]": "[Status]", - "*Statut*": "*Status*", - " Statut*": " Status*", - " et.": " Und.", - " et?": " Und?", - "et ": "Und ", - " et]": " Und]", - "[et]": "[Und]", - "*et*": "*Und*", - " et*": " Und*", - " LINEAR.": " LINEAR.", - " LINEAR?": " LINEAR?", - "LINEAR ": "LINEAR ", - " LINEAR]": " LINEAR]", - "[LINEAR]": "[LINEAR]", - "*LINEAR*": "*LINEAR*", - " LINEAR*": " LINEAR*", - " ALARM.": " ALARM.", - " ALARM?": " ALARM?", - "ALARM ": "ALARM ", - " ALARM]": " ALARM]", - "[ALARM]": "[ALARM]", - "*ALARM*": "*ALARM*", - " ALARM*": " ALARM*", - " AUTOPLAY.": " AUTOMATISCHES ABSPIELEN.", - " AUTOPLAY?": " AUTOMATISCHES ABSPIELEN?", - "AUTOPLAY ": "AUTOMATISCHES ABSPIELEN ", - " AUTOPLAY]": " AUTOMATISCHES ABSPIELEN]", - "[AUTOPLAY]": "[AUTOMATISCHES ABSPIELEN]", - "*AUTOPLAY*": "*AUTOMATISCHES ABSPIELEN*", - " AUTOPLAY*": " AUTOMATISCHES ABSPIELEN*", - " Balance.": " Gleichgewicht.", - " Balance?": " Gleichgewicht?", - "Balance ": "Gleichgewicht ", - " Balance]": " Gleichgewicht]", - "[Balance]": "[Gleichgewicht]", - "*Balance*": "*Gleichgewicht*", - " Balance*": " Gleichgewicht*", - " Graves.": " Gräber.", - " Graves?": " Gräber?", - "Graves ": "Gräber ", - " Graves]": " Gräber]", - "[Graves]": "[Gräber]", - "*Graves*": "*Gräber*", - " Graves*": " Gräber*", - " Aigus.": " Verdreifachen.", - " Aigus?": " Verdreifachen?", - "Aigus ": "Verdreifachen ", - " Aigus]": " Verdreifachen]", - "[Aigus]": "[Verdreifachen]", - "*Aigus*": "*Verdreifachen*", - " Aigus*": " Verdreifachen*", - " Batterie.": " Batterie.", - " Batterie?": " Batterie?", - "Batterie ": "Batterie ", - " Batterie]": " Batterie]", - "[Batterie]": "[Batterie]", - "*Batterie*": "*Batterie*", - " Batterie*": " Batterie*", - " Chargement.": " Laden.", - " Chargement?": " Laden?", - "Chargement ": "Laden ", - " Chargement]": " Laden]", - "[Chargement]": "[Laden]", - "*Chargement*": "*Laden*", - " Chargement*": " Laden*", - " Optimisations.": " Optimierungen.", - " Optimisations?": " Optimierungen?", - "Optimisations ": "Optimierungen ", - " Optimisations]": " Optimierungen]", - "[Optimisations]": "[Optimierungen]", - "*Optimisations*": "*Optimierungen*", - " Optimisations*": " Optimierungen*" - }, - "index.md": { - "Plugin Sonos": "Sonos Plugin", - "Le plugin Sonos permet de piloter les Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Il va vous permettre de voir l'état du\/des Sonos et d'effectuer des actions (lecture, pause, suivant, précédent, volume, choix d'une playlist…": "Mit dem Sonos-Plug-in können Sie Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... steuern. Es ermöglicht Ihnen, den Status von Sonos anzuzeigen und Aktionen auszuführen (Wiedergabe, Pause , nächstes, vorheriges, Lautstärke, Auswahl einer Playlist…", - "Configuration du plugin": "Plugin Konfiguration", - "La configuration est très simple, après téléchargement du plugin, il vous suffit de l'activer, d'installer les dépendances et de démarrer le démon": "Die Konfiguration ist sehr einfach, nach dem Herunterladen des Plugins müssen Sie es nur noch aktivieren, die Abhängigkeiten installieren und den Daemon starten", - "Le plugin va rechercher les Sonos sur votre réseau et créer les équipements automatiquement": "Das Plugin sucht in Ihrem Netzwerk nach Sonos und erstellt die Geräte automatisch", - "De plus, s'il y a une correspondance entre les objets Jeedom et les pièces du Sonos, Jeedom affectera automatiquement les Sonos dans les bonnes pièces": "Wenn zwischen Jeedom-Objekten und Sonos-Räumen eine Übereinstimmung besteht, weist Jeedom Sonos automatisch den richtigen Räumen zu", - "Vos équipements Sonos doivent être joignable directement par la machine hébergeant Jeedom (broadcast \/ multicast possible sur le même réseau) et ils doivent être capable de joindre Jeedom en retour sur le port TCP 1400": "Ihre Sonos-Geräte müssen direkt von der Maschine, auf der Jeedom gehostet wird, erreichbar sein (Broadcast\/Multicast im selben Netzwerk möglich) und sie müssen Jeedom im Gegenzug über den TCP-Port 1400 erreichen können", - "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut": "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut", - "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`": "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`", - "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet": "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet", - "Si plus tard vous ajoutez un Sonos, vous pouvez cliquer sur": "Wenn Sie später einen Sonos hinzufügen, können Sie auf klicken", - "dans la page des équipements ou redémarrer le démon": "auf der Geräteseite oder starten Sie den Daemon neu", - "Configurez ici le nom d'hôte de la machine (ou son IP), le nom du partage (sans le chemin, sans '\/') et le chemin vers le dossier": "Konfigurieren Sie hier den Hostnamen der Maschine (bzw. deren IP), den Namen der Freigabe (ohne Pfad, ohne „\/“) und den Pfad zum Ordner", - "Nom d'utilisateur du partage": "Teilen Sie den Benutzernamen", - "nom d'utilisateur pour accéder au partage": "Benutzername für den Zugriff auf die Freigabe", - "Mot de passe du partage": "Passwort teilen", - "mot de passe du partage": "Passwort teilen", - "Configuration des équipements": "Gerätekonfiguration", - "La configuration des équipements Sonos est accessible à partir du menu Plugins puis multimédia": "Auf die Konfiguration der Sonos-Geräte kann über das Plugins-Menü und dann über Multimedia zugegriffen werden", - "Vous retrouvez ici toute la configuration habituelle de votre équipement": "Hier finden Sie die gesamte übliche Konfiguration Ihrer Ausrüstung", - "Nom du Sonos": "Sonos Name", - "nom de votre équipement Sonos": "Name Ihres Sonos-Geräts", - "Objet parent": "Übergeordnetes Objekt", - "indique l'objet parent auquel appartient l'équipement": "Gibt das übergeordnete Objekt an, zu dem das Gerät gehört", - "permet de rendre votre équipement actif": "macht Ihre Ausrüstung aktiv", - "le rend visible sur le dashboard": "macht es auf dem Dashboard sichtbar", - "Modèle": "Modell", - "Numéro de série": "Seriennummer", - "Adresse MAC": "MAC-Adresse", - "Adresse IP": "IP Adresse", - "Ainsi que des informations sur votre Sonos": "Sowie Informationen zu Ihrem Sonos", - "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix": "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix", - "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée": "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée", - "Les commandes": "Die Aufträge", - "Les commandes infos seront mises à jour en quasi temps réel (délai de quelques secondes maximum normalement) mais l'image de l'album en cours de lecture peut mettre un peu plus de temps à s'afficher sur le widget lors d'un changement de piste, ceci est parfaitement normal et indépendant du plugin": "Die Info-Steuerelemente werden nahezu in Echtzeit aktualisiert (normalerweise maximal ein paar Sekunden), aber bei einem Titelwechsel kann es etwas länger dauern, bis das Bild des gerade abgespielten Albums im Widget angezeigt wird. Dies ist völlig normal und unabhängig vom Plugin", - "il doit récupérer l'image depuis une source externe (sur un Sonos ou sur internet) et cela prend parfois plusieurs secondes (en principe maximum une dizaine de secondes": "Er muss das Bild von einer externen Quelle (auf einem Sonos oder im Internet) abrufen, was manchmal mehrere Sekunden dauert (im Prinzip maximal etwa zehn Sekunden)", - "Commandes de volume & contrôle du Sonos": "Sonos-Lautstärkeregler und -Regler", - "Ces commandes vont toujours contrôler l'équipement correspondant, y compris lorsque celui-ci est dans un groupe": "Diese Befehle steuern immer das entsprechende Gerät, auch wenn es sich in einer Gruppe befindet", - "de 0 à 100": "von 0 bis 100", - "modifier le volume": "Ändern Sie die Lautstärke", - "Volume statut": "Statusvolumen", - "niveau du volume (en %": "Lautstärkepegel (in %", - "Augmenter le volume": "Drehe die Lautstärke hoch", - "augmente le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "erhöht die Lautstärke um 1 %; kann für die Integration mit anderen Systemen oder Plugins nützlich sein", - "Diminuer le volume": "Verringern Sie die Lautstärke", - "diminue le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "verringert die Lautstärke um 1 %; kann für die Integration mit anderen Systemen oder Plugins nützlich sein", - "Transition de volume": "Lautstärkeübergang", - "permet d'effectuer des transitions de niveau de volume directement géré par l'enceinte Sonos, ce n'est pas le plugin qui s'en charge et donc ce n'est pas bloquant mais les délais ne sont pas configurable puisque défini par Sonos": "Ermöglicht die Durchführung von Lautstärkeübergängen, die direkt vom Sonos-Lautsprecher verwaltet werden. Dies ist nicht das Plug-in, das sich darum kümmert und daher nicht blockiert, aber die Verzögerungen sind nicht konfigurierbar, da sie von Sonos definiert wurden", - "Le type de transition et le volume cible doivent être choisi lors de l'exécution de la commande": "Beim Ausführen des Befehls müssen der Übergangstyp und das Zielvolume ausgewählt werden", - "Il existe 3 modes": "Es gibt 3 Modi", - "transition linéaire depuis le volume actuel vers le volume cible (augmentation ou diminution), la vitesse est de 1": "Linearer Übergang vom aktuellen Volumen zum Zielvolumen (Erhöhung oder Verringerung), Geschwindigkeit ist 1", - "25 par seconde (une transition": "25 pro Sekunde (ein Übergang", - "de 50% à 30% prendra 16s": "Von 50 % auf 30 % dauert es 16 Sekunden", - "initialise le volume à 0, pause d'environ 30 secondes et ensuite augmente jusqu'au volume demandé à une vitesse de 2": "initialisiert die Lautstärke auf 0, pausiert etwa 30 Sekunden und erhöht dann mit der Geschwindigkeit 2 auf die gewünschte Lautstärke", - "5 par seconde (une transition": "5 pro Sekunde (ein Übergang", - "de 0% à 10% prendra 4s": "Von 0 % auf 10 % dauert es 4 Sekunden", - "initialise le volume à 0 et augmente rapidement jusqu'au volume demandé à une vitesse de 50 par seconde (un transition": "Initialisiert die Lautstärke auf 0 und erhöht sich schnell mit einer Rate von 50 pro Sekunde auf die angeforderte Lautstärke (ein Übergang)", - "de 0% à 50% prendra 1s": "Von 0 % auf 50 % dauert es 1 Sekunde", - "Active le mode muet": "Stummschaltung aktivieren", - "Non Muet": "Keine Stummschaltung", - "Désactive le mode muet": "Schalten Sie die Stummschaltung aus", - "Muet statut": "Stummschaltungsstatus", - "indique si on est en mode muet ou non": "zeigt an, ob wir uns im Stummmodus befinden oder nicht", - "Balance statut": "Kontostand", - "action\/curseur) et": "Aktion\/Cursor) und", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite) pour les Sonos compatibles": "die die Balance nach einem Wert zwischen -100 (ganz links) und 100 (ganz rechts) für kompatible Sonos verwaltet", - "Graves statut": "Ernsthafter Status", - "qui gère les graves selon une valeur comprise entre -10 et 10": "die den Bass nach einem Wert zwischen -10 und 10 verwaltet", - "Aigus statut": "Dreifacher Status", - "qui gère la aigus selon une valeur comprise entre -10 et 10": "der die Höhen nach einem Wert zwischen -10 und 10 verwaltet", - "Loudness statut": "Lautstärkestatus", - "Loudness on": "Lautstärke an", - "Loudness off": "Lautstärke aus", - "contrôle le loudness": "steuert die Lautstärke", - "pour basculer sur l'entrée": "um zum Eingang zu wechseln", - "sur les équipements compatibles": "auf kompatiblen Geräten", - "Entrée audio analogique": "Analoger Audioeingang", - "pour basculer sur l": "zu wechseln", - "Led on": "Das Geschenk", - "Led off": "LED aus", - "Active et désactive la led, le voyant d'état": "Aktiviert und deaktiviert die LED, das Statuslicht", - "Led statut": "Status-LED", - "indique si le voyant d'état est allumé ou non": "Zeigt an, ob die Statusleuchte leuchtet oder nicht", - "Cette info n'est mise à jour qu'une fois par minute dans le cas où elle est modifiée hors Jeedom": "Diese Informationen werden nur einmal pro Minute aktualisiert, falls sie außerhalb von Jeedom geändert werden", - "Commandes tactiles on": "Touch-Bedienelemente ein", - "Commandes tactiles off": "Touch-Steuerung ausgeschaltet", - "Active et désactive les boutons physiques ou tactiles sur le Sonos": "Aktiviert und deaktiviert physische oder Touch-Tasten auf Sonos", - "Commandes tactiles statut": "Status-Touch-Steuerelemente", - "indique si les commandes tactiles sont activées ou pas": "Zeigt an, ob die Touch-Steuerung aktiviert ist oder nicht", - "Mic statut": "Mikrofonstatus", - "qui indique si le micro est activé ou non sur les Sonos équipé d'un micro": "Dies zeigt an, ob das Mikrofon bei Sonos, die mit einem Mikrofon ausgestattet sind, aktiviert ist oder nicht", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "Bei Sonos, die mit einem Akku ausgestattet sind, wird der Akkuladestand in Prozent angezeigt", - "sur les Sonos équipés d'une batterie indiquant si la charge est en cours ou non": "Bei Sonos, die mit einem Akku ausgestattet sind, wird angezeigt, ob der Ladevorgang läuft oder nicht", - "Commandes de lecture": "Wiedergabesteuerung", - "Ces commandes indiqueront et contrôleront la lecture en cours sur l'équipement ou sur le groupe si celui-ci est groupé et cela de façon transparente, vous ne devez pas vous préoccuper de savoir si l'équipement est groupé ou pas pour les utiliser": "Diese Befehle zeigen und steuern die aktuelle Wiedergabe auf dem Gerät oder in der Gruppe, wenn diese gruppiert ist, und zwar auf transparente Weise. Sie müssen sich keine Gedanken darüber machen, ob das Gerät gruppiert ist oder ob Sie sie nicht verwenden sollen", - "Arrêté": "Gestoppt", - "statut de lecteur traduit dans la langue configurée sous Jeedom": "Leserstatus in die unter Jeedom konfigurierte Sprache übersetzt", - "Par exemple": "Zum Beispiel", - "Statut de lecture": "Lesestatus", - "PAUSED_PLAYBACK": "PAUSED_PLAYBACK", - "qui donne la valeur \"brut\" du statut de lecture": "Dies gibt den „Rohwert“ des Lesestatus an", - "; plus adapté pour les scénarios": "; besser geeignet für Szenarien", - "passer en lecture": "lesen", - "mettre en pause": "Pause", - "arrêter la lecture": "Hör auf zu lesen", - "Précédent": "Früher", - "piste précédente": "vorheriger Titel", - "piste suivante": "nächster Track", - "Aléatoire statut": "Zufälliger Status", - "indique si on est en mode aléatoire ou non": "zeigt an, ob wir uns im Zufallsmodus befinden oder nicht", - "Aléatoire": "Zufällig", - "inverse le statut du mode aléatoire": "Kehren Sie den Status des Zufallsmodus um", - "Répéter statut": "Status wiederholen", - "indique si on est en mode répété ou non": "zeigt an, ob wir uns im Wiederholungsmodus befinden oder nicht", - "Répéter": "Wiederholung", - "inverse le statut du mode \"répéter": "Kehren Sie den Status des \"Wiederholungs\" -Modus um", - "Fondu enchaîné statut": "Fade-Status", - "Fondu enchaîné on": "Einblenden", - "Fondu enchaîné off": "Ausblenden", - "Fondu enchaîné": "Überblendung", - "pour contrôler et activer ou non le": "zu steuern und zu aktivieren oder nicht", - "Choisir mode de lecture": "Wählen Sie den Lesemodus", - "permet de choisir parmi les possibilités suivantes": "ermöglicht Ihnen die Auswahl aus den folgenden Möglichkeiten", - "répétition off, aléatoire off": "Wiederholung aus, Zufall aus", - "Répéter tout": "Wiederhole alles", - "aléatoire off": "zufällig aus", - "Aléatoire et répéter tout": "Zufällig und alles wiederholen", - "Aléatoire sans répétition": "Zufällig ohne Wiederholung", - "Répéter le morceau": "Lied wiederholen", - "Aléatoire et répéter le morceau": "Zufälliges und wiederholtes Lied", - "Je recommande d'utiliser cette commande-ci dans un scénario au lieu de": "Ich empfehle, diesen Befehl stattdessen in einem Szenario zu verwenden", - "&": "&", - "afin d'arriver dans la configuration désirée même si toutes agissent sur les mêmes paramètres": "um zur gewünschten Konfiguration zu gelangen, auch wenn alle auf die gleichen Parameter einwirken", - "Cette commande est par contre le seul moyen de passer en mode": "Dieser Befehl ist jedoch die einzige Möglichkeit, in den Modus zu wechseln", - "Mode de lecture": "Lesemodus", - "donnant l'état actuel qui sera une des valeurs citées ci-dessus": "Angabe des aktuellen Zustands, der einer der oben genannten Werte sein wird", - "Jouer playlist": "Playlist abspielen", - "commande de type message permettant de lancer une playlist, il suffit dans le titre de mettre le nom de la playlist": "Befehl zum Nachrichtentyp, um eine Wiedergabeliste zu starten. Geben Sie einfach den Namen der Wiedergabeliste in den Titel ein", - "Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper": "In einem Szenario wird automatisch eine Liste mit Möglichkeiten angezeigt, wenn Sie mit der Eingabe beginnen", - "Jouer favoris": "Favoriten spielen", - "commande de type message permettant de lancer un favoris, il suffit dans le titre de mettre le nom du favori": "Befehl zum Nachrichtentyp, um einen Favoriten zu starten. Im Titel müssen Sie lediglich den Namen des Favoriten eingeben", - "Jouer une radio": "Spielen Sie ein Radio", - "celle ci doit être dans les radios favorites": "Dies muss in den Lieblingsradios sein", - "commande de type message permettant de lancer une radio, il suffit dans le titre de mettre le nom de la radio": "Wenn Sie einen Befehl zum Starten eines Radiosenders eingeben, müssen Sie lediglich den Namen des Radios in den Titel einfügen", - "Ne fonctionne plus sur les modèles \"S2\", il est normal d'avoir une liste vide sur tous les modèles utilisant l'app Sonos S2": "Funktioniert nicht mehr bei „S2“-Modellen, es ist normal, dass bei allen Modellen, die die Sonos S2-App verwenden, eine leere Liste vorhanden ist", - "Jouer une radio mp3": "Spielen Sie MP3-Radio", - "permet de lire une radio mp3 via une URL (par exemple depuis internet": "ermöglicht das Abspielen eines MP3-Radios über eine URL (z. B. aus dem Internet)", - "Vous devez mettre un titre dans la zone": "Sie müssen einen Titel in das Feld eingeben", - "et l'url (format http(s": "und die URL (http(s)-Format)", - "\/\/...mp3) dans la zone": "\/\/...mp3) in der Gegend", - "lien vers l'image de l'album": "Link zum Albumbild", - "nom de l'album en cours de lecture": "Name des aktuell wiedergegebenen Albums", - "nom de l'artiste en cours de lecture": "Künstlername spielt gerade", - "nom de la piste en cours de lecture": "Name des aktuell wiedergegebenen Titels", - "permet de lire un texte sur le Sonos (voir partie TTS": "ermöglicht das Lesen eines Textes auf Sonos (siehe TTS-Teil", - "Dans le titre vous pouvez mettre le volume et dans le message, le message à lire": "Im Titel können Sie die Lautstärke und in der Nachricht die zu lesende Nachricht einstellen", - "Les playlists et les favoris doivent être créés via l'app Sonos (sur mobile ou sur ordi) ensuite il faut faire une synchronisation pour mettre à jour les équipements et pouvoir les utiliser dans un scénario": "Wiedergabelisten und Favoriten müssen über die Sonos-App (auf dem Handy oder Computer) erstellt werden. Anschließend muss eine Synchronisierung durchgeführt werden, um die Geräte zu aktualisieren und in einem Szenario verwenden zu können", - "Commandes pour gérer les groupes": "Befehle zum Verwalten von Gruppen", - "Ces commandes agissent toujours sur l'équipement correspondant": "Diese Befehle wirken sich immer auf das entsprechende Gerät aus", - "Groupe statut": "Gruppenstatus", - "indique si l'équipement est groupé ou non": "Gibt an, ob das Gerät gruppiert ist oder nicht", - "Nom du groupe": "Name der Gruppe", - "dans le cas où l'équipement est groupé, donne le nom du groupe": "Wenn das Gerät gruppiert ist, geben Sie den Namen der Gruppe an", - "Rejoindre un groupe": "Einer Gruppe beitreten", - "permet de rejoindre le groupe du haut-parleur (un Sonos) donné (pour associer 2 Sonos par exemple": "ermöglicht es Ihnen, der Gruppe des angegebenen Lautsprechers (einem Sonos) beizutreten (um beispielsweise zwei Sonos zuzuordnen)", - "Il faut mettre le nom de la pièce du sonos à rejoindre": "Sie müssen den Namen des Soundsystem-Raums eingeben, dem Sie beitreten möchten", - "Cela peut-être n'importe quel membre d'un groupe existant, cela ne doit pas nécessairement être le coordinateur du groupe, ou un Sonos isolé": "Dies kann ein beliebiges Mitglied einer bestehenden Gruppe sein, es muss nicht der Gruppenkoordinator oder ein isolierter Sonos sein", - "Quitter le groupe": "Die Gruppe verlassen", - "permet de quitter le groupe": "ermöglicht es Ihnen, die Gruppe zu verlassen", - "Mode fête": "Partymode", - "permet de grouper tous les Sonos ensemble": "ermöglicht es Ihnen, alle Sonos zusammenzufassen", - "Le TTS (text-to-speech) vers le Sonos nécessite d'avoir un partage SAMBA sur le réseau (imposé par Sonos, pas moyen de faire autrement": "TTS (Text-to-Speech) zu Sonos erfordert die SAMBA-Freigabe im Netzwerk (wird von Sonos vorgeschrieben, es gibt keine andere Möglichkeit)", - "Il faut vous donc un NAS ou équivalent sur le réseau": "Sie benötigen daher ein NAS oder ein gleichwertiges Gerät im Netzwerk", - "La configuration est assez simple il faut mettre le nom ou l'ip du NAS (attention à bien mettre la même chose que ce qui est déclaré sur Sonos) et le chemin vers le dossier qui doit contenir les fichiers audio ainsi que le nom d'utilisateur et le mot de passe (attention l'utilisateur doit avoir les droits en écriture": "Die Konfiguration ist ganz einfach: Sie müssen den Namen oder die IP-Adresse des NAS eingeben (achten Sie darauf, dasselbe wie bei Sonos anzugeben) und den Pfad zu dem Ordner, der die Audiodateien enthalten muss, sowie den Namen des Benutzers und Passwort (beachten Sie, dass der Benutzer über Schreibrechte verfügen muss", - "La création du fichier audio est géré par le core de Jeedom": "Die Erstellung der Audiodatei wird vom Jeedom-Kern verwaltet", - "la langue sera celle configurée dans Jeedom et le moteur TTS utilisé peut également être sélectionné dans la configuration Jeedom": "Die Sprache ist die in Jeedom konfigurierte und die verwendete TTS-Engine kann auch in der Jeedom-Konfiguration ausgewählt werden", - "Lors de l'utilisation du TTS (commande": "Bei Verwendung von TTS (Befehl", - "le plugin va effectuer les actions suivantes": "Das Plugin führt die folgenden Aktionen aus", - "génération du fichier audio contenant le message avec le support du core de Jeedom": "Generierung der Audiodatei, die die Nachricht enthält, mit Jeedom-Kernunterstützung", - "écriture du fichier sur le partage SAMBA": "Schreiben der Datei auf die SAMBA-Freigabe", - "forcer la lecture en mode \"Normal\", sans répétition": "erzwingt die Wiedergabe im „Normal“-Modus ohne Wiederholung", - "forcer le mode \"non muet\" (uniquement sur l'équipement, pas sur tout le groupe": "„Stummschaltung aufheben“-Modus erzwingen (nur für das Gerät, nicht für die gesamte Gruppe)", - "Modification du volume sur la valeur choisie lors de l'utilisation de la commande (uniquement sur l'équipement, pas sur tout le groupe": "Ändern der Lautstärke auf den gewählten Wert bei Verwendung des Befehls (nur für das Gerät, nicht für die gesamte Gruppe)", - "lecture du message": "Nachricht lesen", - "restauration de l'état du Sonos avant la lecture (donc le mode de lecture, muet ou pas, répétition ou pas...) et redémarrage du flux si le Sonos était en cours de lecture": "Wiederherstellen des Zustands des Sonos vor der Wiedergabe (d. h. des Wiedergabemodus, stumm oder nicht, wiederholen oder nicht usw.) und Neustarten des Streams, wenn der Sonos gerade abgespielt hat", - "Il faut absolument mettre un mot de passe pour que cette procédure fonctionne": "Es ist unbedingt erforderlich, ein Passwort einzugeben, damit dieses Verfahren funktioniert", - "Il faut aussi absolument un sous-répertoire pour que le fichier vocal soit correctement créé": "Ein Unterverzeichnis ist auch unbedingt erforderlich, damit die Sprachdatei korrekt erstellt wird", - "Il ne faut surtout pas d'accent dans le nom du partage ou le dossier, d'espace ou de caractères spéciaux": "Vor allem dürfen im Namen der Freigabe oder des Ordners keine Akzente, Leerzeichen oder Sonderzeichen enthalten sein", - "Les messages trop longs ne peuvent être transmis en TTS (la limite dépend du fournisseur de TTS, en général environ 100 caractères": "Zu lange Nachrichten können im TTS nicht übertragen werden (Grenze abhängig vom TTS-Anbieter, in der Regel ca. 100 Zeichen)", - "Exemple de configuration": "Konfigurationsbeispiel", - "Côté NAS, la config suivante doit être effectuée": "Auf der NAS-Seite muss die folgende Konfiguration durchgeführt werden", - "le dossier": "der Ordner", - "est partagé et il contient un dossier": "ist freigegeben und enthält einen Ordner", - "a un accès lecture\/écriture (nécessaire pour Jeedom": "hat Lese-\/Schreibzugriff (notwendig für Jeedom)", - "a un accès en lecture seule (nécessaire pour les Sonos": "hat nur Lesezugriff (notwendig für Sonos)", - "Côté Plugin Sonos, la config": "Auf der Sonos-Plugin-Seite ist die config", - "Champ 1": "Feld 1", - "192.168.xxx.yyy": "192.168.xxx.yyy", - "Champ 2": "Feld 2", - "Champ 3": "Feld 3", - "Nom d'utilisateur": "Nutzername", - "dans l'exemple) et son mot de passe…​": "im Beispiel) und sein Passwort…​", - "Côté Bibliothèque Sonos (appli PC": "Sonos Library Seite (PC App", - "le chemin est": "der Weg ist", - "\/\/192.168.xxx.yyy\/Jeedom\/TTS": "\/\/192.168.xxx.yyy\/Jeedom\/TTS", - "l'utilisateur sera": "der Benutzer wird sein", - "dans cet exemple) + mot de passe": "in diesem Beispiel) + Passwort", - "Le panel": "Das Panel", - "Le plugin Sonos met aussi à disposition un panel qui rassemble tous vos Sonos": "Das Sonos-Plugin bietet auch ein Bedienfeld, in dem alle Ihre Sonos zusammengefasst sind", - "Disponible à partir du menu Accueil → Sonos Controller": "Verfügbar über das Home-Menü → Sonos Controller", - "Pour avoir le panel il faut l'avoir activé dans la configuration du plugin": "Um das Panel zu haben, müssen Sie es in der Plugin-Konfiguration aktiviert haben", - " Important.": " Wichtig.", - " Important?": " Wichtig?", - "Important ": "Wichtig ", - " Important]": " Wichtig]", - "[Important]": "[Wichtig]", - "*Important*": "*Wichtig*", - " Important*": " Wichtig*", - " Synchroniser.": " Synchronisieren.", - " Synchroniser?": " Synchronisieren?", - "Synchroniser ": "Synchronisieren ", - " Synchroniser]": " Synchronisieren]", - "[Synchroniser]": "[Synchronisieren]", - "*Synchroniser*": "*Synchronisieren*", - " Synchroniser*": " Synchronisieren*", - " Partage.": " Teilen.", - " Partage?": " Teilen?", - "Partage ": "Teilen ", - " Partage]": " Teilen]", - "[Partage]": "[Teilen]", - "*Partage*": "*Teilen*", - " Partage*": " Teilen*", - " Activer.": " Aktivieren.", - " Activer?": " Aktivieren?", - "Activer ": "Aktivieren ", - " Activer]": " Aktivieren]", - "[Activer]": "[Aktivieren]", - "*Activer*": "*Aktivieren*", - " Activer*": " Aktivieren*", - " Visible.": " Sichtbar.", - " Visible?": " Sichtbar?", - "Visible ": "Sichtbar ", - " Visible]": " Sichtbar]", - "[Visible]": "[Sichtbar]", - "*Visible*": "*Sichtbar*", - " Visible*": " Sichtbar*", - " Versions.": " Veröffentlichungen.", - " Versions?": " Veröffentlichungen?", - "Versions ": "Veröffentlichungen ", - " Versions]": " Veröffentlichungen]", - "[Versions]": "[Veröffentlichungen]", - "*Versions*": "*Veröffentlichungen*", - " Versions*": " Veröffentlichungen*", - " Identifiant.": " Kennung.", - " Identifiant?": " Kennung?", - "Identifiant ": "Kennung ", - " Identifiant]": " Kennung]", - "[Identifiant]": "[Kennung]", - "*Identifiant*": "*Kennung*", - " Identifiant*": " Kennung*", - " et.": " Und.", - " et?": " Und?", - "et ": "Und ", - " et]": " Und]", - "[et]": "[Und]", - "*et*": "*Und*", - " et*": " Und*", - " Volume.": " Lautstärke.", - " Volume?": " Lautstärke?", - "Volume ": "Lautstärke ", - " Volume]": " Lautstärke]", - "[Volume]": "[Lautstärke]", - "*Volume*": "*Lautstärke*", - " Volume*": " Lautstärke*", - " LINEAR.": " LINEAR.", - " LINEAR?": " LINEAR?", - "LINEAR ": "LINEAR ", - " LINEAR]": " LINEAR]", - "[LINEAR]": "[LINEAR]", - "*LINEAR*": "*LINEAR*", - " LINEAR*": " LINEAR*", - " ALARM.": " ALARM.", - " ALARM?": " ALARM?", - "ALARM ": "ALARM ", - " ALARM]": " ALARM]", - "[ALARM]": "[ALARM]", - "*ALARM*": "*ALARM*", - " ALARM*": " ALARM*", - " AUTOPLAY.": " AUTOMATISCHES ABSPIELEN.", - " AUTOPLAY?": " AUTOMATISCHES ABSPIELEN?", - "AUTOPLAY ": "AUTOMATISCHES ABSPIELEN ", - " AUTOPLAY]": " AUTOMATISCHES ABSPIELEN]", - "[AUTOPLAY]": "[AUTOMATISCHES ABSPIELEN]", - "*AUTOPLAY*": "*AUTOMATISCHES ABSPIELEN*", - " AUTOPLAY*": " AUTOMATISCHES ABSPIELEN*", - " Muet.": " Stumm.", - " Muet?": " Stumm?", - "Muet ": "Stumm ", - " Muet]": " Stumm]", - "[Muet]": "[Stumm]", - "*Muet*": "*Stumm*", - " Muet*": " Stumm*", - " Balance.": " Gleichgewicht.", - " Balance?": " Gleichgewicht?", - "Balance ": "Gleichgewicht ", - " Balance]": " Gleichgewicht]", - "[Balance]": "[Gleichgewicht]", - "*Balance*": "*Gleichgewicht*", - " Balance*": " Gleichgewicht*", - " Graves.": " Gräber.", - " Graves?": " Gräber?", - "Graves ": "Gräber ", - " Graves]": " Gräber]", - "[Graves]": "[Gräber]", - "*Graves*": "*Gräber*", - " Graves*": " Gräber*", - " Aigus.": " Verdreifachen.", - " Aigus?": " Verdreifachen?", - "Aigus ": "Verdreifachen ", - " Aigus]": " Verdreifachen]", - "[Aigus]": "[Verdreifachen]", - "*Aigus*": "*Verdreifachen*", - " Aigus*": " Verdreifachen*", - " TV.": " Fernseher.", - " TV?": " Fernseher?", - "TV ": "Fernseher ", - " TV]": " Fernseher]", - "[TV]": "[Fernseher]", - "*TV*": "*Fernseher*", - " TV*": " Fernseher*", - " Line-in.": " Line-in.", - " Line-in?": " Line-in?", - "Line-in ": "Line-in ", - " Line-in]": " Line-in]", - "[Line-in]": "[Line-in]", - "*Line-in*": "*Line-in*", - " Line-in*": " Line-in*", - " Batterie.": " Batterie.", - " Batterie?": " Batterie?", - "Batterie ": "Batterie ", - " Batterie]": " Batterie]", - "[Batterie]": "[Batterie]", - "*Batterie*": "*Batterie*", - " Batterie*": " Batterie*", - " Chargement.": " Laden.", - " Chargement?": " Laden?", - "Chargement ": "Laden ", - " Chargement]": " Laden]", - "[Chargement]": "[Laden]", - "*Chargement*": "*Laden*", - " Chargement*": " Laden*", - " Statut.": " Status.", - " Statut?": " Status?", - "Statut ": "Status ", - " Statut]": " Status]", - "[Statut]": "[Status]", - "*Statut*": "*Status*", - " Statut*": " Status*", - " Lecture.": " Lesen.", - " Lecture?": " Lesen?", - "Lecture ": "Lesen ", - " Lecture]": " Lesen]", - "[Lecture]": "[Lesen]", - "*Lecture*": "*Lesen*", - " Lecture*": " Lesen*", - " Pause.": " Pause.", - " Pause?": " Pause?", - "Pause ": "Pause ", - " Pause]": " Pause]", - "[Pause]": "[Pause]", - "*Pause*": "*Pause*", - " Pause*": " Pause*", - " PLAYING.": " SPIELEN.", - " PLAYING?": " SPIELEN?", - "PLAYING ": "SPIELEN ", - " PLAYING]": " SPIELEN]", - "[PLAYING]": "[SPIELEN]", - "*PLAYING*": "*SPIELEN*", - " PLAYING*": " SPIELEN*", - " STOPPED.": " GESTOPPT.", - " STOPPED?": " GESTOPPT?", - "STOPPED ": "GESTOPPT ", - " STOPPED]": " GESTOPPT]", - "[STOPPED]": "[GESTOPPT]", - "*STOPPED*": "*GESTOPPT*", - " STOPPED*": " GESTOPPT*", - " Stop.": " STOP.", - " Stop?": " STOP?", - "Stop ": "STOP ", - " Stop]": " STOP]", - "[Stop]": "[STOP]", - "*Stop*": "*STOP*", - " Stop*": " STOP*", - " Suivant.": " Folgende.", - " Suivant?": " Folgende?", - "Suivant ": "Folgende ", - " Suivant]": " Folgende]", - "[Suivant]": "[Folgende]", - "*Suivant*": "*Folgende*", - " Suivant*": " Folgende*", - " Normal.": " Normal.", - " Normal?": " Normal?", - "Normal ": "Normal ", - " Normal]": " Normal]", - "[Normal]": "[Normal]", - "*Normal*": "*Normal*", - " Normal*": " Normal*", - " ou.": " Oder.", - " ou?": " Oder?", - "ou ": "Oder ", - " ou]": " Oder]", - "[ou]": "[Oder]", - "*ou*": "*Oder*", - " ou*": " Oder*", - " ATTENTION.": " Achtung.", - " ATTENTION?": " Achtung?", - "ATTENTION ": "Achtung ", - " ATTENTION]": " Achtung]", - "[ATTENTION]": "[Achtung]", - "*ATTENTION*": "*Achtung*", - " ATTENTION*": " Achtung*", - " Titre.": " Titel.", - " Titre?": " Titel?", - "Titre ": "Titel ", - " Titre]": " Titel]", - "[Titre]": "[Titel]", - "*Titre*": "*Titel*", - " Titre*": " Titel*", - " Message.": " Nachricht.", - " Message?": " Nachricht?", - "Message ": "Nachricht ", - " Message]": " Nachricht]", - "[Message]": "[Nachricht]", - "*Message*": "*Nachricht*", - " Message*": " Nachricht*", - " Image.": " Bild.", - " Image?": " Bild?", - "Image ": "Bild ", - " Image]": " Bild]", - "[Image]": "[Bild]", - "*Image*": "*Bild*", - " Image*": " Bild*", - " Album.": " Album.", - " Album?": " Album?", - "Album ": "Album ", - " Album]": " Album]", - "[Album]": "[Album]", - "*Album*": "*Album*", - " Album*": " Album*", - " Artiste.": " Künstler.", - " Artiste?": " Künstler?", - "Artiste ": "Künstler ", - " Artiste]": " Künstler]", - "[Artiste]": "[Künstler]", - "*Artiste*": "*Künstler*", - " Artiste*": " Künstler*", - " Piste.": " Verfolgen.", - " Piste?": " Verfolgen?", - "Piste ": "Verfolgen ", - " Piste]": " Verfolgen]", - "[Piste]": "[Verfolgen]", - "*Piste*": "*Verfolgen*", - " Piste*": " Verfolgen*", - " Dire.": " Zu sagen.", - " Dire?": " Zu sagen?", - "Dire ": "Zu sagen ", - " Dire]": " Zu sagen]", - "[Dire]": "[Zu sagen]", - "*Dire*": "*Zu sagen*", - " Dire*": " Zu sagen*", - " Hint.": " Hinweis.", - " Hint?": " Hinweis?", - "Hint ": "Hinweis ", - " Hint]": " Hinweis]", - "[Hint]": "[Hinweis]", - "*Hint*": "*Hinweis*", - " Hint*": " Hinweis*", - " TTS.": " TTS.", - " TTS?": " TTS?", - "TTS ": "TTS ", - " TTS]": " TTS]", - "[TTS]": "[TTS]", - "*TTS*": "*TTS*", - " TTS*": " TTS*", - " IMPORTANT.": " Wichtig.", - " IMPORTANT?": " Wichtig?", - "IMPORTANT ": "Wichtig ", - " IMPORTANT]": " Wichtig]", - "[IMPORTANT]": "[Wichtig]", - "*IMPORTANT*": "*Wichtig*", - " IMPORTANT*": " Wichtig*", - " Jeedom.": " Jeedom.", - " Jeedom?": " Jeedom?", - "Jeedom ": "Jeedom ", - " Jeedom]": " Jeedom]", - "[Jeedom]": "[Jeedom]", - "*Jeedom*": "*Jeedom*", - " Jeedom*": " Jeedom*", - " jeedom.": " Jeedom.", - " jeedom?": " Jeedom?", - "jeedom ": "Jeedom ", - " jeedom]": " Jeedom]", - "[jeedom]": "[Jeedom]", - "*jeedom*": "*Jeedom*", - " jeedom*": " Jeedom*", - " l'utilisateur.": " der Benutzer.", - " l'utilisateur?": " der Benutzer?", - "l'utilisateur ": "der Benutzer ", - " l'utilisateur]": " der Benutzer]", - "[l'utilisateur]": "[der Benutzer]", - "*l'utilisateur*": "*der Benutzer*", - " l'utilisateur*": " der Benutzer*", - " sonos.": " sein Knochen.", - " sonos?": " sein Knochen?", - "sonos ": "sein Knochen ", - " sonos]": " sein Knochen]", - "[sonos]": "[sein Knochen]", - "*sonos*": "*sein Knochen*", - " sonos*": " sein Knochen*" - } -} \ No newline at end of file diff --git a/docs/i18n/en_US.json b/docs/i18n/en_US.json deleted file mode 100644 index dbd0f19..0000000 --- a/docs/i18n/en_US.json +++ /dev/null @@ -1,813 +0,0 @@ -{ - "changelog.md": { - "Changelog Sonos controller": "Changelog Sonos controller", - "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text", - "11-04-2026": "", - "Ajout d'une commande info": "Adding an info command", - "qui indique la station radio en cours de lecture (si l'info est disponible": "", - "27-01-2026": "27-01-2026", - "Ikea Table Lamp": "Ikea Table Lamp", - "Ajout de l'image pour": "Ajout de l'image pour", - "19-01-2026": "19-01-2026", - "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", - "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", - "Corrections des images": "Image corrections", - "26-04-2025": "26-04-2025", - "Refonte importante du plugin": "Significant plugin redesign", - "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;", - "Nécessite Jeedom 4.4.8": "Requires Jeedom 4.4.8", - "Compatible Debian 11 et 12": "Debian 11 and 12 compatible", - "ce sujet sur community": "this topic on community", - "Voir également": "See also", - "pour plus de détails": "for more details", - "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP": "Almost total rewrite of the plugin, the daemon has been completely rewritten in python (instead of PHP", - "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon", - "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements": "It is also possible to ask to (re)synchronize equipment, favorites and playlists without restarting the daemon from the equipment panel", - "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles", - "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple", - "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation": "Redesign of group management (old commands will be deleted and new ones added, see documentation", - "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur": "It is possible to join or leave a group, control the playback of the group from any device in the group without worrying about who is the controller", - "Le volume est, lui, toujours contrôlé par enceinte": "Le volume est, lui, toujours contrôlé par enceinte", - "il sera nécessaire d'adapter la configuration du partage SAMBA": "il sera nécessaire d'adapter la configuration du partage SAMBA", - "Adaptation sur la fonction Text-to-Speech (TTS": "Adaptation sur la fonction Text-to-Speech (TTS", - "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant", - "Optimisation de l'affichage de la pochette de la lecture en cours": "Optimized the display of the cover of the current reading", - "Optimisation sur la lecture des favoris": "Optimization on reading favorites", - "Ajout de la possibilité de désactiver la tuile pré-configurée": "Ajout de la possibilité de désactiver la tuile pré-configurée", - "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix", - "Ajout d'une commande action": "Adding an action command", - "pour basculer sur l'entrée": "to switch to the input", - "sur les équipements compatibles": "on compatible equipment", - "Mode de lecture": "Reading mode", - "Choisir mode de lecture": "Choose reading mode", - "Répéter tout": "Repeat all", - "Aléatoire et répéter tout": "Random and repeat all", - "Aléatoire sans répétition": "Random without repetition", - "Répéter le morceau": "Repeat song", - "Aléatoire et répéter le morceau": "Random and repeat song", - "et action": "and action", - "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "which allows you to select the reading mode from the following possibilities", - "Statut de lecture": "Reading status", - "Ajout d'une commande": "Adding an order", - "qui donne la valeur \"brut\" de l'état de lecture (la commande existante": "which gives the \"raw\" value of the reading state (the existing command", - "donne une valeur traduite en fonction de la langue configurée dans Jeedom": "gives a translated value based on the language configured in Jeedom", - "Groupe statut": "Group status", - "Nom du groupe": "Name of the group", - "Ajout des commandes": "Adding commands", - "indique si l'équipement est groupé ou non) et": "indicates whether the equipment is grouped or not) and", - "dans le cas où l'équipement est groupé": "in the case where the equipment is grouped", - "Led on": "The gift", - "Led off": "Led off", - "Led statut": "Status LED", - "pour contrôler le voyant d'état": "to check the status indicator", - "Jouer une radio mp3": "Play mp3 radio", - "pour lire une radio mp3 directement via une URL (accessible sur internet par exemple": "to play an mp3 radio directly via a URL (accessible on the internet for example", - "Augmenter le volume": "Turn up the volume", - "Diminuer le volume": "Decrease the volume", - "de 1%": "from 1%", - "Transition de volume": "Volume transition", - "qui est très intéressante pour gérer les transitions de niveau de volume": "which is very useful for managing volume level transitions", - "3 modes possible": "3 possible modes", - "Voir documentation pour plus d'information": "See documentation for more information", - "Loudness statut": "Loudness status", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "Fondu enchaîné statut": "Crossfade status", - "Fondu enchaîné on": "Crossfade on", - "Fondu enchaîné off": "Fade off", - "Commandes tactiles statut": "Touch controls status", - "Commandes tactiles on": "Touch controls on", - "Commandes tactiles off": "Touch controls off", - "Balance statut": "Balance status", - "action\/curseur) et": "action\/cursor) and", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite": "which manages the balance according to a value between -100 (far left) and 100 (far right)", - "Graves statut": "Serious status", - "qui gère les graves selon une valeur comprise entre -10 et 10": "which manages the bass according to a value between -10 and 10", - "Aigus statut": "Acute status", - "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "qui gèrent les aigus selon une valeur comprise entre -10 et 10", - "Mode fête": "Party mode", - "Ajout de la commande": "Adding the command", - "qui permet de grouper tous les Sonos ensemble": "which allows you to group all Sonos together", - "Mic statut": "Mic status", - "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "on Sonos equipped with a battery indicating the battery charge percentage", - "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non", - "Prochaine alarme": "Next alarm", - "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "on each Sonos giving the date of the next alarm programmed on this speaker", - "25\/04\/2024": "04\/25\/2024", - "Mise à jour de la documentation": "Documentation update", - "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "Nettoyage des accents dans les noms de partage (non supportés par le plugin", - "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom", - "Ajout Sonos Beam Gen 2": "Added Sonos Beam Gen 2", - "15\/01\/2024": "01\/15\/2024", - "Préparation pour Jeedom 4.4": "Preparing for Jeedom 4.4", - "Ajout Sonos Move 2": "Added Sonos Move 2", - "24\/08\/2023": "08\/24\/2023", - "Ajout Ikea Symfonisk Floor Lamp": "Added Ikea Symfonisk Floor Lamp", - "25\/05\/2023": "05\/25\/2023", - "Ajout Sonos Era": "Added Sonos Era", - "18\/10\/2022": "10\/18\/2022", - "Mise à jour liste des commandes pour Jeedom v4.3": "Update command list for Jeedom v4.3", - "Ajout de la Sonos Ray": "Added Sonos Ray", - "22\/03\/2022": "03\/22\/2022", - "Support de la nouvelle enceinte SYMFONISK": "Support for the new SYMFONISK loudspeaker", - "01\/02\/2022": "02\/01\/2022", - "Correction d'un bug sur le TTS": "Fixed a bug on the TTS", - "27\/01\/2022": "01\/27\/2022", - "Optimisations V4.2": "V4.2 optimizations", - "14\/01\/2022": "01\/14\/2022", - "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK", - "27\/12\/2021": "12\/27\/2021", - "Ajout de la compatibilité avec la nouvelle Sonos One": "Ajout de la compatibilité avec la nouvelle Sonos One", - "09\/10\/2021": "09\/10\/2021", - "Ajout de la Sonos Five": "Addition of the Sonos Five", - "Ajout Sonos Roam": "Adding Sonos Roam", - "Ajout Symfonisk Cadre": "Adding Symfonisk Framework", - "Mise à jour immediate du volume en cas de changement par Jeedom, merci @Domochip": "Immediate volume update in case of change by Jeedom, thank you @Domochip", - "24\/11\/2020": "24\/11\/2020", - "Nouvelle présentation de la liste des objets": "New presentation of the list of objects", - "Ajout du tag \"Compatibilité V4": "Addition of the tag \"V4 compatibility", - "07\/08\/2020": "08\/07\/2020", - "Prise en charge du Sonos ARC": "Sonos ARC support", - "24\/01\/2020": "01\/24\/2020", - "Prise en charge du Sonos One S22": "Support for Sonos One S22", - "11\/01\/2020": "01\/11\/2020", - "Prise en charge du Sonos Move": "Support for Sonos Move", - "Optimisation du code en cas de Sonos non connecté": "Code optimization in case of Sonos not connected", - "16\/12\/2019": "12\/16\/2019", - "Correction de bug si un sonos n'est pas joignable": "Bug fix if a sound system cannot be reached", - "21\/10\/2017": "10\/21\/2017", - "Amélioration de la reprise suite à un TTS": "Improvement in recovery from TTS", - "15\/10\/2019": "10\/15\/2019", - "Prise en charge du Sonos port": "Sonos port support", - "Amélioration du script d'installation des dépendances": "Improved dependency installation script", - "07\/10\/2019": "10\/07\/2019", - "Amélioration du script d'installation des dépendances (pourra permettre de corriger dans certain cas les soucis de TTS": "Improvement of the dependency installation script (may allow to correct in some cases the problems of TTS", - "23\/09\/2019": "09\/23\/2019", - "01\/09\/2019": "09\/01\/2019", - "Prise en charge de l'enceinte lampe Ikea SYMFONISK": "Ikea SYMFONISK lamp speaker support", - "12\/08\/2019": "08\/12\/2019", - "Prise en charge de l'enceinte étagere Ikea SYMFONISK": "Support for Ikea SYMFONISK bookshelf speaker", - "23\/04\/2019": "04\/23\/2019", - "Prise en charge des sonos one gen2": "Support for one gen2 sonos", - "17\/01\/2019": "01\/17\/2019", - "Correction de bugs dans le cas où les sonos ont été ajoutés manuellement": "Fixed bugs in case the sound systems were added manually", - "15\/01\/2019": "01\/15\/2019", - "IMPORTANT NE MARCHE QUE AVEC PHP7, VOIR PAGE SANTE DE JEEDOM POUR VOTRE VERSION": "IMPORTANT ONLY WORKS WITH PHP7, SEE JEEDOM HEALTH PAGE FOR YOUR VERSION", - "Réecriture complète du plugin": "Complete rewrite of the plugin", - "Prise en charge de la nouvelle api Sonos": "Support for the new Sonos API", - "Prise en charge des sonos beam et One": "Support for Beam and One sound systems", - "Correction de nombreux bugs": "Correction de nombreux bugs", - "Optimisations globales": "Global optimizations", - "Compatible PHP7 uniquement": "Compatible PHP7 only", - "Certaines fonctionnalités ont dû être retirées": "Some features had to be removed", - "Ajout de la gestion des favoris sonos": "Added management of sonos favorites", - "Prise en charge des Sonos One et Playbase": "Support for Sonos One and Playbase", - "Correction de la langue avec PicoTTS": "Tongue correction with picotts", - "Ajout d'une commande \"Entrée de ligne": "Adding a \"line entry\" command", - "Mise à jour de la librairie de communication avec les Sonos": "Mise à jour de la librairie de communication avec les Sonos", - "Optimisation du chargement des playlists": "Optimized loading of playlists", - "Ajout de picotts pour la génération du TTS en local": "Addition of picotts for local TTS generation", - "Correction du bouton play\/pause lors de la mise à jour du widget": "Correction of the play \/ pause button when updating the widget", - " IMPORTANT.": " Important.", - " IMPORTANT?": " Important?", - "IMPORTANT ": "Important ", - " IMPORTANT]": " Important]", - "[IMPORTANT]": "[Important]", - "*IMPORTANT*": "*Important*", - " IMPORTANT*": " Important*", - " Station.": " .", - " Station?": " ?", - "Station ": " ", - " Station]": " ]", - "[Station]": "[]", - "*Station*": "**", - " Station*": " *", - " Attention.": " Attention.", - " Attention?": " Attention?", - "Attention ": "Attention ", - " Attention]": " Attention]", - "[Attention]": "[Attention]", - "*Attention*": "*Attention*", - " Attention*": " Attention*", - " Optimisation.": " Optimization.", - " Optimisation?": " Optimization?", - "Optimisation ": "Optimization ", - " Optimisation]": " Optimization]", - "[Optimisation]": "[Optimization]", - "*Optimisation*": "*Optimization*", - " Optimisation*": " Optimization*", - " TV.": " TV.", - " TV?": " TV?", - "TV ": "TV ", - " TV]": " TV]", - "[TV]": "[TV]", - "*TV*": "*TV*", - " TV*": " TV*", - " Normal.": " Normal.", - " Normal?": " Normal?", - "Normal ": "Normal ", - " Normal]": " Normal]", - "[Normal]": "[Normal]", - "*Normal*": "*Normal*", - " Normal*": " Normal*", - " Statut.": " Status.", - " Statut?": " Status?", - "Statut ": "Status ", - " Statut]": " Status]", - "[Statut]": "[Status]", - "*Statut*": "*Status*", - " Statut*": " Status*", - " et.": " And.", - " et?": " And?", - "et ": "And ", - " et]": " And]", - "[et]": "[And]", - "*et*": "*And*", - " et*": " And*", - " LINEAR.": " LINEAR.", - " LINEAR?": " LINEAR?", - "LINEAR ": "LINEAR ", - " LINEAR]": " LINEAR]", - "[LINEAR]": "[LINEAR]", - "*LINEAR*": "*LINEAR*", - " LINEAR*": " LINEAR*", - " ALARM.": " ALARM.", - " ALARM?": " ALARM?", - "ALARM ": "ALARM ", - " ALARM]": " ALARM]", - "[ALARM]": "[ALARM]", - "*ALARM*": "*ALARM*", - " ALARM*": " ALARM*", - " AUTOPLAY.": " AUTOPLAY.", - " AUTOPLAY?": " AUTOPLAY?", - "AUTOPLAY ": "AUTOPLAY ", - " AUTOPLAY]": " AUTOPLAY]", - "[AUTOPLAY]": "[AUTOPLAY]", - "*AUTOPLAY*": "*AUTOPLAY*", - " AUTOPLAY*": " AUTOPLAY*", - " Balance.": " Balance.", - " Balance?": " Balance?", - "Balance ": "Balance ", - " Balance]": " Balance]", - "[Balance]": "[Balance]", - "*Balance*": "*Balance*", - " Balance*": " Balance*", - " Graves.": " Graves.", - " Graves?": " Graves?", - "Graves ": "Graves ", - " Graves]": " Graves]", - "[Graves]": "[Graves]", - "*Graves*": "*Graves*", - " Graves*": " Graves*", - " Aigus.": " Highs.", - " Aigus?": " Highs?", - "Aigus ": "Highs ", - " Aigus]": " Highs]", - "[Aigus]": "[Highs]", - "*Aigus*": "*Highs*", - " Aigus*": " Highs*", - " Batterie.": " Battery.", - " Batterie?": " Battery?", - "Batterie ": "Battery ", - " Batterie]": " Battery]", - "[Batterie]": "[Battery]", - "*Batterie*": "*Battery*", - " Batterie*": " Battery*", - " Chargement.": " Loading.", - " Chargement?": " Loading?", - "Chargement ": "Loading ", - " Chargement]": " Loading]", - "[Chargement]": "[Loading]", - "*Chargement*": "*Loading*", - " Chargement*": " Loading*", - " Optimisations.": " Optimizations.", - " Optimisations?": " Optimizations?", - "Optimisations ": "Optimizations ", - " Optimisations]": " Optimizations]", - "[Optimisations]": "[Optimizations]", - "*Optimisations*": "*Optimizations*", - " Optimisations*": " Optimizations*" - }, - "index.md": { - "Plugin Sonos": "Sonos plugin", - "Le plugin Sonos permet de piloter les Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Il va vous permettre de voir l'état du\/des Sonos et d'effectuer des actions (lecture, pause, suivant, précédent, volume, choix d'une playlist…": "The Sonos plugin allows you to control the Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... It will allow you to see the status of the Sonos and to perform actions ( play, pause, next, previous, volume, choice of a playlist…", - "Configuration du plugin": "Plugin configuration", - "La configuration est très simple, après téléchargement du plugin, il vous suffit de l'activer, d'installer les dépendances et de démarrer le démon": "The configuration is very simple, after downloading the plugin, you just need to activate it, install the dependencies and start the daemon", - "Le plugin va rechercher les Sonos sur votre réseau et créer les équipements automatiquement": "The plugin will search for Sonos on your network and create the equipment automatically", - "De plus, s'il y a une correspondance entre les objets Jeedom et les pièces du Sonos, Jeedom affectera automatiquement les Sonos dans les bonnes pièces": "In addition, if there is a match between Jeedom objects and Sonos rooms, Jeedom will automatically assign Sonos to the right rooms", - "Vos équipements Sonos doivent être joignable directement par la machine hébergeant Jeedom (broadcast \/ multicast possible sur le même réseau) et ils doivent être capable de joindre Jeedom en retour sur le port TCP 1400": "Your Sonos equipment must be reachable directly by the machine hosting Jeedom (broadcast \/ multicast possible on the same network) and they must be able to reach Jeedom in return on TCP port 1400", - "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut": "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut", - "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`": "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`", - "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet": "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet", - "Si plus tard vous ajoutez un Sonos, vous pouvez cliquer sur": "If you later add a Sonos, you can click", - "dans la page des équipements ou redémarrer le démon": "in the equipment page or restart the daemon", - "Configurez ici le nom d'hôte de la machine (ou son IP), le nom du partage (sans le chemin, sans '\/') et le chemin vers le dossier": "Configure here the host name of the machine (or its IP), the name of the share (without the path, without '\/') and the path to the folder", - "Nom d'utilisateur du partage": "Share username", - "nom d'utilisateur pour accéder au partage": "username to access share", - "Mot de passe du partage": "Sharing password", - "mot de passe du partage": "Sharing password", - "Configuration des équipements": "Equipment configuration", - "La configuration des équipements Sonos est accessible à partir du menu Plugins puis multimédia": "The configuration of Sonos equipment is accessible from the Plugins menu then multimedia", - "Vous retrouvez ici toute la configuration habituelle de votre équipement": "Here you find all the usual configuration of your equipment", - "Nom du Sonos": "Sonos name", - "nom de votre équipement Sonos": "name of your Sonos equipment", - "Objet parent": "Parent object", - "indique l'objet parent auquel appartient l'équipement": "indicates the parent object to which the equipment belongs", - "permet de rendre votre équipement actif": "makes your equipment active", - "le rend visible sur le dashboard": "makes it visible on the dashboard", - "Modèle": "Model", - "Numéro de série": "Serial number", - "Adresse MAC": "MAC address", - "Adresse IP": "IP adress", - "Ainsi que des informations sur votre Sonos": "As well as information about your Sonos", - "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix": "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix", - "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée": "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée", - "Les commandes": "The orders", - "Les commandes infos seront mises à jour en quasi temps réel (délai de quelques secondes maximum normalement) mais l'image de l'album en cours de lecture peut mettre un peu plus de temps à s'afficher sur le widget lors d'un changement de piste, ceci est parfaitement normal et indépendant du plugin": "The information controls will be updated in near real time (normally a few seconds maximum) but the image of the album currently playing may take a little longer to display on the widget when a change occurs. track, this is perfectly normal and independent of the plugin", - "il doit récupérer l'image depuis une source externe (sur un Sonos ou sur internet) et cela prend parfois plusieurs secondes (en principe maximum une dizaine de secondes": "he must retrieve the image from an external source (on a Sonos or on the internet) and this sometimes takes several seconds (in principle maximum around ten seconds", - "Commandes de volume & contrôle du Sonos": "Sonos volume controls & controls", - "Ces commandes vont toujours contrôler l'équipement correspondant, y compris lorsque celui-ci est dans un groupe": "These commands will always control the corresponding equipment, including when it is in a group", - "de 0 à 100": "from 0 to 100", - "modifier le volume": "change the volume", - "Volume statut": "Status volume", - "niveau du volume (en %": "volume level (in %", - "Augmenter le volume": "Turn up the volume", - "augmente le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "increases volume by 1%; can be useful for integration with other systems or plugins", - "Diminuer le volume": "Decrease the volume", - "diminue le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "decreases volume by 1%; can be useful for integration with other systems or plugins", - "Transition de volume": "Volume transition", - "permet d'effectuer des transitions de niveau de volume directement géré par l'enceinte Sonos, ce n'est pas le plugin qui s'en charge et donc ce n'est pas bloquant mais les délais ne sont pas configurable puisque défini par Sonos": "allows you to perform volume level transitions directly managed by the Sonos speaker, it is not the plugin that takes care of this and therefore it is not blocking but the delays are not configurable since defined by Sonos", - "Le type de transition et le volume cible doivent être choisi lors de l'exécution de la commande": "The transition type and target volume must be chosen when executing the command", - "Il existe 3 modes": "There are 3 modes", - "transition linéaire depuis le volume actuel vers le volume cible (augmentation ou diminution), la vitesse est de 1": "linear transition from current volume to target volume (increase or decrease), speed is 1", - "25 par seconde (une transition": "25 per second (a transition", - "de 50% à 30% prendra 16s": "from 50% to 30% will take 16s", - "initialise le volume à 0, pause d'environ 30 secondes et ensuite augmente jusqu'au volume demandé à une vitesse de 2": "initializes the volume to 0, pauses for about 30 seconds and then increases to the requested volume at a speed of 2", - "5 par seconde (une transition": "5 per second (a transition", - "de 0% à 10% prendra 4s": "from 0% to 10% will take 4s", - "initialise le volume à 0 et augmente rapidement jusqu'au volume demandé à une vitesse de 50 par seconde (un transition": "initializes the volume to 0 and rapidly increases to the requested volume at a rate of 50 per second (a transition", - "de 0% à 50% prendra 1s": "from 0% to 50% will take 1s", - "Active le mode muet": "Activate mute mode", - "Non Muet": "No Mute", - "Désactive le mode muet": "Turn off mute", - "Muet statut": "Mute status", - "indique si on est en mode muet ou non": "indicates whether we are in mute mode or not", - "Balance statut": "Balance status", - "action\/curseur) et": "action\/cursor) and", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite) pour les Sonos compatibles": "which manages the balance according to a value between -100 (far left) and 100 (far right) for compatible Sonos", - "Graves statut": "Serious status", - "qui gère les graves selon une valeur comprise entre -10 et 10": "which manages the bass according to a value between -10 and 10", - "Aigus statut": "Acute status", - "qui gère la aigus selon une valeur comprise entre -10 et 10": "which manages the treble according to a value between -10 and 10", - "Loudness statut": "Loudness status", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "contrôle le loudness": "control loudness", - "pour basculer sur l'entrée": "to switch to the input", - "sur les équipements compatibles": "on compatible equipment", - "Entrée audio analogique": "Analog audio input", - "pour basculer sur l": "to switch to", - "Led on": "The gift", - "Led off": "Led off", - "Active et désactive la led, le voyant d'état": "Activates and deactivates the LED, the status indicator", - "Led statut": "Status LED", - "indique si le voyant d'état est allumé ou non": "indicates whether the status light is on or not", - "Cette info n'est mise à jour qu'une fois par minute dans le cas où elle est modifiée hors Jeedom": "This information is only updated once per minute in case it is modified outside Jeedom", - "Commandes tactiles on": "Touch controls on", - "Commandes tactiles off": "Touch controls off", - "Active et désactive les boutons physiques ou tactiles sur le Sonos": "Enables and disables physical or touch buttons on Sonos", - "Commandes tactiles statut": "Touch controls status", - "indique si les commandes tactiles sont activées ou pas": "indicates whether touch controls are enabled or not", - "Mic statut": "Mic status", - "qui indique si le micro est activé ou non sur les Sonos équipé d'un micro": "which indicates whether the microphone is activated or not on Sonos equipped with a microphone", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "on Sonos equipped with a battery indicating the battery charge percentage", - "sur les Sonos équipés d'une batterie indiquant si la charge est en cours ou non": "on Sonos equipped with a battery indicating whether charging is in progress or not", - "Commandes de lecture": "Playback controls", - "Ces commandes indiqueront et contrôleront la lecture en cours sur l'équipement ou sur le groupe si celui-ci est groupé et cela de façon transparente, vous ne devez pas vous préoccuper de savoir si l'équipement est groupé ou pas pour les utiliser": "These commands will indicate and control the current playback on the equipment or on the group if it is grouped and this in a transparent way, you do not have to worry about knowing if the equipment is grouped or not to use them", - "Arrêté": "Stopped", - "statut de lecteur traduit dans la langue configurée sous Jeedom": "reader status translated into the language configured under Jeedom", - "Par exemple": "For example", - "Statut de lecture": "Reading status", - "PAUSED_PLAYBACK": "PAUSED_PLAYBACK", - "qui donne la valeur \"brut\" du statut de lecture": "which gives the \"raw\" value of the reading status", - "; plus adapté pour les scénarios": "; more suitable for scenarios", - "passer en lecture": "read", - "mettre en pause": "Pause", - "arrêter la lecture": "stop reading", - "Précédent": "Previous", - "piste précédente": "previous track", - "piste suivante": "next track", - "Aléatoire statut": "Random status", - "indique si on est en mode aléatoire ou non": "indicates if we are in random mode or not", - "Aléatoire": "Random", - "inverse le statut du mode aléatoire": "reverse the status of random mode", - "Répéter statut": "Repeat status", - "indique si on est en mode répété ou non": "indicates if we are in repeat mode or not", - "Répéter": "Repeat", - "inverse le statut du mode \"répéter": "reverse the status of the \"repeat\" mode", - "Fondu enchaîné statut": "Crossfade status", - "Fondu enchaîné on": "Crossfade on", - "Fondu enchaîné off": "Fade off", - "Fondu enchaîné": "Crossfade", - "pour contrôler et activer ou non le": "to control and activate or not the", - "Choisir mode de lecture": "Choose reading mode", - "permet de choisir parmi les possibilités suivantes": "allows you to choose from the following possibilities", - "répétition off, aléatoire off": "repeat off, random off", - "Répéter tout": "Repeat all", - "aléatoire off": "random off", - "Aléatoire et répéter tout": "Random and repeat all", - "Aléatoire sans répétition": "Random without repetition", - "Répéter le morceau": "Repeat song", - "Aléatoire et répéter le morceau": "Random and repeat song", - "Je recommande d'utiliser cette commande-ci dans un scénario au lieu de": "I recommend using this command in a scenario instead of", - "&": "&", - "afin d'arriver dans la configuration désirée même si toutes agissent sur les mêmes paramètres": "in order to arrive at the desired configuration even if all act on the same parameters", - "Cette commande est par contre le seul moyen de passer en mode": "This command is, however, the only way to switch to mode", - "Mode de lecture": "Reading mode", - "donnant l'état actuel qui sera une des valeurs citées ci-dessus": "giving the current state which will be one of the values cited above", - "Jouer playlist": "Play Playlist", - "commande de type message permettant de lancer une playlist, il suffit dans le titre de mettre le nom de la playlist": "message type command to launch a playlist, just put the name of the playlist in the title", - "Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper": "In a scenario, a list of possibilities will automatically be displayed when you start typing", - "Jouer favoris": "Play Favorites", - "commande de type message permettant de lancer un favoris, il suffit dans le titre de mettre le nom du favori": "message type command to launch a favorite, all you have to do in the title is to put the name of the favorite", - "Jouer une radio": "Play a radio", - "celle ci doit être dans les radios favorites": "this must be in the favorite radios", - "commande de type message permettant de lancer une radio, il suffit dans le titre de mettre le nom de la radio": "message type command to launch a radio station, all you have to do is put the name of the radio in the title", - "Ne fonctionne plus sur les modèles \"S2\", il est normal d'avoir une liste vide sur tous les modèles utilisant l'app Sonos S2": "No longer works on \"S2\" models, it is normal to have an empty list on all models using the Sonos S2 app", - "Jouer une radio mp3": "Play mp3 radio", - "permet de lire une radio mp3 via une URL (par exemple depuis internet": "allows you to play an mp3 radio via a URL (for example from the internet", - "Vous devez mettre un titre dans la zone": "You must put a title in the box", - "et l'url (format http(s": "and the url (http(s format)", - "\/\/...mp3) dans la zone": "\/\/...mp3) in the area", - "lien vers l'image de l'album": "link to the album image", - "nom de l'album en cours de lecture": "name of album currently playing", - "nom de l'artiste en cours de lecture": "artist name currently playing", - "nom de la piste en cours de lecture": "name of the track currently playing", - "permet de lire un texte sur le Sonos (voir partie TTS": "allows to read a text on Sonos (see TTS part", - "Dans le titre vous pouvez mettre le volume et dans le message, le message à lire": "In the title you can set the volume and in the message, the message to read", - "Les playlists et les favoris doivent être créés via l'app Sonos (sur mobile ou sur ordi) ensuite il faut faire une synchronisation pour mettre à jour les équipements et pouvoir les utiliser dans un scénario": "Playlists and favorites must be created via the Sonos app (on mobile or computer) then synchronization must be done to update the equipment and be able to use it in a scenario", - "Commandes pour gérer les groupes": "Commands for managing groups", - "Ces commandes agissent toujours sur l'équipement correspondant": "These commands always act on the corresponding equipment", - "Groupe statut": "Group status", - "indique si l'équipement est groupé ou non": "indicates whether the equipment is grouped or not", - "Nom du groupe": "Name of the group", - "dans le cas où l'équipement est groupé, donne le nom du groupe": "if the equipment is grouped, give the name of the group", - "Rejoindre un groupe": "Join a group", - "permet de rejoindre le groupe du haut-parleur (un Sonos) donné (pour associer 2 Sonos par exemple": "allows you to join the group of the given speaker (a Sonos) (to associate 2 Sonos for example", - "Il faut mettre le nom de la pièce du sonos à rejoindre": "You must enter the name of the sound system room to join", - "Cela peut-être n'importe quel membre d'un groupe existant, cela ne doit pas nécessairement être le coordinateur du groupe, ou un Sonos isolé": "This can be any member of an existing group, it doesn't have to be the group coordinator, or an isolated Sonos", - "Quitter le groupe": "Leave the group", - "permet de quitter le groupe": "allows you to leave the group", - "Mode fête": "Party mode", - "permet de grouper tous les Sonos ensemble": "allows you to group all Sonos together", - "Le TTS (text-to-speech) vers le Sonos nécessite d'avoir un partage SAMBA sur le réseau (imposé par Sonos, pas moyen de faire autrement": "TTS (text-to-speech) to Sonos requires SAMBA sharing on the network (imposed by Sonos, no way to do otherwise", - "Il faut vous donc un NAS ou équivalent sur le réseau": "You therefore need a NAS or equivalent on the network", - "La configuration est assez simple il faut mettre le nom ou l'ip du NAS (attention à bien mettre la même chose que ce qui est déclaré sur Sonos) et le chemin vers le dossier qui doit contenir les fichiers audio ainsi que le nom d'utilisateur et le mot de passe (attention l'utilisateur doit avoir les droits en écriture": "The configuration is quite simple, you must enter the name or IP of the NAS (be careful to put the same thing as what is declared on Sonos) and the path to the folder which must contain the audio files as well as the name of user and password (note that the user must have write rights", - "La création du fichier audio est géré par le core de Jeedom": "The creation of the audio file is managed by the Jeedom core", - "la langue sera celle configurée dans Jeedom et le moteur TTS utilisé peut également être sélectionné dans la configuration Jeedom": "the language will be the one configured in Jeedom and the TTS engine used can also be selected in the Jeedom configuration", - "Lors de l'utilisation du TTS (commande": "When using TTS (command", - "le plugin va effectuer les actions suivantes": "the plugin will perform the following actions", - "génération du fichier audio contenant le message avec le support du core de Jeedom": "generation of the audio file containing the message with Jeedom core support", - "écriture du fichier sur le partage SAMBA": "writing the file to the SAMBA share", - "forcer la lecture en mode \"Normal\", sans répétition": "force playback in “Normal” mode, without repetition", - "forcer le mode \"non muet\" (uniquement sur l'équipement, pas sur tout le groupe": "force “unmute” mode (only on the equipment, not on the entire group", - "Modification du volume sur la valeur choisie lors de l'utilisation de la commande (uniquement sur l'équipement, pas sur tout le groupe": "Changing the volume to the chosen value when using the command (only on the equipment, not on the entire group", - "lecture du message": "reading message", - "restauration de l'état du Sonos avant la lecture (donc le mode de lecture, muet ou pas, répétition ou pas...) et redémarrage du flux si le Sonos était en cours de lecture": "restoring the state of the Sonos before playback (i.e. the playback mode, mute or not, repeat or not, etc.) and restarting the stream if the Sonos was playing", - "Il faut absolument mettre un mot de passe pour que cette procédure fonctionne": "It is absolutely necessary to put a password for this procedure to work", - "Il faut aussi absolument un sous-répertoire pour que le fichier vocal soit correctement créé": "A subdirectory is also absolutely necessary for the voice file to be correctly created", - "Il ne faut surtout pas d'accent dans le nom du partage ou le dossier, d'espace ou de caractères spéciaux": "Above all, there must be no accent in the name of the share or folder, spaces or special characters", - "Les messages trop longs ne peuvent être transmis en TTS (la limite dépend du fournisseur de TTS, en général environ 100 caractères": "Messages that are too long cannot be transmitted in TTS (the limit depends on the TTS provider, generally around 100 characters", - "Exemple de configuration": "Configuration example", - "Côté NAS, la config suivante doit être effectuée": "On the NAS side, the following configuration must be carried out", - "le dossier": "the folder", - "est partagé et il contient un dossier": "is shared and it contains a folder", - "a un accès lecture\/écriture (nécessaire pour Jeedom": "has read\/write access (necessary for Jeedom", - "a un accès en lecture seule (nécessaire pour les Sonos": "has read-only access (necessary for Sonos", - "Côté Plugin Sonos, la config": "On the Sonos Plugin side, the config", - "Champ 1": "Field 1", - "192.168.xxx.yyy": "192.168.xxx.yyy", - "Champ 2": "Field 2", - "Champ 3": "Field 3", - "Nom d'utilisateur": "Username", - "dans l'exemple) et son mot de passe…​": "in the example) and its password…​", - "Côté Bibliothèque Sonos (appli PC": "Sonos Library side (PC app", - "le chemin est": "the way is", - "\/\/192.168.xxx.yyy\/Jeedom\/TTS": "\/\/192.168.xxx.yyy\/Jeedom\/TTS", - "l'utilisateur sera": "the user will be", - "dans cet exemple) + mot de passe": "in this example) + password", - "Le panel": "The panel", - "Le plugin Sonos met aussi à disposition un panel qui rassemble tous vos Sonos": "The Sonos plugin also provides a panel that brings together all of your Sonos", - "Disponible à partir du menu Accueil → Sonos Controller": "Available from the Home menu → Sonos Controller", - "Pour avoir le panel il faut l'avoir activé dans la configuration du plugin": "To have the panel you must have activated it in the plugin configuration", - " Important.": " Important.", - " Important?": " Important?", - "Important ": "Important ", - " Important]": " Important]", - "[Important]": "[Important]", - "*Important*": "*Important*", - " Important*": " Important*", - " Synchroniser.": " Synchronize.", - " Synchroniser?": " Synchronize?", - "Synchroniser ": "Synchronize ", - " Synchroniser]": " Synchronize]", - "[Synchroniser]": "[Synchronize]", - "*Synchroniser*": "*Synchronize*", - " Synchroniser*": " Synchronize*", - " Partage.": " Sharing.", - " Partage?": " Sharing?", - "Partage ": "Sharing ", - " Partage]": " Sharing]", - "[Partage]": "[Sharing]", - "*Partage*": "*Sharing*", - " Partage*": " Sharing*", - " Activer.": " Activate.", - " Activer?": " Activate?", - "Activer ": "Activate ", - " Activer]": " Activate]", - "[Activer]": "[Activate]", - "*Activer*": "*Activate*", - " Activer*": " Activate*", - " Visible.": " Visible.", - " Visible?": " Visible?", - "Visible ": "Visible ", - " Visible]": " Visible]", - "[Visible]": "[Visible]", - "*Visible*": "*Visible*", - " Visible*": " Visible*", - " Versions.": " Releases.", - " Versions?": " Releases?", - "Versions ": "Releases ", - " Versions]": " Releases]", - "[Versions]": "[Releases]", - "*Versions*": "*Releases*", - " Versions*": " Releases*", - " Identifiant.": " Identifier.", - " Identifiant?": " Identifier?", - "Identifiant ": "Identifier ", - " Identifiant]": " Identifier]", - "[Identifiant]": "[Identifier]", - "*Identifiant*": "*Identifier*", - " Identifiant*": " Identifier*", - " et.": " And.", - " et?": " And?", - "et ": "And ", - " et]": " And]", - "[et]": "[And]", - "*et*": "*And*", - " et*": " And*", - " Volume.": " Volume.", - " Volume?": " Volume?", - "Volume ": "Volume ", - " Volume]": " Volume]", - "[Volume]": "[Volume]", - "*Volume*": "*Volume*", - " Volume*": " Volume*", - " LINEAR.": " LINEAR.", - " LINEAR?": " LINEAR?", - "LINEAR ": "LINEAR ", - " LINEAR]": " LINEAR]", - "[LINEAR]": "[LINEAR]", - "*LINEAR*": "*LINEAR*", - " LINEAR*": " LINEAR*", - " ALARM.": " ALARM.", - " ALARM?": " ALARM?", - "ALARM ": "ALARM ", - " ALARM]": " ALARM]", - "[ALARM]": "[ALARM]", - "*ALARM*": "*ALARM*", - " ALARM*": " ALARM*", - " AUTOPLAY.": " AUTOPLAY.", - " AUTOPLAY?": " AUTOPLAY?", - "AUTOPLAY ": "AUTOPLAY ", - " AUTOPLAY]": " AUTOPLAY]", - "[AUTOPLAY]": "[AUTOPLAY]", - "*AUTOPLAY*": "*AUTOPLAY*", - " AUTOPLAY*": " AUTOPLAY*", - " Muet.": " Mute.", - " Muet?": " Mute?", - "Muet ": "Mute ", - " Muet]": " Mute]", - "[Muet]": "[Mute]", - "*Muet*": "*Mute*", - " Muet*": " Mute*", - " Balance.": " Balance.", - " Balance?": " Balance?", - "Balance ": "Balance ", - " Balance]": " Balance]", - "[Balance]": "[Balance]", - "*Balance*": "*Balance*", - " Balance*": " Balance*", - " Graves.": " Graves.", - " Graves?": " Graves?", - "Graves ": "Graves ", - " Graves]": " Graves]", - "[Graves]": "[Graves]", - "*Graves*": "*Graves*", - " Graves*": " Graves*", - " Aigus.": " Highs.", - " Aigus?": " Highs?", - "Aigus ": "Highs ", - " Aigus]": " Highs]", - "[Aigus]": "[Highs]", - "*Aigus*": "*Highs*", - " Aigus*": " Highs*", - " TV.": " TV.", - " TV?": " TV?", - "TV ": "TV ", - " TV]": " TV]", - "[TV]": "[TV]", - "*TV*": "*TV*", - " TV*": " TV*", - " Line-in.": " Line-in.", - " Line-in?": " Line-in?", - "Line-in ": "Line-in ", - " Line-in]": " Line-in]", - "[Line-in]": "[Line-in]", - "*Line-in*": "*Line-in*", - " Line-in*": " Line-in*", - " Batterie.": " Battery.", - " Batterie?": " Battery?", - "Batterie ": "Battery ", - " Batterie]": " Battery]", - "[Batterie]": "[Battery]", - "*Batterie*": "*Battery*", - " Batterie*": " Battery*", - " Chargement.": " Loading.", - " Chargement?": " Loading?", - "Chargement ": "Loading ", - " Chargement]": " Loading]", - "[Chargement]": "[Loading]", - "*Chargement*": "*Loading*", - " Chargement*": " Loading*", - " Statut.": " Status.", - " Statut?": " Status?", - "Statut ": "Status ", - " Statut]": " Status]", - "[Statut]": "[Status]", - "*Statut*": "*Status*", - " Statut*": " Status*", - " Lecture.": " Play.", - " Lecture?": " Play?", - "Lecture ": "Play ", - " Lecture]": " Play]", - "[Lecture]": "[Play]", - "*Lecture*": "*Play*", - " Lecture*": " Play*", - " Pause.": " Pause.", - " Pause?": " Pause?", - "Pause ": "Pause ", - " Pause]": " Pause]", - "[Pause]": "[Pause]", - "*Pause*": "*Pause*", - " Pause*": " Pause*", - " PLAYING.": " PLAYING.", - " PLAYING?": " PLAYING?", - "PLAYING ": "PLAYING ", - " PLAYING]": " PLAYING]", - "[PLAYING]": "[PLAYING]", - "*PLAYING*": "*PLAYING*", - " PLAYING*": " PLAYING*", - " STOPPED.": " STOPPED.", - " STOPPED?": " STOPPED?", - "STOPPED ": "STOPPED ", - " STOPPED]": " STOPPED]", - "[STOPPED]": "[STOPPED]", - "*STOPPED*": "*STOPPED*", - " STOPPED*": " STOPPED*", - " Stop.": " STOP.", - " Stop?": " STOP?", - "Stop ": "STOP ", - " Stop]": " STOP]", - "[Stop]": "[STOP]", - "*Stop*": "*STOP*", - " Stop*": " STOP*", - " Suivant.": " Next.", - " Suivant?": " Next?", - "Suivant ": "Next ", - " Suivant]": " Next]", - "[Suivant]": "[Next]", - "*Suivant*": "*Next*", - " Suivant*": " Next*", - " Normal.": " Normal.", - " Normal?": " Normal?", - "Normal ": "Normal ", - " Normal]": " Normal]", - "[Normal]": "[Normal]", - "*Normal*": "*Normal*", - " Normal*": " Normal*", - " ou.": " Or.", - " ou?": " Or?", - "ou ": "Or ", - " ou]": " Or]", - "[ou]": "[Or]", - "*ou*": "*Or*", - " ou*": " Or*", - " ATTENTION.": " Be careful.", - " ATTENTION?": " Be careful?", - "ATTENTION ": "Be careful ", - " ATTENTION]": " Be careful]", - "[ATTENTION]": "[Be careful]", - "*ATTENTION*": "*Be careful*", - " ATTENTION*": " Be careful*", - " Titre.": " Title.", - " Titre?": " Title?", - "Titre ": "Title ", - " Titre]": " Title]", - "[Titre]": "[Title]", - "*Titre*": "*Title*", - " Titre*": " Title*", - " Message.": " Message.", - " Message?": " Message?", - "Message ": "Message ", - " Message]": " Message]", - "[Message]": "[Message]", - "*Message*": "*Message*", - " Message*": " Message*", - " Image.": " Picture.", - " Image?": " Picture?", - "Image ": "Picture ", - " Image]": " Picture]", - "[Image]": "[Picture]", - "*Image*": "*Picture*", - " Image*": " Picture*", - " Album.": " Album.", - " Album?": " Album?", - "Album ": "Album ", - " Album]": " Album]", - "[Album]": "[Album]", - "*Album*": "*Album*", - " Album*": " Album*", - " Artiste.": " Artist.", - " Artiste?": " Artist?", - "Artiste ": "Artist ", - " Artiste]": " Artist]", - "[Artiste]": "[Artist]", - "*Artiste*": "*Artist*", - " Artiste*": " Artist*", - " Piste.": " Track.", - " Piste?": " Track?", - "Piste ": "Track ", - " Piste]": " Track]", - "[Piste]": "[Track]", - "*Piste*": "*Track*", - " Piste*": " Track*", - " Dire.": " Say.", - " Dire?": " Say?", - "Dire ": "Say ", - " Dire]": " Say]", - "[Dire]": "[Say]", - "*Dire*": "*Say*", - " Dire*": " Say*", - " Hint.": " Hint.", - " Hint?": " Hint?", - "Hint ": "Hint ", - " Hint]": " Hint]", - "[Hint]": "[Hint]", - "*Hint*": "*Hint*", - " Hint*": " Hint*", - " TTS.": " TTS.", - " TTS?": " TTS?", - "TTS ": "TTS ", - " TTS]": " TTS]", - "[TTS]": "[TTS]", - "*TTS*": "*TTS*", - " TTS*": " TTS*", - " IMPORTANT.": " Important.", - " IMPORTANT?": " Important?", - "IMPORTANT ": "Important ", - " IMPORTANT]": " Important]", - "[IMPORTANT]": "[Important]", - "*IMPORTANT*": "*Important*", - " IMPORTANT*": " Important*", - " Jeedom.": " Jeedom.", - " Jeedom?": " Jeedom?", - "Jeedom ": "Jeedom ", - " Jeedom]": " Jeedom]", - "[Jeedom]": "[Jeedom]", - "*Jeedom*": "*Jeedom*", - " Jeedom*": " Jeedom*", - " jeedom.": " Jeedom.", - " jeedom?": " Jeedom?", - "jeedom ": "Jeedom ", - " jeedom]": " Jeedom]", - "[jeedom]": "[Jeedom]", - "*jeedom*": "*Jeedom*", - " jeedom*": " Jeedom*", - " l'utilisateur.": " the user.", - " l'utilisateur?": " the user?", - "l'utilisateur ": "the user ", - " l'utilisateur]": " the user]", - "[l'utilisateur]": "[the user]", - "*l'utilisateur*": "*the user*", - " l'utilisateur*": " the user*", - " sonos.": " his bone.", - " sonos?": " his bone?", - "sonos ": "his bone ", - " sonos]": " his bone]", - "[sonos]": "[his bone]", - "*sonos*": "*his bone*", - " sonos*": " his bone*" - } -} \ No newline at end of file diff --git a/docs/i18n/es_ES.json b/docs/i18n/es_ES.json deleted file mode 100644 index 930821e..0000000 --- a/docs/i18n/es_ES.json +++ /dev/null @@ -1,813 +0,0 @@ -{ - "changelog.md": { - "Changelog Sonos controller": "Changelog Sonos controller", - "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto", - "11-04-2026": "", - "Ajout d'une commande info": "Agregar un comando de información", - "qui indique la station radio en cours de lecture (si l'info est disponible": "", - "27-01-2026": "27-01-2026", - "Ikea Table Lamp": "Ikea Table Lamp", - "Ajout de l'image pour": "Ajout de l'image pour", - "19-01-2026": "19-01-2026", - "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", - "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", - "Corrections des images": "Correcciones de imagen", - "26-04-2025": "26-04-2025", - "Refonte importante du plugin": "Rediseño significativo del complemento", - "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;", - "Nécessite Jeedom 4.4.8": "Requiere Jeedom 4.4.8", - "Compatible Debian 11 et 12": "Compatible con Debian 11 y 12", - "ce sujet sur community": "este tema en la comunidad", - "Voir également": "Ver también", - "pour plus de détails": "para más detalles", - "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP": "Reescritura casi total del complemento, el demonio ha sido reescrito completamente en Python (en lugar de PHP)", - "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon", - "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements": "También es posible solicitar (re)sincronizar equipos, favoritos y listas de reproducción sin reiniciar el demonio desde el panel del equipo", - "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles", - "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple", - "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation": "Rediseño de la gestión de grupos (se eliminarán los comandos antiguos y se agregarán otros nuevos, consulte la documentación)", - "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur": "Es posible unirse o salir de un grupo, controlar la reproducción del grupo desde cualquier dispositivo del grupo sin preocuparse de quién es el controlador", - "Le volume est, lui, toujours contrôlé par enceinte": "Le volume est, lui, toujours contrôlé par enceinte", - "il sera nécessaire d'adapter la configuration du partage SAMBA": "il sera nécessaire d'adapter la configuration du partage SAMBA", - "Adaptation sur la fonction Text-to-Speech (TTS": "Adaptation sur la fonction Text-to-Speech (TTS", - "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant", - "Optimisation de l'affichage de la pochette de la lecture en cours": "Se optimizó la visualización de la portada que se está reproduciendo actualmente", - "Optimisation sur la lecture des favoris": "Optimización en la lectura de favoritos", - "Ajout de la possibilité de désactiver la tuile pré-configurée": "Ajout de la possibilité de désactiver la tuile pré-configurée", - "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix", - "Ajout d'une commande action": "Agregar un comando de acción", - "pour basculer sur l'entrée": "para cambiar a la entrada", - "sur les équipements compatibles": "en equipos compatibles", - "Mode de lecture": "Modo de lectura", - "Choisir mode de lecture": "Elige el modo de lectura", - "Répéter tout": "Repite todo", - "Aléatoire et répéter tout": "Aleatorio y repetir todo", - "Aléatoire sans répétition": "Aleatorio sin repetición", - "Répéter le morceau": "Repetir canción", - "Aléatoire et répéter le morceau": "Canción aleatoria y repetida", - "et action": "y acción", - "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "que le permite seleccionar el modo de lectura entre las siguientes posibilidades", - "Statut de lecture": "Estado de lectura", - "Ajout d'une commande": "Agregar un pedido", - "qui donne la valeur \"brut\" de l'état de lecture (la commande existante": "que da el valor \"bruto\" del estado de lectura (el comando existente", - "donne une valeur traduite en fonction de la langue configurée dans Jeedom": "da un valor traducido basado en el idioma configurado en Jeedom", - "Groupe statut": "Estado del grupo", - "Nom du groupe": "Nombre del grupo", - "Ajout des commandes": "Agregar comandos", - "indique si l'équipement est groupé ou non) et": "indica si el equipo está agrupado o no) y", - "dans le cas où l'équipement est groupé": "en el caso de que el equipo esté agrupado", - "Led on": "El don", - "Led off": "Llevar afuera", - "Led statut": "LED de estado", - "pour contrôler le voyant d'état": "para comprobar el indicador de estado", - "Jouer une radio mp3": "Reproducir radio mp3", - "pour lire une radio mp3 directement via une URL (accessible sur internet par exemple": "reproducir una radio mp3 directamente a través de una URL (accesible en Internet, por ejemplo)", - "Augmenter le volume": "Sube el volumen", - "Diminuer le volume": "Disminuir el volumen", - "de 1%": "de 1%", - "Transition de volume": "Transición de volumen", - "qui est très intéressante pour gérer les transitions de niveau de volume": "lo cual es muy útil para gestionar las transiciones de niveles de volumen", - "3 modes possible": "3 modos posibles", - "Voir documentation pour plus d'information": "Ver documentación para más información", - "Loudness statut": "Estado de sonoridad", - "Loudness on": "Volumen encendido", - "Loudness off": "Volumen apagado", - "Fondu enchaîné statut": "Estado de desvanecimiento", - "Fondu enchaîné on": "Desvanecerse", - "Fondu enchaîné off": "Desaparecer", - "Commandes tactiles statut": "Controles táctiles de estado", - "Commandes tactiles on": "Controles táctiles activados", - "Commandes tactiles off": "Controles táctiles desactivados", - "Balance statut": "Estado del saldo", - "action\/curseur) et": "acción\/cursor) y", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite": "que gestiona el saldo según un valor entre -100 (extremo izquierdo) y 100 (extremo derecho)", - "Graves statut": "Estado serio", - "qui gère les graves selon une valeur comprise entre -10 et 10": "que gestiona los graves según un valor entre -10 y 10", - "Aigus statut": "Estado de agudos", - "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "qui gèrent les aigus selon une valeur comprise entre -10 et 10", - "Mode fête": "Moda de fiesta", - "Ajout de la commande": "Agregando el comando", - "qui permet de grouper tous les Sonos ensemble": "que te permite agrupar todos los Sonos juntos", - "Mic statut": "Estado del micrófono", - "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "en Sonos equipado con una batería que muestra el porcentaje de carga de la batería", - "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non", - "Prochaine alarme": "Próxima alarma", - "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "en cada Sonos indicando la fecha de la próxima alarma programada en este altavoz", - "25\/04\/2024": "25\/04\/2024", - "Mise à jour de la documentation": "Actualización de documentación", - "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "Nettoyage des accents dans les noms de partage (non supportés par le plugin", - "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom", - "Ajout Sonos Beam Gen 2": "Se agregó Sonos Beam Gen 2", - "15\/01\/2024": "15\/01\/2024", - "Préparation pour Jeedom 4.4": "Preparándose para Jeedom 4.4", - "Ajout Sonos Move 2": "Se agregó Sonos Move 2", - "24\/08\/2023": "24\/08\/2023", - "Ajout Ikea Symfonisk Floor Lamp": "Lámpara de pie Symfonisk de Ikea añadida", - "25\/05\/2023": "25\/05\/2023", - "Ajout Sonos Era": "Se agregó la era de Sonos", - "18\/10\/2022": "18\/10\/2022", - "Mise à jour liste des commandes pour Jeedom v4.3": "Lista de comandos de actualización para Jeedom v4.3", - "Ajout de la Sonos Ray": "Añadido Sonos Ray", - "22\/03\/2022": "22\/03\/2022", - "Support de la nouvelle enceinte SYMFONISK": "Soporte para el nuevo altavoz SYMFONISK", - "01\/02\/2022": "02\/01\/2022", - "Correction d'un bug sur le TTS": "Se corrigió un error en el TTS", - "27\/01\/2022": "27\/01\/2022", - "Optimisations V4.2": "Optimizaciones V4.2", - "14\/01\/2022": "14\/01\/2022", - "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK", - "27\/12\/2021": "27\/12\/2021", - "Ajout de la compatibilité avec la nouvelle Sonos One": "Ajout de la compatibilité avec la nouvelle Sonos One", - "09\/10\/2021": "10\/09\/2021", - "Ajout de la Sonos Five": "Adición de Sonos Five", - "Ajout Sonos Roam": "Agregar Sonos Roam", - "Ajout Symfonisk Cadre": "Añadiendo Symfonisk Framework", - "Mise à jour immediate du volume en cas de changement par Jeedom, merci @Domochip": "Actualización de volumen inmediata en caso de cambio por parte de Jeedom, gracias @Domochip", - "24\/11\/2020": "24\/11\/2020", - "Nouvelle présentation de la liste des objets": "Nueva presentación de la lista de objetos", - "Ajout du tag \"Compatibilité V4": "Adición de la etiqueta \"compatibilidad V4", - "07\/08\/2020": "07\/08\/2020", - "Prise en charge du Sonos ARC": "Compatibilidad con Sonos ARC", - "24\/01\/2020": "24\/01\/2020", - "Prise en charge du Sonos One S22": "Soporte para Sonos One S22", - "11\/01\/2020": "01\/11\/2020", - "Prise en charge du Sonos Move": "Soporte para Sonos Move", - "Optimisation du code en cas de Sonos non connecté": "Optimización de código en caso de que Sonos no esté conectado", - "16\/12\/2019": "16\/12\/2019", - "Correction de bug si un sonos n'est pas joignable": "Corrección de errores si no se puede alcanzar un sistema de sonido", - "21\/10\/2017": "21\/10\/2017", - "Amélioration de la reprise suite à un TTS": "Mejora en la recuperación de TTS", - "15\/10\/2019": "15\/10\/2019", - "Prise en charge du Sonos port": "Soporte de puerto de Sonos", - "Amélioration du script d'installation des dépendances": "Script de instalación de dependencia mejorado", - "07\/10\/2019": "10\/07\/2019", - "Amélioration du script d'installation des dépendances (pourra permettre de corriger dans certain cas les soucis de TTS": "Mejora del script de instalación de dependencias (puede permitir corregir en algunos casos los problemas de TTS", - "23\/09\/2019": "09\/23\/2019", - "01\/09\/2019": "01\/09\/2019", - "Prise en charge de l'enceinte lampe Ikea SYMFONISK": "Soporte de altavoz de lámpara Ikea SYMFONISK", - "12\/08\/2019": "08\/12\/2019", - "Prise en charge de l'enceinte étagere Ikea SYMFONISK": "Soporte para altavoz de estantería Ikea SYMFONISK", - "23\/04\/2019": "23\/04\/2019", - "Prise en charge des sonos one gen2": "Soporte para un sonos gen2", - "17\/01\/2019": "17\/01\/2019", - "Correction de bugs dans le cas où les sonos ont été ajoutés manuellement": "Se corrigieron errores en caso de que los sistemas de sonido se agregaran manualmente", - "15\/01\/2019": "01\/15\/2019", - "IMPORTANT NE MARCHE QUE AVEC PHP7, VOIR PAGE SANTE DE JEEDOM POUR VOTRE VERSION": "IMPORTANTE SOLO FUNCIONA CON PHP7, VEA LA PÁGINA DE SALUD DE JEEDOM PARA SU VERSIÓN", - "Réecriture complète du plugin": "Completa reescritura del complemento", - "Prise en charge de la nouvelle api Sonos": "Soporte para la nueva API de Sonos", - "Prise en charge des sonos beam et One": "Soporte para sistemas de sonido Beam y One", - "Correction de nombreux bugs": "Correction de nombreux bugs", - "Optimisations globales": "Optimizaciones globales", - "Compatible PHP7 uniquement": "Solo PHP7 compatible", - "Certaines fonctionnalités ont dû être retirées": "Algunas características tuvieron que ser eliminadas", - "Ajout de la gestion des favoris sonos": "Administración agregada de favoritos de sonos", - "Prise en charge des Sonos One et Playbase": "Soporte para Sonos One y Playbase", - "Correction de la langue avec PicoTTS": "Corrección de lengua con picotts", - "Ajout d'une commande \"Entrée de ligne": "Agregar un comando de \"entrada de línea\"", - "Mise à jour de la librairie de communication avec les Sonos": "Mise à jour de la librairie de communication avec les Sonos", - "Optimisation du chargement des playlists": "Carga optimizada de listas de reproducción", - "Ajout de picotts pour la génération du TTS en local": "Adición de picotts para la generación local de TTS", - "Correction du bouton play\/pause lors de la mise à jour du widget": "Corrección del botón de reproducción \/ pausa al actualizar el widget", - " IMPORTANT.": " Importante.", - " IMPORTANT?": " Importante?", - "IMPORTANT ": "Importante ", - " IMPORTANT]": " Importante]", - "[IMPORTANT]": "[Importante]", - "*IMPORTANT*": "*Importante*", - " IMPORTANT*": " Importante*", - " Station.": " .", - " Station?": " ?", - "Station ": " ", - " Station]": " ]", - "[Station]": "[]", - "*Station*": "**", - " Station*": " *", - " Attention.": " Atención.", - " Attention?": " Atención?", - "Attention ": "Atención ", - " Attention]": " Atención]", - "[Attention]": "[Atención]", - "*Attention*": "*Atención*", - " Attention*": " Atención*", - " Optimisation.": " Mejoramiento.", - " Optimisation?": " Mejoramiento?", - "Optimisation ": "Mejoramiento ", - " Optimisation]": " Mejoramiento]", - "[Optimisation]": "[Mejoramiento]", - "*Optimisation*": "*Mejoramiento*", - " Optimisation*": " Mejoramiento*", - " TV.": " TELEVISOR.", - " TV?": " TELEVISOR?", - "TV ": "TELEVISOR ", - " TV]": " TELEVISOR]", - "[TV]": "[TELEVISOR]", - "*TV*": "*TELEVISOR*", - " TV*": " TELEVISOR*", - " Normal.": " Normal.", - " Normal?": " Normal?", - "Normal ": "Normal ", - " Normal]": " Normal]", - "[Normal]": "[Normal]", - "*Normal*": "*Normal*", - " Normal*": " Normal*", - " Statut.": " Estado.", - " Statut?": " Estado?", - "Statut ": "Estado ", - " Statut]": " Estado]", - "[Statut]": "[Estado]", - "*Statut*": "*Estado*", - " Statut*": " Estado*", - " et.": " Y.", - " et?": " Y?", - "et ": "Y ", - " et]": " Y]", - "[et]": "[Y]", - "*et*": "*Y*", - " et*": " Y*", - " LINEAR.": " LINEAL.", - " LINEAR?": " LINEAL?", - "LINEAR ": "LINEAL ", - " LINEAR]": " LINEAL]", - "[LINEAR]": "[LINEAL]", - "*LINEAR*": "*LINEAL*", - " LINEAR*": " LINEAL*", - " ALARM.": " ALARMA.", - " ALARM?": " ALARMA?", - "ALARM ": "ALARMA ", - " ALARM]": " ALARMA]", - "[ALARM]": "[ALARMA]", - "*ALARM*": "*ALARMA*", - " ALARM*": " ALARMA*", - " AUTOPLAY.": " AUTO-REPRODUCCIÓN.", - " AUTOPLAY?": " AUTO-REPRODUCCIÓN?", - "AUTOPLAY ": "AUTO-REPRODUCCIÓN ", - " AUTOPLAY]": " AUTO-REPRODUCCIÓN]", - "[AUTOPLAY]": "[AUTO-REPRODUCCIÓN]", - "*AUTOPLAY*": "*AUTO-REPRODUCCIÓN*", - " AUTOPLAY*": " AUTO-REPRODUCCIÓN*", - " Balance.": " Balance.", - " Balance?": " Balance?", - "Balance ": "Balance ", - " Balance]": " Balance]", - "[Balance]": "[Balance]", - "*Balance*": "*Balance*", - " Balance*": " Balance*", - " Graves.": " Tumbas.", - " Graves?": " Tumbas?", - "Graves ": "Tumbas ", - " Graves]": " Tumbas]", - "[Graves]": "[Tumbas]", - "*Graves*": "*Tumbas*", - " Graves*": " Tumbas*", - " Aigus.": " Triplicar.", - " Aigus?": " Triplicar?", - "Aigus ": "Triplicar ", - " Aigus]": " Triplicar]", - "[Aigus]": "[Triplicar]", - "*Aigus*": "*Triplicar*", - " Aigus*": " Triplicar*", - " Batterie.": " Batería.", - " Batterie?": " Batería?", - "Batterie ": "Batería ", - " Batterie]": " Batería]", - "[Batterie]": "[Batería]", - "*Batterie*": "*Batería*", - " Batterie*": " Batería*", - " Chargement.": " Cargando.", - " Chargement?": " Cargando?", - "Chargement ": "Cargando ", - " Chargement]": " Cargando]", - "[Chargement]": "[Cargando]", - "*Chargement*": "*Cargando*", - " Chargement*": " Cargando*", - " Optimisations.": " Optimizaciones.", - " Optimisations?": " Optimizaciones?", - "Optimisations ": "Optimizaciones ", - " Optimisations]": " Optimizaciones]", - "[Optimisations]": "[Optimizaciones]", - "*Optimisations*": "*Optimizaciones*", - " Optimisations*": " Optimizaciones*" - }, - "index.md": { - "Plugin Sonos": "Complemento Sonos", - "Le plugin Sonos permet de piloter les Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Il va vous permettre de voir l'état du\/des Sonos et d'effectuer des actions (lecture, pause, suivant, précédent, volume, choix d'une playlist…": "El plugin de Sonos te permite controlar el Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Te permitirá ver el estado del Sonos y realizar acciones (reproducir, pausar , siguiente, anterior, volumen, elección de una lista de reproducción", - "Configuration du plugin": "Configuración del plugin", - "La configuration est très simple, après téléchargement du plugin, il vous suffit de l'activer, d'installer les dépendances et de démarrer le démon": "La configuración es muy sencilla, después de descargar el complemento, solo necesitas activarlo, instalar las dependencias e iniciar el demonio", - "Le plugin va rechercher les Sonos sur votre réseau et créer les équipements automatiquement": "El complemento buscará Sonos en su red y creará el equipo automáticamente", - "De plus, s'il y a une correspondance entre les objets Jeedom et les pièces du Sonos, Jeedom affectera automatiquement les Sonos dans les bonnes pièces": "Además, si hay una coincidencia entre los objetos Jeedom y las habitaciones de Sonos, Jeedom asignará automáticamente Sonos a las habitaciones correctas", - "Vos équipements Sonos doivent être joignable directement par la machine hébergeant Jeedom (broadcast \/ multicast possible sur le même réseau) et ils doivent être capable de joindre Jeedom en retour sur le port TCP 1400": "Su equipo Sonos debe ser accesible directamente desde la máquina que aloja Jeedom (transmisión\/multidifusión posible en la misma red) y deben poder comunicarse con Jeedom a cambio en el puerto TCP 1400", - "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut": "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut", - "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`": "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`", - "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet": "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet", - "Si plus tard vous ajoutez un Sonos, vous pouvez cliquer sur": "Si luego agrega un Sonos, puede hacer clic en", - "dans la page des équipements ou redémarrer le démon": "en la página del equipo o reinicie el demonio", - "Configurez ici le nom d'hôte de la machine (ou son IP), le nom du partage (sans le chemin, sans '\/') et le chemin vers le dossier": "Configure aquí el nombre de host de la máquina (o su IP), el nombre del recurso compartido (sin la ruta, sin '\/') y la ruta a la carpeta", - "Nom d'utilisateur du partage": "Compartir nombre de usuario", - "nom d'utilisateur pour accéder au partage": "nombre de usuario para acceder a compartir", - "Mot de passe du partage": "Compartir contraseña", - "mot de passe du partage": "Compartir contraseña", - "Configuration des équipements": "Configuración del equipo", - "La configuration des équipements Sonos est accessible à partir du menu Plugins puis multimédia": "Se puede acceder a la configuración del equipo Sonos desde el menú Complementos y luego multimedia", - "Vous retrouvez ici toute la configuration habituelle de votre équipement": "Aquí encontrarás toda la configuración habitual de tu equipo", - "Nom du Sonos": "Nombre de Sonos", - "nom de votre équipement Sonos": "nombre de su equipo Sonos", - "Objet parent": "Objeto padre", - "indique l'objet parent auquel appartient l'équipement": "indica el objeto padre al que pertenece el equipo", - "permet de rendre votre équipement actif": "activa su equipo", - "le rend visible sur le dashboard": "lo hace visible en el tablero", - "Modèle": "Modelo", - "Numéro de série": "Número de serie", - "Adresse MAC": "Dirección MAC", - "Adresse IP": "Dirección IP", - "Ainsi que des informations sur votre Sonos": "Además de información sobre tu Sonos", - "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix": "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix", - "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée": "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée", - "Les commandes": "Las órdenes", - "Les commandes infos seront mises à jour en quasi temps réel (délai de quelques secondes maximum normalement) mais l'image de l'album en cours de lecture peut mettre un peu plus de temps à s'afficher sur le widget lors d'un changement de piste, ceci est parfaitement normal et indépendant du plugin": "Los controles de información se actualizarán casi en tiempo real (normalmente unos segundos como máximo), pero la imagen del álbum que se está reproduciendo actualmente puede tardar un poco más en mostrarse en el widget cuando se produce un cambio de pista, esto es perfectamente normal e independiente de la pista. enchufar", - "il doit récupérer l'image depuis une source externe (sur un Sonos ou sur internet) et cela prend parfois plusieurs secondes (en principe maximum une dizaine de secondes": "debe recuperar la imagen de una fuente externa (en un Sonos o en Internet) y esto a veces lleva varios segundos (en principio, un máximo de diez segundos)", - "Commandes de volume & contrôle du Sonos": "Controles y controles de volumen de Sonos", - "Ces commandes vont toujours contrôler l'équipement correspondant, y compris lorsque celui-ci est dans un groupe": "Estos comandos controlarán siempre el equipo correspondiente, incluso cuando esté en grupo", - "de 0 à 100": "de 0 a 100", - "modifier le volume": "cambiar el volumen", - "Volume statut": "Volumen de estado", - "niveau du volume (en %": "nivel de volumen (en %", - "Augmenter le volume": "Sube el volumen", - "augmente le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "aumenta el volumen en un 1%; Puede ser útil para la integración con otros sistemas o complementos", - "Diminuer le volume": "Disminuir el volumen", - "diminue le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "disminuye el volumen en un 1%; Puede ser útil para la integración con otros sistemas o complementos", - "Transition de volume": "Transición de volumen", - "permet d'effectuer des transitions de niveau de volume directement géré par l'enceinte Sonos, ce n'est pas le plugin qui s'en charge et donc ce n'est pas bloquant mais les délais ne sont pas configurable puisque défini par Sonos": "le permite realizar transiciones de nivel de volumen administradas directamente por el altavoz Sonos, no es el complemento el que se encarga de esto y por lo tanto no bloquea pero los retrasos no son configurables desde que los define Sonos", - "Le type de transition et le volume cible doivent être choisi lors de l'exécution de la commande": "El tipo de transición y el volumen de destino deben elegirse al ejecutar el comando", - "Il existe 3 modes": "Hay 3 modos", - "transition linéaire depuis le volume actuel vers le volume cible (augmentation ou diminution), la vitesse est de 1": "transición lineal del volumen actual al volumen objetivo (aumentar o disminuir), la velocidad es 1", - "25 par seconde (une transition": "25 por segundo (una transición", - "de 50% à 30% prendra 16s": "Del 50% al 30% se necesitarán 16s", - "initialise le volume à 0, pause d'environ 30 secondes et ensuite augmente jusqu'au volume demandé à une vitesse de 2": "inicializa el volumen a 0, hace una pausa de unos 30 segundos y luego aumenta al volumen solicitado a una velocidad de 2", - "5 par seconde (une transition": "5 por segundo (una transición", - "de 0% à 10% prendra 4s": "del 0% al 10% tardará 4s", - "initialise le volume à 0 et augmente rapidement jusqu'au volume demandé à une vitesse de 50 par seconde (un transition": "inicializa el volumen a 0 y aumenta rápidamente al volumen solicitado a una velocidad de 50 por segundo (una transición", - "de 0% à 50% prendra 1s": "de 0% a 50% tomará 1s", - "Active le mode muet": "Activar el modo silencio", - "Non Muet": "Sin silencio", - "Désactive le mode muet": "Desactivar silencio", - "Muet statut": "Estado de silencio", - "indique si on est en mode muet ou non": "indica si estamos en modo silencio o no", - "Balance statut": "Estado del saldo", - "action\/curseur) et": "acción\/cursor) y", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite) pour les Sonos compatibles": "que gestiona el equilibrio según un valor entre -100 (extremo izquierdo) y 100 (extremo derecho) para Sonos compatibles", - "Graves statut": "Estado serio", - "qui gère les graves selon une valeur comprise entre -10 et 10": "que gestiona los graves según un valor entre -10 y 10", - "Aigus statut": "Estado de agudos", - "qui gère la aigus selon une valeur comprise entre -10 et 10": "que gestiona los agudos según un valor entre -10 y 10", - "Loudness statut": "Estado de sonoridad", - "Loudness on": "Volumen encendido", - "Loudness off": "Volumen apagado", - "contrôle le loudness": "controla el volumen", - "pour basculer sur l'entrée": "para cambiar a la entrada", - "sur les équipements compatibles": "en equipos compatibles", - "Entrée audio analogique": "Entrada de audio analógico", - "pour basculer sur l": "para cambiar a", - "Led on": "El don", - "Led off": "Llevar afuera", - "Active et désactive la led, le voyant d'état": "Activa y desactiva el LED, la luz de estado", - "Led statut": "LED de estado", - "indique si le voyant d'état est allumé ou non": "indica si la luz de estado está encendida o no", - "Cette info n'est mise à jour qu'une fois par minute dans le cas où elle est modifiée hors Jeedom": "Esta información solo se actualiza una vez por minuto en caso de que se modifique fuera de Jeedom", - "Commandes tactiles on": "Controles táctiles activados", - "Commandes tactiles off": "Controles táctiles desactivados", - "Active et désactive les boutons physiques ou tactiles sur le Sonos": "Activa y desactiva los botones físicos o táctiles en Sonos", - "Commandes tactiles statut": "Controles táctiles de estado", - "indique si les commandes tactiles sont activées ou pas": "indica si los controles táctiles están habilitados o no", - "Mic statut": "Estado del micrófono", - "qui indique si le micro est activé ou non sur les Sonos équipé d'un micro": "que indica si el micrófono está activado o no en Sonos equipado con un micrófono", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "en Sonos equipado con una batería que muestra el porcentaje de carga de la batería", - "sur les Sonos équipés d'une batterie indiquant si la charge est en cours ou non": "en Sonos equipado con una batería que indica si la carga está en curso o no", - "Commandes de lecture": "Controles de reproducción", - "Ces commandes indiqueront et contrôleront la lecture en cours sur l'équipement ou sur le groupe si celui-ci est groupé et cela de façon transparente, vous ne devez pas vous préoccuper de savoir si l'équipement est groupé ou pas pour les utiliser": "Estos comandos indicarán y controlarán la reproducción actual en el equipo o en el grupo si está agrupado y esto de forma transparente, no tienes que preocuparte por saber si los equipos están agrupados o no para usarlos", - "Arrêté": "Interrumpido", - "statut de lecteur traduit dans la langue configurée sous Jeedom": "estado del lector traducido al idioma configurado en Jeedom", - "Par exemple": "Por ejemplo", - "Statut de lecture": "Estado de lectura", - "PAUSED_PLAYBACK": "PAUSAD_REPRODUCCIÓN", - "qui donne la valeur \"brut\" du statut de lecture": "que da el valor \"bruto\" del estado de lectura", - "; plus adapté pour les scénarios": "; más adecuado para escenarios", - "passer en lecture": "leer", - "mettre en pause": "pausa", - "arrêter la lecture": "deja de leer", - "Précédent": "Anterior", - "piste précédente": "pista anterior", - "piste suivante": "siguiente pista", - "Aléatoire statut": "Estado aleatorio", - "indique si on est en mode aléatoire ou non": "indica si estamos en modo aleatorio o no", - "Aléatoire": "Al azar", - "inverse le statut du mode aléatoire": "invertir el estado del modo aleatorio", - "Répéter statut": "Repita el estado", - "indique si on est en mode répété ou non": "indica si estamos en modo de repetición o no", - "Répéter": "Repetición", - "inverse le statut du mode \"répéter": "invertir el estado del modo \"repetir\"", - "Fondu enchaîné statut": "Estado de desvanecimiento", - "Fondu enchaîné on": "Desvanecerse", - "Fondu enchaîné off": "Desaparecer", - "Fondu enchaîné": "Fundido cruzado", - "pour contrôler et activer ou non le": "controlar y activar o no el", - "Choisir mode de lecture": "Elige el modo de lectura", - "permet de choisir parmi les possibilités suivantes": "le permite elegir entre las siguientes posibilidades", - "répétition off, aléatoire off": "repetir, desactivar aleatoriamente", - "Répéter tout": "Repite todo", - "aléatoire off": "aleatorio apagado", - "Aléatoire et répéter tout": "Aleatorio y repetir todo", - "Aléatoire sans répétition": "Aleatorio sin repetición", - "Répéter le morceau": "Repetir canción", - "Aléatoire et répéter le morceau": "Canción aleatoria y repetida", - "Je recommande d'utiliser cette commande-ci dans un scénario au lieu de": "Recomiendo usar este comando en un escenario en lugar de", - "&": "&", - "afin d'arriver dans la configuration désirée même si toutes agissent sur les mêmes paramètres": "para llegar a la configuración deseada incluso si todos actúan sobre los mismos parámetros", - "Cette commande est par contre le seul moyen de passer en mode": "Este comando es, sin embargo, la única manera de cambiar al modo", - "Mode de lecture": "Modo de lectura", - "donnant l'état actuel qui sera une des valeurs citées ci-dessus": "dando el estado actual que será uno de los valores citados anteriormente", - "Jouer playlist": "Reproducir lista de reproducción", - "commande de type message permettant de lancer une playlist, il suffit dans le titre de mettre le nom de la playlist": "comando de tipo de mensaje para iniciar una lista de reproducción, solo ponga el nombre de la lista de reproducción en el título", - "Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper": "En un escenario, se mostrará automáticamente una lista de posibilidades cuando empieces a escribir", - "Jouer favoris": "Jugar favoritos", - "commande de type message permettant de lancer un favoris, il suffit dans le titre de mettre le nom du favori": "comando de tipo de mensaje para lanzar un favorito, todo lo que tienes que hacer en el título es poner el nombre del favorito", - "Jouer une radio": "Tocar una radio", - "celle ci doit être dans les radios favorites": "esto debe estar en las radios favoritas", - "commande de type message permettant de lancer une radio, il suffit dans le titre de mettre le nom de la radio": "comando de tipo de mensaje para lanzar una estación de radio, todo lo que tiene que hacer es poner el nombre de la radio en el título", - "Ne fonctionne plus sur les modèles \"S2\", il est normal d'avoir une liste vide sur tous les modèles utilisant l'app Sonos S2": "Ya no funciona en los modelos \"S2\", es normal tener una lista vacía en todos los modelos que usan la aplicación Sonos S2", - "Jouer une radio mp3": "Reproducir radio mp3", - "permet de lire une radio mp3 via une URL (par exemple depuis internet": "le permite reproducir una radio mp3 a través de una URL (por ejemplo, desde Internet)", - "Vous devez mettre un titre dans la zone": "Debes poner un título en el cuadro", - "et l'url (format http(s": "y la URL (http(formato s)", - "\/\/...mp3) dans la zone": "\/\/...mp3) en el área", - "lien vers l'image de l'album": "enlace a la imagen del álbum", - "nom de l'album en cours de lecture": "nombre del álbum actualmente en reproducción", - "nom de l'artiste en cours de lecture": "nombre del artista actualmente en reproducción", - "nom de la piste en cours de lecture": "nombre de la pista que se está reproduciendo actualmente", - "permet de lire un texte sur le Sonos (voir partie TTS": "permite leer un texto en Sonos (ver parte de TTS", - "Dans le titre vous pouvez mettre le volume et dans le message, le message à lire": "En el título puede configurar el volumen y en el mensaje, el mensaje a leer", - "Les playlists et les favoris doivent être créés via l'app Sonos (sur mobile ou sur ordi) ensuite il faut faire une synchronisation pour mettre à jour les équipements et pouvoir les utiliser dans un scénario": "Las listas de reproducción y favoritos deben crearse a través de la aplicación Sonos (en el móvil o en la computadora) luego se debe realizar la sincronización para actualizar el equipo y poder usarlo en un escenario", - "Commandes pour gérer les groupes": "Comandos para gestionar grupos", - "Ces commandes agissent toujours sur l'équipement correspondant": "Estos comandos actúan siempre sobre el equipo correspondiente", - "Groupe statut": "Estado del grupo", - "indique si l'équipement est groupé ou non": "Indica si el equipo está agrupado o no", - "Nom du groupe": "Nombre del grupo", - "dans le cas où l'équipement est groupé, donne le nom du groupe": "si el equipo está agrupado, indique el nombre del grupo", - "Rejoindre un groupe": "Únete a un grupo", - "permet de rejoindre le groupe du haut-parleur (un Sonos) donné (pour associer 2 Sonos par exemple": "le permite unirse al grupo del hablante determinado (un Sonos) (para asociar 2 Sonos, por ejemplo)", - "Il faut mettre le nom de la pièce du sonos à rejoindre": "Debe ingresar el nombre de la sala del sistema de sonido para unirse", - "Cela peut-être n'importe quel membre d'un groupe existant, cela ne doit pas nécessairement être le coordinateur du groupe, ou un Sonos isolé": "Puede ser cualquier miembro de un grupo existente, no tiene que ser el coordinador del grupo ni un Sonos aislado", - "Quitter le groupe": "Abandonar el grupo", - "permet de quitter le groupe": "te permite salir del grupo", - "Mode fête": "Moda de fiesta", - "permet de grouper tous les Sonos ensemble": "te permite agrupar todos los Sonos", - "Le TTS (text-to-speech) vers le Sonos nécessite d'avoir un partage SAMBA sur le réseau (imposé par Sonos, pas moyen de faire autrement": "TTS (texto a voz) para Sonos requiere compartir SAMBA en la red (impuesto por Sonos, no hay forma de hacerlo de otra manera)", - "Il faut vous donc un NAS ou équivalent sur le réseau": "Por lo tanto, necesita un NAS o equivalente en la red", - "La configuration est assez simple il faut mettre le nom ou l'ip du NAS (attention à bien mettre la même chose que ce qui est déclaré sur Sonos) et le chemin vers le dossier qui doit contenir les fichiers audio ainsi que le nom d'utilisateur et le mot de passe (attention l'utilisateur doit avoir les droits en écriture": "La configuración es bastante sencilla, debes ingresar el nombre o IP del NAS (cuidado de poner lo mismo que se declara en Sonos) y la ruta a la carpeta que debe contener los archivos de audio así como el nombre del usuario. y contraseña (tenga en cuenta que el usuario debe tener derechos de escritura", - "La création du fichier audio est géré par le core de Jeedom": "La creación del archivo de audio es gestionada por el núcleo Jeedom", - "la langue sera celle configurée dans Jeedom et le moteur TTS utilisé peut également être sélectionné dans la configuration Jeedom": "el idioma será el configurado en Jeedom y el motor TTS utilizado también se podrá seleccionar en la configuración de Jeedom", - "Lors de l'utilisation du TTS (commande": "Cuando se utiliza TTS (comando", - "le plugin va effectuer les actions suivantes": "el complemento realizará las siguientes acciones", - "génération du fichier audio contenant le message avec le support du core de Jeedom": "generación del archivo de audio que contiene el mensaje con soporte central de Jeedom", - "écriture du fichier sur le partage SAMBA": "escribiendo el archivo en el recurso compartido SAMBA", - "forcer la lecture en mode \"Normal\", sans répétition": "forzar la reproducción en modo “Normal”, sin repetición", - "forcer le mode \"non muet\" (uniquement sur l'équipement, pas sur tout le groupe": "forzar el modo “activar silencio” (solo en el equipo, no en todo el grupo)", - "Modification du volume sur la valeur choisie lors de l'utilisation de la commande (uniquement sur l'équipement, pas sur tout le groupe": "Cambiar el volumen al valor elegido al utilizar el comando (solo en el equipo, no en todo el grupo)", - "lecture du message": "mensaje de lectura", - "restauration de l'état du Sonos avant la lecture (donc le mode de lecture, muet ou pas, répétition ou pas...) et redémarrage du flux si le Sonos était en cours de lecture": "restaurar el estado de Sonos antes de la reproducción (es decir, el modo de reproducción, silenciar o no, repetir o no, etc.) y reiniciar la transmisión si Sonos estaba reproduciendo", - "Il faut absolument mettre un mot de passe pour que cette procédure fonctionne": "Es absolutamente necesario poner una contraseña para que este procedimiento funcione", - "Il faut aussi absolument un sous-répertoire pour que le fichier vocal soit correctement créé": "Un subdirectorio también es absolutamente necesario para que el archivo de voz se cree correctamente", - "Il ne faut surtout pas d'accent dans le nom du partage ou le dossier, d'espace ou de caractères spéciaux": "Sobre todo, no debe haber acentos en el nombre del recurso compartido o carpeta, espacios o caracteres especiales", - "Les messages trop longs ne peuvent être transmis en TTS (la limite dépend du fournisseur de TTS, en général environ 100 caractères": "Los mensajes demasiado largos no se pueden transmitir en TTS (el límite depende del proveedor de TTS, generalmente alrededor de 100 caracteres)", - "Exemple de configuration": "Ejemplo de configuración", - "Côté NAS, la config suivante doit être effectuée": "Del lado del NAS se debe realizar la siguiente configuración", - "le dossier": "el registro", - "est partagé et il contient un dossier": "es compartido y contiene una carpeta", - "a un accès lecture\/écriture (nécessaire pour Jeedom": "tiene acceso de lectura\/escritura (necesario para Jeedom", - "a un accès en lecture seule (nécessaire pour les Sonos": "tiene acceso de solo lectura (necesario para Sonos", - "Côté Plugin Sonos, la config": "En el lado del complemento de Sonos, la configuración", - "Champ 1": "Campo 1", - "192.168.xxx.yyy": "192.168.xxx.yyy", - "Champ 2": "Campo 2", - "Champ 3": "Campo 3", - "Nom d'utilisateur": "Nombre del usuario", - "dans l'exemple) et son mot de passe…​": "en el ejemplo) y su contraseña…​", - "Côté Bibliothèque Sonos (appli PC": "Sonos Library side (aplicación para PC", - "le chemin est": "el camino es", - "\/\/192.168.xxx.yyy\/Jeedom\/TTS": "\/\/192.168.xxx.yyy\/Jeedom\/TTS", - "l'utilisateur sera": "el usuario será", - "dans cet exemple) + mot de passe": "en este ejemplo) + contraseña", - "Le panel": "El panel", - "Le plugin Sonos met aussi à disposition un panel qui rassemble tous vos Sonos": "El complemento de Sonos también proporciona un panel que reúne a todos sus Sonos", - "Disponible à partir du menu Accueil → Sonos Controller": "Disponible desde el menú Inicio → Sonos Controller", - "Pour avoir le panel il faut l'avoir activé dans la configuration du plugin": "Para tener el panel debes tenerlo activado en la configuración del plugin", - " Important.": " Importante.", - " Important?": " Importante?", - "Important ": "Importante ", - " Important]": " Importante]", - "[Important]": "[Importante]", - "*Important*": "*Importante*", - " Important*": " Importante*", - " Synchroniser.": " Sincronizar.", - " Synchroniser?": " Sincronizar?", - "Synchroniser ": "Sincronizar ", - " Synchroniser]": " Sincronizar]", - "[Synchroniser]": "[Sincronizar]", - "*Synchroniser*": "*Sincronizar*", - " Synchroniser*": " Sincronizar*", - " Partage.": " Compartir.", - " Partage?": " Compartir?", - "Partage ": "Compartir ", - " Partage]": " Compartir]", - "[Partage]": "[Compartir]", - "*Partage*": "*Compartir*", - " Partage*": " Compartir*", - " Activer.": " Activar.", - " Activer?": " Activar?", - "Activer ": "Activar ", - " Activer]": " Activar]", - "[Activer]": "[Activar]", - "*Activer*": "*Activar*", - " Activer*": " Activar*", - " Visible.": " Visible.", - " Visible?": " Visible?", - "Visible ": "Visible ", - " Visible]": " Visible]", - "[Visible]": "[Visible]", - "*Visible*": "*Visible*", - " Visible*": " Visible*", - " Versions.": " Lanzamientos.", - " Versions?": " Lanzamientos?", - "Versions ": "Lanzamientos ", - " Versions]": " Lanzamientos]", - "[Versions]": "[Lanzamientos]", - "*Versions*": "*Lanzamientos*", - " Versions*": " Lanzamientos*", - " Identifiant.": " Identificador.", - " Identifiant?": " Identificador?", - "Identifiant ": "Identificador ", - " Identifiant]": " Identificador]", - "[Identifiant]": "[Identificador]", - "*Identifiant*": "*Identificador*", - " Identifiant*": " Identificador*", - " et.": " Y.", - " et?": " Y?", - "et ": "Y ", - " et]": " Y]", - "[et]": "[Y]", - "*et*": "*Y*", - " et*": " Y*", - " Volume.": " Volumen.", - " Volume?": " Volumen?", - "Volume ": "Volumen ", - " Volume]": " Volumen]", - "[Volume]": "[Volumen]", - "*Volume*": "*Volumen*", - " Volume*": " Volumen*", - " LINEAR.": " LINEAL.", - " LINEAR?": " LINEAL?", - "LINEAR ": "LINEAL ", - " LINEAR]": " LINEAL]", - "[LINEAR]": "[LINEAL]", - "*LINEAR*": "*LINEAL*", - " LINEAR*": " LINEAL*", - " ALARM.": " ALARMA.", - " ALARM?": " ALARMA?", - "ALARM ": "ALARMA ", - " ALARM]": " ALARMA]", - "[ALARM]": "[ALARMA]", - "*ALARM*": "*ALARMA*", - " ALARM*": " ALARMA*", - " AUTOPLAY.": " AUTO-REPRODUCCIÓN.", - " AUTOPLAY?": " AUTO-REPRODUCCIÓN?", - "AUTOPLAY ": "AUTO-REPRODUCCIÓN ", - " AUTOPLAY]": " AUTO-REPRODUCCIÓN]", - "[AUTOPLAY]": "[AUTO-REPRODUCCIÓN]", - "*AUTOPLAY*": "*AUTO-REPRODUCCIÓN*", - " AUTOPLAY*": " AUTO-REPRODUCCIÓN*", - " Muet.": " Mudo.", - " Muet?": " Mudo?", - "Muet ": "Mudo ", - " Muet]": " Mudo]", - "[Muet]": "[Mudo]", - "*Muet*": "*Mudo*", - " Muet*": " Mudo*", - " Balance.": " Balance.", - " Balance?": " Balance?", - "Balance ": "Balance ", - " Balance]": " Balance]", - "[Balance]": "[Balance]", - "*Balance*": "*Balance*", - " Balance*": " Balance*", - " Graves.": " Tumbas.", - " Graves?": " Tumbas?", - "Graves ": "Tumbas ", - " Graves]": " Tumbas]", - "[Graves]": "[Tumbas]", - "*Graves*": "*Tumbas*", - " Graves*": " Tumbas*", - " Aigus.": " Triplicar.", - " Aigus?": " Triplicar?", - "Aigus ": "Triplicar ", - " Aigus]": " Triplicar]", - "[Aigus]": "[Triplicar]", - "*Aigus*": "*Triplicar*", - " Aigus*": " Triplicar*", - " TV.": " TELEVISOR.", - " TV?": " TELEVISOR?", - "TV ": "TELEVISOR ", - " TV]": " TELEVISOR]", - "[TV]": "[TELEVISOR]", - "*TV*": "*TELEVISOR*", - " TV*": " TELEVISOR*", - " Line-in.": " En linea.", - " Line-in?": " En linea?", - "Line-in ": "En linea ", - " Line-in]": " En linea]", - "[Line-in]": "[En linea]", - "*Line-in*": "*En linea*", - " Line-in*": " En linea*", - " Batterie.": " Batería.", - " Batterie?": " Batería?", - "Batterie ": "Batería ", - " Batterie]": " Batería]", - "[Batterie]": "[Batería]", - "*Batterie*": "*Batería*", - " Batterie*": " Batería*", - " Chargement.": " Cargando.", - " Chargement?": " Cargando?", - "Chargement ": "Cargando ", - " Chargement]": " Cargando]", - "[Chargement]": "[Cargando]", - "*Chargement*": "*Cargando*", - " Chargement*": " Cargando*", - " Statut.": " Estado.", - " Statut?": " Estado?", - "Statut ": "Estado ", - " Statut]": " Estado]", - "[Statut]": "[Estado]", - "*Statut*": "*Estado*", - " Statut*": " Estado*", - " Lecture.": " Lectura.", - " Lecture?": " Lectura?", - "Lecture ": "Lectura ", - " Lecture]": " Lectura]", - "[Lecture]": "[Lectura]", - "*Lecture*": "*Lectura*", - " Lecture*": " Lectura*", - " Pause.": " Pausa.", - " Pause?": " Pausa?", - "Pause ": "Pausa ", - " Pause]": " Pausa]", - "[Pause]": "[Pausa]", - "*Pause*": "*Pausa*", - " Pause*": " Pausa*", - " PLAYING.": " JUGANDO.", - " PLAYING?": " JUGANDO?", - "PLAYING ": "JUGANDO ", - " PLAYING]": " JUGANDO]", - "[PLAYING]": "[JUGANDO]", - "*PLAYING*": "*JUGANDO*", - " PLAYING*": " JUGANDO*", - " STOPPED.": " INTERRUMPIDO.", - " STOPPED?": " INTERRUMPIDO?", - "STOPPED ": "INTERRUMPIDO ", - " STOPPED]": " INTERRUMPIDO]", - "[STOPPED]": "[INTERRUMPIDO]", - "*STOPPED*": "*INTERRUMPIDO*", - " STOPPED*": " INTERRUMPIDO*", - " Stop.": " Detener.", - " Stop?": " Detener?", - "Stop ": "Detener ", - " Stop]": " Detener]", - "[Stop]": "[Detener]", - "*Stop*": "*Detener*", - " Stop*": " Detener*", - " Suivant.": " Próximo.", - " Suivant?": " Próximo?", - "Suivant ": "Próximo ", - " Suivant]": " Próximo]", - "[Suivant]": "[Próximo]", - "*Suivant*": "*Próximo*", - " Suivant*": " Próximo*", - " Normal.": " Normal.", - " Normal?": " Normal?", - "Normal ": "Normal ", - " Normal]": " Normal]", - "[Normal]": "[Normal]", - "*Normal*": "*Normal*", - " Normal*": " Normal*", - " ou.": " O.", - " ou?": " O?", - "ou ": "O ", - " ou]": " O]", - "[ou]": "[O]", - "*ou*": "*O*", - " ou*": " O*", - " ATTENTION.": " Atención.", - " ATTENTION?": " Atención?", - "ATTENTION ": "Atención ", - " ATTENTION]": " Atención]", - "[ATTENTION]": "[Atención]", - "*ATTENTION*": "*Atención*", - " ATTENTION*": " Atención*", - " Titre.": " Título.", - " Titre?": " Título?", - "Titre ": "Título ", - " Titre]": " Título]", - "[Titre]": "[Título]", - "*Titre*": "*Título*", - " Titre*": " Título*", - " Message.": " Mensaje.", - " Message?": " Mensaje?", - "Message ": "Mensaje ", - " Message]": " Mensaje]", - "[Message]": "[Mensaje]", - "*Message*": "*Mensaje*", - " Message*": " Mensaje*", - " Image.": " Imagen.", - " Image?": " Imagen?", - "Image ": "Imagen ", - " Image]": " Imagen]", - "[Image]": "[Imagen]", - "*Image*": "*Imagen*", - " Image*": " Imagen*", - " Album.": " Álbum.", - " Album?": " Álbum?", - "Album ": "Álbum ", - " Album]": " Álbum]", - "[Album]": "[Álbum]", - "*Album*": "*Álbum*", - " Album*": " Álbum*", - " Artiste.": " Artista.", - " Artiste?": " Artista?", - "Artiste ": "Artista ", - " Artiste]": " Artista]", - "[Artiste]": "[Artista]", - "*Artiste*": "*Artista*", - " Artiste*": " Artista*", - " Piste.": " Seguir.", - " Piste?": " Seguir?", - "Piste ": "Seguir ", - " Piste]": " Seguir]", - "[Piste]": "[Seguir]", - "*Piste*": "*Seguir*", - " Piste*": " Seguir*", - " Dire.": " Decir.", - " Dire?": " Decir?", - "Dire ": "Decir ", - " Dire]": " Decir]", - "[Dire]": "[Decir]", - "*Dire*": "*Decir*", - " Dire*": " Decir*", - " Hint.": " Pista.", - " Hint?": " Pista?", - "Hint ": "Pista ", - " Hint]": " Pista]", - "[Hint]": "[Pista]", - "*Hint*": "*Pista*", - " Hint*": " Pista*", - " TTS.": " TTS.", - " TTS?": " TTS?", - "TTS ": "TTS ", - " TTS]": " TTS]", - "[TTS]": "[TTS]", - "*TTS*": "*TTS*", - " TTS*": " TTS*", - " IMPORTANT.": " Importante.", - " IMPORTANT?": " Importante?", - "IMPORTANT ": "Importante ", - " IMPORTANT]": " Importante]", - "[IMPORTANT]": "[Importante]", - "*IMPORTANT*": "*Importante*", - " IMPORTANT*": " Importante*", - " Jeedom.": " Jeedom.", - " Jeedom?": " Jeedom?", - "Jeedom ": "Jeedom ", - " Jeedom]": " Jeedom]", - "[Jeedom]": "[Jeedom]", - "*Jeedom*": "*Jeedom*", - " Jeedom*": " Jeedom*", - " jeedom.": " Jeedom.", - " jeedom?": " Jeedom?", - "jeedom ": "Jeedom ", - " jeedom]": " Jeedom]", - "[jeedom]": "[Jeedom]", - "*jeedom*": "*Jeedom*", - " jeedom*": " Jeedom*", - " l'utilisateur.": " el usuario.", - " l'utilisateur?": " el usuario?", - "l'utilisateur ": "el usuario ", - " l'utilisateur]": " el usuario]", - "[l'utilisateur]": "[el usuario]", - "*l'utilisateur*": "*el usuario*", - " l'utilisateur*": " el usuario*", - " sonos.": " su hueso.", - " sonos?": " su hueso?", - "sonos ": "su hueso ", - " sonos]": " su hueso]", - "[sonos]": "[su hueso]", - "*sonos*": "*su hueso*", - " sonos*": " su hueso*" - } -} \ No newline at end of file From 09f7960f56c81da1b46dc879836c226b66e2322f Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Tue, 20 Oct 2026 21:30:39 +0200 Subject: [PATCH 20/28] add weekly schedule for pip updates in dependabot configuration --- .github/dependabot.yml | 6 ++++++ composer.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 06ade16..f39f4d9 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -12,6 +12,12 @@ updates: interval: "monthly" target-branch: "beta" + - package-ecosystem: "pip" + directory: "/resources" + target-branch: "beta" + schedule: + interval: "weekly" + # Maintain any github-actions workflow # https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot - package-ecosystem: "github-actions" diff --git a/composer.json b/composer.json index 0ab12ff..4e29c12 100644 --- a/composer.json +++ b/composer.json @@ -13,4 +13,4 @@ "php": "7.4" } } -} +} \ No newline at end of file From 81aad3b955e4ba998adbcee04bdb08a53f60418d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Oct 2026 19:31:40 +0000 Subject: [PATCH 21/28] Update soco requirement from ~=0.31.4 to ~=0.32.0 in /resources Updates the requirements on [soco](https://github.com/SoCo/SoCo) to permit the latest version. - [Release notes](https://github.com/SoCo/SoCo/releases) - [Changelog](https://github.com/SoCo/SoCo/blob/master/doc/release_notes.rst) - [Commits](https://github.com/SoCo/SoCo/compare/v0.31.4...v0.32.0) --- updated-dependencies: - dependency-name: soco dependency-version: 0.32.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- resources/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/requirements.txt b/resources/requirements.txt index 23acb1e..5a0010b 100644 --- a/resources/requirements.txt +++ b/resources/requirements.txt @@ -1,3 +1,3 @@ jeedomdaemon~=2.0.0 -soco~=0.31.4 +soco~=0.32.0 defusedxml~=0.7.1 \ No newline at end of file From 532b8ec1b331ebe48424928a1c6e3f86d317ce24 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Tue, 20 Oct 2026 21:31:50 +0200 Subject: [PATCH 22/28] Remove obsolete JavaScript files and documentation for the Sonos plugin, including custom JS, jQuery inview, and jQuery TOC scripts. Also, delete outdated Portuguese changelog and index documentation files --- docs/i18n/fr_FR.json | 447 ------------------- docs/i18n/pt_PT.json | 813 ----------------------------------- docs/js/custom.jeedom.js | 164 ------- docs/js/jquery.inview.min.js | 1 - docs/js/jquery.toc.js | 165 ------- docs/pt_PT/changelog.md | 196 --------- docs/pt_PT/index.md | 174 -------- 7 files changed, 1960 deletions(-) delete mode 100644 docs/i18n/fr_FR.json delete mode 100644 docs/i18n/pt_PT.json delete mode 100644 docs/js/custom.jeedom.js delete mode 100644 docs/js/jquery.inview.min.js delete mode 100644 docs/js/jquery.toc.js delete mode 100644 docs/pt_PT/changelog.md delete mode 100644 docs/pt_PT/index.md diff --git a/docs/i18n/fr_FR.json b/docs/i18n/fr_FR.json deleted file mode 100644 index 4d23abb..0000000 --- a/docs/i18n/fr_FR.json +++ /dev/null @@ -1,447 +0,0 @@ -{ - "changelog.md": { - "Changelog Sonos controller": "Changelog Sonos controller", - "IMPORTANT": "IMPORTANT", - "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte", - "11-04-2026": "11-04-2026", - "Station": "Station", - "Ajout d'une commande info": "Ajout d'une commande info", - "qui indique la station radio en cours de lecture (si l'info est disponible": "qui indique la station radio en cours de lecture (si l'info est disponible", - "27-01-2026": "27-01-2026", - "Ikea Table Lamp": "Ikea Table Lamp", - "Ajout de l'image pour": "Ajout de l'image pour", - "19-01-2026": "19-01-2026", - "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", - "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", - "Corrections des images": "Corrections des images", - "26-04-2025": "26-04-2025", - "Attention": "Attention", - "Refonte importante du plugin": "Refonte importante du plugin", - "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;", - "Nécessite Jeedom 4.4.8": "Nécessite Jeedom 4.4.8", - "Compatible Debian 11 et 12": "Compatible Debian 11 et 12", - "ce sujet sur community": "ce sujet sur community", - "Voir également": "Voir également", - "pour plus de détails": "pour plus de détails", - "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP": "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP", - "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon", - "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements": "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements", - "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles", - "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple", - "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation": "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation", - "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur": "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur", - "Le volume est, lui, toujours contrôlé par enceinte": "Le volume est, lui, toujours contrôlé par enceinte", - "il sera nécessaire d'adapter la configuration du partage SAMBA": "il sera nécessaire d'adapter la configuration du partage SAMBA", - "Adaptation sur la fonction Text-to-Speech (TTS": "Adaptation sur la fonction Text-to-Speech (TTS", - "Optimisation": "Optimisation", - "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant", - "Optimisation de l'affichage de la pochette de la lecture en cours": "Optimisation de l'affichage de la pochette de la lecture en cours", - "Optimisation sur la lecture des favoris": "Optimisation sur la lecture des favoris", - "Ajout de la possibilité de désactiver la tuile pré-configurée": "Ajout de la possibilité de désactiver la tuile pré-configurée", - "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix", - "TV": "TV", - "Ajout d'une commande action": "Ajout d'une commande action", - "pour basculer sur l'entrée": "pour basculer sur l'entrée", - "sur les équipements compatibles": "sur les équipements compatibles", - "Mode de lecture": "Mode de lecture", - "Choisir mode de lecture": "Choisir mode de lecture", - "Normal": "Normal", - "Répéter tout": "Répéter tout", - "Aléatoire et répéter tout": "Aléatoire et répéter tout", - "Aléatoire sans répétition": "Aléatoire sans répétition", - "Répéter le morceau": "Répéter le morceau", - "Aléatoire et répéter le morceau": "Aléatoire et répéter le morceau", - "et action": "et action", - "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes", - "Statut de lecture": "Statut de lecture", - "Statut": "Statut", - "Ajout d'une commande": "Ajout d'une commande", - "qui donne la valeur \"brut\" de l'état de lecture (la commande existante": "qui donne la valeur \"brut\" de l'état de lecture (la commande existante", - "donne une valeur traduite en fonction de la langue configurée dans Jeedom": "donne une valeur traduite en fonction de la langue configurée dans Jeedom", - "Groupe statut": "Groupe statut", - "Nom du groupe": "Nom du groupe", - "Ajout des commandes": "Ajout des commandes", - "indique si l'équipement est groupé ou non) et": "indique si l'équipement est groupé ou non) et", - "dans le cas où l'équipement est groupé": "dans le cas où l'équipement est groupé", - "Led on": "Led on", - "Led off": "Led off", - "Led statut": "Led statut", - "et": "et", - "pour contrôler le voyant d'état": "pour contrôler le voyant d'état", - "Jouer une radio mp3": "Jouer une radio mp3", - "pour lire une radio mp3 directement via une URL (accessible sur internet par exemple": "pour lire une radio mp3 directement via une URL (accessible sur internet par exemple", - "Augmenter le volume": "Augmenter le volume", - "Diminuer le volume": "Diminuer le volume", - "de 1%": "de 1%", - "Transition de volume": "Transition de volume", - "LINEAR": "LINEAR", - "ALARM": "ALARM", - "AUTOPLAY": "AUTOPLAY", - "qui est très intéressante pour gérer les transitions de niveau de volume": "qui est très intéressante pour gérer les transitions de niveau de volume", - "3 modes possible": "3 modes possible", - "Voir documentation pour plus d'information": "Voir documentation pour plus d'information", - "Loudness statut": "Loudness statut", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "Fondu enchaîné statut": "Fondu enchaîné statut", - "Fondu enchaîné on": "Fondu enchaîné on", - "Fondu enchaîné off": "Fondu enchaîné off", - "Commandes tactiles statut": "Commandes tactiles statut", - "Commandes tactiles on": "Commandes tactiles on", - "Commandes tactiles off": "Commandes tactiles off", - "Balance": "Balance", - "Balance statut": "Balance statut", - "action\/curseur) et": "action\/curseur) et", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite": "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite", - "Graves": "Graves", - "Graves statut": "Graves statut", - "qui gère les graves selon une valeur comprise entre -10 et 10": "qui gère les graves selon une valeur comprise entre -10 et 10", - "Aigus": "Aigus", - "Aigus statut": "Aigus statut", - "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "qui gèrent les aigus selon une valeur comprise entre -10 et 10", - "Mode fête": "Mode fête", - "Ajout de la commande": "Ajout de la commande", - "qui permet de grouper tous les Sonos ensemble": "qui permet de grouper tous les Sonos ensemble", - "Mic statut": "Mic statut", - "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro", - "Batterie": "Batterie", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie", - "Chargement": "Chargement", - "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non", - "Prochaine alarme": "Prochaine alarme", - "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte", - "25\/04\/2024": "25\/04\/2024", - "Mise à jour de la documentation": "Mise à jour de la documentation", - "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "Nettoyage des accents dans les noms de partage (non supportés par le plugin", - "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom", - "Ajout Sonos Beam Gen 2": "Ajout Sonos Beam Gen 2", - "15\/01\/2024": "15\/01\/2024", - "Préparation pour Jeedom 4.4": "Préparation pour Jeedom 4.4", - "Ajout Sonos Move 2": "Ajout Sonos Move 2", - "24\/08\/2023": "24\/08\/2023", - "Ajout Ikea Symfonisk Floor Lamp": "Ajout Ikea Symfonisk Floor Lamp", - "25\/05\/2023": "25\/05\/2023", - "Ajout Sonos Era": "Ajout Sonos Era", - "18\/10\/2022": "18\/10\/2022", - "Mise à jour liste des commandes pour Jeedom v4.3": "Mise à jour liste des commandes pour Jeedom v4.3", - "Ajout de la Sonos Ray": "Ajout de la Sonos Ray", - "22\/03\/2022": "22\/03\/2022", - "Support de la nouvelle enceinte SYMFONISK": "Support de la nouvelle enceinte SYMFONISK", - "01\/02\/2022": "01\/02\/2022", - "Correction d'un bug sur le TTS": "Correction d'un bug sur le TTS", - "27\/01\/2022": "27\/01\/2022", - "Optimisations V4.2": "Optimisations V4.2", - "14\/01\/2022": "14\/01\/2022", - "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK", - "27\/12\/2021": "27\/12\/2021", - "Ajout de la compatibilité avec la nouvelle Sonos One": "Ajout de la compatibilité avec la nouvelle Sonos One", - "09\/10\/2021": "09\/10\/2021", - "Ajout de la Sonos Five": "Ajout de la Sonos Five", - "Ajout Sonos Roam": "Ajout Sonos Roam", - "Ajout Symfonisk Cadre": "Ajout Symfonisk Cadre", - "Mise à jour immediate du volume en cas de changement par Jeedom, merci @Domochip": "Mise à jour immediate du volume en cas de changement par Jeedom, merci @Domochip", - "24\/11\/2020": "24\/11\/2020", - "Nouvelle présentation de la liste des objets": "Nouvelle présentation de la liste des objets", - "Ajout du tag \"Compatibilité V4": "Ajout du tag \"Compatibilité V4", - "07\/08\/2020": "07\/08\/2020", - "Prise en charge du Sonos ARC": "Prise en charge du Sonos ARC", - "24\/01\/2020": "24\/01\/2020", - "Prise en charge du Sonos One S22": "Prise en charge du Sonos One S22", - "11\/01\/2020": "11\/01\/2020", - "Prise en charge du Sonos Move": "Prise en charge du Sonos Move", - "Optimisation du code en cas de Sonos non connecté": "Optimisation du code en cas de Sonos non connecté", - "16\/12\/2019": "16\/12\/2019", - "Correction de bug si un sonos n'est pas joignable": "Correction de bug si un sonos n'est pas joignable", - "21\/10\/2017": "21\/10\/2017", - "Amélioration de la reprise suite à un TTS": "Amélioration de la reprise suite à un TTS", - "15\/10\/2019": "15\/10\/2019", - "Prise en charge du Sonos port": "Prise en charge du Sonos port", - "Amélioration du script d'installation des dépendances": "Amélioration du script d'installation des dépendances", - "07\/10\/2019": "07\/10\/2019", - "Amélioration du script d'installation des dépendances (pourra permettre de corriger dans certain cas les soucis de TTS": "Amélioration du script d'installation des dépendances (pourra permettre de corriger dans certain cas les soucis de TTS", - "23\/09\/2019": "23\/09\/2019", - "Optimisations": "Optimisations", - "01\/09\/2019": "01\/09\/2019", - "Prise en charge de l'enceinte lampe Ikea SYMFONISK": "Prise en charge de l'enceinte lampe Ikea SYMFONISK", - "12\/08\/2019": "12\/08\/2019", - "Prise en charge de l'enceinte étagere Ikea SYMFONISK": "Prise en charge de l'enceinte étagere Ikea SYMFONISK", - "23\/04\/2019": "23\/04\/2019", - "Prise en charge des sonos one gen2": "Prise en charge des sonos one gen2", - "17\/01\/2019": "17\/01\/2019", - "Correction de bugs dans le cas où les sonos ont été ajoutés manuellement": "Correction de bugs dans le cas où les sonos ont été ajoutés manuellement", - "15\/01\/2019": "15\/01\/2019", - "IMPORTANT NE MARCHE QUE AVEC PHP7, VOIR PAGE SANTE DE JEEDOM POUR VOTRE VERSION": "IMPORTANT NE MARCHE QUE AVEC PHP7, VOIR PAGE SANTE DE JEEDOM POUR VOTRE VERSION", - "Réecriture complète du plugin": "Réecriture complète du plugin", - "Prise en charge de la nouvelle api Sonos": "Prise en charge de la nouvelle api Sonos", - "Prise en charge des sonos beam et One": "Prise en charge des sonos beam et One", - "Correction de nombreux bugs": "Correction de nombreux bugs", - "Optimisations globales": "Optimisations globales", - "Compatible PHP7 uniquement": "Compatible PHP7 uniquement", - "Certaines fonctionnalités ont dû être retirées": "Certaines fonctionnalités ont dû être retirées", - "Ajout de la gestion des favoris sonos": "Ajout de la gestion des favoris sonos", - "Prise en charge des Sonos One et Playbase": "Prise en charge des Sonos One et Playbase", - "Correction de la langue avec PicoTTS": "Correction de la langue avec PicoTTS", - "Ajout d'une commande \"Entrée de ligne": "Ajout d'une commande \"Entrée de ligne", - "Mise à jour de la librairie de communication avec les Sonos": "Mise à jour de la librairie de communication avec les Sonos", - "Optimisation du chargement des playlists": "Optimisation du chargement des playlists", - "Ajout de picotts pour la génération du TTS en local": "Ajout de picotts pour la génération du TTS en local", - "Correction du bouton play\/pause lors de la mise à jour du widget": "Correction du bouton play\/pause lors de la mise à jour du widget" - }, - "index.md": { - "Plugin Sonos": "Plugin Sonos", - "Le plugin Sonos permet de piloter les Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Il va vous permettre de voir l'état du\/des Sonos et d'effectuer des actions (lecture, pause, suivant, précédent, volume, choix d'une playlist…": "Le plugin Sonos permet de piloter les Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Il va vous permettre de voir l'état du\/des Sonos et d'effectuer des actions (lecture, pause, suivant, précédent, volume, choix d'une playlist…", - "Configuration du plugin": "Configuration du plugin", - "La configuration est très simple, après téléchargement du plugin, il vous suffit de l'activer, d'installer les dépendances et de démarrer le démon": "La configuration est très simple, après téléchargement du plugin, il vous suffit de l'activer, d'installer les dépendances et de démarrer le démon", - "Le plugin va rechercher les Sonos sur votre réseau et créer les équipements automatiquement": "Le plugin va rechercher les Sonos sur votre réseau et créer les équipements automatiquement", - "De plus, s'il y a une correspondance entre les objets Jeedom et les pièces du Sonos, Jeedom affectera automatiquement les Sonos dans les bonnes pièces": "De plus, s'il y a une correspondance entre les objets Jeedom et les pièces du Sonos, Jeedom affectera automatiquement les Sonos dans les bonnes pièces", - "Important": "Important", - "Vos équipements Sonos doivent être joignable directement par la machine hébergeant Jeedom (broadcast \/ multicast possible sur le même réseau) et ils doivent être capable de joindre Jeedom en retour sur le port TCP 1400": "Vos équipements Sonos doivent être joignable directement par la machine hébergeant Jeedom (broadcast \/ multicast possible sur le même réseau) et ils doivent être capable de joindre Jeedom en retour sur le port TCP 1400", - "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut": "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut", - "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`": "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`", - "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet": "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet", - "Synchroniser": "Synchroniser", - "Si plus tard vous ajoutez un Sonos, vous pouvez cliquer sur": "Si plus tard vous ajoutez un Sonos, vous pouvez cliquer sur", - "dans la page des équipements ou redémarrer le démon": "dans la page des équipements ou redémarrer le démon", - "Partage": "Partage", - "Configurez ici le nom d'hôte de la machine (ou son IP), le nom du partage (sans le chemin, sans '\/') et le chemin vers le dossier": "Configurez ici le nom d'hôte de la machine (ou son IP), le nom du partage (sans le chemin, sans '\/') et le chemin vers le dossier", - "Nom d'utilisateur du partage": "Nom d'utilisateur du partage", - "nom d'utilisateur pour accéder au partage": "nom d'utilisateur pour accéder au partage", - "Mot de passe du partage": "Mot de passe du partage", - "mot de passe du partage": "mot de passe du partage", - "Configuration des équipements": "Configuration des équipements", - "La configuration des équipements Sonos est accessible à partir du menu Plugins puis multimédia": "La configuration des équipements Sonos est accessible à partir du menu Plugins puis multimédia", - "Vous retrouvez ici toute la configuration habituelle de votre équipement": "Vous retrouvez ici toute la configuration habituelle de votre équipement", - "Nom du Sonos": "Nom du Sonos", - "nom de votre équipement Sonos": "nom de votre équipement Sonos", - "Objet parent": "Objet parent", - "indique l'objet parent auquel appartient l'équipement": "indique l'objet parent auquel appartient l'équipement", - "Activer": "Activer", - "permet de rendre votre équipement actif": "permet de rendre votre équipement actif", - "Visible": "Visible", - "le rend visible sur le dashboard": "le rend visible sur le dashboard", - "Modèle": "Modèle", - "Versions": "Versions", - "Numéro de série": "Numéro de série", - "Identifiant": "Identifiant", - "Adresse MAC": "Adresse MAC", - "Adresse IP": "Adresse IP", - "Ainsi que des informations sur votre Sonos": "Ainsi que des informations sur votre Sonos", - "et": "et", - "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix": "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix", - "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée": "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée", - "Les commandes": "Les commandes", - "Les commandes infos seront mises à jour en quasi temps réel (délai de quelques secondes maximum normalement) mais l'image de l'album en cours de lecture peut mettre un peu plus de temps à s'afficher sur le widget lors d'un changement de piste, ceci est parfaitement normal et indépendant du plugin": "Les commandes infos seront mises à jour en quasi temps réel (délai de quelques secondes maximum normalement) mais l'image de l'album en cours de lecture peut mettre un peu plus de temps à s'afficher sur le widget lors d'un changement de piste, ceci est parfaitement normal et indépendant du plugin", - "il doit récupérer l'image depuis une source externe (sur un Sonos ou sur internet) et cela prend parfois plusieurs secondes (en principe maximum une dizaine de secondes": "il doit récupérer l'image depuis une source externe (sur un Sonos ou sur internet) et cela prend parfois plusieurs secondes (en principe maximum une dizaine de secondes", - "Commandes de volume & contrôle du Sonos": "Commandes de volume & contrôle du Sonos", - "Ces commandes vont toujours contrôler l'équipement correspondant, y compris lorsque celui-ci est dans un groupe": "Ces commandes vont toujours contrôler l'équipement correspondant, y compris lorsque celui-ci est dans un groupe", - "Volume": "Volume", - "de 0 à 100": "de 0 à 100", - "modifier le volume": "modifier le volume", - "Volume statut": "Volume statut", - "niveau du volume (en %": "niveau du volume (en %", - "Augmenter le volume": "Augmenter le volume", - "augmente le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "augmente le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins", - "Diminuer le volume": "Diminuer le volume", - "diminue le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "diminue le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins", - "Transition de volume": "Transition de volume", - "permet d'effectuer des transitions de niveau de volume directement géré par l'enceinte Sonos, ce n'est pas le plugin qui s'en charge et donc ce n'est pas bloquant mais les délais ne sont pas configurable puisque défini par Sonos": "permet d'effectuer des transitions de niveau de volume directement géré par l'enceinte Sonos, ce n'est pas le plugin qui s'en charge et donc ce n'est pas bloquant mais les délais ne sont pas configurable puisque défini par Sonos", - "Le type de transition et le volume cible doivent être choisi lors de l'exécution de la commande": "Le type de transition et le volume cible doivent être choisi lors de l'exécution de la commande", - "Il existe 3 modes": "Il existe 3 modes", - "LINEAR": "LINEAR", - "transition linéaire depuis le volume actuel vers le volume cible (augmentation ou diminution), la vitesse est de 1": "transition linéaire depuis le volume actuel vers le volume cible (augmentation ou diminution), la vitesse est de 1", - "25 par seconde (une transition": "25 par seconde (une transition", - "de 50% à 30% prendra 16s": "de 50% à 30% prendra 16s", - "ALARM": "ALARM", - "initialise le volume à 0, pause d'environ 30 secondes et ensuite augmente jusqu'au volume demandé à une vitesse de 2": "initialise le volume à 0, pause d'environ 30 secondes et ensuite augmente jusqu'au volume demandé à une vitesse de 2", - "5 par seconde (une transition": "5 par seconde (une transition", - "de 0% à 10% prendra 4s": "de 0% à 10% prendra 4s", - "AUTOPLAY": "AUTOPLAY", - "initialise le volume à 0 et augmente rapidement jusqu'au volume demandé à une vitesse de 50 par seconde (un transition": "initialise le volume à 0 et augmente rapidement jusqu'au volume demandé à une vitesse de 50 par seconde (un transition", - "de 0% à 50% prendra 1s": "de 0% à 50% prendra 1s", - "Muet": "Muet", - "Active le mode muet": "Active le mode muet", - "Non Muet": "Non Muet", - "Désactive le mode muet": "Désactive le mode muet", - "Muet statut": "Muet statut", - "indique si on est en mode muet ou non": "indique si on est en mode muet ou non", - "Balance": "Balance", - "Balance statut": "Balance statut", - "action\/curseur) et": "action\/curseur) et", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite) pour les Sonos compatibles": "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite) pour les Sonos compatibles", - "Graves": "Graves", - "Graves statut": "Graves statut", - "qui gère les graves selon une valeur comprise entre -10 et 10": "qui gère les graves selon une valeur comprise entre -10 et 10", - "Aigus": "Aigus", - "Aigus statut": "Aigus statut", - "qui gère la aigus selon une valeur comprise entre -10 et 10": "qui gère la aigus selon une valeur comprise entre -10 et 10", - "Loudness statut": "Loudness statut", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "contrôle le loudness": "contrôle le loudness", - "TV": "TV", - "pour basculer sur l'entrée": "pour basculer sur l'entrée", - "sur les équipements compatibles": "sur les équipements compatibles", - "Entrée audio analogique": "Entrée audio analogique", - "Line-in": "Line-in", - "pour basculer sur l": "pour basculer sur l", - "Led on": "Led on", - "Led off": "Led off", - "Active et désactive la led, le voyant d'état": "Active et désactive la led, le voyant d'état", - "Led statut": "Led statut", - "indique si le voyant d'état est allumé ou non": "indique si le voyant d'état est allumé ou non", - "Cette info n'est mise à jour qu'une fois par minute dans le cas où elle est modifiée hors Jeedom": "Cette info n'est mise à jour qu'une fois par minute dans le cas où elle est modifiée hors Jeedom", - "Commandes tactiles on": "Commandes tactiles on", - "Commandes tactiles off": "Commandes tactiles off", - "Active et désactive les boutons physiques ou tactiles sur le Sonos": "Active et désactive les boutons physiques ou tactiles sur le Sonos", - "Commandes tactiles statut": "Commandes tactiles statut", - "indique si les commandes tactiles sont activées ou pas": "indique si les commandes tactiles sont activées ou pas", - "Mic statut": "Mic statut", - "qui indique si le micro est activé ou non sur les Sonos équipé d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipé d'un micro", - "Batterie": "Batterie", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie", - "Chargement": "Chargement", - "sur les Sonos équipés d'une batterie indiquant si la charge est en cours ou non": "sur les Sonos équipés d'une batterie indiquant si la charge est en cours ou non", - "Commandes de lecture": "Commandes de lecture", - "Ces commandes indiqueront et contrôleront la lecture en cours sur l'équipement ou sur le groupe si celui-ci est groupé et cela de façon transparente, vous ne devez pas vous préoccuper de savoir si l'équipement est groupé ou pas pour les utiliser": "Ces commandes indiqueront et contrôleront la lecture en cours sur l'équipement ou sur le groupe si celui-ci est groupé et cela de façon transparente, vous ne devez pas vous préoccuper de savoir si l'équipement est groupé ou pas pour les utiliser", - "Statut": "Statut", - "Lecture": "Lecture", - "Pause": "Pause", - "Arrêté": "Arrêté", - "statut de lecteur traduit dans la langue configurée sous Jeedom": "statut de lecteur traduit dans la langue configurée sous Jeedom", - "Par exemple": "Par exemple", - "Statut de lecture": "Statut de lecture", - "PLAYING": "PLAYING", - "PAUSED_PLAYBACK": "PAUSED_PLAYBACK", - "STOPPED": "STOPPED", - "qui donne la valeur \"brut\" du statut de lecture": "qui donne la valeur \"brut\" du statut de lecture", - "; plus adapté pour les scénarios": "; plus adapté pour les scénarios", - "passer en lecture": "passer en lecture", - "mettre en pause": "mettre en pause", - "Stop": "Stop", - "arrêter la lecture": "arrêter la lecture", - "Précédent": "Précédent", - "piste précédente": "piste précédente", - "Suivant": "Suivant", - "piste suivante": "piste suivante", - "Aléatoire statut": "Aléatoire statut", - "indique si on est en mode aléatoire ou non": "indique si on est en mode aléatoire ou non", - "Aléatoire": "Aléatoire", - "inverse le statut du mode aléatoire": "inverse le statut du mode aléatoire", - "Répéter statut": "Répéter statut", - "indique si on est en mode répété ou non": "indique si on est en mode répété ou non", - "Répéter": "Répéter", - "inverse le statut du mode \"répéter": "inverse le statut du mode \"répéter", - "Fondu enchaîné statut": "Fondu enchaîné statut", - "Fondu enchaîné on": "Fondu enchaîné on", - "Fondu enchaîné off": "Fondu enchaîné off", - "Fondu enchaîné": "Fondu enchaîné", - "pour contrôler et activer ou non le": "pour contrôler et activer ou non le", - "Choisir mode de lecture": "Choisir mode de lecture", - "permet de choisir parmi les possibilités suivantes": "permet de choisir parmi les possibilités suivantes", - "Normal": "Normal", - "répétition off, aléatoire off": "répétition off, aléatoire off", - "Répéter tout": "Répéter tout", - "aléatoire off": "aléatoire off", - "Aléatoire et répéter tout": "Aléatoire et répéter tout", - "Aléatoire sans répétition": "Aléatoire sans répétition", - "Répéter le morceau": "Répéter le morceau", - "Aléatoire et répéter le morceau": "Aléatoire et répéter le morceau", - "Je recommande d'utiliser cette commande-ci dans un scénario au lieu de": "Je recommande d'utiliser cette commande-ci dans un scénario au lieu de", - "&": "&", - "afin d'arriver dans la configuration désirée même si toutes agissent sur les mêmes paramètres": "afin d'arriver dans la configuration désirée même si toutes agissent sur les mêmes paramètres", - "Cette commande est par contre le seul moyen de passer en mode": "Cette commande est par contre le seul moyen de passer en mode", - "ou": "ou", - "Mode de lecture": "Mode de lecture", - "donnant l'état actuel qui sera une des valeurs citées ci-dessus": "donnant l'état actuel qui sera une des valeurs citées ci-dessus", - "Jouer playlist": "Jouer playlist", - "commande de type message permettant de lancer une playlist, il suffit dans le titre de mettre le nom de la playlist": "commande de type message permettant de lancer une playlist, il suffit dans le titre de mettre le nom de la playlist", - "Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper": "Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper", - "Jouer favoris": "Jouer favoris", - "commande de type message permettant de lancer un favoris, il suffit dans le titre de mettre le nom du favori": "commande de type message permettant de lancer un favoris, il suffit dans le titre de mettre le nom du favori", - "Jouer une radio": "Jouer une radio", - "ATTENTION": "ATTENTION", - "celle ci doit être dans les radios favorites": "celle ci doit être dans les radios favorites", - "commande de type message permettant de lancer une radio, il suffit dans le titre de mettre le nom de la radio": "commande de type message permettant de lancer une radio, il suffit dans le titre de mettre le nom de la radio", - "Ne fonctionne plus sur les modèles \"S2\", il est normal d'avoir une liste vide sur tous les modèles utilisant l'app Sonos S2": "Ne fonctionne plus sur les modèles \"S2\", il est normal d'avoir une liste vide sur tous les modèles utilisant l'app Sonos S2", - "Jouer une radio mp3": "Jouer une radio mp3", - "Titre": "Titre", - "Message": "Message", - "permet de lire une radio mp3 via une URL (par exemple depuis internet": "permet de lire une radio mp3 via une URL (par exemple depuis internet", - "Vous devez mettre un titre dans la zone": "Vous devez mettre un titre dans la zone", - "et l'url (format http(s": "et l'url (format http(s", - "\/\/...mp3) dans la zone": "\/\/...mp3) dans la zone", - "Image": "Image", - "lien vers l'image de l'album": "lien vers l'image de l'album", - "Album": "Album", - "nom de l'album en cours de lecture": "nom de l'album en cours de lecture", - "Artiste": "Artiste", - "nom de l'artiste en cours de lecture": "nom de l'artiste en cours de lecture", - "Piste": "Piste", - "nom de la piste en cours de lecture": "nom de la piste en cours de lecture", - "Dire": "Dire", - "permet de lire un texte sur le Sonos (voir partie TTS": "permet de lire un texte sur le Sonos (voir partie TTS", - "Dans le titre vous pouvez mettre le volume et dans le message, le message à lire": "Dans le titre vous pouvez mettre le volume et dans le message, le message à lire", - "Hint": "Hint", - "Les playlists et les favoris doivent être créés via l'app Sonos (sur mobile ou sur ordi) ensuite il faut faire une synchronisation pour mettre à jour les équipements et pouvoir les utiliser dans un scénario": "Les playlists et les favoris doivent être créés via l'app Sonos (sur mobile ou sur ordi) ensuite il faut faire une synchronisation pour mettre à jour les équipements et pouvoir les utiliser dans un scénario", - "Commandes pour gérer les groupes": "Commandes pour gérer les groupes", - "Ces commandes agissent toujours sur l'équipement correspondant": "Ces commandes agissent toujours sur l'équipement correspondant", - "Groupe statut": "Groupe statut", - "indique si l'équipement est groupé ou non": "indique si l'équipement est groupé ou non", - "Nom du groupe": "Nom du groupe", - "dans le cas où l'équipement est groupé, donne le nom du groupe": "dans le cas où l'équipement est groupé, donne le nom du groupe", - "Rejoindre un groupe": "Rejoindre un groupe", - "permet de rejoindre le groupe du haut-parleur (un Sonos) donné (pour associer 2 Sonos par exemple": "permet de rejoindre le groupe du haut-parleur (un Sonos) donné (pour associer 2 Sonos par exemple", - "Il faut mettre le nom de la pièce du sonos à rejoindre": "Il faut mettre le nom de la pièce du sonos à rejoindre", - "Cela peut-être n'importe quel membre d'un groupe existant, cela ne doit pas nécessairement être le coordinateur du groupe, ou un Sonos isolé": "Cela peut-être n'importe quel membre d'un groupe existant, cela ne doit pas nécessairement être le coordinateur du groupe, ou un Sonos isolé", - "Quitter le groupe": "Quitter le groupe", - "permet de quitter le groupe": "permet de quitter le groupe", - "Mode fête": "Mode fête", - "permet de grouper tous les Sonos ensemble": "permet de grouper tous les Sonos ensemble", - "TTS": "TTS", - "Le TTS (text-to-speech) vers le Sonos nécessite d'avoir un partage SAMBA sur le réseau (imposé par Sonos, pas moyen de faire autrement": "Le TTS (text-to-speech) vers le Sonos nécessite d'avoir un partage SAMBA sur le réseau (imposé par Sonos, pas moyen de faire autrement", - "Il faut vous donc un NAS ou équivalent sur le réseau": "Il faut vous donc un NAS ou équivalent sur le réseau", - "La configuration est assez simple il faut mettre le nom ou l'ip du NAS (attention à bien mettre la même chose que ce qui est déclaré sur Sonos) et le chemin vers le dossier qui doit contenir les fichiers audio ainsi que le nom d'utilisateur et le mot de passe (attention l'utilisateur doit avoir les droits en écriture": "La configuration est assez simple il faut mettre le nom ou l'ip du NAS (attention à bien mettre la même chose que ce qui est déclaré sur Sonos) et le chemin vers le dossier qui doit contenir les fichiers audio ainsi que le nom d'utilisateur et le mot de passe (attention l'utilisateur doit avoir les droits en écriture", - "La création du fichier audio est géré par le core de Jeedom": "La création du fichier audio est géré par le core de Jeedom", - "la langue sera celle configurée dans Jeedom et le moteur TTS utilisé peut également être sélectionné dans la configuration Jeedom": "la langue sera celle configurée dans Jeedom et le moteur TTS utilisé peut également être sélectionné dans la configuration Jeedom", - "Lors de l'utilisation du TTS (commande": "Lors de l'utilisation du TTS (commande", - "le plugin va effectuer les actions suivantes": "le plugin va effectuer les actions suivantes", - "génération du fichier audio contenant le message avec le support du core de Jeedom": "génération du fichier audio contenant le message avec le support du core de Jeedom", - "écriture du fichier sur le partage SAMBA": "écriture du fichier sur le partage SAMBA", - "forcer la lecture en mode \"Normal\", sans répétition": "forcer la lecture en mode \"Normal\", sans répétition", - "forcer le mode \"non muet\" (uniquement sur l'équipement, pas sur tout le groupe": "forcer le mode \"non muet\" (uniquement sur l'équipement, pas sur tout le groupe", - "Modification du volume sur la valeur choisie lors de l'utilisation de la commande (uniquement sur l'équipement, pas sur tout le groupe": "Modification du volume sur la valeur choisie lors de l'utilisation de la commande (uniquement sur l'équipement, pas sur tout le groupe", - "lecture du message": "lecture du message", - "restauration de l'état du Sonos avant la lecture (donc le mode de lecture, muet ou pas, répétition ou pas...) et redémarrage du flux si le Sonos était en cours de lecture": "restauration de l'état du Sonos avant la lecture (donc le mode de lecture, muet ou pas, répétition ou pas...) et redémarrage du flux si le Sonos était en cours de lecture", - "IMPORTANT": "IMPORTANT", - "Il faut absolument mettre un mot de passe pour que cette procédure fonctionne": "Il faut absolument mettre un mot de passe pour que cette procédure fonctionne", - "Il faut aussi absolument un sous-répertoire pour que le fichier vocal soit correctement créé": "Il faut aussi absolument un sous-répertoire pour que le fichier vocal soit correctement créé", - "Il ne faut surtout pas d'accent dans le nom du partage ou le dossier, d'espace ou de caractères spéciaux": "Il ne faut surtout pas d'accent dans le nom du partage ou le dossier, d'espace ou de caractères spéciaux", - "Les messages trop longs ne peuvent être transmis en TTS (la limite dépend du fournisseur de TTS, en général environ 100 caractères": "Les messages trop longs ne peuvent être transmis en TTS (la limite dépend du fournisseur de TTS, en général environ 100 caractères", - "Exemple de configuration": "Exemple de configuration", - "Côté NAS, la config suivante doit être effectuée": "Côté NAS, la config suivante doit être effectuée", - "Jeedom": "Jeedom", - "le dossier": "le dossier", - "est partagé et il contient un dossier": "est partagé et il contient un dossier", - "jeedom": "jeedom", - "l'utilisateur": "l'utilisateur", - "a un accès lecture\/écriture (nécessaire pour Jeedom": "a un accès lecture\/écriture (nécessaire pour Jeedom", - "sonos": "sonos", - "a un accès en lecture seule (nécessaire pour les Sonos": "a un accès en lecture seule (nécessaire pour les Sonos", - "Côté Plugin Sonos, la config": "Côté Plugin Sonos, la config", - "Champ 1": "Champ 1", - "192.168.xxx.yyy": "192.168.xxx.yyy", - "Champ 2": "Champ 2", - "Champ 3": "Champ 3", - "Nom d'utilisateur": "Nom d'utilisateur", - "dans l'exemple) et son mot de passe…​": "dans l'exemple) et son mot de passe…​", - "Côté Bibliothèque Sonos (appli PC": "Côté Bibliothèque Sonos (appli PC", - "le chemin est": "le chemin est", - "\/\/192.168.xxx.yyy\/Jeedom\/TTS": "\/\/192.168.xxx.yyy\/Jeedom\/TTS", - "l'utilisateur sera": "l'utilisateur sera", - "dans cet exemple) + mot de passe": "dans cet exemple) + mot de passe", - "Le panel": "Le panel", - "Le plugin Sonos met aussi à disposition un panel qui rassemble tous vos Sonos": "Le plugin Sonos met aussi à disposition un panel qui rassemble tous vos Sonos", - "Disponible à partir du menu Accueil → Sonos Controller": "Disponible à partir du menu Accueil → Sonos Controller", - "Pour avoir le panel il faut l'avoir activé dans la configuration du plugin": "Pour avoir le panel il faut l'avoir activé dans la configuration du plugin" - } -} \ No newline at end of file diff --git a/docs/i18n/pt_PT.json b/docs/i18n/pt_PT.json deleted file mode 100644 index 0cc6c03..0000000 --- a/docs/i18n/pt_PT.json +++ /dev/null @@ -1,813 +0,0 @@ -{ - "changelog.md": { - "Changelog Sonos controller": "Changelog Sonos controller", - "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto", - "11-04-2026": "", - "Ajout d'une commande info": "Adicionando um comando de informações", - "qui indique la station radio en cours de lecture (si l'info est disponible": "", - "27-01-2026": "27-01-2026", - "Ikea Table Lamp": "Ikea Table Lamp", - "Ajout de l'image pour": "Ajout de l'image pour", - "19-01-2026": "19-01-2026", - "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", - "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", - "Corrections des images": "Correções de imagem", - "26-04-2025": "26-04-2025", - "Refonte importante du plugin": "Redesenho significativo do plugin", - "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;": "une très grande partie du plugin a été réécrite dont toute la communication avec Sonos (démon) et certaines fonctionnalités ont été modifiées et ne fonctionnent plus comme précédemment, notamment la gestion des groupes ;", - "Nécessite Jeedom 4.4.8": "Requer Jeedom 4.4.8", - "Compatible Debian 11 et 12": "Compatível com Debian 11 e 12", - "ce sujet sur community": "este tópico na comunidade", - "Voir également": "Veja também", - "pour plus de détails": "para mais detalhes", - "Réécriture quasi totale du plugin, le démon a été entièrement réécrit en python (au lieu de PHP": "Reescrita quase total do plugin, o daemon foi completamente reescrito em python (em vez de PHP", - "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon": "Il n'y a plus de découverte à lancer manuellement et il n'est plus nécessaire (ni possible) d'ajouter manuellement un équipement, le plugin découvre automatiquement vos appareils Sonos et crée les équipements correspondants à chaque démarrage du démon", - "Il est également possible de demander de (re)synchroniser les équipements, favoris et listes de lecture sans redémarrer le démon depuis le panneau des équipements": "Também é possível pedir para (re)sincronizar equipamentos, favoritos e playlists sem reiniciar o daemon a partir do painel de equipamentos", - "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles": "Synchro automatique chaque heure pour corriger les désynchronisations éventuelles", - "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple": "Mise à jour en (quasi) temps réel des commandes infos (un délai de 0,5s à quelques secondes max), plus de cron minute, y compris lorsqu'un changement est effectué hors Jeedom (via l'app Sonos par exemple", - "Refonte de la gestion de groupes (les anciennes commandes seront supprimées et de nouvelles ajoutées, voir documentation": "Redesenho do gerenciamento de grupos (comandos antigos serão excluídos e novos serão adicionados, consulte a documentação", - "Il est possible de joindre ou quitter un groupe, de contrôler la lecture du groupe depuis n'importe quel équipement du groupe sans se soucier de qui est le contrôleur": "É possível entrar ou sair de um grupo, controlar a reprodução do grupo a partir de qualquer dispositivo do grupo sem se preocupar com quem é o controlador", - "Le volume est, lui, toujours contrôlé par enceinte": "Le volume est, lui, toujours contrôlé par enceinte", - "il sera nécessaire d'adapter la configuration du partage SAMBA": "il sera nécessaire d'adapter la configuration du partage SAMBA", - "Adaptation sur la fonction Text-to-Speech (TTS": "Adaptation sur la fonction Text-to-Speech (TTS", - "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant": "plus de pertes de mémoire sur le démon et il consomme moins qu'auparavant", - "Optimisation de l'affichage de la pochette de la lecture en cours": "Otimizou a exibição da capa atualmente sendo reproduzida", - "Optimisation sur la lecture des favoris": "Otimização na leitura de favoritos", - "Ajout de la possibilité de désactiver la tuile pré-configurée": "Ajout de la possibilité de désactiver la tuile pré-configurée", - "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix": "vous êtes alors libre de configurer celle-ci comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou de masquer les commandes de votre choix", - "Ajout d'une commande action": "Adicionando um comando de ação", - "pour basculer sur l'entrée": "para mudar para a entrada", - "sur les équipements compatibles": "em equipamentos compatíveis", - "Mode de lecture": "Modo de leitura", - "Choisir mode de lecture": "Escolha o modo de leitura", - "Répéter tout": "Repita tudo", - "Aléatoire et répéter tout": "Aleatório e repita tudo", - "Aléatoire sans répétition": "Aleatório sem repetição", - "Répéter le morceau": "Repetir música", - "Aléatoire et répéter le morceau": "Música aleatória e repetida", - "et action": "e ação", - "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "que permite selecionar o modo de leitura entre as seguintes possibilidades", - "Statut de lecture": "Status de leitura", - "Ajout d'une commande": "Adicionando um pedido", - "qui donne la valeur \"brut\" de l'état de lecture (la commande existante": "que fornece o valor \"bruto\" do estado de leitura (o comando existente", - "donne une valeur traduite en fonction de la langue configurée dans Jeedom": "fornece um valor traduzido com base no idioma configurado no Jeedom", - "Groupe statut": "Status do grupo", - "Nom du groupe": "Nome do grupo", - "Ajout des commandes": "Adicionando comandos", - "indique si l'équipement est groupé ou non) et": "indica se o equipamento está agrupado ou não) e", - "dans le cas où l'équipement est groupé": "no caso em que o equipamento está agrupado", - "Led on": "O presente", - "Led off": "Partiu", - "Led statut": "LED de status", - "pour contrôler le voyant d'état": "para verificar o indicador de status", - "Jouer une radio mp3": "Tocar rádio mp3", - "pour lire une radio mp3 directement via une URL (accessible sur internet par exemple": "reproduzir uma rádio mp3 diretamente através de uma URL (acessível na internet por exemplo", - "Augmenter le volume": "Aumenta o volume", - "Diminuer le volume": "Diminuir o volume", - "de 1%": "a partir de 1%", - "Transition de volume": "Transição de volume", - "qui est très intéressante pour gérer les transitions de niveau de volume": "o que é muito útil para gerenciar transições de nível de volume", - "3 modes possible": "3 modos possíveis", - "Voir documentation pour plus d'information": "Consulte a documentação para obter mais informações", - "Loudness statut": "Status de volume", - "Loudness on": "Volume ativado", - "Loudness off": "Volume desligado", - "Fondu enchaîné statut": "Status de esmaecimento", - "Fondu enchaîné on": "Desaparecer", - "Fondu enchaîné off": "Desaparecer", - "Commandes tactiles statut": "Controles de toque de status", - "Commandes tactiles on": "Controles de toque ativados", - "Commandes tactiles off": "Controles de toque desativados", - "Balance statut": "Status do saldo", - "action\/curseur) et": "ação\/cursor) e", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite": "que gerencia o saldo de acordo com um valor entre -100 (extrema esquerda) e 100 (extrema direita", - "Graves statut": "Situação séria", - "qui gère les graves selon une valeur comprise entre -10 et 10": "que gerencia os graves de acordo com um valor entre -10 e 10", - "Aigus statut": "Status triplo", - "qui gèrent les aigus selon une valeur comprise entre -10 et 10": "qui gèrent les aigus selon une valeur comprise entre -10 et 10", - "Mode fête": "Moda de festa", - "Ajout de la commande": "Adicionando o comando", - "qui permet de grouper tous les Sonos ensemble": "que permite agrupar todos os Sonos", - "Mic statut": "Status do microfone", - "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro": "qui indique si le micro est activé ou non sur les Sonos équipés d'un micro", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "em Sonos equipados com bateria mostrando a porcentagem de carga da bateria", - "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non": "sur les Sonos équipés d'une batterie qui indique si la charge est en cours ou non", - "Prochaine alarme": "Próximo alarme", - "sur chaque Sonos donnant la date de la prochaine alarme programmée sur cette enceinte": "em cada Sonos informando a data do próximo alarme programado neste alto-falante", - "25\/04\/2024": "25\/04\/2024", - "Mise à jour de la documentation": "Atualização da documentação", - "Nettoyage des accents dans les noms de partage (non supportés par le plugin": "Nettoyage des accents dans les noms de partage (non supportés par le plugin", - "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom": "Suppression de la dépendance à PicoTTS (le plugin utilise le moteur global de TTS de Jeedom", - "Ajout Sonos Beam Gen 2": "Adicionado Sonos Beam Gen 2", - "15\/01\/2024": "15\/01\/2024", - "Préparation pour Jeedom 4.4": "Preparando-se para Jeedom 4.4", - "Ajout Sonos Move 2": "Adicionado Sonos Move 2", - "24\/08\/2023": "24\/08\/2023", - "Ajout Ikea Symfonisk Floor Lamp": "Adicionado abajur Ikea Symfonisk", - "25\/05\/2023": "25\/05\/2023", - "Ajout Sonos Era": "Adicionado Sonos Era", - "18\/10\/2022": "18\/10\/2022", - "Mise à jour liste des commandes pour Jeedom v4.3": "Atualizar lista de comandos para Jeedom v4.3", - "Ajout de la Sonos Ray": "Adicionado Sonos Ray", - "22\/03\/2022": "22\/03\/2022", - "Support de la nouvelle enceinte SYMFONISK": "Suporte para o novo alto-falante SYMFONISK", - "01\/02\/2022": "01\/02\/2022", - "Correction d'un bug sur le TTS": "Corrigido um bug no TTS", - "27\/01\/2022": "27\/01\/2022", - "Optimisations V4.2": "Otimizações da V4.2", - "14\/01\/2022": "14\/01\/2022", - "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK": "Ajout de la compatibilité avec la nouvelle enceinte SYMFONISK", - "27\/12\/2021": "27\/12\/2021", - "Ajout de la compatibilité avec la nouvelle Sonos One": "Ajout de la compatibilité avec la nouvelle Sonos One", - "09\/10\/2021": "10\/09\/2021", - "Ajout de la Sonos Five": "Adição dos Sonos Five", - "Ajout Sonos Roam": "Adicionando Sonos Roam", - "Ajout Symfonisk Cadre": "Adicionando Symfonisk Framework", - "Mise à jour immediate du volume en cas de changement par Jeedom, merci @Domochip": "Atualização de volume imediata em caso de mudança pela Jeedom, obrigado @Domochip", - "24\/11\/2020": "24\/11\/2020", - "Nouvelle présentation de la liste des objets": "Nova apresentação da lista de objetos", - "Ajout du tag \"Compatibilité V4": "Adição da tag \"compatibilidade V4", - "07\/08\/2020": "07\/08\/2020", - "Prise en charge du Sonos ARC": "Suporte Sonos ARC", - "24\/01\/2020": "24\/01\/2020", - "Prise en charge du Sonos One S22": "Suporte para Sonos One S22", - "11\/01\/2020": "01\/11\/2020", - "Prise en charge du Sonos Move": "Suporte para Sonos Move", - "Optimisation du code en cas de Sonos non connecté": "Otimização de código no caso de Sonos não conectado", - "16\/12\/2019": "16\/12\/2019", - "Correction de bug si un sonos n'est pas joignable": "Correção de bug se um sistema de som não puder ser alcançado", - "21\/10\/2017": "21\/10\/2017", - "Amélioration de la reprise suite à un TTS": "Melhoria na recuperação do TTS", - "15\/10\/2019": "15\/10\/2019", - "Prise en charge du Sonos port": "Suporte para porta Sonos", - "Amélioration du script d'installation des dépendances": "Script de instalação de dependência aprimorado", - "07\/10\/2019": "07\/07\/2019", - "Amélioration du script d'installation des dépendances (pourra permettre de corriger dans certain cas les soucis de TTS": "Melhoria do script de instalação de dependências (pode permitir corrigir em alguns casos os problemas de TTS", - "23\/09\/2019": "23\/09\/2019", - "01\/09\/2019": "01\/09\/2019", - "Prise en charge de l'enceinte lampe Ikea SYMFONISK": "Suporte de alto-falante para lâmpada Ikea SYMFONISK", - "12\/08\/2019": "12\/08\/2019", - "Prise en charge de l'enceinte étagere Ikea SYMFONISK": "Suporte para alto-falante de estante Ikea SYMFONISK", - "23\/04\/2019": "23\/04\/2019", - "Prise en charge des sonos one gen2": "Suporte para sonos gen2", - "17\/01\/2019": "17\/01\/2019", - "Correction de bugs dans le cas où les sonos ont été ajoutés manuellement": "Erros corrigidos no caso de os sistemas de som serem adicionados manualmente", - "15\/01\/2019": "15\/01\/2019", - "IMPORTANT NE MARCHE QUE AVEC PHP7, VOIR PAGE SANTE DE JEEDOM POUR VOTRE VERSION": "IMPORTANTE APENAS FUNCIONA COM PHP7, VEJA A PÁGINA DE SAÚDE DA JEEDOM PARA SUA VERSÃO", - "Réecriture complète du plugin": "Reescrita completa do plug-in", - "Prise en charge de la nouvelle api Sonos": "Suporte para a nova API Sonos", - "Prise en charge des sonos beam et One": "Suporte para sistemas de som Beam e One", - "Correction de nombreux bugs": "Correction de nombreux bugs", - "Optimisations globales": "Otimizações globais", - "Compatible PHP7 uniquement": "Apenas PHP7 compatível", - "Certaines fonctionnalités ont dû être retirées": "Alguns recursos tiveram que ser removidos", - "Ajout de la gestion des favoris sonos": "Adicionado gerenciamento dos favoritos dos sonos", - "Prise en charge des Sonos One et Playbase": "Suporte para Sonos One e Playbase", - "Correction de la langue avec PicoTTS": "Correção da língua com picotts", - "Ajout d'une commande \"Entrée de ligne": "Adicionando um comando \"entrada de linha\"", - "Mise à jour de la librairie de communication avec les Sonos": "Mise à jour de la librairie de communication avec les Sonos", - "Optimisation du chargement des playlists": "Carregamento otimizado de playlists", - "Ajout de picotts pour la génération du TTS en local": "Adição de picotts para geração de TTS local", - "Correction du bouton play\/pause lors de la mise à jour du widget": "Correção do botão reproduzir \/ pausar ao atualizar o widget", - " IMPORTANT.": " IMPORTANTE.", - " IMPORTANT?": " IMPORTANTE?", - "IMPORTANT ": "IMPORTANTE ", - " IMPORTANT]": " IMPORTANTE]", - "[IMPORTANT]": "[IMPORTANTE]", - "*IMPORTANT*": "*IMPORTANTE*", - " IMPORTANT*": " IMPORTANTE*", - " Station.": " .", - " Station?": " ?", - "Station ": " ", - " Station]": " ]", - "[Station]": "[]", - "*Station*": "**", - " Station*": " *", - " Attention.": " Atenção.", - " Attention?": " Atenção?", - "Attention ": "Atenção ", - " Attention]": " Atenção]", - "[Attention]": "[Atenção]", - "*Attention*": "*Atenção*", - " Attention*": " Atenção*", - " Optimisation.": " Otimização.", - " Optimisation?": " Otimização?", - "Optimisation ": "Otimização ", - " Optimisation]": " Otimização]", - "[Optimisation]": "[Otimização]", - "*Optimisation*": "*Otimização*", - " Optimisation*": " Otimização*", - " TV.": " Televisão.", - " TV?": " Televisão?", - "TV ": "Televisão ", - " TV]": " Televisão]", - "[TV]": "[Televisão]", - "*TV*": "*Televisão*", - " TV*": " Televisão*", - " Normal.": " Normal.", - " Normal?": " Normal?", - "Normal ": "Normal ", - " Normal]": " Normal]", - "[Normal]": "[Normal]", - "*Normal*": "*Normal*", - " Normal*": " Normal*", - " Statut.": " Status.", - " Statut?": " Status?", - "Statut ": "Status ", - " Statut]": " Status]", - "[Statut]": "[Status]", - "*Statut*": "*Status*", - " Statut*": " Status*", - " et.": " E.", - " et?": " E?", - "et ": "E ", - " et]": " E]", - "[et]": "[E]", - "*et*": "*E*", - " et*": " E*", - " LINEAR.": " LINEAR.", - " LINEAR?": " LINEAR?", - "LINEAR ": "LINEAR ", - " LINEAR]": " LINEAR]", - "[LINEAR]": "[LINEAR]", - "*LINEAR*": "*LINEAR*", - " LINEAR*": " LINEAR*", - " ALARM.": " ALARME.", - " ALARM?": " ALARME?", - "ALARM ": "ALARME ", - " ALARM]": " ALARME]", - "[ALARM]": "[ALARME]", - "*ALARM*": "*ALARME*", - " ALARM*": " ALARME*", - " AUTOPLAY.": " REPRODUÇÃO AUTOMÁTICA.", - " AUTOPLAY?": " REPRODUÇÃO AUTOMÁTICA?", - "AUTOPLAY ": "REPRODUÇÃO AUTOMÁTICA ", - " AUTOPLAY]": " REPRODUÇÃO AUTOMÁTICA]", - "[AUTOPLAY]": "[REPRODUÇÃO AUTOMÁTICA]", - "*AUTOPLAY*": "*REPRODUÇÃO AUTOMÁTICA*", - " AUTOPLAY*": " REPRODUÇÃO AUTOMÁTICA*", - " Balance.": " Equilíbrio.", - " Balance?": " Equilíbrio?", - "Balance ": "Equilíbrio ", - " Balance]": " Equilíbrio]", - "[Balance]": "[Equilíbrio]", - "*Balance*": "*Equilíbrio*", - " Balance*": " Equilíbrio*", - " Graves.": " Sepulturas.", - " Graves?": " Sepulturas?", - "Graves ": "Sepulturas ", - " Graves]": " Sepulturas]", - "[Graves]": "[Sepulturas]", - "*Graves*": "*Sepulturas*", - " Graves*": " Sepulturas*", - " Aigus.": " Agudos.", - " Aigus?": " Agudos?", - "Aigus ": "Agudos ", - " Aigus]": " Agudos]", - "[Aigus]": "[Agudos]", - "*Aigus*": "*Agudos*", - " Aigus*": " Agudos*", - " Batterie.": " Bateria.", - " Batterie?": " Bateria?", - "Batterie ": "Bateria ", - " Batterie]": " Bateria]", - "[Batterie]": "[Bateria]", - "*Batterie*": "*Bateria*", - " Batterie*": " Bateria*", - " Chargement.": " Carregando.", - " Chargement?": " Carregando?", - "Chargement ": "Carregando ", - " Chargement]": " Carregando]", - "[Chargement]": "[Carregando]", - "*Chargement*": "*Carregando*", - " Chargement*": " Carregando*", - " Optimisations.": " Otimizações.", - " Optimisations?": " Otimizações?", - "Optimisations ": "Otimizações ", - " Optimisations]": " Otimizações]", - "[Optimisations]": "[Otimizações]", - "*Optimisations*": "*Otimizações*", - " Optimisations*": " Otimizações*" - }, - "index.md": { - "Plugin Sonos": "Sonos plugin", - "Le plugin Sonos permet de piloter les Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... Il va vous permettre de voir l'état du\/des Sonos et d'effectuer des actions (lecture, pause, suivant, précédent, volume, choix d'une playlist…": "O plug-in Sonos permite controlar o Sonos Play 1, 3, 5, Sonos Connect, Sonos Connect AMP, Sonos Playbar, Ikea Symfonisk... , próximo, anterior, volume, escolha de uma playlist…", - "Configuration du plugin": "Configuração do plugin", - "La configuration est très simple, après téléchargement du plugin, il vous suffit de l'activer, d'installer les dépendances et de démarrer le démon": "A configuração é muito simples, após baixar o plugin basta ativá-lo, instalar as dependências e iniciar o daemon", - "Le plugin va rechercher les Sonos sur votre réseau et créer les équipements automatiquement": "O plugin irá procurar Sonos na sua rede e criar o equipamento automaticamente", - "De plus, s'il y a une correspondance entre les objets Jeedom et les pièces du Sonos, Jeedom affectera automatiquement les Sonos dans les bonnes pièces": "Além disso, se houver uma correspondência entre os objetos Jeedom e as salas Sonos, o Jeedom atribuirá automaticamente o Sonos às salas certas", - "Vos équipements Sonos doivent être joignable directement par la machine hébergeant Jeedom (broadcast \/ multicast possible sur le même réseau) et ils doivent être capable de joindre Jeedom en retour sur le port TCP 1400": "Seu equipamento Sonos deve ser acessível diretamente pela máquina que hospeda o Jeedom (transmissão \/ multicast possível na mesma rede) e deve ser capaz de acessar o Jeedom em troca da porta TCP 1400", - "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut": "Attention, ne configurer rien si vous ne maitrisez pas cette partie, testez d'abord la configuration par défaut", - "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`": "Dans le cas où vos enceintes Jeedom ne seraient pas sur le même sous-réseau que Jeedom, vous pouvez configurer celui-ci de préférence sous le format CIDR, par exemple `192.168.1.0\/24`", - "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet": "Il devrait également être possible d'entrer directement l'ip de l'une de vos enceintes afin de découvrir les autres à partir de celle-ci mais il est recommandé de configurer le réseau complet", - "Si plus tard vous ajoutez un Sonos, vous pouvez cliquer sur": "Se você adicionar um Sonos posteriormente, poderá clicar", - "dans la page des équipements ou redémarrer le démon": "na página do equipamento ou reinicie o daemon", - "Configurez ici le nom d'hôte de la machine (ou son IP), le nom du partage (sans le chemin, sans '\/') et le chemin vers le dossier": "Configure aqui o nome do host da máquina (ou seu IP), o nome do compartilhamento (sem caminho, sem '\/') e o caminho para a pasta", - "Nom d'utilisateur du partage": "Nome de usuário de compartilhamento", - "nom d'utilisateur pour accéder au partage": "nome de usuário para acessar o compartilhamento", - "Mot de passe du partage": "Compartilhando senha", - "mot de passe du partage": "Compartilhando senha", - "Configuration des équipements": "Configuração do equipamento", - "La configuration des équipements Sonos est accessible à partir du menu Plugins puis multimédia": "A configuração do equipamento Sonos pode ser acessada no menu Plugins e depois em multimídia", - "Vous retrouvez ici toute la configuration habituelle de votre équipement": "Aqui você encontra toda a configuração usual do seu equipamento", - "Nom du Sonos": "Nome do Sonos", - "nom de votre équipement Sonos": "nome do seu equipamento Sonos", - "Objet parent": "Objeto pai", - "indique l'objet parent auquel appartient l'équipement": "indica o objeto pai ao qual o equipamento pertence", - "permet de rendre votre équipement actif": "torna seu equipamento ativo", - "le rend visible sur le dashboard": "torna visível no painel", - "Modèle": "Modelo", - "Numéro de série": "Número de série", - "Adresse MAC": "Endereço MAC", - "Adresse IP": "Endereço de IP", - "Ainsi que des informations sur votre Sonos": "Bem como informações sobre o seu Sonos", - "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix": "Vous avez aussi la possibilité de désastiver la tuile de l'équipement pré-configurée (option active par défaut) et dans ce cas configurer cette tuile comme vous le souhaitez en utilisant les widgets du core ou vos propres widgets, d'afficher ou masquer les commandes de votre choix", - "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée": "La tuile pré-configurée ne tient pas compte du statut visible ou non des commandes, ni des options avancées d'affichage; La configuration de celle-ci ne peut pas être modifiée", - "Les commandes": "As ordens", - "Les commandes infos seront mises à jour en quasi temps réel (délai de quelques secondes maximum normalement) mais l'image de l'album en cours de lecture peut mettre un peu plus de temps à s'afficher sur le widget lors d'un changement de piste, ceci est parfaitement normal et indépendant du plugin": "Os controles de informações serão atualizados quase em tempo real (normalmente no máximo alguns segundos), mas a imagem do álbum atualmente sendo reproduzido pode demorar um pouco mais para ser exibida no widget durante uma mudança de faixa, isso é perfeitamente normal e independente do plugar", - "il doit récupérer l'image depuis une source externe (sur un Sonos ou sur internet) et cela prend parfois plusieurs secondes (en principe maximum une dizaine de secondes": "ele deve recuperar a imagem de uma fonte externa (em um Sonos ou na internet) e isso às vezes leva vários segundos (em princípio no máximo cerca de dez segundos", - "Commandes de volume & contrôle du Sonos": "Controles e controles de volume do Sonos", - "Ces commandes vont toujours contrôler l'équipement correspondant, y compris lorsque celui-ci est dans un groupe": "Esses comandos sempre controlarão o equipamento correspondente, inclusive quando ele estiver em grupo", - "de 0 à 100": "de 0 a 100", - "modifier le volume": "mude o volume", - "Volume statut": "Volume de status", - "niveau du volume (en %": "nível de volume (em %", - "Augmenter le volume": "Aumenta o volume", - "augmente le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "aumenta o volume em 1%; pode ser útil para integração com outros sistemas ou plugins", - "Diminuer le volume": "Diminuir o volume", - "diminue le volume de 1%; peut être utile pour l'intégration avec d'autres systèmes ou plugins": "diminui o volume em 1%; pode ser útil para integração com outros sistemas ou plugins", - "Transition de volume": "Transição de volume", - "permet d'effectuer des transitions de niveau de volume directement géré par l'enceinte Sonos, ce n'est pas le plugin qui s'en charge et donc ce n'est pas bloquant mais les délais ne sont pas configurable puisque défini par Sonos": "permite realizar transições de nível de volume gerenciadas diretamente pelo alto-falante Sonos, não é o plugin que cuida disso e portanto não está bloqueando mas os atrasos não são configuráveis desde definidos pela Sonos", - "Le type de transition et le volume cible doivent être choisi lors de l'exécution de la commande": "O tipo de transição e o volume alvo devem ser escolhidos ao executar o comando", - "Il existe 3 modes": "Existem 3 modos", - "transition linéaire depuis le volume actuel vers le volume cible (augmentation ou diminution), la vitesse est de 1": "transição linear do volume atual para o volume alvo (aumentar ou diminuir), a velocidade é 1", - "25 par seconde (une transition": "25 por segundo (uma transição", - "de 50% à 30% prendra 16s": "de 50% a 30% levará 16s", - "initialise le volume à 0, pause d'environ 30 secondes et ensuite augmente jusqu'au volume demandé à une vitesse de 2": "inicializa o volume em 0, pausa por cerca de 30 segundos e depois aumenta até o volume solicitado a uma velocidade de 2", - "5 par seconde (une transition": "5 por segundo (uma transição", - "de 0% à 10% prendra 4s": "de 0% a 10% levará 4s", - "initialise le volume à 0 et augmente rapidement jusqu'au volume demandé à une vitesse de 50 par seconde (un transition": "inicializa o volume para 0 e aumenta rapidamente para o volume solicitado a uma taxa de 50 por segundo (uma transição", - "de 0% à 50% prendra 1s": "de 0% a 50% levará 1s", - "Active le mode muet": "Ativar modo mudo", - "Non Muet": "Sem mudo", - "Désactive le mode muet": "Desativar mudo", - "Muet statut": "Status mudo", - "indique si on est en mode muet ou non": "indica se estamos no modo mudo ou não", - "Balance statut": "Status do saldo", - "action\/curseur) et": "ação\/cursor) e", - "qui gère la balance selon une valeur comprise entre -100 (tout à gauche) et 100 (tout à droite) pour les Sonos compatibles": "que gerencia o equilíbrio de acordo com um valor entre -100 (extrema esquerda) e 100 (extrema direita) para Sonos compatíveis", - "Graves statut": "Situação séria", - "qui gère les graves selon une valeur comprise entre -10 et 10": "que gerencia os graves de acordo com um valor entre -10 e 10", - "Aigus statut": "Status triplo", - "qui gère la aigus selon une valeur comprise entre -10 et 10": "que gerencia os agudos de acordo com um valor entre -10 e 10", - "Loudness statut": "Status de volume", - "Loudness on": "Volume ativado", - "Loudness off": "Volume desligado", - "contrôle le loudness": "controla o volume", - "pour basculer sur l'entrée": "para mudar para a entrada", - "sur les équipements compatibles": "em equipamentos compatíveis", - "Entrée audio analogique": "Entrada de áudio analógico", - "pour basculer sur l": "para mudar para", - "Led on": "O presente", - "Led off": "Partiu", - "Active et désactive la led, le voyant d'état": "Ativa e desativa o LED, a luz de status", - "Led statut": "LED de status", - "indique si le voyant d'état est allumé ou non": "indica se a luz de status está acesa ou não", - "Cette info n'est mise à jour qu'une fois par minute dans le cas où elle est modifiée hors Jeedom": "Esta informação só é atualizada uma vez por minuto caso seja modificada fora do Jeedom", - "Commandes tactiles on": "Controles de toque ativados", - "Commandes tactiles off": "Controles de toque desativados", - "Active et désactive les boutons physiques ou tactiles sur le Sonos": "Ativa e desativa botões físicos ou de toque no Sonos", - "Commandes tactiles statut": "Controles de toque de status", - "indique si les commandes tactiles sont activées ou pas": "indica se os controles de toque estão ativados ou não", - "Mic statut": "Status do microfone", - "qui indique si le micro est activé ou non sur les Sonos équipé d'un micro": "que indica se o microfone está ativado ou não em Sonos equipados com microfone", - "sur les Sonos équipés d'une batterie indiquant le pourcentage de charge de la batterie": "em Sonos equipados com bateria mostrando a porcentagem de carga da bateria", - "sur les Sonos équipés d'une batterie indiquant si la charge est en cours ou non": "em Sonos equipados com bateria indicando se o carregamento está ou não em andamento", - "Commandes de lecture": "Controles de reprodução", - "Ces commandes indiqueront et contrôleront la lecture en cours sur l'équipement ou sur le groupe si celui-ci est groupé et cela de façon transparente, vous ne devez pas vous préoccuper de savoir si l'équipement est groupé ou pas pour les utiliser": "Estes comandos irão indicar e controlar a reprodução atual no equipamento ou no grupo se estiver agrupado e isso de forma transparente, você não precisa se preocupar em saber se o equipamento está agrupado ou não para utilizá-los", - "Arrêté": "Parou", - "statut de lecteur traduit dans la langue configurée sous Jeedom": "status do leitor traduzido para o idioma configurado em Jeedom", - "Par exemple": "Por exemplo", - "Statut de lecture": "Status de leitura", - "PAUSED_PLAYBACK": "PAUSED_PLAYBACK", - "qui donne la valeur \"brut\" du statut de lecture": "que fornece o valor \"bruto\" do status de leitura", - "; plus adapté pour les scénarios": "; mais adequado para cenários", - "passer en lecture": "ler", - "mettre en pause": "pausar", - "arrêter la lecture": "pare de ler", - "Précédent": "Anterior", - "piste précédente": "faixa anterior", - "piste suivante": "próxima faixa", - "Aléatoire statut": "Status aleatório", - "indique si on est en mode aléatoire ou non": "indica se estamos no modo aleatório ou não", - "Aléatoire": "Aleatório", - "inverse le statut du mode aléatoire": "reverter o status do modo aleatório", - "Répéter statut": "Repita o status", - "indique si on est en mode répété ou non": "indica se estamos no modo de repetição ou não", - "Répéter": "Repetir", - "inverse le statut du mode \"répéter": "reverter o status do modo \"repetir\"", - "Fondu enchaîné statut": "Status de esmaecimento", - "Fondu enchaîné on": "Desaparecer", - "Fondu enchaîné off": "Desaparecer", - "Fondu enchaîné": "Crossfade", - "pour contrôler et activer ou non le": "controlar e ativar ou não o", - "Choisir mode de lecture": "Escolha o modo de leitura", - "permet de choisir parmi les possibilités suivantes": "permite que você escolha entre as seguintes possibilidades", - "répétition off, aléatoire off": "repetir, aleatório", - "Répéter tout": "Repita tudo", - "aléatoire off": "aleatório", - "Aléatoire et répéter tout": "Aleatório e repita tudo", - "Aléatoire sans répétition": "Aleatório sem repetição", - "Répéter le morceau": "Repetir música", - "Aléatoire et répéter le morceau": "Música aleatória e repetida", - "Je recommande d'utiliser cette commande-ci dans un scénario au lieu de": "Eu recomendo usar este comando em um cenário em vez de", - "&": "&", - "afin d'arriver dans la configuration désirée même si toutes agissent sur les mêmes paramètres": "para chegar à configuração desejada mesmo que todos atuem nos mesmos parâmetros", - "Cette commande est par contre le seul moyen de passer en mode": "Este comando é, no entanto, a única maneira de mudar para o modo", - "Mode de lecture": "Modo de leitura", - "donnant l'état actuel qui sera une des valeurs citées ci-dessus": "dando o estado atual que será um dos valores citados acima", - "Jouer playlist": "Reproduzir lista de reprodução", - "commande de type message permettant de lancer une playlist, il suffit dans le titre de mettre le nom de la playlist": "comando de tipo de mensagem para iniciar uma lista de reprodução, basta colocar o nome da lista no título", - "Dans un scénario, une liste de possibilité sera automatiquement affichée lorsque vous commencerez à taper": "Em um cenário, uma lista de possibilidades será exibida automaticamente quando você começar a digitar", - "Jouer favoris": "Reproduzir Favoritos", - "commande de type message permettant de lancer un favoris, il suffit dans le titre de mettre le nom du favori": "comando de tipo de mensagem para lançar um favorito, tudo o que você precisa fazer no título é colocar o nome do favorito", - "Jouer une radio": "Tocar rádio", - "celle ci doit être dans les radios favorites": "isso deve estar nas rádios favoritas", - "commande de type message permettant de lancer une radio, il suffit dans le titre de mettre le nom de la radio": "comando de tipo de mensagem para lançar uma estação de rádio, tudo o que você precisa fazer é colocar o nome da rádio no título", - "Ne fonctionne plus sur les modèles \"S2\", il est normal d'avoir une liste vide sur tous les modèles utilisant l'app Sonos S2": "Não funciona mais nos modelos \"S2\", é normal ter uma lista vazia em todos os modelos usando o aplicativo Sonos S2", - "Jouer une radio mp3": "Tocar rádio mp3", - "permet de lire une radio mp3 via une URL (par exemple depuis internet": "permite-lhe reproduzir uma rádio mp3 através de um URL (por exemplo da internet", - "Vous devez mettre un titre dans la zone": "Você deve colocar um título na caixa", - "et l'url (format http(s": "e o URL (formato http(s)", - "\/\/...mp3) dans la zone": "\/\/...mp3) na área", - "lien vers l'image de l'album": "link para a imagem do álbum", - "nom de l'album en cours de lecture": "nome do álbum atualmente sendo reproduzido", - "nom de l'artiste en cours de lecture": "nome do artista atualmente sendo reproduzido", - "nom de la piste en cours de lecture": "nome da faixa atualmente sendo reproduzida", - "permet de lire un texte sur le Sonos (voir partie TTS": "permite ler um texto no Sonos (consulte a parte TTS", - "Dans le titre vous pouvez mettre le volume et dans le message, le message à lire": "No título, você pode definir o volume e, na mensagem, a mensagem a ser lida", - "Les playlists et les favoris doivent être créés via l'app Sonos (sur mobile ou sur ordi) ensuite il faut faire une synchronisation pour mettre à jour les équipements et pouvoir les utiliser dans un scénario": "As listas de reprodução e os favoritos devem ser criados através do aplicativo Sonos (no celular ou computador) e depois a sincronização deve ser feita para atualizar o equipamento e poder utilizá-lo em um cenário", - "Commandes pour gérer les groupes": "Comandos para gerenciar grupos", - "Ces commandes agissent toujours sur l'équipement correspondant": "Esses comandos sempre atuam no equipamento correspondente", - "Groupe statut": "Status do grupo", - "indique si l'équipement est groupé ou non": "indica se o equipamento está agrupado ou não", - "Nom du groupe": "Nome do grupo", - "dans le cas où l'équipement est groupé, donne le nom du groupe": "se o equipamento estiver agrupado, forneça o nome do grupo", - "Rejoindre un groupe": "Junte-se a um grupo", - "permet de rejoindre le groupe du haut-parleur (un Sonos) donné (pour associer 2 Sonos par exemple": "permite que você se junte ao grupo de um determinado alto-falante (um Sonos) (para associar 2 Sonos, por exemplo", - "Il faut mettre le nom de la pièce du sonos à rejoindre": "Você deve inserir o nome da sala do sistema de som para ingressar", - "Cela peut-être n'importe quel membre d'un groupe existant, cela ne doit pas nécessairement être le coordinateur du groupe, ou un Sonos isolé": "Pode ser qualquer membro de um grupo existente, não precisa ser o coordenador do grupo ou um Sonos isolado", - "Quitter le groupe": "Sair do grupo", - "permet de quitter le groupe": "permite que você saia do grupo", - "Mode fête": "Moda de festa", - "permet de grouper tous les Sonos ensemble": "permite agrupar todos os Sonos", - "Le TTS (text-to-speech) vers le Sonos nécessite d'avoir un partage SAMBA sur le réseau (imposé par Sonos, pas moyen de faire autrement": "TTS (texto para fala) para Sonos requer compartilhamento SAMBA na rede (imposto pela Sonos, não há como fazer de outra forma", - "Il faut vous donc un NAS ou équivalent sur le réseau": "Portanto, você precisa de um NAS ou equivalente na rede", - "La configuration est assez simple il faut mettre le nom ou l'ip du NAS (attention à bien mettre la même chose que ce qui est déclaré sur Sonos) et le chemin vers le dossier qui doit contenir les fichiers audio ainsi que le nom d'utilisateur et le mot de passe (attention l'utilisateur doit avoir les droits en écriture": "A configuração é bastante simples, você deve inserir o nome ou IP do NAS (cuidado para colocar o mesmo que está declarado no Sonos) e o caminho para a pasta que deve conter os arquivos de áudio bem como o nome do usuário e senha (observe que o usuário deve ter direitos de gravação", - "La création du fichier audio est géré par le core de Jeedom": "A criação do arquivo de áudio é gerenciada pelo núcleo Jeedom", - "la langue sera celle configurée dans Jeedom et le moteur TTS utilisé peut également être sélectionné dans la configuration Jeedom": "o idioma será aquele configurado no Jeedom e o motor TTS utilizado também pode ser selecionado na configuração do Jeedom", - "Lors de l'utilisation du TTS (commande": "Ao usar TTS (comando", - "le plugin va effectuer les actions suivantes": "o plugin executará as seguintes ações", - "génération du fichier audio contenant le message avec le support du core de Jeedom": "geração do arquivo de áudio contendo a mensagem com suporte principal Jeedom", - "écriture du fichier sur le partage SAMBA": "gravando o arquivo no compartilhamento SAMBA", - "forcer la lecture en mode \"Normal\", sans répétition": "forçar a reprodução no modo “Normal”, sem repetição", - "forcer le mode \"non muet\" (uniquement sur l'équipement, pas sur tout le groupe": "forçar o modo “ativar som” (apenas no equipamento, não em todo o grupo", - "Modification du volume sur la valeur choisie lors de l'utilisation de la commande (uniquement sur l'équipement, pas sur tout le groupe": "Alterar o volume para o valor escolhido ao utilizar o comando (apenas no equipamento, não em todo o grupo", - "lecture du message": "lendo mensagem", - "restauration de l'état du Sonos avant la lecture (donc le mode de lecture, muet ou pas, répétition ou pas...) et redémarrage du flux si le Sonos était en cours de lecture": "restaurar o estado do Sonos antes da reprodução (ou seja, o modo de reprodução, mudo ou não, repetir ou não, etc.) e reiniciar o stream se o Sonos estiver reproduzindo", - "Il faut absolument mettre un mot de passe pour que cette procédure fonctionne": "É absolutamente necessário colocar uma senha para que este procedimento funcione", - "Il faut aussi absolument un sous-répertoire pour que le fichier vocal soit correctement créé": "Um subdiretório também é absolutamente necessário para que o arquivo de voz seja criado corretamente", - "Il ne faut surtout pas d'accent dans le nom du partage ou le dossier, d'espace ou de caractères spéciaux": "Acima de tudo, não deve haver acentos no nome do compartilhamento ou pasta, espaços ou caracteres especiais", - "Les messages trop longs ne peuvent être transmis en TTS (la limite dépend du fournisseur de TTS, en général environ 100 caractères": "Mensagens muito longas não podem ser transmitidas em TTS (o limite depende do provedor de TTS, geralmente em torno de 100 caracteres", - "Exemple de configuration": "Exemplo de configuração", - "Côté NAS, la config suivante doit être effectuée": "No lado NAS, a seguinte configuração deve ser realizada", - "le dossier": "a pasta", - "est partagé et il contient un dossier": "é compartilhado e contém uma pasta", - "a un accès lecture\/écriture (nécessaire pour Jeedom": "tem acesso de leitura\/gravação (necessário para Jeedom", - "a un accès en lecture seule (nécessaire pour les Sonos": "tem acesso somente leitura (necessário para Sonos", - "Côté Plugin Sonos, la config": "No lado do plug-in Sonos, a configuração", - "Champ 1": "Campo 1", - "192.168.xxx.yyy": "192.168.xxx.aaa", - "Champ 2": "Campo 2", - "Champ 3": "Campo 3", - "Nom d'utilisateur": "Nome de usuário", - "dans l'exemple) et son mot de passe…​": "no exemplo) e sua senha…​", - "Côté Bibliothèque Sonos (appli PC": "Lado da Biblioteca Sonos (aplicativo para PC", - "le chemin est": "o caminho é", - "\/\/192.168.xxx.yyy\/Jeedom\/TTS": "\/\/192.168.xxx.aaa\/Jeedom\/TTS", - "l'utilisateur sera": "o usuário será", - "dans cet exemple) + mot de passe": "neste exemplo) + senha", - "Le panel": "O painel", - "Le plugin Sonos met aussi à disposition un panel qui rassemble tous vos Sonos": "O plugin Sonos também fornece um painel que reúne todos os seus Sonos", - "Disponible à partir du menu Accueil → Sonos Controller": "Disponível no menu Início → Sonos Controller", - "Pour avoir le panel il faut l'avoir activé dans la configuration du plugin": "Para ter o painel você deve tê-lo ativado na configuração do plugin", - " Important.": " IMPORTANTE.", - " Important?": " IMPORTANTE?", - "Important ": "IMPORTANTE ", - " Important]": " IMPORTANTE]", - "[Important]": "[IMPORTANTE]", - "*Important*": "*IMPORTANTE*", - " Important*": " IMPORTANTE*", - " Synchroniser.": " Sincronizar.", - " Synchroniser?": " Sincronizar?", - "Synchroniser ": "Sincronizar ", - " Synchroniser]": " Sincronizar]", - "[Synchroniser]": "[Sincronizar]", - "*Synchroniser*": "*Sincronizar*", - " Synchroniser*": " Sincronizar*", - " Partage.": " Partilha.", - " Partage?": " Partilha?", - "Partage ": "Partilha ", - " Partage]": " Partilha]", - "[Partage]": "[Partilha]", - "*Partage*": "*Partilha*", - " Partage*": " Partilha*", - " Activer.": " Ativar.", - " Activer?": " Ativar?", - "Activer ": "Ativar ", - " Activer]": " Ativar]", - "[Activer]": "[Ativar]", - "*Activer*": "*Ativar*", - " Activer*": " Ativar*", - " Visible.": " Visivél.", - " Visible?": " Visivél?", - "Visible ": "Visivél ", - " Visible]": " Visivél]", - "[Visible]": "[Visivél]", - "*Visible*": "*Visivél*", - " Visible*": " Visivél*", - " Versions.": " Lançamentos.", - " Versions?": " Lançamentos?", - "Versions ": "Lançamentos ", - " Versions]": " Lançamentos]", - "[Versions]": "[Lançamentos]", - "*Versions*": "*Lançamentos*", - " Versions*": " Lançamentos*", - " Identifiant.": " Identificador.", - " Identifiant?": " Identificador?", - "Identifiant ": "Identificador ", - " Identifiant]": " Identificador]", - "[Identifiant]": "[Identificador]", - "*Identifiant*": "*Identificador*", - " Identifiant*": " Identificador*", - " et.": " E.", - " et?": " E?", - "et ": "E ", - " et]": " E]", - "[et]": "[E]", - "*et*": "*E*", - " et*": " E*", - " Volume.": " Volume.", - " Volume?": " Volume?", - "Volume ": "Volume ", - " Volume]": " Volume]", - "[Volume]": "[Volume]", - "*Volume*": "*Volume*", - " Volume*": " Volume*", - " LINEAR.": " LINEAR.", - " LINEAR?": " LINEAR?", - "LINEAR ": "LINEAR ", - " LINEAR]": " LINEAR]", - "[LINEAR]": "[LINEAR]", - "*LINEAR*": "*LINEAR*", - " LINEAR*": " LINEAR*", - " ALARM.": " ALARME.", - " ALARM?": " ALARME?", - "ALARM ": "ALARME ", - " ALARM]": " ALARME]", - "[ALARM]": "[ALARME]", - "*ALARM*": "*ALARME*", - " ALARM*": " ALARME*", - " AUTOPLAY.": " REPRODUÇÃO AUTOMÁTICA.", - " AUTOPLAY?": " REPRODUÇÃO AUTOMÁTICA?", - "AUTOPLAY ": "REPRODUÇÃO AUTOMÁTICA ", - " AUTOPLAY]": " REPRODUÇÃO AUTOMÁTICA]", - "[AUTOPLAY]": "[REPRODUÇÃO AUTOMÁTICA]", - "*AUTOPLAY*": "*REPRODUÇÃO AUTOMÁTICA*", - " AUTOPLAY*": " REPRODUÇÃO AUTOMÁTICA*", - " Muet.": " Silenciar.", - " Muet?": " Silenciar?", - "Muet ": "Silenciar ", - " Muet]": " Silenciar]", - "[Muet]": "[Silenciar]", - "*Muet*": "*Silenciar*", - " Muet*": " Silenciar*", - " Balance.": " Equilíbrio.", - " Balance?": " Equilíbrio?", - "Balance ": "Equilíbrio ", - " Balance]": " Equilíbrio]", - "[Balance]": "[Equilíbrio]", - "*Balance*": "*Equilíbrio*", - " Balance*": " Equilíbrio*", - " Graves.": " Sepulturas.", - " Graves?": " Sepulturas?", - "Graves ": "Sepulturas ", - " Graves]": " Sepulturas]", - "[Graves]": "[Sepulturas]", - "*Graves*": "*Sepulturas*", - " Graves*": " Sepulturas*", - " Aigus.": " Agudos.", - " Aigus?": " Agudos?", - "Aigus ": "Agudos ", - " Aigus]": " Agudos]", - "[Aigus]": "[Agudos]", - "*Aigus*": "*Agudos*", - " Aigus*": " Agudos*", - " TV.": " Televisão.", - " TV?": " Televisão?", - "TV ": "Televisão ", - " TV]": " Televisão]", - "[TV]": "[Televisão]", - "*TV*": "*Televisão*", - " TV*": " Televisão*", - " Line-in.": " Entrada de linha.", - " Line-in?": " Entrada de linha?", - "Line-in ": "Entrada de linha ", - " Line-in]": " Entrada de linha]", - "[Line-in]": "[Entrada de linha]", - "*Line-in*": "*Entrada de linha*", - " Line-in*": " Entrada de linha*", - " Batterie.": " Bateria.", - " Batterie?": " Bateria?", - "Batterie ": "Bateria ", - " Batterie]": " Bateria]", - "[Batterie]": "[Bateria]", - "*Batterie*": "*Bateria*", - " Batterie*": " Bateria*", - " Chargement.": " Carregando.", - " Chargement?": " Carregando?", - "Chargement ": "Carregando ", - " Chargement]": " Carregando]", - "[Chargement]": "[Carregando]", - "*Chargement*": "*Carregando*", - " Chargement*": " Carregando*", - " Statut.": " Estado.", - " Statut?": " Estado?", - "Statut ": "Estado ", - " Statut]": " Estado]", - "[Statut]": "[Estado]", - "*Statut*": "*Estado*", - " Statut*": " Estado*", - " Lecture.": " Leitura.", - " Lecture?": " Leitura?", - "Lecture ": "Leitura ", - " Lecture]": " Leitura]", - "[Lecture]": "[Leitura]", - "*Lecture*": "*Leitura*", - " Lecture*": " Leitura*", - " Pause.": " Pausa.", - " Pause?": " Pausa?", - "Pause ": "Pausa ", - " Pause]": " Pausa]", - "[Pause]": "[Pausa]", - "*Pause*": "*Pausa*", - " Pause*": " Pausa*", - " PLAYING.": " JOGANDO.", - " PLAYING?": " JOGANDO?", - "PLAYING ": "JOGANDO ", - " PLAYING]": " JOGANDO]", - "[PLAYING]": "[JOGANDO]", - "*PLAYING*": "*JOGANDO*", - " PLAYING*": " JOGANDO*", - " STOPPED.": " PAROU.", - " STOPPED?": " PAROU?", - "STOPPED ": "PAROU ", - " STOPPED]": " PAROU]", - "[STOPPED]": "[PAROU]", - "*STOPPED*": "*PAROU*", - " STOPPED*": " PAROU*", - " Stop.": " Pare.", - " Stop?": " Pare?", - "Stop ": "Pare ", - " Stop]": " Pare]", - "[Stop]": "[Pare]", - "*Stop*": "*Pare*", - " Stop*": " Pare*", - " Suivant.": " Seguinte.", - " Suivant?": " Seguinte?", - "Suivant ": "Seguinte ", - " Suivant]": " Seguinte]", - "[Suivant]": "[Seguinte]", - "*Suivant*": "*Seguinte*", - " Suivant*": " Seguinte*", - " Normal.": " Normal.", - " Normal?": " Normal?", - "Normal ": "Normal ", - " Normal]": " Normal]", - "[Normal]": "[Normal]", - "*Normal*": "*Normal*", - " Normal*": " Normal*", - " ou.": " Ou.", - " ou?": " Ou?", - "ou ": "Ou ", - " ou]": " Ou]", - "[ou]": "[Ou]", - "*ou*": "*Ou*", - " ou*": " Ou*", - " ATTENTION.": " Atenção.", - " ATTENTION?": " Atenção?", - "ATTENTION ": "Atenção ", - " ATTENTION]": " Atenção]", - "[ATTENTION]": "[Atenção]", - "*ATTENTION*": "*Atenção*", - " ATTENTION*": " Atenção*", - " Titre.": " Título.", - " Titre?": " Título?", - "Titre ": "Título ", - " Titre]": " Título]", - "[Titre]": "[Título]", - "*Titre*": "*Título*", - " Titre*": " Título*", - " Message.": " Mensagem.", - " Message?": " Mensagem?", - "Message ": "Mensagem ", - " Message]": " Mensagem]", - "[Message]": "[Mensagem]", - "*Message*": "*Mensagem*", - " Message*": " Mensagem*", - " Image.": " Imagem.", - " Image?": " Imagem?", - "Image ": "Imagem ", - " Image]": " Imagem]", - "[Image]": "[Imagem]", - "*Image*": "*Imagem*", - " Image*": " Imagem*", - " Album.": " Album.", - " Album?": " Album?", - "Album ": "Album ", - " Album]": " Album]", - "[Album]": "[Album]", - "*Album*": "*Album*", - " Album*": " Album*", - " Artiste.": " Artista.", - " Artiste?": " Artista?", - "Artiste ": "Artista ", - " Artiste]": " Artista]", - "[Artiste]": "[Artista]", - "*Artiste*": "*Artista*", - " Artiste*": " Artista*", - " Piste.": " Track.", - " Piste?": " Track?", - "Piste ": "Track ", - " Piste]": " Track]", - "[Piste]": "[Track]", - "*Piste*": "*Track*", - " Piste*": " Track*", - " Dire.": " Para dizer.", - " Dire?": " Para dizer?", - "Dire ": "Para dizer ", - " Dire]": " Para dizer]", - "[Dire]": "[Para dizer]", - "*Dire*": "*Para dizer*", - " Dire*": " Para dizer*", - " Hint.": " Dica.", - " Hint?": " Dica?", - "Hint ": "Dica ", - " Hint]": " Dica]", - "[Hint]": "[Dica]", - "*Hint*": "*Dica*", - " Hint*": " Dica*", - " TTS.": " TTS.", - " TTS?": " TTS?", - "TTS ": "TTS ", - " TTS]": " TTS]", - "[TTS]": "[TTS]", - "*TTS*": "*TTS*", - " TTS*": " TTS*", - " IMPORTANT.": " IMPORTANTE.", - " IMPORTANT?": " IMPORTANTE?", - "IMPORTANT ": "IMPORTANTE ", - " IMPORTANT]": " IMPORTANTE]", - "[IMPORTANT]": "[IMPORTANTE]", - "*IMPORTANT*": "*IMPORTANTE*", - " IMPORTANT*": " IMPORTANTE*", - " Jeedom.": " Jeedom.", - " Jeedom?": " Jeedom?", - "Jeedom ": "Jeedom ", - " Jeedom]": " Jeedom]", - "[Jeedom]": "[Jeedom]", - "*Jeedom*": "*Jeedom*", - " Jeedom*": " Jeedom*", - " jeedom.": " Jeedom.", - " jeedom?": " Jeedom?", - "jeedom ": "Jeedom ", - " jeedom]": " Jeedom]", - "[jeedom]": "[Jeedom]", - "*jeedom*": "*Jeedom*", - " jeedom*": " Jeedom*", - " l'utilisateur.": " o usuário.", - " l'utilisateur?": " o usuário?", - "l'utilisateur ": "o usuário ", - " l'utilisateur]": " o usuário]", - "[l'utilisateur]": "[o usuário]", - "*l'utilisateur*": "*o usuário*", - " l'utilisateur*": " o usuário*", - " sonos.": " seu osso.", - " sonos?": " seu osso?", - "sonos ": "seu osso ", - " sonos]": " seu osso]", - "[sonos]": "[seu osso]", - "*sonos*": "*seu osso*", - " sonos*": " seu osso*" - } -} \ No newline at end of file diff --git a/docs/js/custom.jeedom.js b/docs/js/custom.jeedom.js deleted file mode 100644 index 602819f..0000000 --- a/docs/js/custom.jeedom.js +++ /dev/null @@ -1,164 +0,0 @@ -/****************************************************************** -*** -*** Fonction customJS permet des modification du thème pour la -*** doc github -*** -*** Paramètre optionelle(s) -*** - numTitre : true (defaut) peux prendre false, permet d'ajouter -*** les numéro de chapitre au titre des chapitre et sous titre -*** - menuType : 1 (defaut) permet de choisir pour le type de menu -*** pour le moment il ni as qu'une seule version -*** - linkSommaire : permet de choisir le type de lien en version -*** mobile pour le retrous en haut de page -********************************************************************/ -(function($) { - $.fn.customJS = function(settings) { - /*** Configuration par défaut ***/ - var config = { - menuType: 1, - numTitre: true, - linkSommaire : 'link' - }; - - /*** Chargement de paramètre user ***/ - if (settings) { - $.extend(config, settings); - } - - var contTitres = $(this); - - /*** Ajout des numéros de chapitre au titre des chapitres et leut sous titres ***/ - if(config.numTitre){ - var i = 1, j = 1; - $('h1, h2', contTitres).each(function(){ - if($(this)[0].tagName.toLowerCase() == 'h1'){ - $('#'+$(this).attr('id')).text(i + '. ' + $(this).text()); - i++; - } - if($(this)[0].tagName.toLowerCase() == 'h2'){ - $('#'+$(this).attr('id')).text( (i-1) + '.' + j + ' ' + $(this).text()); - j++; - }else{ - j = 1; - } - }); - } - - /*** Rend clicable le titre du sommaire pour un retour de scroll à 0 ***/ - $('#toctitle h2').wrap( '').on('clic', function(){ - $('#main_content').scrollTop(0); - }); - - /*** effet sur scroll du header ***/ - if($('.toctoggle:visible').length == 0){ - var header = $('.page-header')[0]; - var contenu = $('#main_content')[0]; - var menu = $('#menu-sommaire')[0]; - - /* Fonction scrollY pour une compatibilité avec tout les nav*/ - var scrollY = function(){ - var supportPageOffset = window.pageXOffset !== undefined; - var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); - return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; - } - var top = header.getBoundingClientRect().top + scrollY() + 100; - $('#menu-sommaire').height( $(window).height() - $('.page-header').height() ); - - - /*Fonction executé au scroll*/ - var onScroll = function(){ - var isClassScroll = header.classList.contains('header-min'); - if(scrollY() > top && !isClassScroll){ - header.classList.add('header-min'); - $('#logo_jeedom',header).removeClass('animLogoJeedomHaut'); - contenu.classList.add('contenu-main-min'); - menu.classList.add('menu-header-min'); - $('#menu-sommaire').height( $(window).height() - $('.page-header').height() ); - }else if(scrollY() < top && isClassScroll){ - header.classList.remove('header-min'); - $('#logo_jeedom',header).addClass('animLogoJeedomHaut'); - contenu.classList.remove('contenu-main-min'); - menu.classList.remove('menu-header-min'); - $('#menu-sommaire').height( $(window).height()-$('.page-header').height() ); - } - } - window.addEventListener('scroll', onScroll); - } - - /*** Ajout des liens retour au sommaire ***/ - if(config.linkSommaire == 'link'){ - $('#main_content h1:gt(0), #main_content h2').before('

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 Date: Mon, 26 Jan 2026 10:08:17 +0100 Subject: [PATCH 04/28] adapt changelog --- docs/fr_FR/changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/fr_FR/changelog.md b/docs/fr_FR/changelog.md index 8c0f7aa..01ec355 100644 --- a/docs/fr_FR/changelog.md +++ b/docs/fr_FR/changelog.md @@ -4,6 +4,10 @@ > >Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte +# 26-01-2026 + +- Ajout de l'image pour *Ikea Table Lamp* + # 19-01-2026 - Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom From 6e379e0609d271db3372e9dd5497302f71083008 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Mon, 26 Jan 2026 10:08:31 +0100 Subject: [PATCH 05/28] Update changelog date for Ikea Table Lamp image addition --- docs/fr_FR/changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/fr_FR/changelog.md b/docs/fr_FR/changelog.md index 01ec355..892a534 100644 --- a/docs/fr_FR/changelog.md +++ b/docs/fr_FR/changelog.md @@ -4,7 +4,7 @@ > >Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte -# 26-01-2026 +# 27-01-2026 - Ajout de l'image pour *Ikea Table Lamp* From c6b1bd3de4f9b9f1fdb5f014964b52c20535ba4c Mon Sep 17 00:00:00 2001 From: Jenkins Date: Tue, 27 Jan 2026 00:19:43 +0000 Subject: [PATCH 06/28] [Jenkins] Updated translation --- docs/de_DE/changelog.md | 4 ++++ docs/en_US/changelog.md | 4 ++++ docs/es_ES/changelog.md | 4 ++++ docs/i18n/de_DE.json | 3 +++ docs/i18n/en_US.json | 3 +++ docs/i18n/es_ES.json | 3 +++ docs/i18n/fr_FR.json | 3 +++ docs/i18n/pt_PT.json | 3 +++ docs/pt_PT/changelog.md | 4 ++++ 9 files changed, 31 insertions(+) diff --git a/docs/de_DE/changelog.md b/docs/de_DE/changelog.md index c157985..04ee870 100644 --- a/docs/de_DE/changelog.md +++ b/docs/de_DE/changelog.md @@ -4,6 +4,10 @@ > >Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt +# + +- ** + # 19.01.2026 - Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom diff --git a/docs/en_US/changelog.md b/docs/en_US/changelog.md index 8077144..2fcc067 100644 --- a/docs/en_US/changelog.md +++ b/docs/en_US/changelog.md @@ -4,6 +4,10 @@ > >As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text +# + +- ** + # 19-01-2026 - Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom diff --git a/docs/es_ES/changelog.md b/docs/es_ES/changelog.md index 920593b..6fadd90 100644 --- a/docs/es_ES/changelog.md +++ b/docs/es_ES/changelog.md @@ -4,6 +4,10 @@ > >Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto +# + +- ** + # 19-01-2026 - Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom diff --git a/docs/i18n/de_DE.json b/docs/i18n/de_DE.json index bcef63f..30e2611 100644 --- a/docs/i18n/de_DE.json +++ b/docs/i18n/de_DE.json @@ -2,6 +2,9 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos Controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt", + "27-01-2026": "", + "Ikea Table Lamp": "", + "Ajout de l'image pour": "", "19-01-2026": "19.01.2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", diff --git a/docs/i18n/en_US.json b/docs/i18n/en_US.json index 4edd524..1765122 100644 --- a/docs/i18n/en_US.json +++ b/docs/i18n/en_US.json @@ -2,6 +2,9 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text", + "27-01-2026": "", + "Ikea Table Lamp": "", + "Ajout de l'image pour": "", "19-01-2026": "19-01-2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", diff --git a/docs/i18n/es_ES.json b/docs/i18n/es_ES.json index caca736..ac2903b 100644 --- a/docs/i18n/es_ES.json +++ b/docs/i18n/es_ES.json @@ -2,6 +2,9 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto", + "27-01-2026": "", + "Ikea Table Lamp": "", + "Ajout de l'image pour": "", "19-01-2026": "19-01-2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", diff --git a/docs/i18n/fr_FR.json b/docs/i18n/fr_FR.json index c9156b7..65b2ecc 100644 --- a/docs/i18n/fr_FR.json +++ b/docs/i18n/fr_FR.json @@ -3,6 +3,9 @@ "Changelog Sonos controller": "Changelog Sonos controller", "IMPORTANT": "IMPORTANT", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte", + "27-01-2026": "27-01-2026", + "Ikea Table Lamp": "Ikea Table Lamp", + "Ajout de l'image pour": "Ajout de l'image pour", "19-01-2026": "19-01-2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", diff --git a/docs/i18n/pt_PT.json b/docs/i18n/pt_PT.json index a145e22..35f46c8 100644 --- a/docs/i18n/pt_PT.json +++ b/docs/i18n/pt_PT.json @@ -2,6 +2,9 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto", + "27-01-2026": "", + "Ikea Table Lamp": "", + "Ajout de l'image pour": "", "19-01-2026": "19-01-2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", diff --git a/docs/pt_PT/changelog.md b/docs/pt_PT/changelog.md index 1493c0c..9e05937 100644 --- a/docs/pt_PT/changelog.md +++ b/docs/pt_PT/changelog.md @@ -4,6 +4,10 @@ > >Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto +# + +- ** + # 19-01-2026 - Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom From d7590f3677364aa83b14335ff57776bfdb7346f4 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Fri, 10 Apr 2026 17:25:25 +0200 Subject: [PATCH 07/28] Add channel command --- core/class/sonos3.class.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/class/sonos3.class.php b/core/class/sonos3.class.php index 0c2d93e..853c930 100644 --- a/core/class/sonos3.class.php +++ b/core/class/sonos3.class.php @@ -307,6 +307,7 @@ public static function updateSpeakers($speakers) { $changed = $eqLogic->checkAndUpdateCmd('track_artist', $data['media']['artist']) || $changed; $changed = $eqLogic->checkAndUpdateCmd('track_title', $data['media']['title']) || $changed; $changed = $eqLogic->checkAndUpdateCmd('track_image', $data['media']['image_url']) || $changed; + $changed = $eqLogic->checkAndUpdateCmd('channel', $data['media']['channel']) || $changed; $changed = $eqLogic->checkAndUpdateCmd('group_state', $data['grouped']) || $changed; $changed = $eqLogic->checkAndUpdateCmd('group_name', $data['group_name']) || $changed; $changed = $eqLogic->checkAndUpdateCmd('next_alarm', $data['next_alarm']) || $changed; @@ -841,6 +842,17 @@ public function createCommands() { $track_image->save(); } + $channel = $this->getCmd('info', 'channel'); + if (!is_object($channel)) { + $channel = new sonos3Cmd(); + $channel->setLogicalId('channel'); + $channel->setName(__('Station', __FILE__)); + $channel->setType('info'); + $channel->setSubType('string'); + $channel->setEqLogic_id($this->getId()); + $channel->save(); + } + $play_playlist = $this->getCmd(null, 'play_playlist'); if (!is_object($play_playlist)) { $play_playlist = new sonos3Cmd(); From d01d49e825de8479027d925db9852e9e2d2519f7 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Fri, 10 Apr 2026 17:28:52 +0200 Subject: [PATCH 08/28] Add info command for current radio station in changelog --- docs/fr_FR/changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/fr_FR/changelog.md b/docs/fr_FR/changelog.md index 892a534..fa09030 100644 --- a/docs/fr_FR/changelog.md +++ b/docs/fr_FR/changelog.md @@ -4,6 +4,10 @@ > >Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte +# 11-04-2026 + +- Ajout d'une commande info **Station** qui indique la station radio en cours de lecture (si l'info est disponible) + # 27-01-2026 - Ajout de l'image pour *Ikea Table Lamp* From 39d511e0ec96db2ed1be17fe00de9723ddbe2394 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Fri, 10 Apr 2026 23:21:56 +0000 Subject: [PATCH 09/28] [Jenkins] Updated translation --- core/i18n/de_DE.json | 1 + core/i18n/en_US.json | 1 + core/i18n/es_ES.json | 1 + core/i18n/fr_FR.json | 1 + core/i18n/id_ID.json | 1 + core/i18n/it_IT.json | 1 + core/i18n/ja_JP.json | 1 + core/i18n/pt_PT.json | 1 + core/i18n/ru_RU.json | 1 + core/i18n/tr.json | 1 + docs/de_DE/changelog.md | 6 +++++- docs/en_US/changelog.md | 6 +++++- docs/es_ES/changelog.md | 6 +++++- docs/i18n/de_DE.json | 17 +++++++++++++---- docs/i18n/en_US.json | 17 +++++++++++++---- docs/i18n/es_ES.json | 17 +++++++++++++---- docs/i18n/fr_FR.json | 5 ++++- docs/i18n/pt_PT.json | 17 +++++++++++++---- docs/pt_PT/changelog.md | 6 +++++- 19 files changed, 86 insertions(+), 21 deletions(-) diff --git a/core/i18n/de_DE.json b/core/i18n/de_DE.json index a142fd6..a6ca0cc 100644 --- a/core/i18n/de_DE.json +++ b/core/i18n/de_DE.json @@ -119,6 +119,7 @@ "Artiste": "Künstler", "Album": "Album", "Image": "Bild", + "Station": "Station", "Jouer playlist": "Playlist abspielen", "Titre de la playlist": "Titel der Wiedergabeliste", "Jouer favoris": "Favoriten spielen", diff --git a/core/i18n/en_US.json b/core/i18n/en_US.json index a59ffed..210e285 100644 --- a/core/i18n/en_US.json +++ b/core/i18n/en_US.json @@ -119,6 +119,7 @@ "Artiste": "Artist", "Album": "Album", "Image": "Picture", + "Station": "Station", "Jouer playlist": "Play Playlist", "Titre de la playlist": "Playlist title", "Jouer favoris": "Play Favorites", diff --git a/core/i18n/es_ES.json b/core/i18n/es_ES.json index d05d9e7..f766928 100644 --- a/core/i18n/es_ES.json +++ b/core/i18n/es_ES.json @@ -119,6 +119,7 @@ "Artiste": "Artista", "Album": "Álbum", "Image": "Imagen", + "Station": "Station", "Jouer playlist": "Reproducir lista de reproducción", "Titre de la playlist": "Título de lista de reproducción", "Jouer favoris": "Jugar favoritos", diff --git a/core/i18n/fr_FR.json b/core/i18n/fr_FR.json index f8e197e..ee7d9b3 100644 --- a/core/i18n/fr_FR.json +++ b/core/i18n/fr_FR.json @@ -119,6 +119,7 @@ "Artiste": "Artiste", "Album": "Album", "Image": "Image", + "Station": "Station", "Jouer playlist": "Jouer playlist", "Titre de la playlist": "Titre de la playlist", "Jouer favoris": "Jouer favoris", diff --git a/core/i18n/id_ID.json b/core/i18n/id_ID.json index 400d56d..9ba357f 100644 --- a/core/i18n/id_ID.json +++ b/core/i18n/id_ID.json @@ -119,6 +119,7 @@ "Artiste": "Artiste", "Album": "Album", "Image": "Gambar", + "Station": "Station", "Jouer playlist": "Jouer playlist", "Titre de la playlist": "Titre de la playlist", "Jouer favoris": "Jouer favoris", diff --git a/core/i18n/it_IT.json b/core/i18n/it_IT.json index fad5b95..2dcf04f 100644 --- a/core/i18n/it_IT.json +++ b/core/i18n/it_IT.json @@ -119,6 +119,7 @@ "Artiste": "Artiste", "Album": "Album", "Image": "Immagine", + "Station": "Station", "Jouer playlist": "Jouer playlist", "Titre de la playlist": "Titre de la playlist", "Jouer favoris": "Jouer favoris", diff --git a/core/i18n/ja_JP.json b/core/i18n/ja_JP.json index 8ef82b6..f248758 100644 --- a/core/i18n/ja_JP.json +++ b/core/i18n/ja_JP.json @@ -119,6 +119,7 @@ "Artiste": "Artiste", "Album": "Album", "Image": "画像", + "Station": "Station", "Jouer playlist": "Jouer playlist", "Titre de la playlist": "Titre de la playlist", "Jouer favoris": "Jouer favoris", diff --git a/core/i18n/pt_PT.json b/core/i18n/pt_PT.json index 24787d9..8b8e46b 100644 --- a/core/i18n/pt_PT.json +++ b/core/i18n/pt_PT.json @@ -119,6 +119,7 @@ "Artiste": "Artista", "Album": "Album", "Image": "Imagem", + "Station": "Station", "Jouer playlist": "Reproduzir lista de reprodução", "Titre de la playlist": "Título da lista de reprodução", "Jouer favoris": "Reproduzir Favoritos", diff --git a/core/i18n/ru_RU.json b/core/i18n/ru_RU.json index f97593a..f98c811 100644 --- a/core/i18n/ru_RU.json +++ b/core/i18n/ru_RU.json @@ -119,6 +119,7 @@ "Artiste": "Artiste", "Album": "Album", "Image": "Изображение", + "Station": "Station", "Jouer playlist": "Jouer playlist", "Titre de la playlist": "Titre de la playlist", "Jouer favoris": "Jouer favoris", diff --git a/core/i18n/tr.json b/core/i18n/tr.json index ee10676..a5df8d2 100644 --- a/core/i18n/tr.json +++ b/core/i18n/tr.json @@ -119,6 +119,7 @@ "Artiste": "Artiste", "Album": "Album", "Image": "Fotoğraf", + "Station": "Station", "Jouer playlist": "Jouer playlist", "Titre de la playlist": "Titre de la playlist", "Jouer favoris": "Jouer favoris", diff --git a/docs/de_DE/changelog.md b/docs/de_DE/changelog.md index 04ee870..e6b7c59 100644 --- a/docs/de_DE/changelog.md +++ b/docs/de_DE/changelog.md @@ -6,7 +6,11 @@ # -- ** +- Hinzufügen eines Info-Befehls **** ) + +# 27-01-2026 + +- Ajout de l'image pour *Ikea Table Lamp* # 19.01.2026 diff --git a/docs/en_US/changelog.md b/docs/en_US/changelog.md index 2fcc067..699c8b9 100644 --- a/docs/en_US/changelog.md +++ b/docs/en_US/changelog.md @@ -6,7 +6,11 @@ # -- ** +- Adding an info command **** ) + +# 27-01-2026 + +- Ajout de l'image pour *Ikea Table Lamp* # 19-01-2026 diff --git a/docs/es_ES/changelog.md b/docs/es_ES/changelog.md index 6fadd90..53065d5 100644 --- a/docs/es_ES/changelog.md +++ b/docs/es_ES/changelog.md @@ -6,7 +6,11 @@ # -- ** +- Agregar un comando de información **** ) + +# 27-01-2026 + +- Ajout de l'image pour *Ikea Table Lamp* # 19-01-2026 diff --git a/docs/i18n/de_DE.json b/docs/i18n/de_DE.json index 30e2611..6b5fed8 100644 --- a/docs/i18n/de_DE.json +++ b/docs/i18n/de_DE.json @@ -2,9 +2,12 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos Controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt", - "27-01-2026": "", - "Ikea Table Lamp": "", - "Ajout de l'image pour": "", + "11-04-2026": "", + "Ajout d'une commande info": "Hinzufügen eines Info-Befehls", + "qui indique la station radio en cours de lecture (si l'info est disponible": "", + "27-01-2026": "27-01-2026", + "Ikea Table Lamp": "Ikea Table Lamp", + "Ajout de l'image pour": "Ajout de l'image pour", "19-01-2026": "19.01.2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", @@ -42,7 +45,6 @@ "Aléatoire sans répétition": "Zufällig ohne Wiederholung", "Répéter le morceau": "Lied wiederholen", "Aléatoire et répéter le morceau": "Zufälliges und wiederholtes Lied", - "Ajout d'une commande info": "Hinzufügen eines Info-Befehls", "et action": "und Aktion", "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "Hier können Sie den Lesemodus aus den folgenden Möglichkeiten auswählen", "Statut de lecture": "Lesestatus", @@ -174,6 +176,13 @@ "[IMPORTANT]": "[Wichtig]", "*IMPORTANT*": "*Wichtig*", " IMPORTANT*": " Wichtig*", + " Station.": " .", + " Station?": " ?", + "Station ": " ", + " Station]": " ]", + "[Station]": "[]", + "*Station*": "**", + " Station*": " *", " Attention.": " Aufmerksamkeit.", " Attention?": " Aufmerksamkeit?", "Attention ": "Aufmerksamkeit ", diff --git a/docs/i18n/en_US.json b/docs/i18n/en_US.json index 1765122..dbd0f19 100644 --- a/docs/i18n/en_US.json +++ b/docs/i18n/en_US.json @@ -2,9 +2,12 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text", - "27-01-2026": "", - "Ikea Table Lamp": "", - "Ajout de l'image pour": "", + "11-04-2026": "", + "Ajout d'une commande info": "Adding an info command", + "qui indique la station radio en cours de lecture (si l'info est disponible": "", + "27-01-2026": "27-01-2026", + "Ikea Table Lamp": "Ikea Table Lamp", + "Ajout de l'image pour": "Ajout de l'image pour", "19-01-2026": "19-01-2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", @@ -42,7 +45,6 @@ "Aléatoire sans répétition": "Random without repetition", "Répéter le morceau": "Repeat song", "Aléatoire et répéter le morceau": "Random and repeat song", - "Ajout d'une commande info": "Adding an info command", "et action": "and action", "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "which allows you to select the reading mode from the following possibilities", "Statut de lecture": "Reading status", @@ -174,6 +176,13 @@ "[IMPORTANT]": "[Important]", "*IMPORTANT*": "*Important*", " IMPORTANT*": " Important*", + " Station.": " .", + " Station?": " ?", + "Station ": " ", + " Station]": " ]", + "[Station]": "[]", + "*Station*": "**", + " Station*": " *", " Attention.": " Attention.", " Attention?": " Attention?", "Attention ": "Attention ", diff --git a/docs/i18n/es_ES.json b/docs/i18n/es_ES.json index ac2903b..930821e 100644 --- a/docs/i18n/es_ES.json +++ b/docs/i18n/es_ES.json @@ -2,9 +2,12 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto", - "27-01-2026": "", - "Ikea Table Lamp": "", - "Ajout de l'image pour": "", + "11-04-2026": "", + "Ajout d'une commande info": "Agregar un comando de información", + "qui indique la station radio en cours de lecture (si l'info est disponible": "", + "27-01-2026": "27-01-2026", + "Ikea Table Lamp": "Ikea Table Lamp", + "Ajout de l'image pour": "Ajout de l'image pour", "19-01-2026": "19-01-2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", @@ -42,7 +45,6 @@ "Aléatoire sans répétition": "Aleatorio sin repetición", "Répéter le morceau": "Repetir canción", "Aléatoire et répéter le morceau": "Canción aleatoria y repetida", - "Ajout d'une commande info": "Agregar un comando de información", "et action": "y acción", "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "que le permite seleccionar el modo de lectura entre las siguientes posibilidades", "Statut de lecture": "Estado de lectura", @@ -174,6 +176,13 @@ "[IMPORTANT]": "[Importante]", "*IMPORTANT*": "*Importante*", " IMPORTANT*": " Importante*", + " Station.": " .", + " Station?": " ?", + "Station ": " ", + " Station]": " ]", + "[Station]": "[]", + "*Station*": "**", + " Station*": " *", " Attention.": " Atención.", " Attention?": " Atención?", "Attention ": "Atención ", diff --git a/docs/i18n/fr_FR.json b/docs/i18n/fr_FR.json index 65b2ecc..4d23abb 100644 --- a/docs/i18n/fr_FR.json +++ b/docs/i18n/fr_FR.json @@ -3,6 +3,10 @@ "Changelog Sonos controller": "Changelog Sonos controller", "IMPORTANT": "IMPORTANT", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte", + "11-04-2026": "11-04-2026", + "Station": "Station", + "Ajout d'une commande info": "Ajout d'une commande info", + "qui indique la station radio en cours de lecture (si l'info est disponible": "qui indique la station radio en cours de lecture (si l'info est disponible", "27-01-2026": "27-01-2026", "Ikea Table Lamp": "Ikea Table Lamp", "Ajout de l'image pour": "Ajout de l'image pour", @@ -47,7 +51,6 @@ "Aléatoire sans répétition": "Aléatoire sans répétition", "Répéter le morceau": "Répéter le morceau", "Aléatoire et répéter le morceau": "Aléatoire et répéter le morceau", - "Ajout d'une commande info": "Ajout d'une commande info", "et action": "et action", "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes", "Statut de lecture": "Statut de lecture", diff --git a/docs/i18n/pt_PT.json b/docs/i18n/pt_PT.json index 35f46c8..0cc6c03 100644 --- a/docs/i18n/pt_PT.json +++ b/docs/i18n/pt_PT.json @@ -2,9 +2,12 @@ "changelog.md": { "Changelog Sonos controller": "Changelog Sonos controller", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto", - "27-01-2026": "", - "Ikea Table Lamp": "", - "Ajout de l'image pour": "", + "11-04-2026": "", + "Ajout d'une commande info": "Adicionando um comando de informações", + "qui indique la station radio en cours de lecture (si l'info est disponible": "", + "27-01-2026": "27-01-2026", + "Ikea Table Lamp": "Ikea Table Lamp", + "Ajout de l'image pour": "Ajout de l'image pour", "19-01-2026": "19-01-2026", "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom": "Ajout d'une configuration optionnelle pour indiquer, uniquement si nécessaire, le sous-réseau (vlan) sur lequel se trouvent vos enceintes Sonos si celui-ci est différent du sous-réseau (vlan) sur lequel se trouve Jeedom", "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations": "Corrections pour le message \"Subscription renewal failed\" et la perte de remontée des informations", @@ -42,7 +45,6 @@ "Aléatoire sans répétition": "Aleatório sem repetição", "Répéter le morceau": "Repetir música", "Aléatoire et répéter le morceau": "Música aleatória e repetida", - "Ajout d'une commande info": "Adicionando um comando de informações", "et action": "e ação", "qui permet de sélectionner le mode de lecture parmi les possibilités suivantes": "que permite selecionar o modo de leitura entre as seguintes possibilidades", "Statut de lecture": "Status de leitura", @@ -174,6 +176,13 @@ "[IMPORTANT]": "[IMPORTANTE]", "*IMPORTANT*": "*IMPORTANTE*", " IMPORTANT*": " IMPORTANTE*", + " Station.": " .", + " Station?": " ?", + "Station ": " ", + " Station]": " ]", + "[Station]": "[]", + "*Station*": "**", + " Station*": " *", " Attention.": " Atenção.", " Attention?": " Atenção?", "Attention ": "Atenção ", diff --git a/docs/pt_PT/changelog.md b/docs/pt_PT/changelog.md index 9e05937..059c1fb 100644 --- a/docs/pt_PT/changelog.md +++ b/docs/pt_PT/changelog.md @@ -6,7 +6,11 @@ # -- ** +- Adicionando um comando de informações **** ) + +# 27-01-2026 + +- Ajout de l'image pour *Ikea Table Lamp* # 19-01-2026 From 2e249d2042e4cec97593e646ed6dd62dd42cdfb0 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Sun, 17 May 2026 09:24:20 +0200 Subject: [PATCH 10/28] add translations WF --- .github/workflows/translations.yml | 18 ++++ core/i18n/de_DE.json | 16 +-- core/i18n/en_US.json | 32 +----- core/i18n/es_ES.json | 15 +-- core/i18n/fr_FR.json | 159 ----------------------------- core/i18n/id_ID.json | 159 ----------------------------- core/i18n/it_IT.json | 115 +-------------------- core/i18n/ja_JP.json | 159 ----------------------------- core/i18n/pt_PT.json | 15 +-- core/i18n/ru_RU.json | 159 ----------------------------- core/i18n/tr.json | 159 ----------------------------- plugin_info/info.json | 13 +-- 12 files changed, 28 insertions(+), 991 deletions(-) create mode 100644 .github/workflows/translations.yml delete mode 100644 core/i18n/fr_FR.json delete mode 100644 core/i18n/id_ID.json delete mode 100644 core/i18n/ja_JP.json delete mode 100644 core/i18n/ru_RU.json delete mode 100644 core/i18n/tr.json diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml new file mode 100644 index 0000000..d214266 --- /dev/null +++ b/.github/workflows/translations.yml @@ -0,0 +1,18 @@ +name: translate + +on: + workflow_dispatch: + push: + branches: + - beta + +jobs: + auto-translate: + runs-on: ubuntu-latest + steps: + - uses: jeedom/jeetranslate@main + with: + deepl_api_key: ${{ secrets.DEEPL_API_KEY }} + include_empty_translation: false + target_languages: "en_US,es_ES,de_DE,it_IT,pt_PT" + use_core_translations: true \ No newline at end of file diff --git a/core/i18n/de_DE.json b/core/i18n/de_DE.json index a6ca0cc..a4372ad 100644 --- a/core/i18n/de_DE.json +++ b/core/i18n/de_DE.json @@ -2,15 +2,11 @@ "plugins\/sonos3\/plugin_info\/configuration.php": { "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Seien Sie vorsichtig, Ihre Version von PHP ('. PHP_VERSION.') Ist zu alt, Sie benötigen mindestens PHP 7.0", - "Interactions": "Interactions", "Le plugin sonos doit réagir aux interactions": "Das Sonos-Plugin muss auf Interaktionen reagieren", "Partage": "Teilen", "Hôte": "Gastgeber", "Nom d'utilisateur du partage": "Teilen Sie den Benutzernamen", - "Mot de passe du partage": "Passwort teilen", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" + "Mot de passe du partage": "Passwort teilen" }, "plugins\/sonos3\/desktop\/php\/panel.php": { "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", @@ -41,14 +37,11 @@ "Options": "Optionen", "Activer": "Aktivieren", "Visible": "Sichtbar", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", "Informations": "Information", "Modèle": "Modell", "Version": "Ausführung", "Version matériel": "Hardware Version", "Numéro de série": "Seriennummer", - "UID": "UID", "Adresse MAC": "MAC-Adresse", "Adresse IP": "IP Adresse", "Nom": "Name", @@ -59,8 +52,6 @@ "plugins\/sonos3\/desktop\/js\/sonos3.js": { "Nom": "Name", "Choisir une icône": "Wählen Sie ein Symbol aus", - "Afficher": "Afficher", - "Historiser": "Historiser", "Tester": "Test", "Synchronisation réussie.": "Synchronisierung erfolgreich" }, @@ -80,12 +71,10 @@ "Ok j\\'ai lancé": "Ok, ich habe gestartet", "Sonos controllers synchronized: ": "Sonos-Controller synchronisiert:", "Lecture": "Lesen", - "Pause": "Pause", "Arrêté": "Verhaftet", "Favorites updated: ": "Favoriten aktualisiert:", "Playlists updated: ": "Aktualisierte Playlists:", "Radios updated: ": "Radios aktualisiert:", - "Disponible": "Disponible", "Statut de lecture": "Lesestatus", "Mode de lecture": "Lesemodus", "Choisir mode de lecture": "Wählen Sie den Lesemodus", @@ -117,9 +106,7 @@ "Aigus": "Verdreifachen", "Piste": "Verfolgen", "Artiste": "Künstler", - "Album": "Album", "Image": "Bild", - "Station": "Station", "Jouer playlist": "Playlist abspielen", "Titre de la playlist": "Titel der Wiedergabeliste", "Jouer favoris": "Favoriten spielen", @@ -148,7 +135,6 @@ "Commandes tactiles on": "Touch-Bedienelemente ein", "Commandes tactiles off": "Touch-Steuerung ausgeschaltet", "Mic statut": "Mikrofonstatus", - "Batterie": "Batterie", "Rechargeable": "Wiederaufladbar", "Chargement": "Laden", "Aucun": "Ohne" diff --git a/core/i18n/en_US.json b/core/i18n/en_US.json index 210e285..e25f6a8 100644 --- a/core/i18n/en_US.json +++ b/core/i18n/en_US.json @@ -2,15 +2,8 @@ "plugins\/sonos3\/plugin_info\/configuration.php": { "401 - Accès non autorisé": "401 - Unauthorized access", "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Be careful, your version of PHP ('. PHP_VERSION.') Is too old, you need at least PHP 7.0", - "Interactions": "Interactions", "Le plugin sonos doit réagir aux interactions": "The sonos plugin must react to interactions", - "Partage": "Sharing", - "Hôte": "Host", - "Nom d'utilisateur du partage": "Share username", - "Mot de passe du partage": "Sharing password", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" + "Hôte": "Host" }, "plugins\/sonos3\/desktop\/php\/panel.php": { "401 - Accès non autorisé": "401 - Unauthorized access", @@ -38,17 +31,11 @@ "Objet parent": "Parent object", "Aucun": "None", "Catégorie": "Category", - "Options": "Options", "Activer": "Activate", - "Visible": "Visible", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", "Informations": "Information", "Modèle": "Model", - "Version": "Version", "Version matériel": "Hardware version", "Numéro de série": "Serial number", - "UID": "UID", "Adresse MAC": "MAC address", "Adresse IP": "IP adress", "Nom": "Name", @@ -59,8 +46,6 @@ "plugins\/sonos3\/desktop\/js\/sonos3.js": { "Nom": "Name", "Choisir une icône": "Choose an icon", - "Afficher": "Afficher", - "Historiser": "Historiser", "Tester": "Test", "Synchronisation réussie.": "Synchronization successful" }, @@ -77,20 +62,15 @@ "plugins\/sonos3\/core\/class\/sonos3.class.php": { "Veuillez vérifier la configuration": "Please check the configuration", "Impossible de lancer le démon": "Unable to launch daemon", - "Ok j\\'ai lancé": "Ok I launched", - "Sonos controllers synchronized: ": "Sonos controllers synchronized:", "Lecture": "Play", - "Pause": "Pause", "Arrêté": "Stopped", "Favorites updated: ": "Favorites updated:", "Playlists updated: ": "Playlists updated:", "Radios updated: ": "Radios updated:", - "Disponible": "Disponible", "Statut de lecture": "Reading status", "Mode de lecture": "Reading mode", "Choisir mode de lecture": "Choose reading mode", "Statut": "Status", - "Play": "Play", "Stop": "STOP", "Suivant": "Next", "Précédent": "Previous", @@ -104,22 +84,17 @@ "Aléatoire": "Random", "Aléatoire statut": "Random status", "Volume statut": "Status volume", - "Volume": "Volume", "Augmenter le volume": "Turn up the volume", "Diminuer le volume": "Decrease the volume", "Transition de volume": "Volume transition", "Type de transition": "Transition type", "Balance statut": "Balance status", - "Balance": "Balance", "Graves statut": "Serious status", - "Graves": "Graves", "Aigus statut": "Acute status", "Aigus": "Highs", "Piste": "Track", "Artiste": "Artist", - "Album": "Album", "Image": "Picture", - "Station": "Station", "Jouer playlist": "Play Playlist", "Titre de la playlist": "Playlist title", "Jouer favoris": "Play Favorites", @@ -133,23 +108,18 @@ "Quitter le groupe": "Leave the group", "Mode fête": "Party mode", "Entrée audio analogique": "Analog audio input", - "TV": "TV", "Dire": "Say", - "Message": "Message", "Prochaine alarme": "Next alarm", "Led statut": "Status LED", "Fondu enchaîné statut": "Crossfade status", "Fondu enchaîné on": "Crossfade on", "Fondu enchaîné off": "Fade off", "Loudness statut": "Loudness status", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", "Commandes tactiles statut": "Touch controls status", "Commandes tactiles on": "Touch controls on", "Commandes tactiles off": "Touch controls off", "Mic statut": "Mic status", "Batterie": "Battery", - "Rechargeable": "Rechargeable", "Chargement": "Loading", "Aucun": "None" }, diff --git a/core/i18n/es_ES.json b/core/i18n/es_ES.json index f766928..1e089e2 100644 --- a/core/i18n/es_ES.json +++ b/core/i18n/es_ES.json @@ -2,15 +2,11 @@ "plugins\/sonos3\/plugin_info\/configuration.php": { "401 - Accès non autorisé": "401 - Acceso no autorizado", "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Tenga cuidado, su versión de PHP ('. PHP_VERSION.') Es demasiado antigua, necesita al menos PHP 7.0", - "Interactions": "Interactions", "Le plugin sonos doit réagir aux interactions": "El complemento de sonos debe reaccionar a las interacciones", "Partage": "Compartir", "Hôte": "Anfitrión", "Nom d'utilisateur du partage": "Compartir nombre de usuario", - "Mot de passe du partage": "Compartir contraseña", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" + "Mot de passe du partage": "Compartir contraseña" }, "plugins\/sonos3\/desktop\/php\/panel.php": { "401 - Accès non autorisé": "401 - Acceso no autorizado", @@ -40,15 +36,11 @@ "Catégorie": "Categoría", "Options": "Opciones", "Activer": "Activar", - "Visible": "Visible", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", "Informations": "Información", "Modèle": "Modelo", "Version": "Versión", "Version matériel": "Versión del hardware", "Numéro de série": "Número de serie", - "UID": "UID", "Adresse MAC": "Dirección MAC", "Adresse IP": "Dirección IP", "Nom": "Nombre", @@ -59,8 +51,6 @@ "plugins\/sonos3\/desktop\/js\/sonos3.js": { "Nom": "Nombre", "Choisir une icône": "Elige un icono", - "Afficher": "Afficher", - "Historiser": "Historiser", "Tester": "Probar", "Synchronisation réussie.": "Sincronización exitosa" }, @@ -85,7 +75,6 @@ "Favorites updated: ": "Favoritos actualizados:", "Playlists updated: ": "Listas de reproducción actualizadas:", "Radios updated: ": "Radios actualizadas:", - "Disponible": "Disponible", "Statut de lecture": "Estado de lectura", "Mode de lecture": "Modo de lectura", "Choisir mode de lecture": "Elige el modo de lectura", @@ -110,7 +99,6 @@ "Transition de volume": "Transición de volumen", "Type de transition": "Tipo de transición", "Balance statut": "Estado del saldo", - "Balance": "Balance", "Graves statut": "Estado serio", "Graves": "Tumbas", "Aigus statut": "Estado de agudos", @@ -119,7 +107,6 @@ "Artiste": "Artista", "Album": "Álbum", "Image": "Imagen", - "Station": "Station", "Jouer playlist": "Reproducir lista de reproducción", "Titre de la playlist": "Título de lista de reproducción", "Jouer favoris": "Jugar favoritos", diff --git a/core/i18n/fr_FR.json b/core/i18n/fr_FR.json deleted file mode 100644 index ee7d9b3..0000000 --- a/core/i18n/fr_FR.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.", - "Interactions": "Interactions", - "Le plugin sonos doit réagir aux interactions": "Le plugin sonos doit réagir aux interactions", - "Partage": "Partage", - "Hôte": "Hôte", - "Nom d'utilisateur du partage": "Nom d'utilisateur du partage", - "Mot de passe du partage": "Mot de passe du partage", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" - }, - "plugins\/sonos3\/desktop\/php\/panel.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>", - "Rechercher": "Rechercher" - }, - "plugins\/sonos3\/desktop\/php\/sonos3.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé", - "Gestion": "Gestion", - "Synchroniser": "Synchroniser", - "Configuration": "Configuration", - "Mes Sonos": "Mes Sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Aucun équipement Sonos trouvé, avez-vous démarré le démon?", - "Rechercher": "Rechercher", - "Equipement visible": "Equipement visible", - "Equipement non visible": "Equipement non visible", - "Configuration avancée": "Configuration avancée", - "Sauvegarder": "Sauvegarder", - "Supprimer": "Supprimer", - "Equipement": "Equipement", - "Commandes": "Commandes", - "Paramètres généraux": "Paramètres généraux", - "Nom du Sonos": "Nom du Sonos", - "Nom de l'équipement Sonos": "Nom de l'équipement Sonos", - "Objet parent": "Objet parent", - "Aucun": "Aucun", - "Catégorie": "Catégorie", - "Options": "Options", - "Activer": "Activer", - "Visible": "Visible", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", - "Informations": "Informations", - "Modèle": "Modèle", - "Version": "Version", - "Version matériel": "Version matériel", - "Numéro de série": "Numéro de série", - "UID": "UID", - "Adresse MAC": "Adresse MAC", - "Adresse IP": "Adresse IP", - "Nom": "Nom", - "Type": "Type", - "Etat": "Etat", - "Actions": "Actions" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { - "Nom": "Nom", - "Choisir une icône": "Choisir une icône", - "Afficher": "Afficher", - "Historiser": "Historiser", - "Tester": "Tester", - "Synchronisation réussie.": "Synchronisation réussie." - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "Vous n\\'etes pas autorisé à effectuer cette action" - }, - "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé", - "Aucune méthode correspondante à": "Aucune méthode correspondante à" - }, - "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Veuillez vérifier la configuration", - "Impossible de lancer le démon": "Impossible de lancer le démon", - "Ok j\\'ai lancé": "Ok j\\'ai lancé", - "Sonos controllers synchronized: ": "Sonos controllers synchronized: ", - "Lecture": "Lecture", - "Pause": "Pause", - "Arrêté": "Arrêté", - "Favorites updated: ": "Favorites updated: ", - "Playlists updated: ": "Playlists updated: ", - "Radios updated: ": "Radios updated: ", - "Disponible": "Disponible", - "Statut de lecture": "Statut de lecture", - "Mode de lecture": "Mode de lecture", - "Choisir mode de lecture": "Choisir mode de lecture", - "Statut": "Statut", - "Play": "Play", - "Stop": "Stop", - "Suivant": "Suivant", - "Précédent": "Précédent", - "Groupe statut": "Groupe statut", - "Nom du groupe": "Nom du groupe", - "Muet statut": "Muet statut", - "Muet": "Muet", - "Non muet": "Non muet", - "Répéter": "Répéter", - "Répéter statut": "Répéter statut", - "Aléatoire": "Aléatoire", - "Aléatoire statut": "Aléatoire statut", - "Volume statut": "Volume statut", - "Volume": "Volume", - "Augmenter le volume": "Augmenter le volume", - "Diminuer le volume": "Diminuer le volume", - "Transition de volume": "Transition de volume", - "Type de transition": "Type de transition", - "Balance statut": "Balance statut", - "Balance": "Balance", - "Graves statut": "Graves statut", - "Graves": "Graves", - "Aigus statut": "Aigus statut", - "Aigus": "Aigus", - "Piste": "Piste", - "Artiste": "Artiste", - "Album": "Album", - "Image": "Image", - "Station": "Station", - "Jouer playlist": "Jouer playlist", - "Titre de la playlist": "Titre de la playlist", - "Jouer favoris": "Jouer favoris", - "Titre du favoris": "Titre du favoris", - "Jouer une radio": "Jouer une radio", - "Titre de la radio": "Titre de la radio", - "Jouer une radio mp3": "Jouer une radio mp3", - "URL de la radio": "URL de la radio", - "Rejoindre un groupe": "Rejoindre un groupe", - "Nom de la pièce": "Nom de la pièce", - "Quitter le groupe": "Quitter le groupe", - "Mode fête": "Mode fête", - "Entrée audio analogique": "Entrée audio analogique", - "TV": "TV", - "Dire": "Dire", - "Message": "Message", - "Prochaine alarme": "Prochaine alarme", - "Led statut": "Led statut", - "Fondu enchaîné statut": "Fondu enchaîné statut", - "Fondu enchaîné on": "Fondu enchaîné on", - "Fondu enchaîné off": "Fondu enchaîné off", - "Loudness statut": "Loudness statut", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "Commandes tactiles statut": "Commandes tactiles statut", - "Commandes tactiles on": "Commandes tactiles on", - "Commandes tactiles off": "Commandes tactiles off", - "Mic statut": "Mic statut", - "Batterie": "Batterie", - "Rechargeable": "Rechargeable", - "Chargement": "Chargement", - "Aucun": "Aucun" - }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4." - } -} \ No newline at end of file diff --git a/core/i18n/id_ID.json b/core/i18n/id_ID.json deleted file mode 100644 index 9ba357f..0000000 --- a/core/i18n/id_ID.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401 - Akses tidak sah", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0", - "Interactions": "Interactions", - "Le plugin sonos doit réagir aux interactions": "Le plugin sonos doit réagir aux interactions", - "Partage": "Partage", - "Hôte": "Hôte", - "Nom d'utilisateur du partage": "Nom d'utilisateur du partage", - "Mot de passe du partage": "Mot de passe du partage", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" - }, - "plugins\/sonos3\/desktop\/php\/panel.php": { - "401 - Accès non autorisé": "401 - Akses tidak sah", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>", - "Rechercher": "Pencarian" - }, - "plugins\/sonos3\/desktop\/php\/sonos3.php": { - "401 - Accès non autorisé": "401 - Akses tidak sah", - "Gestion": "Manajemen", - "Synchroniser": "Synchroniser", - "Configuration": "Konfigurasi", - "Mes Sonos": "Mes Sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Aucun équipement Sonos trouvé, avez-vous démarré le démon?", - "Rechercher": "Pencarian", - "Equipement visible": "Equipement visible", - "Equipement non visible": "Equipement non visible", - "Configuration avancée": "Konfigurasi lanjutan", - "Sauvegarder": "Menyimpan", - "Supprimer": "Menghapus", - "Equipement": "Peralatan", - "Commandes": "Perintah", - "Paramètres généraux": "Paramètres généraux", - "Nom du Sonos": "Nom du sonos", - "Nom de l'équipement Sonos": "Nom de l'équipement Sonos", - "Objet parent": "Objek induk", - "Aucun": "Tak ada", - "Catégorie": "Catégorie", - "Options": "Pilihan", - "Activer": "Mengaktifkan", - "Visible": "Terlihat", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", - "Informations": "Informasi", - "Modèle": "Model", - "Version": "Version", - "Version matériel": "Version matériel", - "Numéro de série": "Numéro de série", - "UID": "UID", - "Adresse MAC": "Adresse MAC", - "Adresse IP": "Adresse IP", - "Nom": "Nama", - "Type": "Type", - "Etat": "Etat", - "Actions": "Actions" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { - "Nom": "Nama", - "Choisir une icône": "Choisir une icône", - "Afficher": "Afficher", - "Historiser": "Historiser", - "Tester": "Coba", - "Synchronisation réussie.": "Synchronisation réussie" - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "Vous n\\'etes pas autorisé à effectuer cette action" - }, - "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { - "401 - Accès non autorisé": "401 - Akses tidak sah", - "Aucune méthode correspondante à": "Aucune méthode correspondante à" - }, - "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Veuillez vérifier la configuration", - "Impossible de lancer le démon": "Impossible de lancer le démon", - "Ok j\\'ai lancé": "Ok j\\'ai lancé", - "Sonos controllers synchronized: ": "Sonos controllers synchronized:", - "Lecture": "Lecture", - "Pause": "Berhenti Sebentar", - "Arrêté": "Berhenti", - "Favorites updated: ": "Favorites updated:", - "Playlists updated: ": "Playlists updated:", - "Radios updated: ": "Radios updated:", - "Disponible": "Disponible", - "Statut de lecture": "Statut de lecture", - "Mode de lecture": "Mode de lecture", - "Choisir mode de lecture": "Choisir mode de lecture", - "Statut": "Status", - "Play": "Play", - "Stop": "Stop", - "Suivant": "Suivant", - "Précédent": "Sebelumnya", - "Groupe statut": "Groupe statut", - "Nom du groupe": "Nom du groupe", - "Muet statut": "Muet statut", - "Muet": "Muet", - "Non muet": "Non muet", - "Répéter": "Répéter", - "Répéter statut": "Répéter statut", - "Aléatoire": "Aléatoire", - "Aléatoire statut": "Aléatoire statut", - "Volume statut": "Volume statut", - "Volume": "Volume", - "Augmenter le volume": "Augmenter le volume", - "Diminuer le volume": "Diminuer le volume", - "Transition de volume": "Transition de volume", - "Type de transition": "Type de transition", - "Balance statut": "Balance statut", - "Balance": "Balance", - "Graves statut": "Graves statut", - "Graves": "Graves", - "Aigus statut": "Aigus statut", - "Aigus": "Aigus", - "Piste": "Piste", - "Artiste": "Artiste", - "Album": "Album", - "Image": "Gambar", - "Station": "Station", - "Jouer playlist": "Jouer playlist", - "Titre de la playlist": "Titre de la playlist", - "Jouer favoris": "Jouer favoris", - "Titre du favoris": "Titre du favoris", - "Jouer une radio": "Jouer une radio", - "Titre de la radio": "Titre de la radio", - "Jouer une radio mp3": "Jouer une radio mp3", - "URL de la radio": "URL de la radio", - "Rejoindre un groupe": "Rejoindre un groupe", - "Nom de la pièce": "Nom de la piece", - "Quitter le groupe": "Quitter le groupe", - "Mode fête": "Mode fête", - "Entrée audio analogique": "Entrée audio analogique", - "TV": "TV", - "Dire": "Dire", - "Message": "Pesan", - "Prochaine alarme": "Prochaine alarme", - "Led statut": "Led statut", - "Fondu enchaîné statut": "Fondu enchaîné statut", - "Fondu enchaîné on": "Fondu enchaîné on", - "Fondu enchaîné off": "Fondu enchaîné off", - "Loudness statut": "Loudness statut", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "Commandes tactiles statut": "Commandes tactiles statut", - "Commandes tactiles on": "Commandes tactiles on", - "Commandes tactiles off": "Commandes tactiles off", - "Mic statut": "Mic statut", - "Batterie": "Batterie", - "Rechargeable": "Rechargeable", - "Chargement": "Chargement", - "Aucun": "Tak ada" - }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" - } -} \ No newline at end of file diff --git a/core/i18n/it_IT.json b/core/i18n/it_IT.json index 2dcf04f..9659aa2 100644 --- a/core/i18n/it_IT.json +++ b/core/i18n/it_IT.json @@ -1,156 +1,49 @@ { "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401 - Accesso non autorizzato", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0", - "Interactions": "Interactions", - "Le plugin sonos doit réagir aux interactions": "Le plugin sonos doit réagir aux interactions", - "Partage": "Partage", - "Hôte": "Hôte", - "Nom d'utilisateur du partage": "Nom d'utilisateur du partage", - "Mot de passe du partage": "Mot de passe du partage", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" + "401 - Accès non autorisé": "401 - Accesso non autorizzato" }, "plugins\/sonos3\/desktop\/php\/panel.php": { "401 - Accès non autorisé": "401 - Accesso non autorizzato", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>", "Rechercher": "Ricercare" }, "plugins\/sonos3\/desktop\/php\/sonos3.php": { "401 - Accès non autorisé": "401 - Accesso non autorizzato", "Gestion": "Gestione", - "Synchroniser": "Synchroniser", "Configuration": "Configurazione", - "Mes Sonos": "Mes Sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Aucun équipement Sonos trouvé, avez-vous démarré le démon?", "Rechercher": "Ricercare", - "Equipement visible": "Equipement visible", - "Equipement non visible": "Equipement non visible", "Configuration avancée": "Configurazione avanzata", "Sauvegarder": "Salva", "Supprimer": "Rimuovere", "Equipement": "Dispositivo", "Commandes": "Comandi", - "Paramètres généraux": "Paramètres généraux", "Nom du Sonos": "Nom du sonos", - "Nom de l'équipement Sonos": "Nom de l'équipement Sonos", "Objet parent": "Oggetto padre", "Aucun": "Nessuno", - "Catégorie": "Catégorie", "Options": "Opzioni", "Activer": "Attivare", "Visible": "Visibile", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", "Informations": "Informazioni", "Modèle": "Modello", - "Version": "Version", - "Version matériel": "Version matériel", - "Numéro de série": "Numéro de série", - "UID": "UID", - "Adresse MAC": "Adresse MAC", - "Adresse IP": "Adresse IP", - "Nom": "Nome", - "Type": "Type", - "Etat": "Etat", - "Actions": "Actions" + "Nom": "Nome" }, "plugins\/sonos3\/desktop\/js\/sonos3.js": { "Nom": "Nome", - "Choisir une icône": "Choisir une icône", - "Afficher": "Afficher", - "Historiser": "Historiser", - "Tester": "Prova", - "Synchronisation réussie.": "Synchronisation réussie" - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "Vous n\\'etes pas autorisé à effectuer cette action" + "Tester": "Prova" }, "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { - "401 - Accès non autorisé": "401 - Accesso non autorizzato", - "Aucune méthode correspondante à": "Aucune méthode correspondante à" + "401 - Accès non autorisé": "401 - Accesso non autorizzato" }, "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Veuillez vérifier la configuration", - "Impossible de lancer le démon": "Impossible de lancer le démon", - "Ok j\\'ai lancé": "Ok j\\'ai lancé", - "Sonos controllers synchronized: ": "Sonos controllers synchronized:", - "Lecture": "Lecture", "Pause": "Pausa", "Arrêté": "Smettere", "Favorites updated: ": "Favorites updated:", "Playlists updated: ": "Playlists updated:", "Radios updated: ": "Radios updated:", - "Disponible": "Disponible", - "Statut de lecture": "Statut de lecture", - "Mode de lecture": "Mode de lecture", - "Choisir mode de lecture": "Choisir mode de lecture", "Statut": "Stato", - "Play": "Play", "Stop": "Ferma", - "Suivant": "Suivant", "Précédent": "Precedente", - "Groupe statut": "Groupe statut", - "Nom du groupe": "Nom du groupe", - "Muet statut": "Muet statut", - "Muet": "Muet", - "Non muet": "Non muet", - "Répéter": "Répéter", - "Répéter statut": "Répéter statut", - "Aléatoire": "Aléatoire", - "Aléatoire statut": "Aléatoire statut", - "Volume statut": "Volume statut", - "Volume": "Volume", - "Augmenter le volume": "Augmenter le volume", - "Diminuer le volume": "Diminuer le volume", - "Transition de volume": "Transition de volume", - "Type de transition": "Type de transition", - "Balance statut": "Balance statut", - "Balance": "Balance", - "Graves statut": "Graves statut", - "Graves": "Graves", - "Aigus statut": "Aigus statut", - "Aigus": "Aigus", - "Piste": "Piste", - "Artiste": "Artiste", - "Album": "Album", "Image": "Immagine", - "Station": "Station", - "Jouer playlist": "Jouer playlist", - "Titre de la playlist": "Titre de la playlist", - "Jouer favoris": "Jouer favoris", - "Titre du favoris": "Titre du favoris", - "Jouer une radio": "Jouer une radio", - "Titre de la radio": "Titre de la radio", - "Jouer une radio mp3": "Jouer une radio mp3", - "URL de la radio": "URL de la radio", - "Rejoindre un groupe": "Rejoindre un groupe", - "Nom de la pièce": "Nom de la piece", - "Quitter le groupe": "Quitter le groupe", - "Mode fête": "Mode fête", - "Entrée audio analogique": "Entrée audio analogique", - "TV": "TV", - "Dire": "Dire", "Message": "Messaggio", - "Prochaine alarme": "Prochaine alarme", - "Led statut": "Led statut", - "Fondu enchaîné statut": "Fondu enchaîné statut", - "Fondu enchaîné on": "Fondu enchaîné on", - "Fondu enchaîné off": "Fondu enchaîné off", - "Loudness statut": "Loudness statut", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "Commandes tactiles statut": "Commandes tactiles statut", - "Commandes tactiles on": "Commandes tactiles on", - "Commandes tactiles off": "Commandes tactiles off", - "Mic statut": "Mic statut", - "Batterie": "Batterie", - "Rechargeable": "Rechargeable", - "Chargement": "Chargement", "Aucun": "Nessuno" }, "info.json": { diff --git a/core/i18n/ja_JP.json b/core/i18n/ja_JP.json deleted file mode 100644 index f248758..0000000 --- a/core/i18n/ja_JP.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401-不正アクセス", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0", - "Interactions": "Interactions", - "Le plugin sonos doit réagir aux interactions": "Le plugin sonos doit réagir aux interactions", - "Partage": "Partage", - "Hôte": "Hôte", - "Nom d'utilisateur du partage": "Nom d'utilisateur du partage", - "Mot de passe du partage": "Mot de passe du partage", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" - }, - "plugins\/sonos3\/desktop\/php\/panel.php": { - "401 - Accès non autorisé": "401-不正アクセス", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>", - "Rechercher": "検索" - }, - "plugins\/sonos3\/desktop\/php\/sonos3.php": { - "401 - Accès non autorisé": "401-不正アクセス", - "Gestion": "管理", - "Synchroniser": "Synchroniser", - "Configuration": "コンフィギュレーション", - "Mes Sonos": "Mes Sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Aucun équipement Sonos trouvé, avez-vous démarré le démon?", - "Rechercher": "検索", - "Equipement visible": "Equipement visible", - "Equipement non visible": "Equipement non visible", - "Configuration avancée": "高度な構成", - "Sauvegarder": "セーブ", - "Supprimer": "取り除きます", - "Equipement": "設備", - "Commandes": "コマンド", - "Paramètres généraux": "Paramètres généraux", - "Nom du Sonos": "Nom du sonos", - "Nom de l'équipement Sonos": "Nom de l'équipement Sonos", - "Objet parent": "親オブジェクト", - "Aucun": "何でもありません", - "Catégorie": "Catégorie", - "Options": "オプション", - "Activer": "アクティブ", - "Visible": "目に見えます", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", - "Informations": "情報", - "Modèle": "モデル", - "Version": "Version", - "Version matériel": "Version matériel", - "Numéro de série": "Numéro de série", - "UID": "UID", - "Adresse MAC": "Adresse MAC", - "Adresse IP": "Adresse IP", - "Nom": "表題", - "Type": "Type", - "Etat": "Etat", - "Actions": "Actions" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { - "Nom": "表題", - "Choisir une icône": "Choisir une icône", - "Afficher": "Afficher", - "Historiser": "Historiser", - "Tester": "テスト", - "Synchronisation réussie.": "Synchronisation réussie" - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "Vous n\\'etes pas autorisé à effectuer cette action" - }, - "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { - "401 - Accès non autorisé": "401-不正アクセス", - "Aucune méthode correspondante à": "Aucune méthode correspondante à" - }, - "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Veuillez vérifier la configuration", - "Impossible de lancer le démon": "Impossible de lancer le démon", - "Ok j\\'ai lancé": "Ok j\\'ai lancé", - "Sonos controllers synchronized: ": "Sonos controllers synchronized:", - "Lecture": "Lecture", - "Pause": "休止", - "Arrêté": "逮捕", - "Favorites updated: ": "Favorites updated:", - "Playlists updated: ": "Playlists updated:", - "Radios updated: ": "Radios updated:", - "Disponible": "Disponible", - "Statut de lecture": "Statut de lecture", - "Mode de lecture": "Mode de lecture", - "Choisir mode de lecture": "Choisir mode de lecture", - "Statut": "ステータス", - "Play": "Play", - "Stop": "ストップ", - "Suivant": "Suivant", - "Précédent": "前", - "Groupe statut": "Groupe statut", - "Nom du groupe": "Nom du groupe", - "Muet statut": "Muet statut", - "Muet": "Muet", - "Non muet": "Non muet", - "Répéter": "繰り返します", - "Répéter statut": "Répéter statut", - "Aléatoire": "Aléatoire", - "Aléatoire statut": "Aléatoire statut", - "Volume statut": "Volume statut", - "Volume": "ボリューム", - "Augmenter le volume": "Augmenter le volume", - "Diminuer le volume": "Diminuer le volume", - "Transition de volume": "Transition de volume", - "Type de transition": "Type de transition", - "Balance statut": "Balance statut", - "Balance": "Balance", - "Graves statut": "Graves statut", - "Graves": "Graves", - "Aigus statut": "Aigus statut", - "Aigus": "Aigus", - "Piste": "Piste", - "Artiste": "Artiste", - "Album": "Album", - "Image": "画像", - "Station": "Station", - "Jouer playlist": "Jouer playlist", - "Titre de la playlist": "Titre de la playlist", - "Jouer favoris": "Jouer favoris", - "Titre du favoris": "Titre du favoris", - "Jouer une radio": "Jouer une radio", - "Titre de la radio": "Titre de la radio", - "Jouer une radio mp3": "Jouer une radio mp3", - "URL de la radio": "URL de la radio", - "Rejoindre un groupe": "Rejoindre un groupe", - "Nom de la pièce": "Nom de la piece", - "Quitter le groupe": "Quitter le groupe", - "Mode fête": "Mode fête", - "Entrée audio analogique": "Entrée audio analogique", - "TV": "TV", - "Dire": "Dire", - "Message": "メッセージ", - "Prochaine alarme": "Prochaine alarme", - "Led statut": "Led statut", - "Fondu enchaîné statut": "Fondu enchaîné statut", - "Fondu enchaîné on": "Fondu enchaîné on", - "Fondu enchaîné off": "Fondu enchaîné off", - "Loudness statut": "Loudness statut", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "Commandes tactiles statut": "Commandes tactiles statut", - "Commandes tactiles on": "Commandes tactiles on", - "Commandes tactiles off": "Commandes tactiles off", - "Mic statut": "Mic statut", - "Batterie": "Batterie", - "Rechargeable": "Rechargeable", - "Chargement": "Chargement", - "Aucun": "何でもありません" - }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" - } -} \ No newline at end of file diff --git a/core/i18n/pt_PT.json b/core/i18n/pt_PT.json index 8b8e46b..66207f9 100644 --- a/core/i18n/pt_PT.json +++ b/core/i18n/pt_PT.json @@ -2,15 +2,11 @@ "plugins\/sonos3\/plugin_info\/configuration.php": { "401 - Accès non autorisé": "401 - Acesso não autorizado", "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Tome cuidado, sua versão do PHP ('. PHP_VERSION.') É muito antiga, você precisa de pelo menos PHP 7.0", - "Interactions": "Interactions", "Le plugin sonos doit réagir aux interactions": "O plugin sonos deve reagir às interações", "Partage": "Partilha", "Hôte": "Hospedar", "Nom d'utilisateur du partage": "Nome de usuário de compartilhamento", - "Mot de passe du partage": "Compartilhando senha", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" + "Mot de passe du partage": "Compartilhando senha" }, "plugins\/sonos3\/desktop\/php\/panel.php": { "401 - Accès non autorisé": "401 - Acesso não autorizado", @@ -41,14 +37,11 @@ "Options": "Opções", "Activer": "Ativar", "Visible": "Visivél", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", "Informations": "Informação", "Modèle": "Modelo", "Version": "Versão", "Version matériel": "Versão de hardware", "Numéro de série": "Número de série", - "UID": "UID", "Adresse MAC": "Endereço MAC", "Adresse IP": "Endereço de IP", "Nom": "Nome", @@ -59,8 +52,6 @@ "plugins\/sonos3\/desktop\/js\/sonos3.js": { "Nom": "Nome", "Choisir une icône": "Escolha um ícone", - "Afficher": "Afficher", - "Historiser": "Historiser", "Tester": "Teste", "Synchronisation réussie.": "Sincronização bem-sucedida" }, @@ -85,7 +76,6 @@ "Favorites updated: ": "Favoritos atualizados:", "Playlists updated: ": "Listas de reprodução atualizadas:", "Radios updated: ": "Rádios atualizadas:", - "Disponible": "Disponible", "Statut de lecture": "Status de leitura", "Mode de lecture": "Modo de leitura", "Choisir mode de lecture": "Escolha o modo de leitura", @@ -104,7 +94,6 @@ "Aléatoire": "Aleatório", "Aléatoire statut": "Status aleatório", "Volume statut": "Volume de status", - "Volume": "Volume", "Augmenter le volume": "Aumenta o volume", "Diminuer le volume": "Diminuir o volume", "Transition de volume": "Transição de volume", @@ -117,9 +106,7 @@ "Aigus": "Agudos", "Piste": "Track", "Artiste": "Artista", - "Album": "Album", "Image": "Imagem", - "Station": "Station", "Jouer playlist": "Reproduzir lista de reprodução", "Titre de la playlist": "Título da lista de reprodução", "Jouer favoris": "Reproduzir Favoritos", diff --git a/core/i18n/ru_RU.json b/core/i18n/ru_RU.json deleted file mode 100644 index f98c811..0000000 --- a/core/i18n/ru_RU.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401 - Несанкционированный доступ", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0", - "Interactions": "Interactions", - "Le plugin sonos doit réagir aux interactions": "Le plugin sonos doit réagir aux interactions", - "Partage": "Partage", - "Hôte": "Hôte", - "Nom d'utilisateur du partage": "Nom d'utilisateur du partage", - "Mot de passe du partage": "Mot de passe du partage", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" - }, - "plugins\/sonos3\/desktop\/php\/panel.php": { - "401 - Accès non autorisé": "401 - Несанкционированный доступ", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>", - "Rechercher": "поиск" - }, - "plugins\/sonos3\/desktop\/php\/sonos3.php": { - "401 - Accès non autorisé": "401 - Несанкционированный доступ", - "Gestion": "Управление", - "Synchroniser": "Synchroniser", - "Configuration": "Конфигурация", - "Mes Sonos": "Mes Sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Aucun équipement Sonos trouvé, avez-vous démarré le démon?", - "Rechercher": "поиск", - "Equipement visible": "Equipement visible", - "Equipement non visible": "Equipement non visible", - "Configuration avancée": "Расширенные настройки", - "Sauvegarder": "Сохранить", - "Supprimer": "удаление", - "Equipement": "Оборудование", - "Commandes": "Команды", - "Paramètres généraux": "Paramètres généraux", - "Nom du Sonos": "Nom du sonos", - "Nom de l'équipement Sonos": "Nom de l'équipement Sonos", - "Objet parent": "Родительский объект", - "Aucun": "Нет", - "Catégorie": "Catégorie", - "Options": "Опции", - "Activer": "активировать", - "Visible": "Видимый", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", - "Informations": "Информация", - "Modèle": "Модель", - "Version": "Version", - "Version matériel": "Version matériel", - "Numéro de série": "Numéro de série", - "UID": "UID", - "Adresse MAC": "Adresse MAC", - "Adresse IP": "Adresse IP", - "Nom": "Имя", - "Type": "Type", - "Etat": "Etat", - "Actions": "Actions" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { - "Nom": "Имя", - "Choisir une icône": "Choisir une icône", - "Afficher": "Afficher", - "Historiser": "Historiser", - "Tester": "Тест", - "Synchronisation réussie.": "Synchronisation réussie" - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "Vous n\\'etes pas autorisé à effectuer cette action" - }, - "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { - "401 - Accès non autorisé": "401 - Несанкционированный доступ", - "Aucune méthode correspondante à": "Aucune méthode correspondante à" - }, - "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Veuillez vérifier la configuration", - "Impossible de lancer le démon": "Impossible de lancer le démon", - "Ok j\\'ai lancé": "Ok j\\'ai lancé", - "Sonos controllers synchronized: ": "Sonos controllers synchronized:", - "Lecture": "Lecture", - "Pause": "Пауза", - "Arrêté": "арестованный", - "Favorites updated: ": "Favorites updated:", - "Playlists updated: ": "Playlists updated:", - "Radios updated: ": "Radios updated:", - "Disponible": "Disponible", - "Statut de lecture": "Statut de lecture", - "Mode de lecture": "Mode de lecture", - "Choisir mode de lecture": "Choisir mode de lecture", - "Statut": "статус", - "Play": "Play", - "Stop": "Стоп", - "Suivant": "Suivant", - "Précédent": "предыдущий", - "Groupe statut": "Groupe statut", - "Nom du groupe": "Nom du groupe", - "Muet statut": "Muet statut", - "Muet": "Muet", - "Non muet": "Non muet", - "Répéter": "повторение", - "Répéter statut": "Répéter statut", - "Aléatoire": "Aléatoire", - "Aléatoire statut": "Aléatoire statut", - "Volume statut": "Volume statut", - "Volume": "Громкость", - "Augmenter le volume": "Augmenter le volume", - "Diminuer le volume": "Diminuer le volume", - "Transition de volume": "Transition de volume", - "Type de transition": "Type de transition", - "Balance statut": "Balance statut", - "Balance": "Balance", - "Graves statut": "Graves statut", - "Graves": "Graves", - "Aigus statut": "Aigus statut", - "Aigus": "Aigus", - "Piste": "Piste", - "Artiste": "Artiste", - "Album": "Album", - "Image": "Изображение", - "Station": "Station", - "Jouer playlist": "Jouer playlist", - "Titre de la playlist": "Titre de la playlist", - "Jouer favoris": "Jouer favoris", - "Titre du favoris": "Titre du favoris", - "Jouer une radio": "Jouer une radio", - "Titre de la radio": "Titre de la radio", - "Jouer une radio mp3": "Jouer une radio mp3", - "URL de la radio": "URL de la radio", - "Rejoindre un groupe": "Rejoindre un groupe", - "Nom de la pièce": "Nom de la piece", - "Quitter le groupe": "Quitter le groupe", - "Mode fête": "Mode fête", - "Entrée audio analogique": "Entrée audio analogique", - "TV": "TV", - "Dire": "Dire", - "Message": "Сообщение", - "Prochaine alarme": "Prochaine alarme", - "Led statut": "Led statut", - "Fondu enchaîné statut": "Fondu enchaîné statut", - "Fondu enchaîné on": "Fondu enchaîné on", - "Fondu enchaîné off": "Fondu enchaîné off", - "Loudness statut": "Loudness statut", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "Commandes tactiles statut": "Commandes tactiles statut", - "Commandes tactiles on": "Commandes tactiles on", - "Commandes tactiles off": "Commandes tactiles off", - "Mic statut": "Mic statut", - "Batterie": "Batterie", - "Rechargeable": "Rechargeable", - "Chargement": "Chargement", - "Aucun": "Нет" - }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" - } -} \ No newline at end of file diff --git a/core/i18n/tr.json b/core/i18n/tr.json deleted file mode 100644 index a5df8d2..0000000 --- a/core/i18n/tr.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "plugins\/sonos3\/plugin_info\/configuration.php": { - "401 - Accès non autorisé": "401 - Yetkisiz erişim", - "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0.": "Attention votre version de PHP (' . PHP_VERSION . ') est trop veille, il faut au minimum PHP 7.0", - "Interactions": "Interactions", - "Le plugin sonos doit réagir aux interactions": "Le plugin sonos doit réagir aux interactions", - "Partage": "Partage", - "Hôte": "Hôte", - "Nom d'utilisateur du partage": "Nom d'utilisateur du partage", - "Mot de passe du partage": "Mot de passe du partage", - "Découverte": "Découverte", - "Réseau à scanner": "Réseau à scanner", - "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos": "Si et seulement si Jeedom ne se trouve pas sur le même réseau que vos enceintes Sonos" - }, - "plugins\/sonos3\/desktop\/php\/panel.php": { - "401 - Accès non autorisé": "401 - Yetkisiz erişim", - "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>": "Aucun objet racine trouvé. Pour en créer un, allez dans Générale -> Objet. Si vous ne savez pas quoi faire ou que c\\'est la premiere fois que vous utilisez Jeedom n\\'hésitez pas a consulter cette page<\/a>", - "Rechercher": "Arayın" - }, - "plugins\/sonos3\/desktop\/php\/sonos3.php": { - "401 - Accès non autorisé": "401 - Yetkisiz erişim", - "Gestion": "Idare", - "Synchroniser": "Synchroniser", - "Configuration": "Ayar", - "Mes Sonos": "Mes Sonos", - "Aucun équipement Sonos trouvé, avez-vous démarré le démon?": "Aucun équipement Sonos trouvé, avez-vous démarré le démon?", - "Rechercher": "Arayın", - "Equipement visible": "Equipement visible", - "Equipement non visible": "Equipement non visible", - "Configuration avancée": "Gelişmiş ayarlar", - "Sauvegarder": "Kaydet", - "Supprimer": "Sil", - "Equipement": "Cihaz", - "Commandes": "Komutalar", - "Paramètres généraux": "Paramètres généraux", - "Nom du Sonos": "Nom du sonos", - "Nom de l'équipement Sonos": "Nom de l'équipement Sonos", - "Objet parent": "Üst nesne", - "Aucun": "Hiçbir", - "Catégorie": "Catégorie", - "Options": "Opsiyonlar", - "Activer": "Etkinleştir", - "Visible": "Görülebilir", - "Paramètres spécifiques": "Paramètres spécifiques", - "Utiliser la tuile préconfigurée": "Utiliser la tuile préconfigurée", - "Informations": "Bilgiler", - "Modèle": "Model", - "Version": "Version", - "Version matériel": "Version matériel", - "Numéro de série": "Numéro de série", - "UID": "UID", - "Adresse MAC": "Adresse MAC", - "Adresse IP": "Adresse IP", - "Nom": "İsim", - "Type": "Type", - "Etat": "Etat", - "Actions": "Actions" - }, - "plugins\/sonos3\/desktop\/js\/sonos3.js": { - "Nom": "İsim", - "Choisir une icône": "Choisir une icône", - "Afficher": "Afficher", - "Historiser": "Historiser", - "Tester": "Test et", - "Synchronisation réussie.": "Synchronisation réussie" - }, - "plugins\/sonos3\/core\/php\/sonos.img.proxy.php": { - "401 - Accès non autorisé": "401 - Accès non autorisé" - }, - "plugins\/sonos3\/core\/php\/jeesonos3.php": { - "Vous n\\'etes pas autorisé à effectuer cette action": "Vous n\\'etes pas autorisé à effectuer cette action" - }, - "plugins\/sonos3\/core\/ajax\/sonos3.ajax.php": { - "401 - Accès non autorisé": "401 - Yetkisiz erişim", - "Aucune méthode correspondante à": "Aucune méthode correspondante à" - }, - "plugins\/sonos3\/core\/class\/sonos3.class.php": { - "Veuillez vérifier la configuration": "Veuillez vérifier la configuration", - "Impossible de lancer le démon": "Impossible de lancer le démon", - "Ok j\\'ai lancé": "Ok j\\'ai lancé", - "Sonos controllers synchronized: ": "Sonos controllers synchronized:", - "Lecture": "Lecture", - "Pause": "Durdur", - "Arrêté": "Durduruldu", - "Favorites updated: ": "Favorites updated:", - "Playlists updated: ": "Playlists updated:", - "Radios updated: ": "Radios updated:", - "Disponible": "Disponible", - "Statut de lecture": "Statut de lecture", - "Mode de lecture": "Mode de lecture", - "Choisir mode de lecture": "Choisir mode de lecture", - "Statut": "Statü", - "Play": "Play", - "Stop": "Stop", - "Suivant": "Suivant", - "Précédent": "Önceki", - "Groupe statut": "Groupe statut", - "Nom du groupe": "Nom du groupe", - "Muet statut": "Muet statut", - "Muet": "Muet", - "Non muet": "Non muet", - "Répéter": "Répéter", - "Répéter statut": "Répéter statut", - "Aléatoire": "Aléatoire", - "Aléatoire statut": "Aléatoire statut", - "Volume statut": "Volume statut", - "Volume": "Ses", - "Augmenter le volume": "Augmenter le volume", - "Diminuer le volume": "Diminuer le volume", - "Transition de volume": "Transition de volume", - "Type de transition": "Type de transition", - "Balance statut": "Balance statut", - "Balance": "Balance", - "Graves statut": "Graves statut", - "Graves": "Graves", - "Aigus statut": "Aigus statut", - "Aigus": "Aigus", - "Piste": "Piste", - "Artiste": "Artiste", - "Album": "Album", - "Image": "Fotoğraf", - "Station": "Station", - "Jouer playlist": "Jouer playlist", - "Titre de la playlist": "Titre de la playlist", - "Jouer favoris": "Jouer favoris", - "Titre du favoris": "Titre du favoris", - "Jouer une radio": "Jouer une radio", - "Titre de la radio": "Titre de la radio", - "Jouer une radio mp3": "Jouer une radio mp3", - "URL de la radio": "URL de la radio", - "Rejoindre un groupe": "Rejoindre un groupe", - "Nom de la pièce": "Nom de la piece", - "Quitter le groupe": "Quitter le groupe", - "Mode fête": "Mode fête", - "Entrée audio analogique": "Entrée audio analogique", - "TV": "TV", - "Dire": "Dire", - "Message": "Mesaj", - "Prochaine alarme": "Prochaine alarme", - "Led statut": "Led statut", - "Fondu enchaîné statut": "Fondu enchaîné statut", - "Fondu enchaîné on": "Fondu enchaîné on", - "Fondu enchaîné off": "Fondu enchaîné off", - "Loudness statut": "Loudness statut", - "Loudness on": "Loudness on", - "Loudness off": "Loudness off", - "Commandes tactiles statut": "Commandes tactiles statut", - "Commandes tactiles on": "Commandes tactiles on", - "Commandes tactiles off": "Commandes tactiles off", - "Mic statut": "Mic statut", - "Batterie": "Batterie", - "Rechargeable": "Rechargeable", - "Chargement": "Chargement", - "Aucun": "Hiçbir" - }, - "info.json": { - "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" - } -} \ No newline at end of file diff --git a/plugin_info/info.json b/plugin_info/info.json index 66a64b6..24dba28 100644 --- a/plugin_info/info.json +++ b/plugin_info/info.json @@ -2,20 +2,11 @@ "id": "sonos3", "name": "Sonos controller", "description": { - "fr_FR": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4.", - "en_US": "Symfonisk Sonos\/Ikea control plugin. WARNING: PHP 7.4 or later is required", - "es_ES": "Plugin de control Symfonisk para Sonos\/Ikea. ADVERTENCIA: Requiere PHP 7.4 o posterior", - "de_DE": "Symfonisk Sonos\/Ikea-Steuerungs-Plugin. WARNUNG: PHP 7.4 oder höher erforderlich", - "pt_PT": "Plugin de controle Symfonisk Sonos\/Ikea. AVISO: Requer PHP 7.4 ou posterior", - "ru_RU": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4", - "id_ID": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4", - "it_IT": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4", - "ja_JP": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4", - "tr": "Plugin de contrôle de Sonos\/Ikea Symfonisk. ATTENTION : il faut au minimum PHP 7.4" + "fr_FR": "Plugin de contrôle de Sonos\/Ikea Symfonisk" }, "licence": "AGPL", "author": "Jeedom SAS", - "require": "4.4", + "require": "4.5", "os": { "min": 11 }, From 183b97efeac05ef7fcd993cdf7f6106bf998a468 Mon Sep 17 00:00:00 2001 From: Mips2648 Date: Sun, 17 May 2026 09:24:34 +0200 Subject: [PATCH 11/28] remove PHP version check from configuration form --- plugin_info/configuration.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugin_info/configuration.php b/plugin_info/configuration.php index ae2dd1e..4553ffe 100644 --- a/plugin_info/configuration.php +++ b/plugin_info/configuration.php @@ -23,11 +23,6 @@ ?>

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 Date: Mon, 26 Jan 2026 10:07:18 +0100 Subject: [PATCH 03/28] compress img --- core/img/SYMFONISK_TABLE_LAMP.png | Bin 147375 -> 119663 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/core/img/SYMFONISK_TABLE_LAMP.png b/core/img/SYMFONISK_TABLE_LAMP.png index 8489bd9295f8b9d14d6e4c9a4a3b2aabc888dd5d..2bafd646a86558577d99fea65a2840f0e3d67bfa 100644 GIT binary patch literal 119663 zcmZ5`18}8J@L;sT#@g84*tTuk8{4*RZ@k&qwr!g)*%$N0m*4;Hs;+LTrlx1UVNXx% z>nJ4!NyP8C-@(AZ5T&KWRKUQ%@BhoN&|fW+E4$HO1-OffqzG8e4F1_y1hQ7QV*UzKlQxZvNwz`r1wuZ;J9;IHj~QG-MNPdmgH%nS|z zhWb_Nd}XT$sQ+oV{eu5XMql~A@&C8{|5pVAg9HOhgaL#4>chms$^`!Vf6x2hm~X%T z_gv{;@P7&7YbJ>Q>8Zla^#%Q(QOrzC|9ypKUvg%A3Mqt5Ek!H9ukXq?ra3cN&0=F(+SMFB$i05Ak2LXzzsovw*jk%H?`BW11pPiR_`TjzPfkwI zz$}@t5d!FkrkJolj7}e70P31DX*}_p&8@u!HVzI2>)YGY`Ud&B?Ck8U06;nS?o;*c z?S%jAT~*U4Iae>SU@u#&iQ~XnVtQz*%2gN!N~#2`6u)YAjt`n^faLATRs$WqE6HUC z7A`_XQmB-ymLNCx_Mghi zn2hvv0d@|KaG8qc;^Japz{j&B__Z+;w!d)f93u1!=+bWaY+but;-Vbbl~2(ZdXf;F7yjMz-^L=zOb1*m#ulKSg!7z1 zrY@vlVmWRpz;tD0Wi2KqW{b+d7=RbNy81B{7zP6LAo2k0w$bla2ZLpOL;d)+OOMAM zh$%br&6iYi)6Oi2loHmd$tkgfES&TJ3kwU%jl9vR$=E>z<1&R}>6SYGw1cCxY+6cpefvIY<5CGVBbSVS#^5vEjkA(9~0+@6!o z^conND)alP{@6dzj9&VWb*zp@`p|>B#-HKFX0{;SGbi^G?3|~fX79)Lgo0roJn9!; zMEicPNNf86=^?Cm!D3qrhwZnIZ(5yGBKUj9$DRW*L=PaTR7TERg<{qWES z73D-BLH+FUQLL6TT}wdkt4r4o2W>${@YmpQV z67#7Gx?8b7%_pgI?Tj`Ot76$$*~`+Wq{W4U^M3Lt?KX9SRm*016z5$>aQdwwJ%-`u z6bD?S<1ofxyLWT)z$C*mWrLeJ|W+8(*P*Q z5F3nI@ax8!&5y^lv^4$6$;n@>n~BPyMXEy0I$?(x;Ms*_Qp6P3nI&m5bg1R;bcHEn zFOdp4wcm{DrPL+er?OI}G5RS$ZiZ-hZPffA0J0}xCi{2+CtLbx~>6ijQObnA&=NQ}TYgA2-`Is^E&Su^f zj7*VccV!QSX1N)3ZTxR-!WUrm)bFFtafa{wOQE6rE)U)W(-Mb|rlau}eyhB@cf3qY zOxWK=PobgFKFJXVGHB7Xd)lN}au2UhR>M`76P3RFAx3K zXD`lUY#9|F&*8fxo`UnWAjdf$RCZI_?!>y)*C#f(H>(3t!S2aWcp!v^`%K;JFs0Y< zY8QWTT*VjdA%p1!e$g#4wg@NFTDQ#;;}};D#kJp(#3)KQ`1A=JOE%M4#(UQc{p&|< z!Ccs>ppLb~EJ}MAf)%ZC#3l|zx!I-o)np1c$L34|GTC8u?1Lf)lh$Ma;gKAOdU%c)N(!Eoa~-zRcGtp~L485l&9r-;R!!?x&Y0VA*$d>@Wu0 zQHIg{_sHT0Qm5$UFW34EEy=cw z%=nJ}{xcniEt~#$eNNce*a*QSu8<+?>+J=Ku;u~D?wE_Li`WE2gCG#sNODWj%3O7v z=RfMAMZB;vw0nwjPB2lqOO*t`Ve1`($rja}4$texRDL}2O50u86JNi*-?Z=DVUnPt z5HH+G-a!*9;dtjB#%Wyb!a4&Z`MfO$3N+!*G?t0u?-CLc zb#(#z#iDTAeSLi>9YOtXTk!?bQWpIUssj~j5@;d?eN*>z?o(GoH3Yot3UYEq8h9im z!m!ES7~*p2XyVN5Zt|Bn{ z3NDOTI|Q~C$g4br901b1f;$CiGb<*=Mo(ioB#v!O=X-8`Y`TbgdOAZ{iWvVVLl@X$sg5=T{%uTYzGH;u5Y(4m}wiU1@ z;AUk5nA2&UL+uJbZth+wWwTTKMd$rilVqPc+v|*B_M$g1FSrEJo{16Njq9JfQPFtLzg|4|K1I+^(g;N$T!$c8J$A()9V+! zieGj^q$k}!d}v%tOW*KMZpt{j&+NbiU?3qOd;Lg=FgZQI!w&!a@ zW73Q*3^n*4HPrGY8OAHwY)Aa0G1Xx6$|!yPl%twf({VrY^E$~1<38Uz+fum}vSsAG zFg{J9*;(=|m~NNl4=zgOMMfcgQEg%qx9!BkiV;G{^o1t)x)LZ*FPmt-6kN8S?C%V1 z#uL`av3+K?HB2<^l2BxS4l3D}X{~@=c%!fTw(AcL>Tmugn{vkqKe@rjMpvsoDSPRXYv6kqO&*#{jGa4vF58eT_Xr6Oup)hRt;_@pZtypjIn#vQm&UrP6}B0EIZR}={Seo+p5`JqQ{yzHW7rKb#>9X zc3_eW0~1sI;YG`8I#;@ykH+*I8kb+mTfnj|ob^BVf3OCg96w zrn^9wSP27P!u^HviMd*{OiXq znKXNIh%{OXOgtg~V}(Ygmm&w;#Ii(>%sQCaBVb^eMW;ie%)NtS+;Wr!@DHerStcc` z3;SCq`XjMw{*y)Mc1E)x#2S1E2Oi?Jo6ZNqWU#p)c*ozaCd2b_Jw)*NdDd@VkpB^M zSn$3!D(Lhnn!xA0*ZZFE`Em6ABnVoEA@siACF1cuci{8e+w0`@2TdF|KS+Ox1U)w{ z#(?KZoE?`p(3gntjbX~dxNW0}4(_xmZsu&&iOYGb@o?$f&a&;ak1{s3$1|1!&{+gl zE?Z~j?H1lf*rf27`y_HsqeH^782WeFCb8+=Y$e+mt~KhwE|p5raQBdYdFv_Y;^?qFI`E7EfBaZ>MI^A)5<=(rPd)sL{Or!E$12)RJ zB9yg!X3V5tyNT}gI-YOlep%<@z*&leZ z?T7^Z&&?|IylYfy_;hMgiR2eP1YC}Rw_j(UDR`SF>hIfQVRm^u&(f5Qy0U52twjpn zJ5eat|FepxrC%uuQDrQ^ArKXIrZ3GKuTnZzLQ_IUVuaPF@iRGD2qpBI&oIX=0+X(t zRHRpCj$Ba6X(pj`RHl%#dEC#Y%)gG{4P3=w{V8ElsWmgTW+LBjO`Cb zT&1FUP#%4}v$C>s1$?~ejME6}SF2rSD1)+c96FxctI@lHf`VNBozq}r+k%_MU-)V^ zE`ySO1G|4B6ywxx_J_sDYRQO|>TEaLP+fKb8OjXgSIg|QWa#izhU&m5<<7zdvL_Ln zvgzpib*JvaZQ_ytr;|J=cH={Z70#GEKiw|2j6fZiVCpez(oc&K|kHkNx>KC05?Z*B7lh3HK*vS~%7pjY(=u0y#zb{d8UXAb{Jv`=*wm z?r0XPrPJwN;kZfReYn1hi$i99{tK<5;N6jTp_cCw16Kit2=(+K_kU_z*j><504y}L z=-!scuH=sIo&Otn^8n;oN7m3H$TM62X=fO z*FfzD5gZq3b8BDx#>U1kooM)c3%`u2oSBD5A(;_FCNr1X_$SV0r$aCTz6%CNtbA%=P}6uUq8PG z#;Tf{t-(3E&Hf72@|&qeMN?<%?@v3gCOzIetJ<&%>NO+czXPO%4lzB?4OUnmr4S-8v-3{HVXOLeUm%M!VOb2 zjWVMt;a%U82uMZ&_1Ic{Rm-yH4SiH`uYE8gv!&%1FIe}6e}24w0(^P^ zuL5v=kO&9}xdBgC9|Q;pES_+IpY=UGkI}>kT5dLWc8Cdlx3JBBIeVY0zvxN>Ur3S@ zF3O@Yp8Os`GJ#OJxk+1fvw^OsBt{&D^SnnGplF$s&UMVOm~&P{9_5whhiLb5q7^^a zN|elkA<~*kFS2JXY!T)2r;NdPnA9!wFdeJ}4X!SU{Jsy_aW>|%fBR`GL_-!c*s5@+ zs(9J9=&+-^h*SS06NUK4{a*3?9E&CC6&iXo z@FGIBTElI(Z_g*?WsT^e>++8n>}b8?$vF<+!%>Roa-~5W-s8D=y;4!jrMnK7&m(re z&t)K~v&Q4!gbzMY#rhB(FVXj zo^R&FV%GIEY2rNRFe4FFH8#iK(|R^XjI(Rz~!IgIk;JN zSZGctPjYL@7{KoaI<&Lahnh`gHBlhlz<#7(nx(jLZ9g&XTv>3?SXfu1rVH?(#?|Y+ zaLqH~$#nx!?zNr zFTrI8M!39gT}>XiL&k5Ew>%Fa9xu0J=Ifcejwl$1x2EuWUY2Xg-?3;|`Ke$nXY>6& zcVBb^biq6Y5fED7HWg0+vz04-dzLBJg+<=N5XqD`8k57@9@{Zt@2{vMsPXs$v4@fg z#hVXGm2pKJ9N){8gp!P9kodPN)zLU#|LL?$w^=8<%BAp1K^Z$E4t4y2waUXB6Z_kI zEN)Yv8>bi`fczX(f7T)BYo{Nlsv_^6n9k_No0(%ZHM0XR`D@+c^O<;PuHRRJ>!N-~ z@l?bywnU)soKSk4%gbM!R-z5Ipa}E zWTw;oB6!ou>GG|}dwd~DdL*!p9z&J_Bl=sZQ_7O+m3twr-%Tm-m0YMhd`EIhq@i}E zaKt`}FYAt{z4`9q$uUDl#htug{|qo;_eYwxbSrgfU8w&+P^Im_^|oyWj_A%ofJH?V zqdwPGqOHKrFbMa-ClUN`UiCf<>~ATy0z`S4)D-!%{oiI6-NUzbm&lWoI$-#=W2ap{ zQGHXTxZSQ@r{F^&vj4SF>!Ke*AUtGMAgliYx^M@Ui9jZ&xkG-+_ z(dyxUEWs2-iXuIc)T>EE7vwmd` z9-0qkmJk1Q_NrRV;5m4lrS_WOMVOF+n#X4Ib8`!%#S_j3(--Cv({}gRdD-6PdE?Rj zyYu_xOGfLq_h_ws2v%26e@owf%<|X8`ib>)bi8EfRIen2DJ%U=os??XEloF|o0QJo z$~PTT61n%)=0W*+hxNog5M&NN^ahi?-+x_d!0fR6uOX);FI%@?U|d&|%(U7;|BY9b zQr!$zP4o(nMS#wges?w{GX0G?yQ`IY1IjOJqkSoEY8S{^-D^{{gVxj{;M?`debx)f zeh-nM;j1W4ckQTuqAn;a|IeCe^Zr?aPk|&_Zuy&J*w}8#+N5kyg+?Q1_0SL$tAihHVufaXVZ}!^S+V43w zHV;JdY`H4M^LsH%cb#9#BECW%-?v$yk(CuQ&Rw0ymB5tTtjL&JF$32(>nLS>r)j*{ z&J$9a=y<8tFk|T9aD4-IrV0EE+^?9W2be4wk zw@|XV8iY&#C|e4U?^63hPtmi@uwi+U@h|t)Ax1(hL4 zDX1`xh9QhQwGHFtiB2zARx$+b*G*z`5B22meI9*0ZqkR66cwStv4ni)$BS2q=~6=s ze*paCcj?m?uLnU{c8OiM=p6+(-ADcalHUo-I()Cm1#mh(MRO6Gmwm{-Lc#gBFvx^L zD&85)H`d9x-@r#Fk5y)+8>5?>)sLM%(;prxY8B+<-^(+)&oKkuy{m35jP|Bxr~CIh zhO4C^5&{DD2g07noq7;hD_3(6u>N@yq%*l~GvJQ5Z0tUCEDhzzv-`7f_w?%l577@Z z3krsp?lDrMdeo|~!wjg?R76_yT)Xj4D?jZlo9>#-3#x;6V5IDhml-{+1E<9E6`5R) z_bqZX^f&cb0WA#5*<{`=+Us;M(<5#X_&M=OLu=NPeL{NP`7i#`RT-bYO&t02r_cP0 zpoh4(ODWt-tfnsV5@|c`cpydt!@9 zcFp)+3PmG+e}{lGra_}}^2z%dOnhWUh8iyGu9t!2@*pvoWxMn#QoiZ6T9eo5kJJar z#MBnQM{PH?*D(atSk(v+WR{$vzUWkT_&xut=%S3d*MF~`D|{7k&faa$r=m=quB=RE z^XGL~t{!BZg?`pSR;?c?$EsOX?e;mqBPw)K!wyg7ZDjcm^h5MWYt+AK(KF_W=fwbCKfYk5hjfolf~FK3 zc3njCsE)>McfoE`|IuBTYX@T^$Gkq}GPMvOQg3Ez`CF~!OuqY%S^A>+Ka06LBuOxl z2Z>I-#(&1dsbRP@rcFTF^+OrIvh_w3{0t%1Jr!0fBVfE(GZjb4|3(nr;YLvM`lSIPF_7)fvc(OA)Km z84xTdeh%kUoKCrR@k4j*TaDSziEB4viM?0y6Rpv2!uSiXtw)BxP3P`(I)0lCB6!h% z*eCD8O_pu6cbDl|cIff^>XA}!QCZ!v7Wb0> zY;El476(inFA?fivPvepKz##& zut%syrEk?OqATZ24PbdGqB0pj5eijJ4=ul2B`vW_TSRhP9s6^K3Z#y$+vjUh;^}s` zbNXfng$>x9`r%{Otdk)NkP)&g`Cx^x-%n3pXdE|d+Fk~%Iz+p9T zI;EUncg-QECidx0^Q_` z0x>uL(qyulVaya4B{Q3(0`A=RXiWeODy@s+_!8Hh`Pt-M0Z*6uk2VH(FUY}`*w|f; z`>;~jdYmAla>WAwtNB4mtr|9MR!s|uYy!w0DL;_%AA(esMNV6^D$`8__=V?{n9?Fr z`)t}lqeJ{ChpG6JCua{Jw#jR<^pbF)9{KpHgwMtshC+$UpYrM68!WBrE5I zikFKdc5G=_9R3PKZM5LS@~8w;xY0-8oVZFGv}_C-^gH2yJPt4&ZE%MkIgvt?xGN!$ z&s_|t_Fk#r6awygzqJ?#av=oF*Z25O(i%Kudvx_lZ}*X>2lYP$eWoAj2V5nQN!Ix~ zMVak5byi94Jn)0`3vN197L4h?R7oWD)HO76w?36J4{KhLK%FF^4oV!>6TZMD+{~3! ziZ*(4L93CfsvrGNsVmEU>y22TfffQs$%H!_TX!9=<*vaqXk=J1~{@F_{HKO6R zNMrmLUC+?#U?$6%TogXDp#-+>4wPVI6{F@Y;5eq$Y}}t~sE)2yB&Vv8ml{`Y`ETUK z_q+AUF7UwB)lf!tepl}#SsJMwgV94CkH&S8Ze`07F_&(I**h^HWsnCiL8;rFr{H(4 zLf6m`k)Q`KmK2T`&0nK31UEwS%x6}^JyHpkv-?LvYY?Su1kAHU4Ic@pbU1prHHt+AA_XS7?cj4sQBMN0s~X1Ml@>*V@ZB zsey1X(lW~jZidhj?k>H*4GBm`&;1c<3QfI#~VVk2LKYclX^WRxBiG33*=d3=9mWURH3^(9L!X%Wd27 zq`DtFo(UT+d8;kT)y`<6b}xR6Jdtj4_ zl-a1$*?IAsw2s2^;RBwAF}Rq`0BSQMm4u_b{Be%UJiy}88HS7wttn7Tfs%@gm_?k6 zK{y$oP1qbma{ft0!1a_#fpUn6lQSaB@3pS3&Ttrhkq1SbZPWQ;*G<2so`J#OXcGIg zpt~|M8E?ITv4jq~b4pHa&fdaeWSeQw8vC(xe|gFq+k>?rE9;dtDQ7&6p=N67bR!Vl0pN=e!Ks*18}IPOSJ`P;4kz-v-Y1hE7fdz6TM(REP-(2z(AuPG*VR>6 zNv3b^*RmOXmPPl~IZW7wJaFYrnvf7V9QrjRyy&idDwr^9>EBcKctbq%R%Q=d2i#bw zo}xmwL1m-tC^*)nZ8#5gZ7AAvScMT%3=X?*hCYg0ogJUsizGw_w4@!%lDP*nqh@BS ziSJ|gc|-9@zO3JnNm8mGb4O>dYC`pm5i8(FU?MdaZ$?is&iM4c2nF=^Y7B9|>lQ`E z$v6^Ya1~rneqQdANzO!$8Onq}3yQOq8sh2cCO;ddOciE@%*}^*ds(3-oyT$^SuCVK zp)jPrf};>mB`e^sSh?2cK+=f3K3H7&BgzzCsWelZBtJ3O{1tFJ$)=Sv#diGpJADGGGm04GxPeV(E1W=t#A#HsmR#ZP>6@Bl5kqXE+99QGb$9 zSFZlqRMg9wh#TO5hitbLT^L5n6-QQCD=am)W|-7k0i5ysW|*R)A+5NZ6O~drY~Fs} zKzrP`FS@}ezQR|P*w;RY!WobvvlSR|Rga8C?)33PCx;m7v7VAIiU3eI#hr0H%&k3z zWsZ@Bb?pE4hQuw?G}~eb8>#F!eaW5F;rd6&jI&xDB2Ixx0U-Ve1$`_&IRs zQ{ek=T*b$42M{}(pL4hI{M}x|0R5@~4ptia#6B^z;#|Gz%zxS1DxaB+F_BQ3aDyqT zS>jRwRyK5L@4$qG{4v{oLWF^B)xz6_K1!1;SNMExM|h~snCup(7xF_7dcPuk=Zd|l z;g7;uYru~isJZjBR3n`W>s}A&`ubt2D15T`C_CMnbfz-n%JEGLa*1N7ifp6$nP^vD zJ4LmNYyA!Kir-#3Xc9&^D{dNaT`@@|;ff1SX(A1jPVf?BE%$%pM8S-C(TOG75+O9W z;DVytYoTCkzZ^2VRK=!;A20vZ>cPrTlpefVjAfPAa4$ddlGV+F5Z5Di6HHk4efPGs zNX8*K0+Va^dEDr)bZ_mcs1znnzQMi?aeue?NRLH8dd7t}B`apB_Z!fZ;&ZdU-8!lm zrxiciT=?Dp4dSUnk$pIsLFvsy`cx44;;l5pAhprb@E%+`CT6mfjtOxJUYLjnHi}Zi zHs$xq88^~G2{)QqlwDlt)#!(S^<|+z=VJS0N%fF<+#gT=$7Qs?dFC@9@#k$80ob*8 zJ@v)-kB_>RFjQdOZi?WZDO~!GG}!b?_gn+f(8xMtsU)CmaEecM1xf}St!@=R8}-My@0^p zIEb~4>#m(8eN|BYyDxQ`9yu-4Dm(19ZfJ|cE=fcJetOnfR)T)Op?s@N$P+Xohaf&| zVgI*?0^0GnfSzj*R-#SK#xt#@AIx9(9QEbT+xfW{O0R&AtTTW;f$ ztvFu`13a8$Y#Gin73UFQO3Mwmtg-wA<{1`2cCs4-v27k!rpHgx2C=aSeBM>N?8Rq- z!5bM8=0kSb^A}w=B&I*{W(t+kKdQ)ANP{lE%;{Ch3+C;fMLQ};=!d(X&d2S#+RB{Z z`p_UI(+MGM;5Wn}G?`+J>B%K}?>87Iz zlTj(|tRFj`8r4YZ9SEqFIAauvn8s$C8#H>H8MqArEvubjnS=~hNcBGHSRQ-)B zp5#7t#2(JDK{zYxUm77jK$8o+}i!{=ljxr#6{Q zF(RPH3Cgr$(HvO0FsFDrrqB)|e(`fK>^FMdRji*0tdwIR!zf|;uaTL61( z&JC3mgTi=L>-vgHRs8qmh|U;4%W6zXNy&&BWBqzplo38}H>0Irm9J&P1V+6s;F3rzLN89e6jh97-}E zIAFO2Co~y!_rs5mS!kD8dD;fpjFa8=2xj`|n|IV^ z{adX)u2EgBJk;5unMUc3nYy(7TyNIiVn_FpyAC9Ig__5Dka9SShN{;2p4Ns*12`k) zN~7Ur=`3$rG+5frCAZ&3&aI5<{XT_( zZqArI3~;xb$a%SvFYxQi&)M_qz^mI)90VK)n++SLn3|fxb}hjeQT1Tl&RlGo&*pcV z2X0jyn^MK^z8#*I?)(-;$5`DfkWqbg@Vx*U(vQDMdtEHA&eI?&Z;iDh1sVG#AJfzD zB?ZszhiIs<lSmaZ!uk4A?`t z7o)h(z0ib5Yc3ewH76qu8ZC2$=+XPFdBhWL&HJN=vi@WyoZsR*A7LiH|5UuLzw7W)f$r3w3wm<@j@A(c zj#6)K9hdPt+p;n!KiFmB30pJ9;=2@yH8V|^#j_o{?zO*zd^YwjDX+(QYVm0N#L@lz ztJo2P)tnLfApg@= zJyw0eRX%$T&c#%bRJsH6o)b4Q@L~foYvaMA{O3&86AofGSzdHq$NrTvuOI_Qdro_F z^$s8jlxO83`vNuM1tJHvaUtnsWXtwz9Gfco=CDYwxukh(Rlu}jW^+(gT{r}T8m{x0 zOb{!NkK6J=x*>aRc$IVe+@sI%$Ru?v_YVNrNO)~D(FQ*g-80!;+C^4Y7H)R8gvc&Q zT(-56Utb8g`wsy`X=TR_CLvy(;J^T{K>NdB+9pjP}U}T+ljR8XLE;iY)>x8qM}7xDElUQm7yD+I4ME?6LfXD$8tXW?KSoW(92GRvyF z7beo{58+CqMb8&rT@ai!fYzGzP@lstK5>|0&v<4w>7?xr!`ZL2AilFZ?LN!R%?bl1TRQCsI>Fvijcg z6@{p`OMMyr;;SZltEXt!)=)xO^I%3Z(YkC;TOEMSnx)^l&(q}tGoHSkPvsFp@TiH7 z8t6G+s@)1Wy9z-lztf4;pkwpenV`Xu0P;-0FA zp}6P-eyMbJIv8>u3m6Qszvg*Zct}-QS;Ob<*sZL^SQ_{*dO3&mlRP-*32I0;AEXKX z^ioRqa;&)I??f<@VliI0y&p4IRH~Vq*fHTh*}>K;ZliTnoQ%4*+W#R7xb72nD%|ic zpEEV{YZ5c|;kA3T(vP$6>gf3!~V2b@nDekAva2M2PAp(i9b z2tRPJP0n?kR_p1IFm9P2j0)H`N^so8$vfh9pDww3K`M&Z=(jsWw*C>gOA}&Ge zd`rG!`9-&-1oQG@e)Zu8dpY=ITH^fEQXtL8zNmRo`9e%Qx&Bc>y1c9+a=YLw5~7K> z5*bZM{IWUwVs1{g`5;By+?9xS&JBAO#pa(Nb>S)y(#%Y69!$2lR8c`ux^kIuyXJ!s zz!pev%&m--80!9~eGz8tw{zzod@#0WhT3ul!>azw8~vZBiN#(j z@a+B3V8$MB+lE%2D7?}0a5a|8RzP~31HAd=TE~FR><6M91&_^hWRsKVsar$s&l{_} z=S10F@P;Fx0pEBJP(@UnGhxbG31bP zra;jG%Dgk)vCN~Q+#%8D?K_W&xZ;qUWH!Kg0G z7ww$>5){@zV%KzGilo|#3M88I=^T?Nfx=Qt>5K7X{#E5l7AD}Y7R({=x=o!UK|m(4 z>qjtQsQow>B^Aqlb)&EX4zI;iLT1VSO8no&ivYzKdA$QlRc1Q5 zt5XN^XfN>6XASpHk=*=4B5x>w8}IEGyF*WlLAvn$li6R2PX^{B zRo+$;@0!*O-{#IJ6!u>p!kl_qREk+LjX{7_i5*e z@MDCtmt^<#@(E@AlFTszT9WAn|GuY3=%`ww+reutmen$9{-t;k^+*FRJ|w+JCZ~Qx zP7E1B?5aIGY1lU)@}1$#gzC|yL%ci9auuYfN?~NW0PT(P6fS?KK?Wmdq>-%m{S0*B z94WmiL#k9mud` zZzc;uupC`{M?t><00#%4R%OpH;LDFIcd`;>pcqMY7!N+*ATy_pu%M z7{h}6ECC8q#xH+R4r~_NS`%pJsmBG>tZBIYI)djAidGw=L)u(R@ea8G3O%xn%00jj zQ$IX-=P7T};e(c}sT328vC&;KP%L^Xk58jI;eYS43aC{>T~^>g>gk2yz%ZX(J%DDx zkS)@a9cTcuWSE}Q+(615z^txX%t*a>hRWvlija!E19jhgS_dM5;pYC0x!bn`J=Tad zMAaB;-|ZYoxWiVFS5+OmmfR{osZQNlwm<6%tn%I%TCN1c?zC>JjyKy6K8-pN(civX zuRCx*jkMc*QE6Ne$vre+W_tU5!^Yu$cA9?7mu7C{{v<1+ul_Ge3{iDrALPDK+~Upw zf8<0~j(I*$S$BU~N4faj{ZoU@!4q>^l!>f+kh~LuB>!-dU+e zZ!n*Py1mraj`f=G)^p;a6hKy4m08SwR0N}$-ab!Iw`~nNV9dqnUX4y6!VW{Fnehny z*B@V!y?!AlS)*LNDMiR;lx!tqqhK(YzIX93F@HWP1!39iuLJe>T`$4!%+!)aP>_-K z0+WcGQ;;*^GbQ6oc;JbNo+3j3!1__^^Zu~v*E!Mt>_VzS%#Sz}@n*QJWP6>7PQkI0 zftZCuKab`jcM=Ykf|lZ@0z9$Qx=_RO6zU-UwX5i3Z7svlex%a=_T}SSm}FpVWlTCd z!{K&12*nrh9jfJa+zUM4s+XmtY)Na-cemZ$_sc@xY#9fo(@SmMW&ciH7|(UpN{S7W zE0Nss4)!FgS`G0Vd_`x%^(4+yNv-T81(aG@*Jsvf?=F@Q=Im)V_M(^2;wd`OzIi9n zK^eEGv2w0z7*H8gtjd6dv>WfaXzMpe?C)|-5m_<1O16plIC?B&gflo8LQN4B{@VC@ zS!w?`!74diTu)c_JTb$0?or2O<08TpakyTPWt8vw7yN?+_Dz7(sB-p}3Ar9>H_~m5KALA3OU4QHsCaHu^*dao1b-2++Za-D+w7X>3ZuV>w znF5EPqA#F|)D~oX6@eC@`d??jE_Q*0sAdI@__4S?FNjCCnlZFc_1AaG*(vE-N-p(} zPBd5A$E*yO2xf}(J#|{7vWF(a%}bY)=CzJcWxD!JAUDVQtJjNn&ExTj%T10kg(wMb z>SVrQW&yQL&s7>U;!H&N9A0YKW7c}Ri|*`nI_}FGzVGBcUIa5bvgWeM?6P9brZx?; zab>2ii~gi^e_4VyNfk7b@bATZexIYF7>49c`%d}G-cJFqy`b0QvK;&L#d5_ADE|_2 z;05tNB`yh>sro}8A0!XTSk%SupY#y0M z%17j4KRxIQhgTxj00nhCMsLE+POmy0O%->z%`&C>9+kG>fEm?u3ceOh@wdFVM*`H; z47pp3=StKNf%}fv5x%$e*`j69+V(A|riz4Y^GF;fD~K)Pd3Vp=8$-!@#1np?cH+Sy zPfoqjif*eaA!lfX^yE62iXY?j<=ospgszSrZe~tiUeXt8LcUPbSK=`VtnCg*_2>O1 zs-Ef)+2fX6YwfGO4X|VzfLa$?5H?L6iesk~2SmA8S>bS+I}r9hpXeU-!w@C$sRP=%8EV+ECS(0JaaqB z-SDB82~L+=Rk?m=6hY#UoOew>vgOy1Dj|pex?`c{ z1ktddzwW5xAz!E<6Y>#{#uJ1{5dK_6gc`U!%|;?y?&SLMvu{~;5E=;aDcsCZaS%Yyuf>+warz*VM&Lj>W|FEkF%D)w&Vj#5B38Qc15exUVR>iK<^q3 zXcYW_fY!h2m7(}@JKf{jy>99x3gn4~9n5jnaRvmt0@!=a2QWV5Gy|5$)sFI9Q-%8g zPxYMEObgD!s^0b!YeXko!=N@%z1diB{jvED0qd~nDac>PRI4xvKjiNpoI6mcN-++m zLIw{ONTu*sdp-r*8yb9v7tQO-p%GWaiwim1E<1qGGIo1PI4BW#QZ#mmk*vzYGhF=O z3eu_U(>y;12CUM3VI3{Zc#>wc(Oev)_dIsIBDTC%2}-Tro6dKd@lG6e_SjXn0bn*Y z%xu3hmtJLYu<@^1BAtxDYK;T9|KTg2&#f^ZWRlG-js7XD>%8ieDT3I0J=HY|6=JI94c|2ud8j_+U(7?z1h}gTU%}R&BnIbwr#iB#?5WM z88`F2pYQMe4<5{%XXebDd8UQZ9^)Ry0iY`e{(S#NoJa8~Is>)MG)z3kl-dN}+OPIY z$cdYqHN6*rO9F`KCynRN!+?Jj0rzAY3I$)61^XJtUC-5RJ{Zgu5JY9hsqFwW{5n(1PwZB0$=4fz=Cj+^*r z=UcO$-XFpt@yp#T8X#E9$oEb{_D~NpcmPf1w=0V`m~C#I5{^MQuO#K?vgy&JZ#cCd z(7sTBurm^f6RyBU0GZ}S*t5F43U42S_!>br`_iF zHGccUy#Q(|uU7q}ycTCR-%^C0c&rSc!iW@w{Ju%A=1oQr{$kQ=g?|$4E~+g;JyU4o zh$ONH;TjDomXhvk)(dE@2Sg}p8|2zE;9NewuA$`rDa=b`9|#`!&xx#tl#NiouKk=qw=Vi%QUmp1?5*wrU;kK=0#H>ukWA(G>Q;#;Uh_eR#Tl89u zS|;}&{T@YZ?9b|AwQTq`VN+wHZ}<#GBK{_62yuH|1fvS& zjS%}cX$=7B$_+iLCyjc;YT8duL=ueoS@hi(9UmkQfVc1HaybT;q%sY_xhNF97q~`6|0Al^Ua>X zBBu$@viWu0fK<1W>j=P;au~5s%)?0TLX0ptgC>P;izJBR)ZUgBwf;t2QAV4O0rgN zw}w9Zz06yQF%0jG4Q5!HVXI{;3Gd0&oCYQv-fLe+#N$QhC1^oeSYyf0&q-=zq}Mj3 zHM4A&eRUclpelOx#oBE3!gaWBta<1{85ZuJBbTk&*Ym8x)Qp_5G7_F5qZOj|@15bU zMCj!2HYdl7E%}@zj&HL%M0|Hxz&p*AI!5Qlujp{>UC(w0Ww=s;{Yn^3sJ0Fw*OTqG zZhjDRYu93wq`EzE?$v|$<@eGubOTxt%0c8pP!)wCJ8=1m2@W%N*sgxrVK6;Zpi> zQ-sk_hkWbSk>MM`b7ny~(^=*7_*ArTa@OTvKj~c;TmL|V$REM$*6bZ2maBSXh5Gsm zR&G_1l#G%CVMF8&n_MF!BS3{xTvhrK8{U>X%D$I;ebz|dfz zxIVI!EjQMc)K6jPHSSF|@14;vr8{|^cub+2J>Kp@b&ow~S2&{OK2w?sGO6D^f0`A# zFW)ZFS}ChZ{&#k;1yZ>-8HX*6E=)RzcS8zJj0gHwa0xdmoDzP@yTMdY?Jr^v^@S8P zo7+tazjn1xC(;kaSxA@fxYa1`5$m-s-+XeX2MsNHr!%Icn5QLEtK8d@Zo0{ayDFNG zPPofju;?#uSURG#Dn{EJpw_kB?LUeiRu5@K^h2&^?_%gATLQmo|6-aM>oC}zJZ&Sq z9)7TWm?Cm`@sqcA_D&}k@0t)o)nrOZ@VY}@b zF*%v4jPuQnQ&a$lYIOD+$du#_Gerz9ArhJ6^BTi!WteN||9~kNx~+-5Zr2aZMWHP_^+OG4&cuQya~ME> znwS}cZ8*}hp97s=3mMC2-K<*{wgn%v>EiF9z7QURc3Tj#cYT1?&KplpLxSom@sQ(_ z-i#-960qTJ z9D;CL5%R;W?Qx%V%qH)1qXiIBHbF?e#c-i`NCUSX&_c{`UbEfW58apRG|+p8xZ)Q& zXFr#kD{<%BK3vyAK6~&i&|{HzDPUvM(dTQiDjN#%cjlF(AEUy>=K@(q*h^(8k5!Pe z*?0;ioNcnqNIV8gL0$KyJulPzFMTwvX9+{NEH4b^u@%#iQM$@@j<`hCU^=#xU~)Ek6{1E~a7&G2lC#P+abU@TqeP zaH38UY3B(Cm)AY!i5g0T=nt~U&D-P7+qjTjDKp_47*wsND=1o&GQ70Mi`IG&^P9@t zY|E$D^xlsV@F_s-*A}ry=8JLSewe_YmTZ*;g}XbxTER{JiZYoW2;E{f`o5K`jZALc zk{*pgUS>R$0SznAqaNZ4uUp=ig{QThLKr%f$OJsX5oSpUCBEFYUTcsf-9W!de(A~x zhBDW2#<-9f^$;NRW3n6U_s#e#QZC$+C0Bqh`n?m3{JW44u4d&e)?p2$Wh~`Uev&y4 z$^ukQ2KRp3CzD>`ZuFaS>OT26zP>h{K)ms$>(J?UfhXtW8QuOIfSMViO}WPM3a} zPkWPTPsQ>r@vYK7v7Y z%yB~GDTD8oOK3=$L)0dIc@7=dQrTP=-6ZYy=s7%VO4*}?<3r{+G+IjL4mQ5hU3+vH zDKd6QCBcC^VbT8Jw z1>DjPEvYy5l*jUNlp3tL3+4bgRbE&i8N&erZEs>XqfjeIPJ(RnNmOU#Z;%WRl_Uk_i?CHNTB>qzMtu8 zu6{OvDqJ;X{_7b1>%{^F+I!2)S1S~Qof`c)$ALbTm?7z*u3+iBSEA$t#}rTlL47En z$4aeP|I4&HpmES{sj)kot=DmVMDmZ0qgSp=@e#qyK6dYn!OUXzLR6qsM;*%D5tjai z-TKYY)03jQ3Y#?5?bk>m?=eSIwdHs7%kB()X?Od+(4_IR&C+u#(~I>iZ}LL{MSX{l zr>>X>h}%qAb#_)H{l!WTfekXIFIPQZqe-eHAWN1|p&Xi$Yzq~z&}FJhq9+ohbG9)? zFF)OWFGzDCj(m;vd$yjpV<9#^^yw%YAFFDcgi)PL{HVt#K`gu2oFf42=wsceTiy$b z#*fsF+&X)b^PhZ)2(Sd7S^xxei1ee)HJFnl4mI|R2~7BgkLL+r*zxlu6Vs(lTVX5V zuuP}hwUhXB#p9YS2dWuz0!qz^<9w;QYA0Sm&~xn>(az3i?wsy zN2%G^6l(j?^1ltMQ}?|TQeWLrv%Gat_;s0JQavIsy_&wvW)?sLNoMquR);LrR?Sqe{wJOEORU_fL;mxPTdB%UfY`$OS7n+ID+{Tc(KJ1aY zWVl>=TJj2@ky>-27nUQ>1<;^*(%d_+<#gQ5_P)I9on5*oKJa{tv)dwcYBP`!3!Y4w zvw1z>Y`*?@vK1Ho$2xQpmm5oboEkzSSOS0tdOJV&RIdr0{G$-1RRlO7@x8l`xXMbp zFW(R8T_@db!(Q0sPvtySJO~#BqI`klh)Un+5)_iCgCEUG&GFQ|@bKwLegHOIc0YA> zh`erISCn*}(2f>;X2TkCIwXg>V;{%#4~{_zRs#8=Jlp@&A?R`u+E-<4hDg@~JT)Vg zob920Gcr;E?6h7MR8BN%%}%HeB>OZd%Jp!{aWkHrO2kRtwSOkLyk9M-fo$SaZP0>K z<^nwMkLk7UrcGRC8(Olmkb~C=l;TIlQ|lzBcz~-9yxQTRG6J8;iebZlf+ifn)jX&J zPkcp{9pPI}|DEI}q^XW|Eb@zJdKR?Oib=QxKa}e4%Nz3)#}j#4Tb1N`FSEmCn3XlprUH9@ejeRR!s z&yU5vz7k94I=%76!+K897-(_e34MegDa4*xVzcjdRu^0zHM#}d+k1#S>j{GQ90O+E zc`6T~aB5rw&U<46`nOiEuM;!guCCu)#V!lg9>g!c9|-_JoU$pVb@U9?n##aPT8^HV zdp#fUl+_tEYPKTnBKDAEQB4a{D}-!%c1uNk_WZaimp+7U0=JF04iI74=2I;Z4YT?I>5HP=~^?vN&D2uqr%@;&iBzc ztY2|LU3hVsJY?viFjM?XDu>)?`SLxIzXJe(r~8BB&*UMgS!9$8&3e?u-@TzTy0nGD zHf(VlsGQ7+1*=H>pP@ZGUaln#NE(?63e9rVL&O|xpnfBKfUUhFq!%O@EaQq>1<;;% zt_0}foH&q+C6+T@mJm1>ym6W4_g1}g1O!a9uvb)7S7-OGt*eS2>~y3ia=TDOvVyG~ zkB`3umlH!9D>P#UXa5mFV?TQGCbxw>ySakr+TCMDBCduZu#EM?ee?4!)csIQo{Y?+ z<-0g+V~_ouRRuu!yZv}~d~`WG2XXp6u8;@mfLHrbvLhebbAEC&H~x4N;eK{4BIVR5 zIL$V;gb)({SEo2{Hy&6h4u-(m39lP+g%eo-QP5BbGjlLAr!a3fv!~V%w@=$dw_6L_ zbyRNoM;d{PK!bTPcgGngB0IXTm+9UhUJ>9WHCqn1xcR$5L$qh;kS|MkIV&^j(fQ1) zmH)jJ5)=_p_H5@_W!Ln3ik2w}GgbwZ)uHvm^Ji5-S0>nkyRY`Ui7EW&_m5LN+a{^^ z3(t1mKfFOph!b^esbEg0=>yN@EP2$9@qY;LdOP5%%iw#$4nXCP+L>cGctYKm+0dGv zH}io>8$W#S!}5zfv^BiL2SX3zJR-rPwbSBcxL$JB$VJ_SgeWQ zikq?6|ELHSl^W&VgFv8=t!qA$Umt+fT*D}j8s9N_B4=w5uRGZfE+aw@4}Tu~QNVkC zRS7OmIpCzjFY+d(G3%60qS9+DwR}Z}rET}H+=xhZLTh4(fn3-@NINT@V442Zzt($O z3FS^M*u}E>3vF*A^HLQvFb+pGLSOOok0Mno(yj_J2T^k73T`Fcfr+cp*M-yVUTJA* zh*xXPyyo%~-YAQ=@gj;VIXT^t!tBO$J7O;_BkWTS3G4`LZ13#spwQ{8Dmk-f;gPpb zn$y&1uG)UfwqwKGH|LyrT05W7mr_MZdCKFxZ9qO9`VmDNjz8TE_xd;1wDDW;;v}ZX zD*>oXu>m|BN*Y{#GzPWG2kYsO8+hG$V{ZP?NoeIL(SGldb`(FR`|rbc@voH9*`w+t zcr?!Iu0!khI-CawU7{#yC9g;1&E48bdzR!sSnFH2O=Ys6+1J)tf3<#r%-So?D3OD{ zVa~Y)u#4FLHa4(xRVv=*^)qlR+@~u<Bc?*}*Zj5aYeT2GeZ8h3;|KcvL_DP=lf-UaFRDMtJ#*T=k z`TvfIQ34V19{KxWCG#e27-2w3AciuJ7KnLo@!|Yz@m2+IDB2Ka-Eu zl@(73p=Y$|@Rj@b{KRGF_(wH~m3rcM5i5Wr({Sfma#M@fC`exDu#h5p%<@IA0EN2t zqILBg70*k{%VVj_-11ECkC$fS1V%F83&GM{P}^_Or7{^peE(o(sKaB%ZT{NRqif-S z%_p`EpVQuI_KUO+9amQff<7Lk_HLmTu(Mm24Md+Jnd}=?!Vqac7?Y5Y)XO8#otLaG zYj+z*<@zJ5Tr!Sk*G|^Nl=jk@pe`H^AB_yjaN`cMt(y=mUStEMy$uhS=G&=uTiU*H z>J*kC?JF(-X){not`e_ncC*&Yl-@k`8VpFj7Y%k{6 zX9J194<#YcLKvmrQoK5I?B4J7z9x3tKe7yVU0gQ2==5)Dsd+Kb>{3+XN|TL=!pOXL zQkG&;@d^Z^t!`y8j_IqiQKGpwf)p9#cqIr8uFZ3bR!~AHUHWIfWUu-sC}_eox+0-`%tTw$v{U@Z({$?fGSnfQg6D2%MO{21`5;bicbuXY(%NkX$$O0dhLaHm-6 zaU>YQbDem7Eli(a*!f)dGj3qHW+%|%C(VIaHQs1H{h>LZKobtR4dfhLmvBeLSKbcl z{s%$KFV6s{$9rI@5rL%%zp`UrbIqS$l9Oists{E_g<)jt;Gy}!ibC`v-dqN?12)^t zwU?|Mz%TvSt}d@^MPmu*4b;TULLNV>!`G7L2zBMUh^jvx%!<9z3eN&0%wZ;rE${IP%we!1R{FaDP#?;$ZUdepaD!SAOe=yR8TPftf?N+@WT@q^&nbLWty zuO{x2qNooKrFfuOxdTa|<#3*Jz_MPE=T@pvaFusmxaf`BO-2HB+PVJqcXN_8dH)?5z2`IX&TP+DC#z38HN~^tpe&tdKZ& zAgtg3p3|DN1t~DMyCpZ>Syy@S(b3BJ0{mdWv}F8Qy*Cpxy{vqE_9?Uca6{$2@!*}# z{8}EDnxow6uW9A`p~i=@NZKgMJB9S?d$jb8(sKNz*uo^k391!Zs`7bqQXG1r0Hx>e zP0-02b!<;R-XZKM24_G0t+mm^(A9{%Ei~*+31LU-rQnx!+5C0rXXkd9_)-3&JO;9w z2;lilx|xm{5aVl&G;x%DKNjHV_3uAOVB*vmvc;x8(SyM!9BpUIYa7~nU(njDI`-;| zN&pZbG`u>7@MzN$8~fd=XDT`{>tgC=ZXbP3>*XH%g=jZ8Qa<5B>tu12RR^k+?b8`u z;eLXgs19sA+}fQx`o4<7l|_ohrG5zw$&Gxd?gVgd;@#Gy1r9EU+xdlimI&QuXzF9Z z%&vIS2zOC?%d|&yjMDKLewOty5Bk$L*9(QcIT zNrawpF8F1?&a+w|lZP<=m7f+r=*;`SJ)}YVeQ=(nS>3fXgJjVGWGOPf z$(`>G*w=ItZ6BXCg~P7@WWFv#aikZ9RSxIbNg#1x#f^Kcbf)kZlD z^je5YkDOxwM(kT(UJ6^)#AfbVxTZX6tPAvFr#xFeBOQK%>Vt@XY38xGQq`)$E_hlZ zBIOZhCl@F&9EFgU-i`OcJDTxxEn-kw-AV-Bg)R&S(~y6w~b zxB5{2U1Kh%fPrt3#eMQpqhdSaKM2V)tlt1a; zlRR1?UKaRgS-ym$&7L~GaW)w(J}s4l*>PFFe>UloSV=V`xy90}L1E6+CWJkVn# z(liV2>F@AMJ?4n3BT_awng}H)#-G{SSBKW88$b8>yczu9C!LK%<`3&0-fLr*FM3wL zfd68>0#061{=RP8aIs=HT7QO7pc!NzC+nZX5-`~6@@Q%GpW^4qxUhL9_GUL~X@>>_ zP*Uzt#Bq9A244N%gpfNCA!|;Z<(JqWAq!_Vwv*QL5J=T%V`KaLiMa{?VcnsZsM~dM z;9S1nPkKKg+%=f@mUlYdHrNXPK>gt4opCN5&$^L}MSV54mSl2QhVLfGTBE1A=DvmZ zq7D#@CY|=J-^TAzsT1k^$7BXC?u5WbmX)jP26Mhg(dLE2A2JV1uJcF(jJq2?JY_w3 zW_?u9kS$iSY*Lc1P0?10+EJfAvvAmqUS-|Lztyg_MztESTF2vUmeot;<;eOO*2S(x zas+d3?YVGbOrYMBk#eY?&-}F3BW>h|;uZoRr;7f%K4MMwWdq4-Y~-8*>oMwWjZM(s z=gpxReQARivGVwvksU$y2X)*}H<}?vT={Ye#Fhvxqtn|3->4BzQK$h_m&_5Bp~~Mb;#-I zX-?0bYCL>hsIS0O90hdpoBjB27Qx3UUrQnBi!OC&j6W%4g$QJv#Kg_()q^r@C*DOh$-v7 zxVNsqT|6BlBq(z6jZ5|h&AOzG9GhJ}LVAY^_Zfl$@woCGhr4%IlwM#O~}Dh(wLFb1zb6tg||;Q~B?R zc#D8OtDa)~t6EdjzL?BBur`C!uJ+n3%uk9Wu@EKr-I*kwa)?^R_7*3kfTf?ax(5cQF@ z%*LLbAaY>8d_M|qmgw)}=lMMvR7qxLTQeN)0=Fi)I@st`>Tz{Is@hu{!oe8&sXVZr7=Q{@Q;;0_tE}1r6 z)O%lEUtc?s-jxuaQPHtWIJ05F+!GiNoI1tlWF!QA1qh`2mcokiT?j{4%l|GJgNh$z zh&{4D>NEG$|GCl|YI`I&O+{k>X_AVPwD5K9TGABMA<(&^Lk`VtYdu2+0>rC_SaJN6 zHXO!#DEj=Qy|MWTeBBrHF35H}p<_<9vu%|d-=ISRBC}Ips7uWdqHHy9A5RN4hku)! z`$5nja`QO(9zRv4E+zKYwOBS40_S%dI-WDvZn$U!%+!HNvmTuWnEBFZccZdFv(Dn9 zJhVyp)PDoV0cTw*CM3@i{3#ksCK;kNr8KjwECxXlzndNwdkbR(x%`=P#fRE_T_8T4g~*!XK}VNH%JvIYu?%EKA-_ z`426b;R5Pys3G>Hrc0CYT+m{cGVl&mnW{@DH=n)_>wt{mZt_FcBgM||4jv-Xg<6^{ zus^JQp_jq?*Qf4pPKG4l88NYPY#%~}&-~NDqxZ%nLs65wy!=AQZm0tMz=$6j;gx;L z)`fGo9>%Oy(j-_m4Rq0F3q4XpD<`C&y`~S{Yb6PP*U@kxvF1G-gl>u>#$dSHmG>JP z&bKe3oBT05dI^M9qoDj!bC;=gcpVYyLAlJzHEchm4G~a*YI9=!+gVk$Qp#tm38ylX z9^tJNo^YUT^3rMdwYk8Cyz^GbX;6!ucs$0m()gV-6HGzt!Ry}Lv&x4ZPj>xe{ae@M z$fzYV_GSNIdaooT$Up~-Y;JCDn;xd`VwDxBQzKfm@p`4EYKmVL_h-lKk$aUN7~)Ot z%FR+O{zjGER5s)=av{H!80|M^CB>^d&BpFQPlM)-L1U;r2AfulYeuJ!vx_vQ$!85T z=UXcDbI-5rN`H5oM@WmQ5AFK}OYPHiDo>|@=a|m#uuwPiukUpQNZV^Py_$u5UB6aw zL)_@U84F)y+xp3Q{Hd~iEl~X|301oM7fm7sE_mbIh_Krfn#uJ=a(%-!odD=^389m| zG`@Z>8%(}B_^dJAkUxbWdGB`r%>Hqnt7XoQ@F%TSIi;5926`VsTKiJml|Q&0nA}Gn z6j~P@jQELR$1z#G3;O1evPDncbK~vwwr>s)KVQ*YjcU-+wZ&R%wCn~?KSnD&4{Y%W zVpXP)@kQjY>h>aXxeShWkseXR0MOjhc<~A-6QepXF-OT#-$aLqCaK>qc^_<%|9NO_ zmOy8khqKXDfW?V3ZeoO4)(uJk-#@u#6PMy#qQb&8`_v#8c5K-5djV6A(lvcC0)BCR zg0Wsq5JqV*`REDv?Pb~!NRu)=LEHCX?PUq1t$B*bS0T(@UnXy~h%gW*tQwio(eSX_xkkA81&7utO} zhfDe=WvcK>UggmaoVJJMr50ns-mbLm^AGoR)0ioBo$SF{mu?x<#JQ_)3=i3x($2b2 zC`_0mRZCkQa{hQwPw}lzIX+C1{ik!N++NOMgm>3N)A3&di!yqy`0lrUJ?eYU4w&V? zSXI91Y|o5jB$3R`IeCX{)yp3{AoE=un8sBOE=19Kk4|!k3D+ojpZCIjIBSH$5)>1YNqK9CMH8+sp#ddy5QY9A zXB*mf)iH8_ki-$|?*GAx_Pl@0#H_*O1zzgv6f*`47xT$t{_3%%MWRH{rD!h5b7CXO zm=k+GKmNj2R5Z~L;QGS$4cLqLGYy8u?j_HBFx6|<24(4?*<#{w7Fe&Ut z$u|?0*#nm<%YiJ?sdn@^yTnOLrFA?EQbY1!sP>ZRk9;%G-qsXDs=AMEk6nlr+qk3D zU^IBEHWwEej|R?QV*XsvZWX!y7dQv{lK|GXb2=^fsh zyo`&H>&8RQ1jS2c*vfQX3Z|xZ>~qDCOVa#prxlcbj!W0uBzJP6$bJbzhpa0=fTL>7 zWW&^wLQb!*e*!BJicS$7IUO*g6=I*(p4BPgp7UP@ehA;KtVREN=SEx+KP!U!yANDmC*F-j6aqvc?$&C z+Ppx?y%w>qcV-u(y8LpJzk5&6hkx6uHqYPseuvhj$YsEt+kJ4~lZXgN&W5i{gds37PNkm0dayD=vbOQYa_wmj=dvq1Nah#bK|wh?af3!ixz;k|Ez zpXqHCn(-^=@A;JfE$&y2-a}z?g<#If2u!(kZR7L+3jmhROECC*?)1gC6#@keQfpNM z3X-B`1lndCr|Mx{-O_S?@ze#kRWhlbI5mlJ!%}mGH?9-s@R*o&^4l0ly=DLS7|8DK zbWF$NseYa_;@3+M<>s1gYjQhrWN+ICIN=JtkKBDc|Na8rEeUsIiesG4t)`Evr_UO!@Oc*`*Ub#C zQ66_pIi`jRsUP=k-F|x~`B?CO#)Ra!;j{dPH{eUv0%1PF98zrny9=a~ILyrL`_kLi z`NQ5&cmz`5(G6%a-uEZs?7_Kma7?En$IrViwA>g(rMjZ387)W6xDsgQPzRS56?h?9 z+7Jb`{XxJVt5EaX)~gxpEpU_XweIRg_l*mhy@MWQ+>;?3EzhB@X&lx<=67n54P=cb zDHAQ49qLyNV}8lS#XX=vZ@UxTnZ(KSmm_`Zn)<^<@cYvfFND2vhwt7yetOcgEXl%) zgSF&4Jfo!|a0b>{Ha?uzZ=Z(|yCPH2J84$Nw;nNzo8CA`J7=1Nwrj>L323OeOk`6y zYw9`FM^QQ0(Pmn7%ZsSr4tmz~xJ9+Kf7zsXN9w_9x|(a^D>>F)#=bu>zdT%SJ++&svnL$^1g-VrP{vG3K#)K`I z$z>S4zyZ1VsM*dkg*nz4uTctIuVsqSgYy_-;(P>l|98iafF}8oJG8m>`zFmLPiglb zO`f?@R7!f=gByfDTwc;Kdc|L3~`f`SKui-_sif*#!>lycHz%So*G@p)`E z?PWH8ueT9zLeNFY$MP(9d~vHXvZ(2suo3t91oM+)$KH5D-_9O3r^O$l?DJ{-;NnqUGXKWGL;_6=S{3SK2cm(hE|;JAbUGRJ>3ZT5%aVRRO%<#Q4t zR{``_^}j9RZX1!Ke~R^)AGoi0S*F6dmgG@c9;pD;hPQH~!uNo?pVb)c_B1NCx|;Nu zLzG#<6iV7wvX&F~HLd;rBQO0SbsBU^%W7P%y0?`9myg=^nQfU!Uoi~L9b%*|1&VJM zD&L49ftfgnC~3cSk}pZJJE@=cq!#U|XAewHb|UJzsB)js{i9(6eGE?ekCMd^Dx zZ*{J_M!-a0r`CdiFepV9i*xR2Raq;^bfv#%?F`;vZhRzfa|~qE1BYDGD6zJLB90$6309({rQbfdT+4X4s)qc?2Lf)HWVbQ-j$vQeF%dG(QE>RQD{rmkK4e?-b5?x;Y^*q7T~TN_bN3ER-NWFj=iUCZvR{u$v_Mtjh>2Kt zpR}+FZgc$=Fo`^i3(GW=5aDhygR!V*B=N&lf+f%7AvosK1*nZm>@q~i6O`3>&s2%4 zD+AB=)2#POWEV9Sbzo1UYmkar9f5)n9K#4}$rGzv#2w@MC%~0x{dvB<#)PGS`rY?# zo&X*OjjYjd>qhSv<#&2_w_%R+c&QlekvXyDQ}m)cfs)7O2kET&{5^l!R2?)xN|lY1 z^q-fQ7y|NJ6iWrzoUi#NtQ-Tp_;4m)q&&Z6TMGl9-rrG@^g(Ig$AR2a|8OE+^!4BD zBxOjQV!j_at5IOww*8)nWWXCaH`M&Su1i=@gRGC<;KFXL>8Dd3g zKBEVP{E0u(*w-L3Jm};e+*=)P?@?b^@{0{$k7ddSdXw64$*DE2FuF#En~=6JHWjnU zhO2D#!8b(I{ASSFlaW$!hpjc^L9MpqnDrRc#w2#Ru&liju18bcCZZGl(|f}}+tJ^H z$EH2;rJaCtV{gkrRVybss=hF+(Y z+U>~$Ww|r zXqxLo)6GDrmp8vzC!U3pN<-6^q*k3OBk@O+phx~cJP$WF0+Fp~3NAiw8R@7V^kazN z$?sOpjuF4%Z9X|wEm~!18DXaPUC&9N3(%D)7O;`Th89(>`!@w|Owo)G!CGCh@m-k5 zgys+grxRSibiVY)LIM@CTNJ#28)Hi?l9hV+eGml#IN3LRK)r}%t}sW^;kK-2x* zxyh!*PhFN#m{RuP0~gqgJM~gb`5-%?rNjuoSSs+12PR$A0xr#(Vhbu@{>|^&*a{(y zb*5e{MdKk()7Ps)^4l%jA_kP|&kWq{uP^*4-@Cd*8jQnjVG zkMf?5A;s}#ySNC;mVkerSs3S~Eppz4Y}$Oydh9;+2SooD&D`ujhUjGW|B-tj zPr9e^5EBs(*&-Y1r*HrJaxX^gIxXJocO4f#o1TfH+rv5=xx`S>&u_eC|NFiUqBBA6R37&9$&z^$KkBOrE}XJFrt2@hqZ55h3smC{rJXCHLJ!t+d;OYo zC>)&s&csB5{BQg!>)Ff1mJ%f#*YW8sifU!dl`Mv1yk4;C!h7@+?UR%*==y!Q`w}of zc-$R6G8mh74r(J4yZo1>;VK!);AnnaopC|E!MqYNrCJF|qPtk+$J8FY&?A!l@7heU z+aeU~Eaq9Ed-@8In0WFTeEZ#dDB2aO-%kKOdiFwH;PIhNGbWcwF7-ULpwn zADG67PbX-M=&v;Sl}8q$i|;nsu_CH8JQ*}InanxD-4QluMwPrA0INd`duX5)v?oPV z!}=(zxkv1yh$mlW%*^Vf)Xbwu+AMy}v}(?LlG4j=vwL9%>ed3l7JA&)-L+B(ptMuX zSYpy5RQPN?SdR7W9;woM90`P9;5Y=@BM$K=>#ThwZz20D5|QIMf8VsP>fI zip>-4Q$7icyQg$q+3Q(UNt=4oiO(aZOoE6}Teq%xa0?%qL>2?h+utv{&$^fFcoC#j z8y8~pj|0%v65VBh1)BmR0eMJM%?5nF$LpT|Ypj1qXYa?`j$>NvHf-QO3*FzXrR^d= z(41+$-qcfV2z|>NFg(f0z7tAoKdBZ^Dv}Z0SmhqO&7tBThvi#gXC7dbS5AOeXMwNG z81Rw#O~|QL8@!-9TjzJ#JmY#{XKq@jt0Zv2VdOt^)IO8Y4zIJm9L{V}H$Aa~CsPqT zU4!}e@E>N#*)120YW+=XCmz6Rj_5-WR(B%~1N0qQNn6bBiBqWc?c%x9-E{-@zerM; z#$?O(;Fdj0>G|ZWmurxHO;X*mE~$*J>)rCl`A|`{k-V3-s_L`M4{;d}4i#;T>P>i` zzda?DKk1S*yov=o7R6g(WJ&zL#(BH;D})UyY6!&f{#X4Ap5^y@JHYKCL`i6zgUl3j zUOnEIUF9jNr;=u!6a^Nv%?A4r41UAL{8s1RTT>%-?=m!~QE7yoKurbebv&t@yiO$IaRGb_kQe@ z4aX%1qj-UpYGctc<$pa{R$8LOTFz<`A&Z1R7$Nkat41;ty7*BHX(gI&lZ4K(mL-SI zRJFnF?``z?TWna#gsFTZEp16#%!?jXb{g%+Z93VuTw>}f#k&^nf|HWbb@1LDS}JZ> z;nTZyvNxcaeA6c(?d|sQ*a4DcX~K8MDoq)h>4K}Mv9e1I4-N!e$r<90S+u3Q!5H?X ziy2?+Z?{SxisPED%=3MivU4!QiS4G?Qq zKOIj;f}zLGvs+hP^N0d3YWEiAHW}MQmXdvMtwME)fx5jY#DRkH-H$FdRk18_NyERm zs3vZxy(EaAPSHHZbxd(Pi?+PS0rutRcJJ9Y^rb>*%@@&5$>nZW7|zcNb4~;yTP9#H z#zZz!H9u@p4XsSCeKek+gyn%y@`8A%x6YCgV#5_5W)<`>g3l$nIwbY%>)v=VIPvMF z$yqc-r*kvER5i`u@SlgLqA$>%g;pXWz8QER&j6Ym_9)~Hwz%Hcdk?>a=*KUrE&b{U zh>&~Fa$H04^|uC}FB7(rjrWPbswfLg$qGTQC>|FPVZdX721s_gT{kZrGcrUDE$FSc zeiI`OGuo0s@y384PXxNyrKcBNyUQ}7uRO`ceOwNiD?PPCj_cC*@a$Q`-z=gl4XU5* za{cobdC3BPWyfA1ZZn#~JY|R^kyiEQ8{>VCjoMN5()V1tZ#BA9EVU&>y;1tkBzP}@ zTisT;Hw>XAAo@lVyg0)2nVa3tvH2vuRGrWE*h9AS1#Nx5@)PbZstnjBnYF_)w8@gg@=;hweb>g!s?@#qYqjTA|_wu-|;r~?& z2kKIitq?~=u4mFWivoM~xecWUo;TC+0arnHd)CPxa4RhnkhcnweQnx5@TkgdTbtl0 zQuj+ODKhuI;073rH8i5V44FS@UT($DE{4H5NvdF3c8$dc=y#W7I|X$G*XZtPubrbO zqN-#rkT;sOc{Mxd!mw*3v|M%`)rT7jUq-0cxJ}e|y7Hzf&607omK5W*GpZhQ2!|bG zXAq8U<@ro0_|2=iWh_$}ADIqru1tZ8#_;g{GE90KXeb^bg-$K8Ez8sc>V* zLhwNhBpCkQUzA^|7(FlgE-DQT6%6D&FMl`01JLlJUor7UE%MR``E+^N?>fEqzHiYl4o6 zo@nbm}*0mQ+eoxsm8s$0Yo2qOk;%uAH9ukljW_U=@OBr^mD4EhQ>M?7aA6 z6s=&65k2?I(=;-sbF9m;lb(gbzr~Bl^}C_as2~LP-`o)qBwqiIq^k;Ot82End(l$d zic{R3wm1cfyBBwNhZcgnmg4SiMS=%+2=2il#c#g{`qk{1b+4=eev%>p`I!2 z`w8NCA;5Z1Nx(@dc?nj%+rkTU@{|N^=Ez9(`q3}^?w6j!H|FH7Ar>g?>fDeqmbO=J zj@N1b3a>~V7A2m63CxFj_Yf*b;fG1G?s6mVt+&=vgjN>Dq)6bsf8?O-_!#4GGt0*y zTlaWoCu4wCC$^(G!M^4$V^*9*&Q+V0Zn>6~6+7hNzD`&O{b2_)^PV#i%@}3H_(*dy zdUv8dKBljL#}OWgg>0n7MdS;y&2#5%UB?>F(%BH_+*(ta#o$BYafa=$14iS;aWF7Y$%xSjN-@y~98Xs&5;MoFeD@QW^Y6!nT zy1jz1_ylU}kQ`g%jKfI*S7meU8nta{JBtJ?1!wxjMumpgk zWP_p)<|jpi8sq<$2CM8RF=dY!e7$i?RyIOS6Km$*`(fPr0D%=hJH;A${}e;COF$so za2~hDx){SlVdi6Ab{8S{YoVucI_&L30vKDGWE_r*h+!2>L*`nOgcA!HKBQ7OsD5x4 z<5+V$9ga7uAdK@6!y#npEiPP`^xb3nt;!b)5WA9{yQ)D4nZQ*q1keBeb`#?hMnPwd zV0zTD29s+1N64UX%|YgP3?fZxLh41vh2jp$Fttuu;r><`e7zWt`BBGxBr~xfI+}jX zKlh!t{n%Wz5%+FZLt#WnpThH{HfzoZ{MnqnV7LRAaoK%XbFub?NkC*yNE7!Za)13l z!1ALMNpj4DPENY${%m((=iusvcx(6C#Thav2v0qqdDGykYFuG1h53}GxSda$fb=mg95K<0_~pZtRF*Fz(E zSrecA(GK_wy=?US1=7n>XPU;$lWfn^Xa3vDBF5{pKi|zSAFmytNP=a$KWhg+Jw-hb z&|mbZ%FcIy^(5!l59pSxi+Elv+>F1W851h78MEGYu|Z%4mwAD}VnM~6-_CV1VPiLt zV!SlJ-L76gOO^8iYC{WfRF9{^XhN?L@&A{6Y;Ma)(JVv#2M1MsDEZ<=0FKhUU(}O< zt(*anAE@{>t?e;6%V^3!G4i#Aa z5jia~BKmdNqNt!lUE5zu$;t+aebFNQg$vtj<28j>Co5i`8R=4l5O+>L&4_TeTUVA* zLCQXh{Vj3YkAgyW=Ne=sZKAGjj8}ZOI+vDBSK&^W&_d2(ne>C9f<8JGg9v6WXOW`0 z2(eC-hs0Z{55tHfz}X0@;&9eiXi`9MoRF|G(uRMvmnh%tCC zv&FKY7<2jj9Ll?Be|GS)9~ScgIb8Pl@sG=!AyuUOGM1s(U8gWLAO$Hm|@A2r=i<3g40g8SIRcpxb zDT%iEU+=&`N=&tP3l?=Brtr+3 z%{7}gk0*bktxj&~23>#mkn<0~`?Dc=L`FOP!!DlEPU!LvKs?WCWcfV_Dg_(X0^&ZqcQQ`E&O(@|ElDf$)#R^uJ~mmS#Y>Rd;NDk92>HQ#t#%;I#` zJ2;ePZbp;Zw!29b`9W?9n-71vsE=h^{RPxLU0gqqfF4?&1a-sdk&+$)Ij#Nl6Z0Ei zrmmD66Q%|^H`#enDeg~#41e<@B%l!x80F;!=hQQqq&M}@Eq(^zGvlfsO;$cE$;ghE z@*J`vBjL`1hbQVvlNTi*Ul3={{9rpidRinpZU1amjp4NGPVk*-@tEPJ$XoA*#5SSt*(dPs21Y|xJAAy@O>@HRWzEArR0-5L- zT=KZ&klq*@6PnM%WczH46rWGbq|@)brK?%8?TzH;H10`RN14vMdnVr}}! z-yqqo$X;ubj~-Yi-}x*nI!QHc(h7GMMR@+lzkpSyHqkEBp4pX)z4%`{E6&|V;W;bU zm=m)I9&O0+4`ztY?;7(uqjMH$OPdgXN=E;Rl7WL%2?(6Js4S|peBP@TzYt+)Zm>s) zCJojzpy)-UiCJOFq})yL^$0IT9m@BC=KOPQzyBy@MTz|*Z!S&Y)gXNiEO02=67(Sc zoT3yY+||TJSb11#3lsI!g|I9f7Xe7iMA@sCf|i5Qdp^@rUH_*uBd5EibX9eq@B(ju zchApNIPr!XZ4%;(e2)CI(Khfndc-q6Wzq%`@NMM{7F3{G$Gq6v_?8RxpdAlu45F<` z2G#kVZ=X34d*WkCWAftW^6aJ?2g38z{=vUZ+$?({ksqHucB%+s#2H{BO1$cRc>50; zhQT>(F7MpA^{(OSEVLA>Rr+J1JO+AfZ=%#c)nj)GNN<1q(4Z_ z#2#J7ufVR_(lG)xO7dr$tbb%r|d<7^A~f zmk%Wzew@YYX|1ZaP?tR#)VM95!}=W2nAsD={+Cz~e}a&Vk0Q+zhLHRh)@iSMV@Bp) z&v9gVshEZ7?jx4vH2B;UMCe&=rcuL~-aJ8_{9LkNfa{*JQCCLne$FgFh&sv&#^DN`{D@E4*>)#&|w@{t{+s zo}O;4kALo%rM~5o464uniT8urpK*kqt)?Nj&TS_DDAGp=OTMXZA#&@>>Hi9JlY_T7 zv>=yOFe;6ykYQKLy?v7k%&FFo=S0dHi7HDDi&$f6_ z6a95hyEE-0hU-c3!dU|Dd1v`aJuc1t;UN<^vYr0W^X2~WP)VZQ%&k{=NT889wH-an z>}$$r)6)MXwUn+*3VS6QLz@Ea&xZQ(Jn_*o-2fH5~q)HEhR$d_$`(q$) z?l5*ekHv*eag1<{CvF;Kx3#$NL!z|?f|(BMAk$QztoidlDp>kpyGtDjygAX^@QptK zoRwqFCz-fJ5L!VB*5Ap*!hb^M*W%?~jINv1e6v>z52g=M9^YWCE*Nz4$p8t3n-gLw zg7>w1TTjA`J^g%GfDx>>?{-yfRC6I<%=6ZRtE}fna)E@OYgWAK)1|4Q4_>q~Te>*d z{?ya{2_^dU6V$B>(7yBopHjI`lXBswC5zR)X{J-D!2ZBe*Cmv^kd+jgZA|JvQY<5B zhEGNmPbTVSmFF`-htw}LTnhdPG5?h8=A<<-2bPV#ZGErIXxWGS{)E=PCr7eCc0hSN zDER+lW>gfaFT-7vz_zeeB&yGE+CjjkowJ+}>)=aX^1R+qpW&1bLu)|h@|f+B*brsV zG-dRoWP;q)ye>j@FBFwOKw0KUh(}#7vP;gw|Lyo#-tC~KCX9b7Dt%@(=*?Hf@OGF( z2`;A>ofv-|49=&;|1pt|%gibLzw-%fg-w+rkul97o~zOd`9ea(c312m;db@@eoDXM zq$LO`h7?zKUNvjPt2DWC@l3k<#`7Y*>E$E)(^0@6ZDkY*UN04{0-toLr^9nCx}^~u z9b|7|WP+FT#7QPPpv=menB)pCM`m3+&}FcH!+9PAU)gg+L)+*}L^0ivJ!|vSDF%yM zFoI5=?7tu|1Zu^dl@vK%nIzt_pnUvTXQ(u+*c^YK_q8LJwp78Q&^ND%;*M6R`Cf|F z!^|*26{}+DP5=V>G5{t_V}UljWbzmp8KKZpq37zRNCwz4Qr|7QO}$a33%n)Y!OTv4 zkwb+F*Fb+Z$~dK9`;tuhg7l9O?!b^qFPMl^vhEh?JC(>tDki<-ll;(_x634v7HeM7 zv-j;|dmy;c$IHqny4z+^^jjA1df`poQpG&@r2SOb5R)A6nSPG0oL$r^F|#C2OdKNp zaj<|snOUCZQ6*qLI<~p>sIId6hr1(s`(Zf|giN*fRk)>Leus9=DN$JKqE6H-uPYnlDbOH*m{-!DlOOvl7gX`|lM{_xf+0BuLf=JuI=pDwDxOc9BO`Spn_dntaA_0B&eRhzst;zXeQ-N_ zB=SBWqkN9MKLys-ZvLxfP^HY#SETL5DIr7iD(-W)8;~}L`f7?1o}@aO;CsUIB)qbm z{Ca!&?=t=WPjiF|^r2a>W^ZeDbd5|3#=*Oj&P{I3mK6h-N!x@$h1ZA;4xa-0R8l8zv9)+kx5G~j#;170X5s6dMIG9wjBmQEJ~Yo zi@Db@fJIlA-p^tr+Vw6ZUYjD>fV-|@Xi zgif*<+b=fP6Ww&5JmdYR7$i#`8?ERLFnIU%eESU+CnoWIoeZC9jbzS)?qNzch+!^? zSfOM-pXX6WZ!TBt#2=B`h*h}sM)?W8(u^H=mg*rrw}yOs3WV7fq0)V$x1KbiQ+FlK zuY5*$^79Iq?Sb-~V(a3YzUFmoN4MWEj4gUCxQ)9x?ybJ0^?u89?C`+*Njw;b-`d&v zh6dZ|az_-sFA%4SCcL@q90^4jY16K@ zSvBdUcftHW0<{;mqivp)`x=xv-+TCqOXST?+}=Gp6Xy?be0GuWDIVKwsqj%vw3Q{A z`nCkRh^~rk^Sz^rPo|rk3$)~-DtWmwddre7@aE^E6yH@0J!;!vXU3h2OM(dw1&D@z zglztU2Ep>)Y`WX{UjOc*H&D>yG1I!lx_K*|g*c&lIt(FAbl27Qof35TL&$(Yz?PsS zZYVa4i#$_4Lea^5R$XwDJkLR#H3JQuEY!ov(}KCzbXkXTD}Ezef*K55@$5a$OOQ5h zq$T|}NxN*zmaoKkdwxF+zLs9zmf17%c zf0UAn^6d`xn=-%mfmah4e}DUoWChQIQEsOKP{0u_@?NGZ`5=@6bLi-@>idfKXEcB* z08SrQP0SzPsj|>PZm+%4a=QT%o>WT64DoG3lyzG^!6u2s((KR^y>5nX@babN5ApK6 zYVPN`>(X!8bPnB@G3DYB(yiLsGVfKfyLReABw_RN7ob1tu6RV2iX0vKR{dgmf?9vB zDhZfypAV=_Wb%=8*Z(%+XC)#i9_lG^Z@To?yaBdK#*5wT1!A%u(TmE_hY#;(l6gV> zf=QvZ00015dw&@e0NwC<6N23w@i5Ud=-Jq>8*U3o6-c^IYrJN7c}hP~IOKviw}b5R z?H}p9j*(J>ziwGM!h?ZLU_fUR8b)Z-+{%nXUXycrxwLrGMsj6SE*Ww|^K_4K6m-=t ztb0BU!?L-3{ju9PJ2a;nI(_3#XR0`d`*mK}#nEo;3svgBL)Q^D(Y$=#a`0$MTB3{X z2lGCG{9d8R)hN9T7-U7WzA1JauTOs)FY#CeDO|mBO(jJ4#Ck7cj>yT+TWqfRMx}a?T3sK9OzlqZ#&;4r&$mU=TGl zVk!^8vjHb#M~TP@id{9C85*mx(c!>#%b`m3>QCbNmS30B`4Zo7D!?lu@0}z)#Pnr&%q(@xSq~4pKXGDAFp09K1QMffA#sDI7=<8AsN@ijwgZ}} z)KnA=1HbLk+i3pt6&IgNbQLyW7yBVF2+H{%hZZK`?7Rs4NAmg)@Mh69&>OV83yU3C zzcp;cFn76paeuKT1Gz{QmC|TSPi(rs%Aufu6pqm8d4I|gaF+afsPH*$Z*FZ3u^N)) z?rC$A9W~khDSE?q1buLTk5_PEoY1F5VJ_D$2k-JNo@(?bokYx~fWQnRd+ngm<2MOE zVc z+x*OvW&g2A&#W9=d+G;TtbNX27VBPGLx&Tmhk13kp|H7ktmljR+CPvmD5eQ;6j+l{ zP`tz=qFQy<%|5s$NdNmglO8)?7O-$vaiDlq!kxdGwWd~hpT7DGSly{r4qeObaDzf| zrm3kCurJQ#J1l8UJvS^|xT(ZrX7-i-|@Pckw~AhRSD8L`H^SOqF5p?{iDE zK{A`}W?OLHKE;JM@FI$2@B-#=i{eZbwZ;MGr{CfyqCPy!XI0I!i0V*<^Xfkg?N3j}5~+uL6+Zq<8$M76)~_29&MO9a*?dF)PbMG7B(`7l>& zwb9}b(VQa)@ERB}vqtfNfEHSfC{~GWFc;eocx6-dWA(0wC{(jV?ee}eaYkl?^}D=W z1A}^z>?{3SJjAfqd&tQ{vUeu~4|HD1uNOPMQiK@j_nss87gJUlwf-vnq*>AzhA2rz zPM(^XNror)q86BKIU1aYy!hb7&cU%=9PIre$$kg3gnZZQ`@ESGBZslplv!;S!KW(R zG>Bcs1Y3wQonJ78-jV0I2kKUs2V=<{ld;RBCQ7o16GK+Z2YvSk-1)FIz*3h-*}Gi| zH6jsRZ=&I;xk=qwgOe8tCUM})@KgI(vaJ-k9-le!1kskFUFKYD>t+q9xEj|*sB%sH|HfZF;MY zbXtx)eC&5wx_4HFb-%QjfT!XG4*Ia6j{nNh zGa!*nYfG^rTM+Y1@Co!)5f0#cS0u1+ztjK57zow$?9_YwVdQt=31t_77N<26 zx1ow*wxoz0kzW9z&C}J{ezkvU6zd=tmcgW$ISOzp%2uPS`6xFP7HF8U9zh`ADMwOH z#dr;K>GexAv;87xAl)JIo7OJ9zm@NSwcMVUOFWw{cY*aob8&I8v7rCIy1HT(13#PP zhQ@d1KDNj)V&+1BQIwnWDZO)Ed4=G&9 z^6)R#>Yh_5k0g5rRdS`Gd9g|opk_(8&#k@?I}LO!CEFSTJ+^lt2CdSZ;Z%N^zVqM* zAH(a+R21j#Q+)!X=s~wM8|py^W-dS^9gNWWkoy700N6`L!9!W}r;}>8dxKu{{F~NED60109z9$) z1KmK8iBAfmsr~uZx(1VK-m~v$QUq+fjq7hd9@HA>==|%Z`w~C65>)!m=XWA`$NbT^;Qw>O}Nfn~-H7ZVot7-GX92GI2 z)xT7024ERo;4YaUdbLFSRI>e7{Ql2Mq!CZIFQQ5?puF>@G&b3>d6#gD=3g>He1_(~AoN6n_uUQmP^^sARK4 zx`xzg7L*`E3=Z#w7;M~(E3!q^#tB(-F2aHJ!@^ODl*yq5Z8&-0W5hW%4Ii~AbT9kA zv{5(|tHOc;P=+LipXpdfy781^kHs|cf!H238gt1r`%@%I{P$|-H`1|4@}GB;!tY!m zt9)#`X6rkDl z1!Sb$|F+k{?0d3rrSk+MNO%>izKqj*FTTe^`Nv=56im0XL<;S5veEWoBYN@`=y+A} zIBcM-d@;LzUXN?7h)w==ejh(?NyOw|WZsXEpBr~u)3D}Mu(lRMQ-56kqj?HD zIT98C6JX1r%+1e#dfYFHvUIgYNP}C4{KA~u`D9{bcHB5xWYq5Z-DZ-@JY)R#S8KdV zqIo_few-thz>aTMp#l93v~}i6?4PVwW#G@0*&4|MqiD6tvAO6M3LSb;TU8})yF+iJ zvjY!@6(W&witp@Ot{N*I7c(_-|FAi?LaZ?Jp3EhEcK&v3$Fv^$>oOR!EVjDG^+jJ~ zFqqX1Z>xjX*Ms#b76pShd?J(39dxYy*L|ZhnpN(UBGYuIMm7`P;T)F};iUU^wQj1A z_>Epp*C{C}k1Y>o41VF^x0-RDn!Zd>QdX5qe_CJ9nV`ygb01AA&WFVn*PXo>RWX<6 zLC=p7i7_!QI>%cg00k0%k^)7psE%-fv(}CdmTdj(tD)lE2F}W~<}L>%f-ymcCBOai zw$Khe^UmF3k9L;j8{`dp^XqSM#3=*iQ%>&ry~|rQMYffw5>;&hcIz?L5jSfnfK3v$ zbU?<1AcC(EDRHOE%9dDr)lcfw~R^gk0_K6EjgRO-nu)%ne4tcoqEZ6^DabUvPi z7Q5J65VEV$U8%9hS=(E9)7PjfD;EvuDMez|+*9EtUZk_>8ZpeKvDJQVCtOc2l`&h> zudP91)mL21z*qV{9fB$Tk*Be~oI!YTV^L4HD_re;V0&$7O+q%n8TCdcU?uqPhnv)p))nL_WxvPMpah(`#3NU!{or zLOqzD45ZSUf=cPD78%(jp1q~iw|6-09ZkP)TZ*jAsSZASyS)${PHS8kCE$xT@=AY_ zOaTN~w9!?oDAGR@dQ+aHHHkRv)kyC4maic4I5&E0*X7h3Cz z``$`Ksb{eE7nc(ImdcH1rwJF;G~s9O@oEs?PVj(``V30-*IDlCT@;@}o3*fk-K>OT zkDJ-a8A=DApdp>9pEUKXNUbG)q=`KY3dApYW@FJVZ26q=LEGub*b*<|RWSH~J<+p` zo$N@~)j-NPN4o{~kA`R87FZ5%euLnpM4!8k=*1$#ow3PVmn?THTEViNaRk5?cj4T! zo$;4dIZ|!V^8F%z!|HDDkc@LP2o%&B{TysD${h^bnb)^h=1e_DgE1Q1Vq$cKLlxY8 zsT+*vwx@*yAWSX!6&=x~8pHJQbWXbXb}Ek&Cp{_7U{#KWf^$aXxS#W7^*uH*E?p}n zoMYc!a-WiUUWqx~^`%QkmUeDSW&(yh50W}LL|gN#{+-UTZWXg&E#;2}*P^QWD_Z(O z7y3gCDv5o+t1^}{S(eRVNOsF9tvP<`!X*Ii}!Xp z4*b!n8w;g4*At#!ydG>Q-Tag=7A$)(lDL1qv$NBi#-@vs3X3tDH=EFx(p@0n?S6LF zG}u>ZkXe>Dq;!eyh|hr`z-P4v^t57~pBNYC@xdIffJ)BJc=}LrS@)E3#82EjZ!Ddi z39D(*l%jv+3O3`SDwU zMYitoU0%#u;LOJ#Qg57!tX1%`GnZ%==6po(-R5o?F&;P zf7xvk{PZ|wrCED9*=JS%9qs_gZsfGfS=syupQ8(0tSHr!2Dn#W8vP|B0GrGrkd)!E zJ?bSNc&CdleMDJUon5@L?bjgJ;<2zIIg`qZmGhHt-gh@|^~7)e>zuuQ371kaOp5b2 z+I*0;4m&nL-kTdOS_ZXc6E(47c|oro+)t94a##8alA{eho(P0WQA$GYz{HQVD_LzMUxa9Yi zYccAI`d_lL#L3ASG#vAe$y#yZH&J2U61ct=Clc_*{`I z!U)uR{BQx|^&q9MacN?!HXTKvPAg~*@IZ&D&Q0g3S@=ic2#YZUeJI)7jn${6$% zm>b{BB(!>w#x>!>q)rrf&WUX;X1>U`R$s!ia`7j>9o$<>oNB9x@k(KHfw@Bjp;2q( zE@=30a`41~olv@dEuZJ1H(8#8whLbdJ^cuDR&UIea#fPuDR;rnB^1E&_h_0bWn{8+ zF_kAyCzgbK~_UUGDQcDl&aw%<4X^dAkiP2WLV`@_z^ynxUG$7{7=!TqBVw5`z0YeDd&5u)u) z64YcU0JZ6wnGelHN|dVi6jDThSaa-nJFnT)hAn3|U@E!blKb`1dWK-o zB>4&lqHmax*X6vf0+(`IQgeTQ>y#OUIWmSCf|ao&O(H84xU&Zex8~A(OdYL?S?MeJ?+s@}j zaZVNIKAH+jiGXIiUt42<3H6p?V!rCJwMoY3;Co9$%2?|3KjY)wpT8gV?D@RL-|@aFTR>=4f$NXS3#uAUW9CZ{N@BH22Mlm2}t&%Gj zV+nVwEVHE7ULuh)>G^voAcnT87I$fIMWKn!fv)Go7)`lP+MTg ztJjHb2 zFRrh0mv!se5(|D5oTsKvypT!ycZU{Xdi#9bzB>Pc6Y_miyTBy(Ye=t!CNTanA*+l`Jf&> z$jDgekGaU!Yn*+=k0unCxtF3$wz6gal9#m9qSd?!cX1AEmSi*^AQBd;LB6f|2PHzc zKrk=*AmaI)A3egUn8xPy4Hn{#d-mC#9?Wq?FZ+<`kKm?fuFwk{6nkDkvfNC$)o<~f{7r?$oXw^_;`C@N0fJJ($4bmYdr#FMtP{2hcU zZa0MP7}!7lbwFURZ;}jB+*br6#BQi;aV4=p6lVd_jwolVo$1Mk)gu_%l^w2}xCxy6 zk>^a#ua^Dxe$Df1$QkpOVz{LFhc7AjoqN^`Wr4kI*+=C+P&eK#D!;0Sk4Drq{-zsh zr*01Z({1DRd(D_B=PR)sn(0@V4J7;l{0JZ<@*!Dn?mQ!D&QqVs2|way=RUV6(D3QHcyj``av zCeV`@N&h))#f=p*Y1ei9K`S3zWq>#*fI%8S07ZJE^%O1qx$)ODHqOF5 zQs1;v#OOE2=#V$vrmqYMuDXO{&d8NveHv%Osdh7hB1suqT3UU9$d|IBFP_m~lK7^4 zbH$!7nTh!k!{x@XG1HlR+s*%m^cKZ{FxglBew@p6m&e1Bz~(#0JghNn;SJIrH=3wF ze(#n)m`dAz1u^?x-E5SwQbW8QD7|Xr#vU3F!XV-Fof}vW^4F9H&K6E6Kr^q`(_Y0f zUuYq%-(l`gdVSWa`61&J?H^DiuAo2J4H2Vyuun}g)z07**8`*Yt>I2L?U2MHhZ}!C zoqO(7lABosT8T~LIysrQpjt^cKR2_pw5`G)TzZET8A^X21@-*bFwvlGpwVsU8cbrp zWdpmvK0ox58(eyq@5qJgIqJOME033~?mFHBIT~!i-Azs^KinC=@wL0|b1xFD&&taY zlO}Om;;x_7r5!{x0R1yG*H>(|jQ;2=*D`yP=aBEG0#qXDD z5n)8V;O~oJrrk*8jO+nEM-Ik*g;`>;t0C25^}WNeX&4tw?2gi?aJR)K{2F2#R;kI{ ztX8x2*3xo-QRSSorsp~I7^{M+CLS6_in4R+L#fgY^_^lvu6(hw?aF;MVIPnfR1{{- zi~H>2JwOlJzViQ}I$c|VZ=L-wlu`l2e2sJOX35l(a6Ra7-WkY~D3S;obtT##2n5{- z>_6U}Iv151*iuMF9}N5#_|V( z`lXw#YwyX9F|;w#39Y7qkFGf@i<75f*tppEe;#}opZXisX*SpZ`w=_WlYUIZ?Bl>nHz8i$psZdHxWTpmr5aH-*F}>Vhi)s-uv#u94inrBv@g8>pJX4 z40{ZKZkDD!&Z?gwMTnn7%Uzt=F!AWnyf>cr7KV>!*PZFx_mWl$u-vz8GOOb9(-~^F zrYOkd&lu&<(TQc9R6vKvN={5zz$ASdjl2W+auZRvpkTlSt*|)r}0Zr0+=i|sP9Ez;;_Aod6i3_11kXwk= z18(#PNC8&5CH!}4jSUR+ycy~5p0}Hu@6c8w?r(<2F{`!lleM6H8+q!Ofpv?KPXXo{ zS~W&-FLPf$e>Uyb5vXtjG8sUQ#n%n8e%Z5($I)}Fj3sRqaBjRer_KpMrD42`N#VH9 z+hY)bc9xcki2QB~Jlq*n)x5um!r6y=Rjj*Yn94n}#%U&lq#n=28`raCW!;5pxqX|K znH}6e9&Uk3A0qwXUMqOyQu`Dl&GsIz3Y?6_?ig(0tO#bc2IZOaAv&A)6L1MQXYy|L^@t~HtP^u7r%Od_^h)X3-TdI=# zx^I$;I1ywBOL`(0^pAAK-zJ@WZj5nbMD4zwNR@C9YSzo-(l~$Hl`9deSgD@W$@1PV zBv4)MRfT)S&Zc$_-yt_B#T$cNxJ9C$3>T`-%wI2uMb*6O>WKo0Vgd_)ns2o|8z9UM6Dt zCf1DI&9ccaz3d74n?9bi2)h&wxA?#)Yxs8<^TUm4-VOm2?~(*pOsZds71OIu^NI5~ zpRQe215$Q;APh9+_Fl2LbeI040R_YF1^PDNx;TT1syY6Z8|+X(_g&^o^jx6XR?(8G zjC|j1v+ruQ;jDgjp1G$;o6SbaFW-QSQ%;w(EX{e8rnIz3HGtqa%X#Uu8$=XI%+=A$ zpSx&f-d!&>4*Y@ddZHOpMY51u8?i4m;VyiX_?_dI?d5Kitr(`6>EO@(zz|Z50e-uK&alO8@qFMzt~bYT+U(|Q$(+{R=s0c={OV1p?x2QGJ+sVw+#4I zf!VXLsvkH=Dw?tbKio19?qw1XAaRHY5q~mY)M76vX}%8rXu#O2VW_`sMHac9Ari#WNhvY$*aGZFb~;^ySjSO`sR7H* z*Zm}KktLdUEqD1<5YUEahZ8fLBM!}pzzkFGj>Bt>x*0{*L_V!IwzR}vqOCnwG_TK% z#d@=Zx;2pfgd#j}$?Z;l+^H6rH1V9yW&gN}eu~t>eshEAZFMO?9f<>rw5y0~v}|q( z!_WImia+$y*oFYFM}V(sOV!Uym?V_1P9z)#35R)pI4(9_;dB`_H86$S)V8V4HU#Y! zV|5ZU$7Q;BK#^wHo2BjJp@qA@W^_J1;nk>H(_a?~cA^tgLJrsSffoaGb;LjeDoV=! zW>Z~LdZWX!RMzVeIzSx-8)(Sy&?nBiU_k(>@2ZJmvq~i1W85MCYv^tp1l`DOG$2bJ zo$Nx1T^Mka9PyjO1IzY;Juw{k(lu|7%QE>VG-)dA=(2GTO4j=&z)F~#TQu?n&8qFo z&x}69V{jO_$a7VutPc(fFG&R4HJG&SE{zZ39M7wf$@JlTY_I2KZ_(d4K;kw~&DReo z(XZEZINzel%+5y4s6~EZs%1cFW7BPj$lL#-nj?5sgIj@zHY%%X)q$q%;zF?Yw zp-{ne`FclJv>r_V+V91igh~iRWoz7`+`om_V|RpL)Fae=za&%NXt4xNf`P`zT32T5AWf|E)NNF`<*ZH=y+2MI4wd#Uo$O7ceZ%I?9|N)27JTR7A6h!#tFUbsn-4RAoHlr z^zTj>;d1p+k5uC??Vk450~uBRAQEd0z$R&(Bf51GTA`@L?fg4ZaktHLCVu{sZHCn_ z5TXCW-#-tot;(18i^RUqh$C0OOn#$o;YfU?hULB!)aB}d%jMB{aY>Y*s; zym_6ET`>*z5h@D6ez!;0PS_r+xRL1)|H6o`Gh^?`spJm);8X^ivr9N^zb`ZuNF}0Q zV#TO|#vg|}LVZ2}Oybjf2z)Y1Xil;mZWvUT1OpF+R{ZHqbp_%SosE~NHsODh__9$8OMLcU-|5Q@y0THFxsL()QNHsW#6a-#1F|~syAF}+y8YU*slkeY?;t_8w z!ZqN{`-tcDQUU$n_c7nEcT`7UAl&U~3MYoOB7HbdPS(h<=*NinA%1+pNMls&zUq_I zC5bx3q0Aw#tgLUUs%H3kwNf7NZ{Qd6jVY&i# zKL!CfPsH#18BCa{`j;7YT`ZLo{zJ{#$7UD+KNx}^-txSkuYzvpHB@o?Qv+Wf`Bs*7 zl20q)tMWV1oFn(c(*;t_Jzl5UJ{g^T<(4)eSUIx2Y84@-X3woGec(M`U*+{VzTb}l z25kA(;kk$>9hiIohCaQFGUX@1(8Yd)TT3s;-_v!4-Sh7a4H{;AB;ng)2n&W-YN7`N{SbjJ~4@({tbWY*@dzrhU zRgr%}4Vs4a5Cj;i4BN)PsT?%?CWoWV*olbSJOPQ`V7>1yJJn~l_S%3bE9Kf6)(WD6 zzAs@D;_KV{Q#>Jxe)$5l5nA*6D`ff!;j+kM@p$m5=x!q5m}P0OBHY7>K(t!RFXQ0R zvbmH1?4FO(mReZLLe5p<0ebX7ozLOY0faE=)hn(xFrPl(Bd4P9G5%nLC%}9zLyfv} zS30;9JNYyTK4gEr956s%knZMPCfTM|!XqUIUZCBNlQ73E5Jz5dN?w0;eVeqLMhlZV|IuqIqV!4qqG8gY<-jy5!k z;)A9(g9?n ze~+gd^^DAwOXjWyn1=--8@##S;Fi+;CTxb0g5`COxJo5;7MtdDujQr{%Mpa6y2x4? zv|iq=?tIehxbVpNy?bkw0ErU=lP7(cE39cp?KScqU+=HQ0jmwe->M+B3~zt*Jo!B zAF|hR=_*K(V-zgD&NDQXD!LXxJL-WVRc*t$>sild9ylnNpLQZ(NyA|0UW1`y55Xx`~_BZ?hx@Il*TM!I3TG3w=@T$Clb1(rr zm80(2A9`VsNK_IX;7*1dp{CTGumGOn%nSDA(i;R#HMSrR!q=LXG6Qdv3kf)>-QKTS z`b?;X!OtB8xZ7l*P-JDlWm7!RQ6gQ`z5yvFyK3*#e0ef;%tNSvnS&23k4RP(>%U{u zB@TQ@58S6R=<$EJKy7J@C~)=IudsJ;9Bsz44mvot-h22-vODhQY9{^p^ZevkI?wk| zgn8VoPN#~ZI2M7N+H%ucYoc;;fgl9bIf8Qt>ZeCBHhz{s) zHaqk3xD#fRupbDlQ>d zBvsAI3I`3z9R;!C&9WJHx#QPB(au_=b>ah0mXk{fMyx3kJVMZ}e`e9mHphIXG*ecR`=*G=b~HGA*o zsZ`MSixA0kgQxRVVf1=vG?o3kfj?SUIY`zDE4=Lv=H{5hu2}s|dbt_F{Cr~Qr=-a& z{@~^KX{_M&OZa(%Yd6NLUv~BS?-~2mMGz`TP~@}F-oowJhqA6^+-_i8vpobjpjgT_ zWuRaJP5`>}7h2s03+B8a*xZ%LS?!X**TbMI)kwB~K_17~L#TPU_HLB|O{cnbJNw6_ zd2;Kba2I;++41pl+=vv4UH*q-uXLk9dih= zRW_TC1L?6Tz)yhIbjgR?n665Ai1P9)~5b$#N{&5QeeadwxYQy zNhi%u(*)F^oa|t-eirb;6LoL&lsl1t{uT{p`u=-GaB7WOke|Nk> zL1Qc|3 z^UOiMp8+Z03o9)@HduX(^4MDi^6F`!-{HICJ%GhOlzzkEe9#3i%f_fT+{W}-!Gl97 z8X>0LGApu!dJlxSDTGcGb1W@pK~QWxYWZLl{f*H8(SoNdee`!|c5yKmq2B3Nwi?`J z5Vs-kPkM4|Tu^3Zu6GpZN8JsqOsY94`$b<|RFt-U?N=|UEp_;6@ahLfeaG|@<#b>x zPMW;qW3H4|$rJZ@k)e9r(r#Ik$)}_3<$xVRvahjkw^Xlju=W*f81eSh|MB!5{&0BD z_wcU8D$#}L5<*1u-ZzryEhK962%`70%1Q{)qxTX)MDLwN^s;)d!D_267OVWcpXc@c z+&|&I=FXWp=ggf^%$aA?`ofY4?n+|fU{$o_W*0xOL&j4^oFduNz8gMzZ3^ zd=m(1LITN$A~nCT*1aV3WMuoj;L&sHViGwwj7qQo!c&byowf2`hsI8V28xv!J;p0L%3mL z_tF}7R$^u4n!bd9j0n|8Ys(ew?Z50-mvfkV(ZB#d>EHKW=6e$Ye(X6W;LdA(|9XUz z8H#FdmNIgq%CmI6-1S&8Oc-0bLAlYI=YF*%)ulH%s_5G>Au)toun`i%A7ZPBlfJnnL$71~#0tGn8C zQ~EK8p<@~2f3M}-9;W~P#4zN{APY@~vhu{sB;Z@2b_ff%_;8F$f6=aNK3LHiuQQ^^X7;cX>Y*bw9}e z^lqW6<>Yu|=mAt{eR-KrtwvBtNJpqTh3J=W$dj1$<^d>DousR5-E+&QTu|r<+xpJm zz&ll!;#=mQvwBHTD@FB?W?c|ZVPWAw>D5YBEA|$v7;vH3ejV|lsa82&m#a)Up4Qaw zpuXIxq}}qPxA=g&Be z|MJb@6_Y=Ev0LDa(^tmN>2)N|nE{jgMI=x7{hzFc_siP-^5Vy_e@2}3gX418*8WD; zHT$4nxKWz=Xa859R5|f>Og37!Cn5V%Mtw9|dSxYWIUZvrrFe&FYr81f^Ve=~iKpF# ziQKGl5l%+8@D-n&ZIxpJKjlkhlOnbqHM$?$onRMn7g_dW^autAS4Yhr!=U!|!4`!p z7xfjEz2{X8;w+JY9#;8Eeqp|#uU`|s`PW7svE?VwG%oz=rzIXu7ryriM46&^j4zQv zv+}iI@lLS-J*)L(KGRQ*7~4uc9itG5vq^68n1pyv&7>RfIT%hx@&?!UbHu=OsPdRt-zAHZHE}>+H|Zf8p~9ilkF#8F@~y=f7tSv5^2nJG z`qqu`oll_dPq*c*Po}c`BPt$r&ydwDL;lFinnxRr_FEIR*J_uK2KNCBgS^J`hK6__ z5W;nRT?=uL#daopy~(HT)b+rtTCaHB-9Whi zjF6B%NFt`?eWt{Qd9+YlUU&QMY1b1Vft<8LC?Tga4#A7savX!5@OfM<%ZtViMFj(p z`pXX~j)IPuj~Y^D5m2QsMQos^E20^DUa9mgF;mPEHbA>tR+%F`+m>saY#F=puCI3CRxg(^>XWVd0N|5gu=O7|rN(F_2dPt3>w5#@A2apIMW^ z7YbiXVZ`_;Lm(_AoG6I)O`O5Je*>bO(#y8-% zOVwK=nK#vTdkmJdIoG>qQ?>feg*bhB1MbEpcHd_KIXgQ$5L(xx)u5Aqs(jot^u$-L z<+L!uC%>dgVjd(X@123bWPb)7glHuYl@klsi!Et~&pWt;K`j%CSuE5HH*-i#BMUxr}_Tqzs#$${Y!0 z*vLEPH5X-R5gH%-2en#_#JxIYNEsYIBVOdvq2>y){;RFUK1=b80_3$w$D7=Jm9C+o zPWP&b^_oH8u=Xx@;ZT1ibzxKC{dSU`uIxnzncvZ&3fGouJcqih*SFe0ZS(_L zu-uj_mHwe2i?Y+Z?%>~?kD}i@Z?RZAwqx3`1BMr+dS_PXSnp4QqX4~vJx9bbs_T(} zvPdr%u0bPj5EV@73bX>F?hvgmv2QPz89uxLpt1r!Wq-Q-c>-tP%BDs+3K)D>iAjbseA? zx0)J%en?@sleD-FNPqC@BVF!?*VxpZo!jSu$U^K=-MbJ+==;SaciO|2aii~B<-C|D zpML6cWn5;i+$^#1siz5FE&^MX<2yQdR^A6;8BqQtze0Dv1b8&k_G(#~+U?oZl}0ul zv@W|k&e1(JKP+CA5*Eg3;Mr{yDLBck3_ZI!YdU2=>u|X4tRE0_66l@ud`ESSLcL&V zmA#w=O0d|SiU~+i0N*F`8CMw)>p0;TZ;Iw!Z@C1NX0f2^G}Vz29w24_ZcXN)H44xs zXVJ=XaZ{=;cMA3l&K$|@;&QLM&+_q?ZK(x?+j)e=O=+J8v5wA?;(g>)kvhjY@o z`*AEBfHz)5zZ$nc_@HvNQLVWWlp$N~--KVIu8;-Uk>&FH{Lf7h;35~fDp-+z5F)T@ z0Q|6$!1g?O7H{TL-3a@IXX6d9fytY8OA->bWw91eUXq<1a8#o!KID`(;$~8HSJQH8 zB=GFRKYEL7x6X3DfX+|+Sq`XxyP%F-?T4ydv1IKSnZuhd?SZNBU&`@_2ixjt(l@76 zE47tvw@gOQLDk}#>ceKOG_JA^TnfN8TJoqhqgoo`@ou}nCfb=`mI@!(Gh@V?5qA?+{r6?+vdJ64*l%hjdy z@o|y1plcX|7Vrp2t@`lVOOLkWb1lbW`0pe6AApp3peW+FKMLR-CjsTH&;$sQ(N$&* znWP7}`QR93uoV%oJ4=30tx&ByXwqDLvzR=CHYoE^T#4d}XaJ~4EPd&}C{683MbuAS zQm_|#4@N2N$5VRhqKl9*6H~2ua#}@v91t&%Au~2 z;cau6UfzD*+?ro(DJDfzg!>yWIh6@g&^T#fmrFB-Y6-cV?2q?bsqA|db6n{{G59bT zqhIl+T@jeJ|Niml-LgLvpzykdj3kC2n3!B#&)}+#Xxnx6jTDQN=L^5nd(9|;2qmPx z)RKjIv{35sL8Yuq2Z^Q8M_TPhEj0otj#UR#OQE!P)hzg#iIKg$5b#pS(=v zGQg@y?Uf4_2ChtyjIsz9s#iJWAcZ<2pLRjnwdmUgwiTuPQyBnR%|G&4q~=*>>$9IE z9N=I$i(_sEX=!OEs>om3^`8nUue{qxR>i^CNBdPAS}NxBm|y@ki5ZAPsj{ zGv(#T!}6{Q>KI@c&gcdyTG6x@eia@ardqm$ybnSh%MK%M+;vySq%Y)eb=v`|EJZ3ytA*w}_Xq%S8vp2hk@u=lGxKWd z^YSub%TqR>`H%5EyS>DhWbb=q@ClwD9RR+;qv(tsCEL9KgEprd2oqmWPkdxfscipt8T~`@v@Ah1X7eW&j}^{dGql zYnBL^fx14fkbe}a8AwbZ?Y^z0J|;x~TiVJ9c)c$Ljtxq6`*|Cm+k|NLRS;ZHQH}c) z2ruzh2xW+OBPJ%kQY}b_r9(*BC%iQKoq6VJ?D`jl!dK2tLqTiT2fhl$)@E5N5no~t zzGO^XN3|$^k>N))3dhjJo5}itudcT1W=RT|+t+KO?5G(W=~xk`Bl)cA6sm>KWN&9J zId6X^xRwdqj&D%?ho`E^ynb7y3}S7>6{L$2k0P*}s%R^l-&aZC$~=Hs!DnLbcu6F& z`{cv=Ftm#h6y%!j_%3$NVC3CVX*dpfxXrE zsHq+tcoRaKRSpOwWJ~CJLGtIz&5vh~egC8#nFj8^Z*zaY^UDO7Vs@e0n)O8tB0Y2~ zWrrPGqv&?HunN)y-1f{jB}m_ZxE~%cJ~_vm2eMBc!9;0zRTi-TE!d+Q#&VUf7<_L+ z!+Gn|79Te`Oi*KI$&CZqMV?|bhY*>Wl-B_x9)zVoflI>n3g4UP#5?+SVrW0@Yt?GT zZII1#O@Jg;$umpVX}?xk&btXHsPotoAjk$2j1$1Uj2xm=vSNP--kJzsTaIMNfnC-= zJ(oA9L*x>q80j*EKe37s(|M9TrlOW?!;JdW@^8eV@PCczX-XfzuDKcKyBQaRUVGzp-Pa`@&Ue>*w~S`EM>4lh zV=MSvY3yT>vFg2Rn1qcE0_6)&w4+v02pDwhpV9N)Puvut*l*1ajh)B6J*cK^#;}T)DL4F5Y~-T;Bc@3^Wh2D{nnF#I0v4;;>Wmo+Lm8qt1)(?hWM%Y8@3JRR^Yfc?gND_X%$Xn-FF1Uw0bD__3v%y)W3psV@ACy4Y`gW)-$_@ltENlx z2o56C(gkqpW^x3m;8ds<*lU~(Qs&6K;iM+RLDeWvG+||8Qi?a11-pr3efegDNJeH` zrB>CGGGF?ZVfRz6s~>5|O7Y+pJ=<96iG>{);*)SRY<&~C8cC?d#qh?)CFcCz8nMcA ze5ps<9{lE$t3{ke5mR-uKj4|KLGrSbZo~kIGUvtMe;13tt?oED6SzJ@cHP^4w^06G z=&Ecg(TcdLThBQTF22f{sXUhQY_{rO7Vjz%H2V682>;cquP0*y8V?p9ll1?zpNJxe z9&B31a;JbON+|V-Kg2u93J4g`p_kNl6LZ_&5{I{F2YEFvx68rSR)fAy3AaV0N)dI0#tF6 zM$|}xpHY1|l#X}`FL244r>iyPwDq&h5VJ@r^)0%;N%>9_ zjM;B@c33p2B*!%Id!L$F?`F4AHee%ew|lV!0q-=X-KIgOmnWgpru#7W5F0*KdD8?1 zTX&rGi&2BvAxuX(wy7MOuT5m;H2w?d8_&V1*>?Oxs8I8U6;OY~o!wN`RPc;gAzA=i z!{2+h#w(9qoU4AD=f5?=R2l138gX{%w#BpP+LNl98pWNr%oMQO6&l?KE!!V?p9ED| zuFmkFIQ=sH^RQZE>v~GhM8N`dmc=v#9=9`EK~Hx&=eRTw}RZiDzeC$|n4 zD}|oyXG0GfwYkF+Ti*j`Yuz|=KH8Ey@bUZ^w3A~RJB`Wo7JfcyY}{m+<$Lm-D0rQM zU5xQY!(C!?&x(C$^VK71^3HG7j!>NH0nY@2>0lzI83O`-m9YgFr(30rX(TM?b)0YU&WM1)#aMH z8Xr^*{=45Ndn1{x5-NaI2M7^=I~+PK+v#n{Fg4zP!@oW>R9A+C|4xaFtnn&`h$9l; zKAz}oCK$m**$(tBa@wsf66YsusoWQ#|J`=tS?29dlep~jlk~YH0%=v&24h@yf5Z<= zMugO846I?Cr)oBtz-LIMf7Tz03DG>A?AIAbyy#Iwz6EUdz3ngu0hk99k`L&H&S;Lz zLeOq*YRf=Y%o3D^7)E3O&f>p06!w~2?${KKLe8&9M%6RVh+<`eWz@>tjGJ% z8z3GIj7NVZlTo6`{TS8+&e`olA67pBd_+X}+`AQeAGQ$Ut$x3|SqYn7Zgz62Wko&6 ziB`HGYJr6JFE@kQ-Khm6T^LntO5kSFd66YWReq7&Wq2Y}W50T%W0@3Pb1*{EX zHz>86xo-fAbqtgPl5QFI(&;i4c37YD(PoSB7?pr~a$2jSTho8-Hgk=?9HlKHE(}+B zV);eeA}jLoI$6_XJxTj_3$YT?1QyidORhfZR$p0I;Gcw(^!vK>J~1pKJ3}REs}`{# zhW|Xmzf1e)hFAPP{S<`9uXZ@Js~?xczDo8QukZMcQDo(dp$JWCZ-6Y)H3GXa`HM0O zr#a=2O=Ra}(JDev6x9ezBh0W(Q)b~e3x^OphkK96bNpPlM91Fx?s@6ywEB-l-Q_2n z{278O2LedDx^XX4s9@4yar5K(N8D6x5T4tEp{eNKyKY+}3%f$Z%>>8@oELgDG;HL~ zt}QsD5GF-y!Q=z4`{K%Y&vog$X7~fGhg>{OOFdf#@|m!4F6T4_0XJW$UU4Ybq-EP6@#Op&dI4};tuaO))U zYhJGV?bEp3yoTv)Fs!sZj5z7j`X%t@UCSNShj+N?s5-06WWv(WEdQoE_v06SXTYJc-@0 zl>Lsqaj;L#D>J^D8#XQ|c-tu`!V5y57#Nr%yq@|9Z7pIJM0N#^-&^)sh#{L)-!?xi z@Rg@KS|EKLxYnbk@+cPCW;Wch)Qp+cJzKeF$Vf)hTQaQz4*q#fxz~8jmr>dPL18=y z!^GMWQqj?TIr9nq@!y?8y;oXlmypDBxb;bGsJP<%#5P4eQ}tXD1S6?Ky}SxltDXJ&H}@0;40uJ8(v zPfg55+|GP7=#pz5yI{(D*F6_+TnDdd8-Y^SZe@Gg!OXN+)z36~;8db>u(Hh8<&+K? zF|pV&n$=y+^ao*s&)t_L=6nl^E~Sd6B@o@Q`TFrU)(>EZ%kR@8pZ0zByxD*a_7^iV_IvjAoN1ka z>HnWO>xgz7;tBW575}k3CTB&!( z>(#jxs93r3nC>?VL-eZt=Vr>A>(?P@n7~bM4|wt9P>m`=f)hS*cB}p=tP!_mk;Fh? zWX%t!c4bjyHFN*=UN8zM7c`gwx3l8l+DMbzD1Di@M}TS6*?YSg4|~WFB_7mwz5j2q5>U1+hWEP z7+|vVot;^m+McIQd=Rmif#n5GfofLV8^|w zRN7Z1b6^!o4M-?iW)htM3zps=YOet|yG+>$nVen_SNaifSn!#B9s6vN$1 zVEGVYng2b2$8GCbsIt=WkJ@CufeRx*2?2ZIz#bFxolMan_woX6qN8frJE5SSv*G(u zFz5L@Ot{cuVFu3GaKy5I|6EqA*bSw9+|n@CyCjs9?EVANPQ$99e13JCi+8!ii3iY` zr$3?)C`;GBoR_49kV73e8GG2uw^2n6M`RyM=T;jhAiqJqC$DIWuIJUtVJJDR&aj_P z!QHFWUC#J1h4da#fPamXqu&`rH}mDzXk8A$e0*rrF9Bka{XKu8-$>Y-`0>}a8l?8j zTie<$b2Zhzcl%QH+{R@R7fc7*O}p6zFIc?X5`2mEZ4+xgzCrO!I z0#Z20;e2tHIvceO1c+UZ$z2_>p%XGm8vtUbJ}pK5-~^laZL3v|+t$x0uLy<6H#ut{ z(pBF!?@b{w0ER&B9A_P#%$juxBii@R4Zb&GlweD2E}H##k!|8l#tyb7){=>>t?z?> zSf3l;`Ym5k?k3nBQiNYnn>|KxL#SlTZi62dgcEQA;U9mq#d_~E)4QLPEmZ&gg_RzA zFr7`0Dssw7!BFcFP8}?tMv?JhT^Y2XqSFj%%k5l>Mp?(6|E|vX-tYm{l3uEXwQ0AO zjj+r_)0ue%>e-$0&I{K8xAR*4n{Q~_e5!A-YH2jR z0%`_2pc3_tF zAB(9dGB~UqI@&}y2s(u`&GxO0G)5ys30d7Me2O3SnrpPkd;*qc*VIG88t)s95_drH z{J_>ZHIKI^W@F=?GxvcnGIg7z%60q=04ZaguA8Pe6CYwfl@lNF0A6R)!i@e#CS3MU z&J4tJxTq4Xv75-u*W39ebqe)2A9%=<1H~#tzRB55#~t%MTt+=L4^hTdWm~!JkH3B- z8pMPDa^)&4FI!@?YFLWPQlk4ZlU+26Pkt5;4Uc@bw2MJX-6XXJTHoE+k?5zV;HJDF zy#?K^%AIOXQ##~DiK;tnxU%dcuH0@*Qon-F?{e+8TtB**xhYAOFs%x^nvEd$pyqGk z+pmFHHXmSN)l}&MxBB7?QWezY!mcpzJBg&Rp|@S!Z_<;8Hg%N`PWlmY-_K3qH{Ma0 zX>WnRa_?V-8W*WQWvGOyMREl|1gQ(MHz=WKN5*pi7+gd1ZAu-GF$fDD(5khX z>;UXpb2Et-v!6fC{IQ)T ze;nq((3hSrk<;|bWkIw2=IML8jCp>_TUY>crHrCr#sEALiL49kklu6poowcTV1{Uj z*R&%|k;k3>6x5NMbf1_zPa^kyC>i~~J$4~8i=pdCtE3LF3*Y~68*{gQw|(-lW~`u; zgv7t5m+XMC?Q&Qw@D*?d1of5n`uBxt1RfzHUfUi7V$JjL@||9LAw6VHuP7Yq1l&vK z`l=F9p0!BEBJ&ZdCqSYEdcXR_Tvd8ZVk9@7N^lCbF5@IYavBjwbgnhCy54XGz3Fix z=LOJ>3icBHB9_rHmO(Y^JkolIqqr_4w?|n_>JGE5>6%oZneC5?pS6Zq@t$*tw2vJM zD~h_8;G6@=nWWwCn=01cPm$VSLk|+FXp<0mQ@iYmkV5F3r|~?Ys*iy2!4YK;7=pbk?GQhWtQ@AZ8N1mW>t0= zHJ?EKsX3K9=yOZA!&~D58bgmuri^0-?!aie2s*xbk}CaMIkw8 z3B@1jUX$aPz)%&Kkd^9P-o1O^ztmdrUurd~cMLea?yhck4e<1waq52JbO>O8{HV!V zmQn*!YkG>Vvp)e6-Rrun{%}hMrSTNXlS!_nnT$rp=@FZ(1?g3PTCH=Zi4vxN=;5vp zXFOciw%2x>XF~_Zu=u2XXyqE<6^~o$E`VK&U(Af1sT7BwH1HH!JfLgi5df^5YNAb1 zpc3}72WesmsF6LM+@UT0Kyf75Yw;>5fd1>B zvuwd0uHRbUl3-Q}3gw?&uRFeJj0%WSy-BsR0`rq+6)#@RGQVqz^fyrz{TR?M z911*Qyry~mZkvU>E1~1v#8x{4@%rV=;ofu4sg-rj!Qwj?!FijBN&K9cbBp~Qmbaux zIpqxTX0fQ=AU?Tf(DY-Cbe!K15McBPF!Gg{2f{69q9o+knD*Q-kRXj=yvk`J+IAWa z;nFc=+fUK+QeRWH%%(O%|5L7!T?Lh(MnlRR>eeoCp2JmhlRgT8lHdlEj3j-8gzL2= zL%{EL0ERkN;WpIA9*-L^O8`L2h(K>*JBTPedz$PB_yWGKtW7%3dxl6t${?MZ{<^oY55XsWuKHd$5C;awTG(*&MhyPV%OZ{$qqfy$PA^4 z+qzasLK_0?lU&f!U$`Oo`JIoJhL#z^eJ3LWEaDHHQKyrMjJ}>Ux=gG60-` z{Fn{ZEjV&gQ($oTGY>c&^K8AWj<7y=IwB{%p&t;Tn*%icnt!_c#o~pwCRF4EPXNctgm&?(c>KA3L3G0z{wvng zDf3IN6-MPmF34>+=*#$o!zJb%n85wokm-FRqCR$WRlIEn=)C=;;QW~Qpd?Ky0|B|( zgWw0Ep1EGadZ~LGk>ED%^(#g*kl-icbDMsHKIQ3*0o(6V7|9~z*68|1S?P6Z2MQwE zPk(*)-?%nYQ33?(Ubbg(C9&?93Xompih$g3j8Vq{a)c7-g`>!QvO<+Z33?0RPOX%7 zpG!B>eLbP+Vvd{*%nlt6M%t9V?HR$B_~X<-&zo0wM{?(yjsE`y>iB)2*4>_Tn;OH9 z{4BmPrPRot=952()(~c8Az+fP#W~t9QFQCvuW=uYGqzg+`2E4t#_%y@jS(*_@Mb1}sUbaC8Xewp zpHZdZ&V5oxmV)Gt-{^i@w$HeYf)pV%`|%uq+TTICo>u^~W!(w@CrzzDwPO@mmm(OZ zZXAjfs;OxUlA8ExXObvVMRK?-(#5^f@Edz_$qir<3ihwRgDhrvcX3OEKO`4`h+D)} zSi7X<851L_P1f;;Y@2%sA7-C%oRuMTOhn%32UFk#AjWHR|K;r~=EY>n&>>L_YlE1p zq-N$Lq8YUPO;Q{=r+MgAFS&sn@Kw#Lj8g)&S!y>n0`K#H;;V}GED-u@EhQveb2$T7 zh>znQ@kty2S2peF`a3S@E#~el5L+Cf(4a4p??|Oc2XX{+kmw3f)=2nL`x8~@z$`ti z9x9FNbIY`i>Lf9jE+e5I747C%vpzu|j&Eow{CIBvF9-Z5uH%CFNcA#J&Ac-gi5Ve` zD27*8w!N2!BYnES4@Q^Z{G$G8H9p-&X?4U$r`;3GDInsU$0T;feDNS%2)$9AAt2Yu zpIn+!hb)XW;RYaEw8=xL{tzFa27VLmu!Shcf!?sw`s7v4OjkZUP!<*6Gxzri z)S>C{&DcfIvmE@+Mvbb>59ujxCdboTse^xKn8u8^Oyuc#9@C0OJy<) z)FTS33MH=ZBm%HuOxxV);El`TaB@pC#u4}BJXAVY?&k%PhM-u1xxf_>_^&q%p!_mT z)=l)su{_)GT<|a0;O)`L7B{?SvDUiZbh^8H0&Ts2n*vHG)(v8GrV*NW|M?Sv!}D?*?S>gWi#f zK%s{T9vLqXw~btBEMQf$2icY6!O1CLK%3pExj$ezi?BRFaz;k&QD(ml*6#M+t{9^I z$5iwGE;ZnGg5?le-HJ}82Iu2J*0d6~*$pMh&jr$E%@GPaaJ*kY%FlY^IpfQ=-t-mt z?7yATL>WXwMY0JE;!P5d0A>$dZ#yr)b9^V-Pkf~x?rl%4j+qHK(+d(bTYE|Zfr0+8 z08+ABPJp2>p9m-)4(=MLfj~|udxHl%&$p~N>rf-XV(KJM&grl);_lOv)Vpc`FZTAJw zA+wapCU<`S#}?}^lH$0}pSV=Mege>D)URCg?i^KlHTfd-BGrB>`H`OxS43GC0 zcFYN(2j9(dSyqc{Kil#!@yJCPBzOzydEXu!OQAC&f1sST(dT_(`11mpW?GXP)&a^~ zb7D?j1Yfg&3PnV^fkP}ey(+-_IWwC)^;iFO_Mt4s*pb!+uiGluzJt%FTS*P(%P80@ z3JSw#>Qv4+dI^I3ku;$rG`{Rcw7!|2($Z#Y^wa!cy^l%Zi=4I({!Bqvzy9;o&&$`D z`9K-xn3w570%sRaI0i8{b8aOicR!XI1=5r6R}PZEVfgCPex(A2#R4N)QmPAiR(tiK z$X1$YnjGA7z(T7&0R1zU0W^BTQgQxQX@Sf?tX8wg0Ev^LK<-Qi7L><(4D{}HB!SPR zLNzXo%L>sG;Xyt=G0L$D=lQ$t(@MqQB#-Dc34ON5xC9EI`WWt~ZN?FvnfjjPI*?vF zy9W);qVtkR)0+0%w^fdJ9L6tld7|AiZcutB8oXMgx zJhS};`2@esh)&V(CmxFw(4)mYQR4h}hyTl)M(KNc5uWZ#ggc`N$HcS3%?C!LMxC*M zZ=lI70PBd>)5+bRhguVigEp!Uw@0YS!3kFh?zl=)HB04{)eOBrvcGRHVIYFaY(4(X zzaD*i3hH^N&x*BiMOt@6br)7Y!Ho)wTP+^eJ=LIhajZ*GaF-Jpjd9v1;TX_%{ z2_-DNw~m9=eCg_SS0JW&Wh%R|Vh<;SfR7Q|l6*|^3c^qhKg&Gy>y=*fDaMfeGAi{! zvnM!{Z@_1E_Gw|`S#!iWTZWYo?4L|EOzQ4S1qf&gg*^J>W=t7F*3!)3_@SM1-9jG4 zB^1{7n$|n&&5xtLJ$8X7HBS@yRtNyu()cbJQZ9bSp;m);)&C2`k%fKkP1wy6-^>i- zH<^*Er_NNqlJ3AdJH{pe!n&m~j|Zr-qrr3vi#QMSw64cb5w=>%EwY6Je)m3f z${FJBJ1ja!t5y|#e+;G(!Oq^|c=nqq7B2@L$r$_v;9S*qbJIdZj(Y3?%6uyzK4$RSQ^}Zl-=G)Bz90cdIuGxc8 z(qMW|*wUHRkgg5qe3=Nqmc;qf?RUj`(mk^6=9vuP8w%dI?<4xSOr`FFxj#ycMUCo8otMFvLMZP-vfoAF+9)f?(iUqC8fYG?lL(I4oCO61K zdgkR-O1#5Hn`buisYIXPC#O3cu%|*d%>+0wW!VW5^gX{H-f$); z7Ef>V3nz0sGM0o#>tIqnLn&vn3Sh1cj56{W#QnM~@EGfx!fzDgl>Kyv5-2P&PT9L#M{B`r&~VcYhV=K#UV z8G5ZXIdX){h%ey+W%L_}fM-N)pu>TT-(fEH10QdinE#*9RF+tU-UYTviCDHp^6<2} zIh|33b!0^kxTE1wMD^Bk@)C9J%Kng(iv69ssO2P-f?PB%x3rA=Y;66nciG}S4aeI3 zU^GmIzVwH}lB)yag7Ii-kM|+u7a?Kp^KRqCneFjBMHnIApAobg zm`qGqhvgK>I`c2f&{>pIkXPQ(geYPyh*%TS*Q-$=br!CyDZYmK#I zQujL>c<%OOCBLPAbkUha$dffG#p zW>Btv@pC=;sn+H2wG0^NtLN^9Elx^R*){XKo-TZHN)*^^k`sab6;ewUWjhzJPFL;0 zX)TqDL%`|OVoj~s$xJ$f3=KMdA>IDVz7{k6D81SGZZp|5XL2t^b=ok?pAkqHn$=o6 zyV96tk<^czE;Rxe4#@!H&NW!kwB?x5tLZltLf{9mmBH)(*rxpd*d|T{GY>7~S}48V z6)hc8w+`_bod^Rm5G{Jq@|oaH*St%ku@(T3qy+o-6M;vAbTMhmd#heC(6Q|rp>v;e zyGc=X3h&VZrjv&@EYz?@w?oIqb^^L`FQOYc?qnZeeRVg`vC!wWSBwj|wGs4Modq!8 zP7kh+Nah6wp8K7a2>=wImmQC4;#F?w(=w2G8;52UNPxQOHEP>!dUxwVf|FNWV6q?+ z)!g~`fl^Djc|!u8{pmrlU(X%HcAh=VT-(f7>6jsPh26TckZ`csc`a_w z*ir+Qi~vHVf_@`Hs#gOnEd&VY4sz!(6#^Rfu>@;V@Ls6*irMO-wmk4-PI)_UDMP+<^d+!ti8|8rw1bNH<-Q5i-AJD!H`5%M@eI;)H09&gcOM%tCqSVTT1+gr+ zwfyRqkkX&?0!lBGfAtuTaQ@KjOEO!TOFV%?bM-d(^)@95$tb|kpmlbu82@fekp=ka z;~%*+j^P#}f;U`zIUYY0KBNAStTg%)JE!Ogb{)s!PY$cL6^cE?S0u&_@3H*qAy)v{ zKV02{v7v0lXs? zT&k+#O7_jcQVFOuWPKHL{DvInL6Ez_psJZYk9x%po&l;IyZ%h^*^$~l?Rf{Yh4KaG zEIMHYZxvt0@3(|O!GpaAP(Lq8c4^=1XFkw}PQD!9yQw%~jRH-hXBwq|Hfm(@ErH_g zSvp+X8OC@IYo|3Y8)H1r1`vz2~I9)ZR3u z$L@Fohkb3@H<*5&^)K zpP5WA=uLoM1UXr2s;cP8yxx2upcl4U-|J!&F9Wj8yV{pd{~aR^JALxFc{VNR8A*21 z@DD^*#U02W+o5W-t8eRYR<5}>0VaQ(aY1YO5)1x`jGgs>5)Y+{ee|p5lgFljU@l`L z?ImcV6?@UM(1#T)?>e^Qvv1Y()9p&ZOCxd}kEShFa$gx{}r(0@`dBF`NEk519e z99gb?&1Qq16|s#L_E_G51nY8IU*PtQOg=Xvg~H!NoK`}OHJkBWuXN8;0_}6(VEuA6 z{SzvYHtvZ%tv-9mjpA}A06tntq#oy__qmxIAAR6>>d#0ZJ^x2pd>diO94p4U3GoD< zyGvSAY9Tlq>t4)~w84_rnl-UqNX&q=tL2Ko~TJ= z_W|=tG)G+k^IqpE;J{*z;oe|qM9inXJ43nbu%%3& zqZj+2pzWS02BeL~?l8z4M>jxch)|hVXA6lGm#@lo3lL(71P@C~;8*Yl<5_Y7HS`H_ zC~`+li-D$i^3d?McA0yCyARm=itP4aI1%f0c;iyT2TO9#ktg6r0(22G6I>V-&kX{c-7G*SfV3^iScUH(RREaUW_>q+MZzy(c>YGj(XU`W zWiFIq>3S`cMR(P&w$(VZA?vg%2jaEAN#87Rq~n;7DeBWY_mS8mu64iVpujcMnTKsRXyT-NTw2DRNXqcb(cKb-KI*fBQ*T9CZZxI5J5w1zT!Q$ zS3LA|5?XD{BJJIGA^h3x0D$db#&O(B%tyH8QuL;h#uk3$O_!MX;?GZFC#W!o*edHi znf*G7%%bZ+xOH7$EPkj;zIuVCwCG#ZF^GHjOO;T+F0jbzHRQVC#q~<+f3jcAz3i8m zlT9XOQgYKzj29gA+7&t>$#j*`FYY@0&^d<$bBX(@ zK7pK@e!GmChksb3f&2gS9y}!N8~r;FH{LY#m4-BD5`vLo4KP81O2nrt_nDu;h^dF7 zbd{??P4%QZQKxPHxsdjf%2lA(RFpl`HN<{f9qUTQ!^s-v_X_Wf-*2JDRNr^#O4{)$x4l2(8}@r za%lM5)pT-pQe7l2?##wzmXl$&1c+?J+?4wB(wd_-oDt3_;rFO^aL~wf+aLbySQVUL zK>r-}msLLFNiI5|MX?CSeAhI=XB^`8s?uBWfAqL z?C(PjGBIB|a<}m60P1Q)1v%_+kn%A4Prwz5YeB+HqezFkM&?Y$ll^jPjM?wuX&1`O zxCi$iBdLt$yo7bDquUlWXWfmA-FWg=i4(>*AgP4Ha2B2liTjcq3kq9O<$qp|nOBqm zi{CztDw9J2NQ_DWP?bTkzyg39da-+A4{=DTL^WbKYwqVQ?bR>! zx?pxZ@@QtMgl}_y+Qy35nqx%KECX{T%gaS7z7Xy zH+qzy`|Y9r)9eNba{7%}3>_;gBfxTQ9Pqqp#$$|HVhotd?ootp^WJ&FDLsQFn2Nby zHJZ3s(rQ-<$O{t3|9Wm?f*Ky*cHMR*1B(F8R&TqQ)0ZIXP1E@kg@F3w;r?aHFn(q~ zlIL3O2P?LIjDED%Qjl_>mb-LpeKLgFIs5)&p>I}uQw4rkacFN16t?BB#B<895}hFG zMyvoXWWFsCQ@;KItW=sw#W?YG$mtOiTGJo1QOgPEXCWsg0A3y06B<^=TMB(Zn2$Pj zW>L|X1SPloi-iUkzF%8oCBr^P_5Z@qZz4Fq6hTs$R`71TP2StdRW@9-C+%PIasD5V z%{ODp=;MBO>y#H&=qT!}@{-hSEhlr|WVpDv7@%}5G72CMhW!*7i<|9`@ROnaR`B}I zs2F^pLv5B}K5d!Dk0iFC9$Lt!v=m;ZI5?pO6j#aCjku-h;`MBjs858#VnziaMMB`K z5H#%&t^T_srN?obZiB(ZmOw#E_Nf;z$UctW{3rSTNCc7x$zXFzzslgkQKJc9)b}Ox z9&15<4a)hBW&mto16sgZB&SUW4aKk+*=fo5h+n`X0wUp$onQB2XgO9#jB{>OqFqZs zlGzY>wqC!{0^_~Z%V>i<+DRW}_$Uh!FRWT;fh|ytS$cV&+gwG)b9Ha7F`H?bSg5#G$^YZ&tsk0v!}kAs8!#HArIl1fKth^2xr8&4Lx#S?K6bO?dof|0w8~s0!sta z9!BBD_y;`&nd*_}o3qfgI?LF`=Y>cZA3iP&9#IT;+g=yU818?2`YdJCa3I_Fxq=Wf zNAbdxb}?}GojtmYl+!HeO5Eih^C84Ob3R{(=^0Qrvh&rRRh6;$n!K2j5YtULMIzyr zJ$b&jg>ubE2*P|De9E~mSN!HX1MrmiP-uV-M$7E9SkIL+Xh_2xPhDdjw6|tS!dx)% z!3TJA@mqQ~7AFUt;o~GoZ|Zn?GNF`sz*-m!f9~qHn!=(?To>hIo2#XE1I!?gN_X5V zMUmeO%I;@6V^9)C;*F=-TbEO}6WZt>N)oS)mA1y@mT<=ctpsyQdTmV2-y+P2@uMgymYL<#H8i)R064=?^R z52lj69y?xEKl!X7h3y^s!TKG5YEY~s?KUwu8 zT~r^`FRt*I*)U(trc=IBkCvc;cI+-d^!;sSFy}$`;qd2R;eDqtxu}V`MkCu zdd4}Vkfr=KKGgVp^_7YwSQX2_2@yip+=LRuo%3Z}zGC-XO^K1*LmW+P`!e6hHOLi9 z&7TVG#Qu7Q6|=bCn!NG|eM@cRcZR%A_)E~-+QR%ltWha>@XlWb?e$v0(bPqtfu-z` zD=^A_)U4;qc=X)VI|DSyd*<*Mm2WaD3hr&WzB=N=4E+PxhKwQtNW1nI-Vo&H4n+xt zo$$RcS}d-wldnEr`^d3@_XcFJ-Xk9SuA)Q#T;-y5{A30ONyb>YrFPb>cwy>K(-Qm1Mu^Ozhunl}HQ~KrdD?1kyY`prjktZVA)jQs(P#+0@ax}(Q zd~UlB9fFG>{+cb;fl?!ROl9L_vQR2P`L#w*evj69U$bp5fe{)cx1ilsOc zxM0gYoVEWcev66Cy7hPk-_Tz!rNnbuQ{PRK2oXL>b4_8Q_4V64T&Di_=KAgpnnp>? zj8&OG;c&D#TC)SqZo5`|?IjlmBa?HV$fQsII2b=FM13`>Pf!ZLLu!?UCa3tRh!Lc8 zlLc+=iCf71nlWXl8|z|clFUc8Gr}@W5JQa-Fwnsc6L)q>n%B%&A9i#Co?N>aT4~)P zT{5I_hiz7$gCrKShI|@ZckbxP_6Ee$l!?JspNb|7j-^Vq4O5 zLDgGib&z}|hr>RhYR1Rn{TXDRc;F9I;$du+a-_6kPpSy<#QQJ$h08vryA*c{NY%{( zuiw`vHu{K=Weyjv`xO$C(o_J70SiGc88EBGW0GHTWFhhVp(}W?Ll{nV1}*bpyo1+p z-r?Pq5D%)X0-r3td3&Mg)!X*^B+(zSpUa3|rSM%E;T&bzch!lpABH~mE@M7#IbX6w z+Bg;xlCoEh;Wfugifa5%a0E=0F3jWA_IlfjS03d^$jfBm{WV>_1nrE}a@Kyi z*P9MPbL9lG+|pU^>!JFu9m$)c8=wpho1tN0UFi`GM0ZiY>RMX8m+#t0K%2n#&}tk2 zzoDgUcQ7fZg$`^we3s}90RzmEe2D-xkmZBX+daG`IC~LmWBe%D?(W&YLZRK)eaIW% zlny2|(467nBCWORyiXd+t*4r z<_3;&DGKkTxaH@?9cFK4Z!TJW^ZX%y8ijB!Wv@F0GKD14GJzXPj=-3kr&Ebj=SiX{ z{`IGtfqs9cLD!)@=5{**OE%Vs^Mh}}yF2e}wrUAop{i@rBr&z}jzN`h_*(t3pi2xu$ z4GttALw~m9y_OrPHWQOq45{fg=-Zfh$Ss%$&{g-Z%J+yRa#f=0v*R|fRsRZBCI&1D zXNPUSqdyK=Hd7;!7G&N@wO2pV=WcK}*R8kiqHaeqZaX`0lAww8(o^a|mYy!#_c;SW zF!12NNOpr#Ka%@a8kZpLlWiWW9gP{01HzwJVOuvYCXn7}g#@N{FMIv=cI7(8IakXh z-hZE!OpeRX$utld^=3a;J44pqbhrB?N&K8GSs-gjoOL6bqX)Kg7@%}Cw&v0%o zeG%!eQd393(n7whlDl)kjZGE(p9)AxGJ>%6+tb-Ev9PkKPz(+E(7*B+T82ofCE)Im zs);+Z&=!jz*=HaTl9BgAk{EC;mcK9PpW8WPB&6L&4(J@0h1}b;JE=dpBNmfK;=h*j zINvcOrZt^Cew5WP`SaV-l`)S@pb__Se?r60onjw%e%tVGvaoCh?FYm!lv)KFFc_10 znU*>yILWc&x{(U9#XJ2M3h%84)8uS~cHcFRPzCoU2RnUYulwr*Cq3>^EJxHpi;aj4 z$7>k-^z8;{!Lm7Y&gBg4EY2PjD6q|O%c2r?qOww`YWI~HE#=2=z+Q4a4e3rcF>xR$ z5duVl4%Brp>C~VhM#D9Q)@;cRpJ(ci*BMe|JnuN5Y;1&Y1JJeqR5AQrxL6^m=EB+! zCq2sxC)8P~x7F!o-54VHK%G3w*6S7BA|L z%pSsE1U@@C)NpfGsd#RN%9o2k=z3oRp&f=%9!HQRAmZ6hCX``MbOWDTX7KeCr8vUe z{)vFgVe5iOU}B9K-XoeR9nB-=TwU|SbBif-4k4nDY9XU(Rb{W7sN5a+skM+1QC5YK zznQyA|5o<+$g%=%ahfCr7mn<(E#KJTi*qP1ATtxSZbvWO8GXm(R?{bdmtMD!M%Xs8WEjF zwvOS&R$ZaRjWy=6rY7hlzE_Zt`wxh*7fLUVKgimyGRP#@l>B^hm#4S$4eH{pL#6z7 zm#iTZy^T29bpy)=Q%!-4ZQ8I;m1IeQ%{eKJK@qMx59#0I&;29lEqWQYan{Wq_1h{a ze#3-NC=;#AGNksDCMvpS+w^KEFTlyE;EQG~RDB&N3YN>dGhUAeK-heGx6`0bG0mIEQFM#_*xM?pKLtZX#w6;S9#=0G zz`uqs_mq1ozoa~F15g_V!`dJ=hNa<-_$*DXGVVS$bI9lK^F9qn%A7xV_8Y2wqt|1l z+$4`Lugq!0VD>jPb|Xx@Uun_Re%%-syUOU$E1o{KduO*&n8MD~&$hFoalEaUeXWo1mGqt+WC)sBDrY1(gOC4!{d4tlwhUq} zo@%2~Zz9@iY~&RJ4U81%c3t~6hR|mLKwtDT0gKWS$Hz96J^UuHOgJ&RI0QZNmj~Lc zE#x`>$`gqmotf5oQVfQnCkn=iq+!2}5$>qu3F~yF7Sw_@ly|1uFS5`l<{R)ZC9UQp zeU}wIl)NYeSep?Gr9xl!0$BXK9X9NUQ=)AH`;=qdX7Cqze@Hoqh49;S_|15%GsUYZ>SVbu$LkicCn8+Bcc+*`Q6R3;u&s;cl9~|Rr{U^|R zS8eV_60a=U{%7*eR(d&Avvy9}v-(O^@m--js3C4)L3sXp8=kAt2lRYkzhEv)l?+U^ zpgFj2IKE7}>C6|NTh%nnue&gwAY?khNL`@(dcm_t7QVB;GhNA#L@DF)G(3Nw3R0v^ zI0won)Disv(-}7TF;_Rq!0S^)P1f~;5mp}Wc_}hcU}0=PU-v}X9AZ9{DcYrb+2o-y zm7}_!wdgaxh?ff0?mETZ%r=D8J<0+bmMTx)$QXlYs^oVU{ntrk9=T2BZ{2t|{L?~i8`4lZqi7YVLlb>YDfKTeQ?}fi(9hhTEzg2S=t~u47 zI7JmgU*^0VyVg(~CD=-pTr0(p^_PyQ{qhWmliI`L$}~=rEh&ukB@bf06z zN5W!vvFG5DRs&HN55rfpi`7z45$2Sc-@NfE-b4Hvim~WsM1B`lbtZFn9;F_wo)&0NK^%Nqllk1U_v2FUfV*32#FaH zX;{(@MeR&mvik6V>BQ8b9Vm4nkM)Ml2FUK~aORv8#4R~{I=jFYL&5>^4do~$<8l*_ zu!E@|{JWi5`z+&DI%4T-;hB0+Dv@nHkX(I8X!SOx_4oo8e?Aq2@7o=4`jP_S!>&O85VVem@Z3E`ipo_BIUPkc0KeAS0y z37?shsI6y*%pAfXHl-IZdn=D5wn=?4jR3$AdzyUP$@4UIpP2c=UC=QOzBJ<``;k|jb99gb2yY-TNiu& zN~&u+%DW`=p;Gwy8Zrnw+N@9P5Grq!6Vf_gX*EE${-kW#HvQN8SINkL^h$f{6N{6cb^iTCdz&`Ia5lwyohH|b9$>Xl4eaq}A{gZ`=A45@^0#LeZR8tU0dbv$}rxYMK zc-kjklNaqfq1+d@OOdMuH;}C-cG+UyfeLxd{1LE!IC*eenEk+7#`)?^qpTopVyN`` z(wgDSgWXr(X;%#x{k%b&jsAovw$ebc#`78iX{*azUB{TBG`M+m#mrhjDk!*4u3W1; z%g-@`i(KSO9j|qmr4>@+(bc&;c~qna0VkD)Dl3)ORcA^ns#67BjSUe}QkwZ*JeoQ1 zg>w}jUKfl`r*;sQy{M_#)hksdhwDVrI|m%MUR5cihlzx)ojfWonaxYfo<(vf7MCpJ z7ID`K#x0k2|96r#rcHB;drkGxHN^&#zFRM+7l!_leER+#dMNVxhm92 z-X|dv-eb-(P>PY@Efk=q8Jq59-XXzlk1m$-faJBE(~&4aSO zFurWx851tskafmhd|N}Z)*Q#w<(TWQ zmQFNL#BiJ@G0On+kTO>f!P&#t(<@PX>^KW`@ayz<7-@d+!8|(U9_O*N^ek(+7=ffx ztY90{@yymN{jvCBol^~_t!}1~@)DRkA+zF$VUwc??mQ()s`AVz=!jOzFQ2u*sd{f; zozsdg%I>ID?h}AuHyAA{eCPR}@VBs6w71x}Fa7z2Yz>5&-~P}=!Q&q{pmrAjj-ige z%scOuomYPY1*`2LI#@*pwco2MF~5IATE+}o^2u%lNyCri0Jo@qN4akTjzw1CT%6o3 z#ufDJ82N0%(a$`x=8sf8B+>ro|JLFO)@Gw$ubDC5rRFY!2uj<)t^X?`c8V3G8Dk^QG$VM*l*z3soaQaDu2feR39z^xlI#Z!U6}gh73>R7_o)YW0ji1iWGs13; z{Dk>JYrWFBKD#&LWXX_!EMUOJo0gk5C+cRsc<#5ClZgl|e^J>JN|zO}U|(YM#)k(C z&wG;`u^7^P%&d(Z;!-b9sFl6J7||p*``M+VoZe1#GED`UI|cfo=2^Y55L|mIE64u; z7%x+;s(xNMw1!VGHi{Y_wRD+#mAXTbsfDlhz7sAq`G`_lq3M5M-4cpbp}VhFXxYF| zX1+mEh&&6&bXv3EeMayJ6zwn5M&Bs8j2^FB3@yul_dJ2~AdWFPuU~42QOxl)dw?hUPSt@lBbT#N0gsSYvx_(~D=Fcj90Yg2DC#zl zIsL?R12u+x@!O~cK(Tw%1j=ImO><@HwT|Y*d`n56MvbQA-QX9uTI=0PW$$^Q2nX^! zf~x);WgLHg;-@O0IXJl$I#nH5eoAnsO17<^3_Q8_c7LJtslAP1=PEA!jk6H35CQpi zrO=Vmh%b}b+l6u_*y0@bqKFnaVqZ4siu4l;zL&Rs@`OX9e{ZW$FJ;m;8?o7ml39A0 zg&w-IgBp``1O3yxGF%)ceL0HiRxHdU)y^LW#TlvuocNPfZqd)8nmQ7Txn6T-%QX2{tC`=+Y%thFFUwm$W7{!(85MUFY z#sLQy(a*^U=|ahUR!$tX5Q}>$Ngnel?L?`6`st%sRlyC+HD2F=(n&D`PFu<<2Tk*S zQtY!g(%TXb^RnZ`G$^l3&j>h!u+uhzl_rdokv99gxcrPjyQ`|8elWbFPW5f9q#Js+ zxxW_Cjx8v3&DJqI+Uz|d8;Q+XQPZI>%{X8)t(2yoJ zS<;qr!#t3{OC=0?Wr9&zJpVNZ0OsH|XVxPN8~Tt9=~aCp4F>P72v$TT;gN_o725&b z!F0WH%^cqei9VFlA|W z>HJp?qZt8?jw1apr@7=~c)>EmG!Q}2oO`lku0aGsqn@|^@OFPp zu|MaQg~lmTq>90N_Z$LIBYw<$$A`?q0AJU$rhMD%04XcEtz~C1D~c0G))~L>8h{z8 zV-=aVjZ_MGl-W-R{P{Ot_!ISQ`@L2{bxeVZVXMU+$(brO^o7vpN1 zGP2n!kc@&y`s11Sk?GN1#*Cn>)}Qpen6q;w44GPkQPpc^?o8n6rwk$@u>eGY7OEp% z(}>8lN_PRfK4`l&I4_e(5bZWTc+(cf@nQyS49Ec>Sku;U>-w^c1HtbUbk=<)!+KJl zjLV%^n$|#$Owdo#_2Dh&#TJdiwQ|im>aRSHWg4B*Ixs=k$f6LbpJCAjFqZ8MZLR_e zU6kAs1cv_p?dN?yBjfJ`MP2L(ttOv5PT5bQ?`jbEcOVAG$H%>GD__@?l?mwmw$ZY+A926m@SRtB$xdo^vE?4BDmCHC2-n| z1Bjl1`Q3C@X@Mz!mCUvWfb6m05CNPYQNIClE@t&wZa*(EcLM7^*K;9B{0PQB?O3-T z*~!!6!R7|5_MGYDb`IC=zrwSZG_YpJ^5M)WOQj`$af>&Bp-}r$q_L?~*v}GNMQLPV zm&licHG>9;48Qn2$Q~%*9OR9Qc)_{p&5WyU|V|BYPo&TlS{gL5Xk1Y~mXlfUX>i+{)xl%pu-HVSwsQ?-9nzRo1< zG;@#f%;d4$TInL&6H49|4D-OKPE?@qBN;1AbHUYv-T|Z5wvqfkGmM{!m|63&SlJD< z!OZj#NkL;h!j)oSZbCqEc#VK#JEVMovRCFlwSIBz? z`b8-UKg{ELZY^2cJmcS`J@lRCIw*j8Q+71cJhnJxpD_N;njHy~x&U)S`sWRw$yZe@ zLepEjx?5@6kSgXSPD#-(8uPC}a!~llOF`CGuPCQC0w0l?~jV0&sgVxdO6UuA8shSfdcOj%1hq_uLP~X&(*dW z%*h&cH)+gVMK-G~_@T$%cKD5a^PWwCnBRL48uZ#w?Pa`Lf>6c$(MP^tOdOT4kFY*I zo#3+1p(4Zm+uKu};`=6KuL3gqk=P%DR(@oekcofOeU|0|+mgwtJG}}^Ni>^Z-SM#% zn^3pp{naMD;A{Q*Mg5CWDAD_aXNf!53+_7C3@gKIOv9=D*6)t(5nGgMAg*~4K`D>qGy-&e;Pr!&|cnuFY-zI0YG=L z7DxBV zE@Dfrl7=?Es|YZq(l&I*6iw`uB0P`J#s&018pszvXC{aS7$iaJVRD~6&%hL8^^mDM z8b-Oh(*7oDY6-VAr(U`F=xMjOos()92)e~R@{^E}*-emm-bmy_okEOvAx;JOS$>0CaM1ajdKT$$Lk@@L?pqgh6iMsFLKdJX z#CD0t62u$*NBUL$;gsdLE%dmzlZd}F7edtzx}!{LF!TL{`Y!M_Q0mOJdv?o8o8;kj zuE+QBSURZNh~dEVcu835%sTcty+mBO4>CmU&iEZ*|RAqQuU`ES_1`k3FY%k_$(9&V_lSemnh9m7=Fa8_>2RSVWDch z%V7?k>hW}HHisZuE;tcz#fAyvYQ)tnmET_T)oLfSN!KAvcnbexri)AHJgU|-JLVxB zzYNq^IKgYsZ)0P%rGHY^!5VDuLci|IgJe9M#c$+ln;zY$Tz?4~YgG`B!~GAYCbn!| z<=|PR~c;dFUS$>y$M!73cc^vV%&~3D_SnX;dexoyBie=@P^>+{X$PaiEuyGP( zQ!?}O1h?&J?eb%|y7b`AKA0zLbzsbx>?u1LIwiwoG0=bCZ&B^NENoxud@cZ;eq?$} z+jNEpHxfIzlLL=B%WW4IX zCMUkEew7nh6#;esE!&fv{gP zPw&?2el07jAv@lKA_N6vYMG@0?sJt@wztzTK6uujp$Y@ovX=~^R z;$OC(`tGAoz`<2RYx{{SE?GNrvw z3}dC2%2cN1?H`U0t~ue!kT(x=Rt}#ZD)DKV4LZ7YPR%EQ{Oaq>FhD6ma*H9P$%4X5h}rX(PSaDiE}uSc;H8IQZW zto;^u0KZ7Q4XA89>rhehSw2Bw}dm z`o{yQLyqkiCcb>X&qM}RpJ1?&Djmq}NvXX$O^bSA-R}L9w$6A1!`>JPg!GD72fp(s zGfc%PB|`U;42by&XtzNZELKrB2mkAevf%4$KEvn_&dDte`+R|}x$q!vjUP`^1kVG@ zQ?kW_#r^mj8zd2$h>Emf$<~XlK2jZ-uZeLTULIEBU5X7)rc+*NK}frIZ}(W+UZbb0 z7hlXh!tAjRjLM;=XEqUjb|My;@dIJ>Gka!*e*E&zDSkv zpHy+x!Vp!L*fM#}g{B3sMvMn~9x2SQbXM_Rn;i#e%ALa)5>+)6rf1 zM4Ksg+_u4?|KpPFP|PiUl+WX!qFZOg&n;1L23@|?4~=8bu<`sqPN8GFavN>`L-XNf zfD+S2|7*O3(b{Wzk3v9WHjBT}Xj4aGL~YH5U^8{hpYkJ5nyYZo@vw^0c=)@yw4d*r zXXtEXUoKRUl4_;PDPKt+r$}6UoiJN1oOWkB+o>$KMOHx`nG+z4?%NFSOeN1_TnDPJ z>HFqKChpgb6yUgZT$jxFkyHqMK5b3}tE@H-Xultw^$qkAWBSHoeRy*77+eEArU=~$ z{&R0Q^nKDW`u*4~fS42&r!jrq741j~i_ct^pW#b!Y5E;(_euQ5{a@a(h1mwF@QaZS zF}R#rT)6$CVG-vY1w_A~Qt*{7ttkhJJaIeYUYq#07YaI|M9IfT8}``vp)9SPPrf?< zqc$$}O-WgJvnUl#r(|AtV1kW_gBX9XU&-5vBzz1L`99kapao52Aw!sm7J)YTljI;>KiUEQGY7li*s zrWl3N%`Pr0wQf?2DdG;4vK1Pe8)n?tqE%SvwFJO>tSOcsjSLJ3YpU9<1@@9}zgY0t zIqcDV;5p>KWH#edpZC5T#03j^D5#_?7bnilP&{_Z|CYJj^1%;>C~I3v)=_T%=U48C zKIE(%>OBJ)tT-YsjGa$g@~pUP!(niJO~yJnj=tG#E!@YP24!R+wDLs4L*z2yA0jdJ9_iSZ7If{l9Rv* zV&1JpG#EfoMw!ER?qo(41X~B#+4eRV_m!7y-16S@xh20-I9Z}aSR1NM!*Jm}Av@c# zy?*wfuBMVG>~Tqe%YVJr{}AigWvJd8XaAFvjBgDiz%Rw9JmuVxkE}K0n$uLKVnTr1 zW`&pAv+U>Phv3AuaeCKDaj%Pa->+Ky4=enXT5~_~O_K=r2Mg*Zcg!nBeka;oK!&^x z(%jNPQiGLaS96|;{-GmU8mNESK0j;pBla4l@-x2v1}}Qkm3S~W>Ktyf2we$~MEl(0 zG<4iE6(k?xzfk1=T-AMHyIN%r2DhQllqvx7;>VOB2zOj;j`YM`%FDJZKLVbkB}9H; zQ*(tg9=Vu!*>h+#lZGq3$J<)MkB=sS8mVqQPLJ7hVeaFR#Y5U2iNL>%LFWH=uAaNUb0cEd z6|Oa)Tn8?7kk0o`9h%Y3@IOn&_n0%8ETKX;nFb?O#&91ipIm99`G?7eX-X-L>AT)e zr|O^;B*0w8%T^%#c;;t|Z3hhP)$LGS&vHg=ls)a`d_hWwMpy4_h{5+nCJwl@rb5 z59*~r-T192(|n~ydneD;+Foea`=7g=A~H&oPe%%PEXv0F1gUZ=PhWpLtI*!d{T9?( z76VK#9N~Md%6cQem6O%tz0y4khdD!?0kC^?$USO^Y7{+c{lMmdLvX!e2Bvz(#_nsv zHnP>ma6?Y-$r(+<6c?{y|9Ro=WID8gb<@HUaATyj*+GW4P6^o`1bDcOB}x`)sa4k* zc9m8Tid!snJ6~RuQs4<+-~UW&`HMlQKbf*QrFe@!b7 zwd{hBJ3UHhMD6+u3qoOFtPbR}UA$_GN@v((_Ou8IVM3-H=1ipIuQ~N-8mE%9ey3oO zk+5F+BmU-l{<@>BO)y&)gwxJdRqZUnm6$ISdW0tnSj#SslHyvi6z@LAHC{~3e7|~Z zBQsVbwY&Y?T>H-!dKLkGA(X#<+ko#*kGTA^?O9QEk{dAQIXeg!VztDLFh&oiw8~tt ziRP*KYkgd*Lr{GMdJKF0)@KD;nwJ^d2w-pld%5aE+~q32AIFvt(SI9j~9(H7CsPpL+uu@n&$wM-b)Z2C?7)(s@nL$uy+FEP= zV(A(Z0>V|dOb_P5bJK=LK=DCRvr)XR3-m&=oD+dFtB>;)`9oEEz z^Q6%Za3}yXBOrk*z9YB`qaaSaIkHn*f8eFM=dMJ)tDWxR5W?hTZ!ybf`AS2Zi+lj9 zB!s0N7!1^eXI39A#7D*KnvAf!?x4I|WG2dopYVCYT~7$WMKDxCGpi&-W|$x}ar$=o zWaV0;%5(5)%tVZ1S^mU^xG=>U`)or?B2AIvL}Siu)aO{^U2NY5KX#8=&tj;UBEA=Bgk`sH$7)JG2&g7?Q#yNkcXQIeXxP-3odDDx zTz$ZG5P2mbr)I%Z+Qe~$PrOpYn}f{GNBM*>(^2UshhPZQ4f4qZv9$L<0%RvP>{}Ly z_cF(m92?(t4s-PYfCJbRG3-XH@Nj>&En-4Bjf_tzA@KTqqdVv2`H?}^XRSgX%_FcS zJpubSk)abxhm%fBQ_u&AN!`y2V^EC-UM?S89thef?dPu4pj1lBiFydvVcRVkt0v3@ z#8Lz~SE&wu0BaZ08VS7mH^jF>Q z)AIzgxI@FcOzpiZy~?OuSU7=@RWlW-wz!J0(i0^j+DUw_jrufVM>OGIlNg3?=0yq)?bH{DO={VpDWNs8q# zg`@$7U$2A>Qu%Q*GYH-P=B}_sf8^#{otFjS;5U@R5GW-tkt}@~Ky1SgGXZKqf^b&~ znQ}g(fS4;_ZRX>ulGszV#-=8=bh;jz_@&&8=1G>3C-xWeE{b9B-&2*)az~^IIX%5U&_wotq|u$^0E&+%Z6yy&jGuy_odNToG;IwG z`SzXELDoPsrR1)?L#M)duU6BWqq)?9#TMm8B5MNSEOW6pS9~6Jpv#jMDrXWyD~j4g z;ODyk<=OZ1k<=@)OgYijBW2=m&JSH3Do^AgIib>?p2)){+0oE%nwcfP>eiS|tktarU^m=<{Q7L#|gt}hvqh*nO^8qZ#-$A;sRo;p6r z|11{V3Gm);Gt;I#ZY-}xlv;rzsn9NCL)HW~ePKT(XEFC0}$#wE1ObB1`aSl3j!UNI{h_KQDirdk| zY&~dua5s5YuJ^S>BebF4X8o`!tm3vF+tEs#zB+-;u9}#(#4e&>iUyw0DOrAF1f4*6 zrZ?@rU1330%Z7%VP*I3vaOT6Sk#n^y?Xlw|A`d7SC)aB zI~t0?Tp1x;QK=>Y(pMwDZ3tcL+%Xb4X z6k0CnaN`#Km5&V#@r6_VVZDIq=}*?L;fvXPl`N$O{haA(owZ?dJhcQTX%*{Cm2l~* zYry$$t1yMnJd&@3r2|(a5AgRWpbW2=CD<(NY&NwD2pg%^7o%njCq$8*^l!E)V$4~)-Qt#XkMy^1XuU?w4-2n&X14Sy`aMOmC7-|_d(Wc0X6yC+aN$=6Y${JA4oEvq4qVti*E-=CkJ@V|t)sWF#g5jG#9YmVOnxH55I2v2$w2jp7?%Vt7j#OH(@dJmDN&M z+`9A4ZtGD-k*dOfTsoc{sJg+nUX(uWyVFFG_~h@1aqP-BPXbj8-PRl~ExqoED{XRe zM?!4_lldTAOo6lE4W&ya5x{!AF({bbN3Ny@{ zT}Z>Mgl}tB$#o|Uyj{wjEyzLeWtGbqq+!|=%zD}v-mOS=kh4>OTiuCgay6arr$vp+ z>$jFC-zeEIc`i7R6+ZEdV1>_ah-;~pTDUolBD(6s)NyUDg-?Bj{V_m(*co5sUAIny%{Is? zm|lbmF5FxaN2+~9-#;)rV14@Z2P6E(WcBe{Onu(5-h{A1hi&P(pMPP|9=HKi%yQ~u`VMQ$yv&0ow#s5gX`&*Ceh2Odt6WLD*cSZGz;X-Pqu3=6#@3f9BrQE4 zKPYWPmM@+bZ`Vq{H)-)Ffq_|PoZohVz%xzSIKJ4^)Mx5&xY_IK{yHGtrs3V(r7%0FABt1L&x&giZyYi3uJUuZqoV;T~ zfzXLeq0{i$Qe-5d=EI6*-`Y&V4-blzT2>U}0v7QbqdcxvZy;W0NxHM}`f$e147Uzol|P!Ck=4 zURJZ)AEZ#$b2EpQ?gvLc;o=`*uYvtgk71`I-q7q@mcJ9BcIoGFd}$W<`QvI%{ND5e zHbP<;UP`3kFu5V?i5!`OEp}(TcRBi87#d(f|J$ExWN&~2?nl)7DQ3l*R~UKJJT`& zL8XuL?obnpP2z_s-Xbk&VqN&_3P}f4AWk^V+gz)cRenT7kTK;H0ZTD>N@0g1Zk2iM z{(|bRKc*Wkr#O|3tM}byvOzPl% zJjWcsuSuTfR&B-qz2+jefO+rR28cGQ@e(<8^{sH6`+~&)y7n#YVJ|AezOMM@kK(Aa zWvgIHVLzZR;hWtQ{p?F5#?Ntyxj zlRpHj2c~2-!rVinrsqzcMIE-8b*DLXOqbc>HSh#M8So+JiUrphY1(bk_rnm||D|EQ ze=j$EX_p$~eHDMQ$w5$0X%5U#o|T>FOSQE69YSuo#9G*Pa8wIW8R+A2@Ebr~N0t6& z*%qz*E20-f%L4Gt_$X$*-hD+suykFlbNI;N#K;^<3|+YC@CnI(cgj*a-tx#`j29so z0$4eB+Y;_&)IN2L149~bSH;C2{>hY=b=bG0Z z3RM<9!m)*em)_~L966qli>%2L)&5R?8iY#}$7lDSKW4idUh1aVHc3M>GL3;?^_-@2 zf3`a;k;`rsReIYt$mG1X45Ilp5f8NA{3u;GZfnKKT`3}48+0hw6Jidh6lnrbLc=IZ zy>k0%nfTCjFzpLGh~%ujvrqJ0annJ>aC>~=_j3@&C;Nhc7b+>)$#2%k%VpF{>u=%!i zA61JFY?y>*Y#HSzrwX-hgO!sO0UvW)Gq|8DUhl;BU@1*q2I=t*Kvu6k*pl_9tzWQL zm)u0aM8EGr0@)G`Jx2q1Ritf*txp~6$wU%e(S&7N)pbL^Y3dp^(m^jZhU{S25PZWDWHtgJfoh6^^?5R5QKSqU;W;l5FmQC zeMce6$~@*FKVCb;oNqVq`+(| z6#Fm0uhtz!gfeJrD2t8nZ$IAieFcAitsm@#2y6WQd{mD1Cjm!G(MzelyMwKmz5%vU z?ZtJ)Y91+ECEdQHE{Lbkpt^@3BC__4R9#d)h(j#cJT8M<-~%%eIn6M@L-B?(Eji*L z3#XlkM=X*NrHq0N8kSx;z=`*ONjkBm^wP%J?Id&Ckkbn;oPhuAQE%94)mXaz2)RQZ zlHSP!-DHydeN-KhT;xOV8UMKj)P0g&$|hjQlQ)sz1?%%;i;_?zm5=)NsfO|rR#rv= zeYa{I``S)8Dt!*N!?zniUtMU?G$=(ZFEeU?OyYw1=aP$^YggL6LzAX>)b32_di|96 zp2kDji9iMpZt?{2fFP|14G$6VQ;7ab=gePh^*jHZ@e`MS4~v)l$}WS`NsH=nj6(c> zT%xQ;6QkPtcu%Ggge)unw0q^8I6`OCl zuXmjy-{TgXx1|AHM)aF9BqXaBmhyOxnei&Wh-0MoT4M!}%>gkcZs>R* zJ}@VD$Cz084%ZW=cRS#3z(~zajoFSW(gW?UN$n9Qc_xfA*8WA$7%`D^y8QFco6iX+ zZfP)W3)GFC>k#A3k@~?t{dXXw=VII2?voZtD{%=9HfeW}sS^Q`oHy>Z zR@{v~my`mh0kLaM5@$O^g6+-b0{%bHQ{{ifuE_o)YE%9@-0*-khUloHo_~ubKr@Jm zNM0Z={L2cjo0dmj2gUwew5NpQ!nlU@&`*X&-D)*7tF&9J75$T1JkgbJCRH6Vb}aE)9?7;? zb*oG!=HfRJrvO&Lj2iEL5i~4mJ#XDy3Rznj(spN5dy^G!s@F58c`)sR&>9*WN*n-=E5mMm2cvP756?G(N5-*C_g zb_vKoxMcNsv1;F(Juj=?z@{+)cGs!WY;D$$~&H*!es1T0~v&nA!(f&yA^RbVZ+P1+Tti z%ZWrakAE5ePxr3>UpPLu{P}Rl_%D6=d0FYIiZ_(r6zh1n_B6y%YV%4*Apn-jpvcyw zU&rgfkveWqmBz(5c+ns-PW^SOD8Xn0MW#H?r!4Du_ky@)Ak(wgdy4ny2X%qSlvoM` z!#esHKi=@scRRO$QQ_=#UBwdOC)H{hn5omDhVB-`@0p-Xpz}RXyd0-r<GtRcBT=qk}q{JVK^?-%^YUfZdW zU(+;6ZB91AeT90a$|I`(c{wiNXJg|e!KV*M6#Zt(zuCo!H#^L2HEfMCF%gEvIKTsq z?6kKHWe*pcMO`qXX~2;cgNkl46n0Q#J>Dqey)%@lZDrcc9K%&|#UE=M!MxCT?GvwTh1g zE#L1wl&Q#UV(hhi^7rzTm__j~s%LowRJ8^7F8=ptKeK?`OT;DjoaeMzMdyj)09OUy z$rbHHZ-4e_5XC?L8?2;`Wy~5KQC6Ts`Ci1(ecrjm7a5;M498IC0ZP6zDQE}T1z65a{u5B(x85<2;hZ^`(NZ-F7T z8BPWVLyQq#`O_ix{&x)?K2ePnsa(iVYBVO=`;Nw+?#TIjOu4x_pxjBL-TM3Y6BTJY zZqcfy)okng0RRca9eYISXug`4ayrB5Vq9w)M#up`v2&E}Vy>nmbFCMI&$nwNn;3Oy z2|wFErw6mZ7n{^>bEKTEdfWziwggg{r%lIg+s+QiGDIm_;YcaO#+OzW^>*hNuSrMA zB|%Dp7lSX9$SU5QO;<4vMS7`zG_0Pos&>v<>wds7{30~ZfB(_D!=iReA~*vaPfMtM zswlz}hpDd09m;I3WdxUui>fZXlikt(6A|$*-I847#Q*R`q%0g+O>N|#wE;K`u>M$C zU63euJkXhZ=%O>BRTwvQHgG`|DouWv{>af7ZuzJ4^JLJ!?G&-gl3L-h_w}0-x`L$> zU-rlCIGqpr$$|@bQp-Pgdgpk*fjiSKN`5fuf2tKOM!5$wbdtw{h_+K?CGz$fQ|T$3 z94RjpNVaHgsKx>r_c$J*euh#(o>n|ZVi?bn&99|(fRw+=1tKZV#zr3J*|BOUS`f^u`wg#F zptGj~m6LB*Gc#dZmgQ~QN~h$2+w!7G^6R=Bbt;lsdfQ0q&-e^-H2$Nt1_PeZemPp2N`Z`H3w8+- zQV^Z&r^eM_b?hm2XTriomgf>dXA#(ubuGY;ym->3tus4=xLN-GKV^H_fAhS>qlzr1 zM?271WSD@c0{^i}jEdw;nbHD#MIN&U9PHU#Wgm-UwtwPt{S9h>iy|54_%wJvLSb!5 zA6?%C+zwnqRdUOeT)_1buk$NFcS1vLDRtm_?%kszEeYWarL#U?PJ(CFR#1#74DZ-7 z9By7Ne_3@feSEc)z`*-4)>;S=-JNjrP=@s}qN<`IS8V9S!8kVJ%$HZ8MgGU@UD9EX>r7=%Q%OnqwLMd!7BhyZlSYty1q?FJEtW+6NK*_D-SY z6yov$g>UugjW1fal!&ur<-9h(dEFTRJc8z?rH8^$iiqVrRhWjFC@~1vK`>|u4em6`eM4rAvzQ94H^Fujp=mXSdR&d#if`84PgVZZ6cEqlT&7w zx}oP)LvrdYhF#7pFe3LGxTnV$&mpxNz;rq=PVP{NHfjrKOzdO?HF1;&{~Ghgt`A!q zJD6fknA~?WoezWe_7oHeF4y=jaE^V_odGTpo3KRDYP)IL&Top4_CXfdEj}mUT#BFV zi-z=P2oM^ObHp7mK1NK9ux|0ZnPeL7LU9Vy_RFJh_#s_Jb9rh-p&nN#?!jTPA*ZMfN4S z)_Xl#eQlilkM8Gx!NZQ|3DXDK{^L)zKkrNa1&N9Iig|y03yA(qEnu}1;|0OJ*de@o zHb(zs#71>%q*g*_^S?f>iuCBcST9I`Q>nEbwG3CqKkoN0IYQEg6r=>rZTvGC#y;jI zOOwDn2in>8uFU>@H|tiAZsR=_=AUHz+RG7-T z(WGqxg)o%0X}5}OLF4y?8uqeCJLpS!T4=Elvn~GQF|~YcfTm3SIjYcM(nwfyGG=ly z?q4uVqaCIJv^|izify1Vlpyyn?8{-KXq4_j8YSDM?@5x!xDANEmQ{#_j|jKb#0Hfu z>3rN)m1(xqzDQC=U!C&^R0f_lwF%(#SO2$??zc#j@vP~|JuPb|!$D8-6|+rtISlF; z)ogbJu?E0>=|5b(EA{Q}3H+00{kvIiG8EVV`ermcT4C3Fkmeo{oxPLDOT!FsW{PHK zN*~3d9)NV5qrs1U(4ph7$ocQR^xE0(sIZi^CmYn{UysP$Rpc31sboo8EQJ(08{ekNP z-V)iK@KT|>=Hi5qrdX#4Cg|YAAeW2w+TV*%zpN37VUP#1Icc1Np0eclqwOhc1<%Az z!ehL|rg&&1rz$0$hrsEoOkJF5)F>7ktmL>6RDN17e@=3g&p#OKb(I|DVKr!-XRV9 zBTH)11at(hW`!D0qQB@-X#fO90zgq$f94=z?j9GXZC`(ONT_gtu#?C~9Y92ffTq|# z(ir|I>WLw1dq+TriZ}?U*Bi>>vUg%4I#k%l>$@J$ysVMr_K}4zH<(U_(LVC)Af%w7 z1p>F#9lPFiqSFX{+sx`cRTozAj!>7?Xu4dG9uO}JkwDA(Uz~lsHs|`_okdfWM$N&# zs?g?mJ4wd!1Zg-zKWMkARbR12S`0`9*q0}fB;G1m@KXLVaTx+E3;>o8fMk=Gs?S^KV-G<3f?}foyFnTSTKT&;uy=Oo@qIm_ZSXz8G_wLNaXEEDKd^m=qOy8 z-(ph(M29lxmeNDtN*GY8!?D!yRV>>g z^cAcqM1=QFMcZpYorwWbrIa?IQB@e%@}qLAALv*EokmFIe+%ld)u6SeEqsXQ4dMCk?53rvCqc^h8`b8Q4F>}7@4!jF`9xH_Awi(imi zf98X>|DxNg|BI^&^1_Tp_OI~=$(R9ip~%A-PNe-`5GmsBJis;8wIWIMo3$6Fjp*Ve zy#iKh9MCX7O7|!s>TOj+LvQ||$I*(AnC!EixquzC_DJ0m>5S^Kn%X*LU-L`?fgO(z z;Cl$lKaxfut)PNtkT^Bs!3SX(9o z>p&`$8by)q5^O+PEz0p4``rC*M%k{!E(zaCzIJb7Q4UAw_9LsGXL_BTScpZBzv9e{ zR+w(JU7ul~$|b?%$*-Otbuv4BM7w4k6pPB=3ufo+5{`dO@$gb^vMb@#itV57bB0ph zUulvGZ|G`SPuvEJFi#Yu|g3rL6J)*0u<&`1jac{VzmOG^poE$Y}_fOb|di1YO zFQuRNOT$`l4u*+>4c_(32=jsvi<-hV00cVRC8XvBot&R$7cK~h;Us$iIVNZ4%>qDa zejxkzoRYa=77H0VOYbs zda$Al(N1!WsNQLsJ%CB7mMSDb#=mjZT%dJ_H~M*}vuaJSUI+V_q1Huw5!=j%SLXKC zOIxMrj%Q5Ty6NQ;lc&7Cgfd1s!XyWAQF`&tL*%{&AEbAi*QV-iLT2oZW|Y+&KrK$X z_X!`bAJkNydrz574TG3*LQ`5M_f|Y>DB`_VKOU2iuPT{C)pPY+$smSEGLhlcuwIxy z%qmmjui*>BcUch;)c6d9X5}@#RcB zvi@ifMDm$6=)*xkxa@il6F>(C<4@&+;BEHhafNvWJpcOO6UEpwf_coXCA2{#bIAC>_=aP1!{f%$*MmPU2Rkq|$1 z>UZcPrD;Fbtz>c=A*cBHGG7~-{bqgOaio~TPAj$A*O}Fu(Sayg;WWZlY6G^d?aTKh zOwafBOTJ|%5^OTKZPt}U1o6X3h(|^W<5k>zEiiR+R#LW{>TMm(sK#^yOCP$KuBJl;-Bgs%!5Hl;^f{df(b3 z_$IJ)oZtZ93|9GjW_+wZTx4EBQK@7o(N&gTk*F}Ng0m|7_#1(hJ~1bpX>lZvzPD13 zSw1)4Z+?y^-eL8#=#Kqb-*0NEEKDm+O2#`^(Vw9%;c^3^fMpAJPgUyvrj~aIF(^U< zPmv+m;_mw6x0_+tA3G$ZeNL~BKYX2?nW$wz&4|qk&t}u7FDs62;u#)2k*+{ya7hBzo2M9XhN-t7eD92ErZ> z9qY^CuOYzExI?Zsl){LXbmGrf2POte4@{E@UWQ?D?om;FZA~e` zQ7xZYZ9OEfRt%`^57tVy&a7Ut!zEsI-icqe1us+uh;!8JPs`ZBLJll>=)#4A>4X&%SdtRx=Lk0RVb)(FF z_<+c9@Q2&FrlGD!I?Gx@nV98ba-^y68=fuFMI6c1}gfT$S? z`quS$diMp0yw{z~xyGm#47HJ6_S!}((%iQUF&O_f4K->!{+iPX**Z_hJ@TZ@h?AsempAz@#2(J>7)o{LCT@&zTfeh87(~$M*ZBZBYi`qKlTA!g-?ReBc00wh`UjOa% z-$$6X3DcNwT23Lb`&G!kig}sfwGcz*{VbF5-M5ks$~wE)5#6xDng&vf{wL-LTt-hh zVNQDgOt%KDQVZDXHLu~9)y)8CPIXlrTN^lFRWC z|KC=%U-&;oyBj`sDlg!oG_v!cnW86OHQ&K}aSzYiWyUcX6bUQ-RkhlZ>%Nf?Xxxgm zrIZR?tBfFI*67ccbs>%zOO~JY z$!38W1ds-q1J?Pvu#*yet~lPA;u5>auw9p=?|bgJ`fsg*?0?)rKwF z&h|>3!7HbrnaE|yZc!z8qjE2sfbC$SX7L|3W(B+MVHV}LBd$LUG&_7%jnMuXPIj6)1gM+ z3E06TkaIgo!kJ%2kDR~m{OOzG9(M+qe;F~>VaRj3E!qxfUAyd_5A2WAKaPi7isoK6 z5-&_sd9Eb;BqvekEgOA0Z25hFUT^X@nvQQQ|mA;>^ZQ5;Yfw28?08^`NqW2XX zY>AnmwdvEb!p46IdH?)fMeeB4;rmyciM9+Es)gf`dcV%#UCeWmQW44^N8^padqqWp ze!WlGA3}7w!EAzX?aFWhiK02?xh)xJuUN1}p(ON=U-Sescke*AJODe(v2}3-gb}{} zDIW=pp*=2jd!O~gD|oB*@7 z!WN1*CdNF+;-dJ5 z0H3eI!8wBYl;ne*oEP4wworbQ9YZ=R#)p57-@%;sW{|Evhjy)z2>Nz`mAW)8Hhi7j ze9LEuGBnaP?IY~SN+S^OYVa0sOGo6uP=Ai8@d$iWZpg@dvv_Kf|jL!$_>!>pBC>8pP30f{~0{2f0II7nJgn*?#Di_azmkq-fH&=1O+PmV!5i(_31JEDjGPb z`Z8a$fk%`nA0TS})$OTCBONf~XumAxz4+o6!7Inyc!Iz1Ugbds%7MwRQ)zyh9<6_q z%4{5&Eky%%SUI*Yf!2Jcp|{g4<(}8ygXZc%gh+Y-^*hue;ww^IndttLoT@c8aG^29?n=5TfvaB_(FL{v{x z{DD(k-ipZ)ny_b%taY4v)!bj_JQF>P(ubdGgnd4)CA>#209mpyBl`-x@|d_9%w(O* zIo~01>|T<~`#lH7_~gPGBFOO4Yjz)R$q_#aEvnJVkFHQ$?01A)b6@Z6iMuQqv7_CZ z19I%)4wBPc(j4ZijElh*_hjxfpsr+mn7~$v{|3+TK_oV_>JBf8`&o|3R{3F|>ySzl zzws{~of-#%?UO-0jb2;9=A8uzt=lf_XZ>%r<&J09TLMl~iNoiC1CQ`EvNVU&IiH0S z-%BJK_Thh1LYF^#mV(+80trUjW>yQESNtg4Hh{5c(h~EUReqKF`~0fmD~DnoY#jUb zk+;3>HLgNP;P={eR@JIlg<_W)177uTIh61VrK^2j#|SJy#2QWW6`xmPheGsov&^bU z-@vmdi{d^NE>Mt2i50w9KnDF#01zDvf_^HWQXNNr%cs9r^Ao^@kNxwPn7lAw&p&z9DH!CLYCyZ~*#)8w<8FH8Fq{ym`m zLHqlhlamrNXL1n>4>8-0P-_tl_K8U;3ADuUNd7T8*1^zANG4g#Z|j>`t^L+3o;A@f z6WA1jdD6}qbm%%z%tcNO2fx8fcPr>2@tGL702xk;?7c@}Z@MF&1CwuMwS}G05029A zuPH2rPW)XnR9~2kvrpVx30x&c4>s@QXx1m`TgfS;|iab+Iv4`l5c2O-BzjpVLJ<+rsvik6HDG8xSZmTLc7 zmrCCT>53zKoFsmJR4Ph$!vk}?Jy&06PVj+-`A0qxn*+Yj*UCmdZ7@xLCzH6x^Eeq;2k3--@U3v z4gIy1+^vo1J*vtY1Gte8Ux@BV9bA>wkC;kSh7^X(5$in6z?_nQa%c915j91o?*b;^XY?~Q9?p38~RRz3iXh{B?WiZ969$c!!r z1m4hrNYkwNS?|Zs`9Y-*7sMBF6+R?JRkqCDFLW&H#BO_V3n)V$9~z zu@VA>>zS^gS?S<4^-o-fyf9j9UkUF2$>dM1HT+`%e*Cq5TNkR)cFS%yU0l8sr0XHk||Cs|3?_UmWv^Wds4@RD4a zGW*MN8hXfJFu3xL_hYDiXmfL@RGj{;n42IPq1T&&yG7RE^(In4uGR0a9Q~UXJNN9c z?4hL2=`Yi`#IIg1vS|2R!mO?BpiD6u7D^|@EC2>99Nv<1b$j!!`X)j{H{bl4l>m78 zy*ZuWVAvfU;{<*2WB~qpb5sy^)Zv)*q0K&h;>9bbkH)sh45b$wv3Xf>+@m>o_PL?_ zu5`621Ta{A;d3aSdpribXn-*%*66uh)7OY@vDB` zHIjBsHIi#*8wJJA;SItE$Vm6|OwuJ|%ZWW@yI)7%p~*YcS{9L%vs}e(U$;mOFD>u1{t{ z&dQp0FP7Ig(aXo5IZ{tMMW+87NDKqna}+-UoP0W-eQrW7aH-8$ZsEhQsPxAgPf#?6 z0VhXqZFED$5|x%lDn{H$BUuoyx2NGrClnfiRI{i}Y}<{knYNMaB4IonypCGYS?rk5 zX%q{9_)WWn(!oDf@`@9&*MSAhLXXp;M1_g0X!!(MNyLS@N{Faw4OJ#BEXO1>(h5De@F^Wy zf-WhcqC}SSAG^2t9nF9g~NZU>JuCMRGp!xhai9xlXKxIND2=~uYLoX-0e+Ts13ts4K z`O`x2wvAtH*V3(rO<$W%|7`ua^i%uaY!YAa4HEwuSQ>}5F%c0I0F;}vhii&fyb|KZ zTpXtzJCagjnMJ#I6IHJoG{6oT)2)1gRGJLs{yh0spZs8840bY26jX_bGx!DZ=D6KO$EyD+hA_&FaVe%D#$_Ns_@Qi75O3m7CeoeIO28p*|+I=+UD?RiDRC^RTSmM4X zp9}6B`VDDT2#{+w5j(_HJ_ zAP4Onx$#m?(>Lni4`SxE&Pff8%dofmQ!12fzo*>2F(rghds7SkY!ZB@pKsfy3$>JN zdb}x1-?U||(!I>*{Mxa-ghc>`!9EcA=;>ADmT9ir4l9}{_F-yc@@uI>tAnq$)tbj&L*H9L(ON6Y`j33pZx zGqJW2IG;^ijuj)tYyc)k2WEqKH~6NiTtgAgX`xJ53-ZH~kY4b4v{k1OFh&}>AI$sYjiyS9rVlP?V%moG++)LxRDyXA^ryx zLQ~$tp2so&AKX=I*>&Lj?VSk(;>c)1!kUq_Tx|h73%~~yo2~tlKX4&n93ry~GP9lC zO-!<+IP3lNwBK?o3FyL7dxD5>PEd^IGfybcvdOvtF04MB9<$$&$+oW*^U9Eo`;ziv z5;_Ei)SBUiCf1J~*%xJP!o97`WVIcLq~1y!jWCN%eMm4<=zqS!T{@sl!DJ$TcT2+2 z=ACYaeFZ+56TI4bu~;Z;3&^MDum$lC`nJ1g5nil2&m(aB<2y>IM11zfwBq2;w~N*U zjx3d4)5CQIu`XK^PHtC;9uErkbBJ zH!H5(UCTaS?}nMygow}Yqm-z$=W85%h<`m)H#_$D;00ky;j8#Y*6qK2{UPD%L)1>g z+WhWKTEg{Y`T4}$N1*`{HB3odJUdcGx48-pTET2Gn`16=as60g@9tNo zkN&kc>F!X7(IYd4VXGzk?2I$@D4Iz)5Fl7rcd!!y67?Qb=l~L7d0Z7nhyx%6GIAY` z7(q%`{%*E0r@9YsE=MZH!A(}5EU2!xSSBbYnF`!gkCNC9gRPP{T6{6Wze9E z8jAvc-tJnbnK6!p^QimmU2xgv%02> zn2AkI3h+d{e_A_lP^uuouLq(`USvy)^{EzDz&e&h%DvoF>?S6gNa8>gDMIMcwwT?7 zJ*Z;3V1wD9n@e1biCM@MIMz(v77#EJr%ZnPR5be-hS_l1tshu(9_Y3#xq3^9xY*%*qhIgdZynh5IA)s{VO7?L|2INlA|y`Ox#Ge2_$`8d{PrI>d2 z(fkHyT0&gNuS03^SyxPqi{D`;J2~jcVYhKBzT73LU52*&ovy>oZNh)s$4>KQ{LabU z8T5O?>0_$-Zq?3!$MDeYRKo1^RE%r4em6 z0CLs4B8XJ)_ilY%;`k@H=!;Ye)SSFbQ^y>GOBHY}nDNuLV>SRBTGZYd#ML^KJhCvi z-9CzH}U5n3s!Kbuq!9p9_&% zIq8@*qpP^<#QlW3GTA4S>maxHXbXiGtQV^kF0C8?sG1{BnUlT7__?JWb^MpD94pv! z?yvc!IGcFP5Q*lsojbYYFe?7r3U9w?T)3RW2?!_>WKT2`?>a(* zF4JqyKGQi}IaWwj?`a8$=$rc4to{5|rdV{l5fwBUb&JXntqXqcdCs#xz3hD>Z<6#s zvPIh2Xmswk&DQj!OcON!kD$1>EBsk9L59eSK@0mK!h?DHHvN+3dydmMm%8&&^@3xE zh>*93d52P_vTO(G<)y3vS-rN}~ty2@+o@Eea0slZRP`3;b^f@uc(^R@9dr52J z+Aa0Rmk`9Y6j$|n{{cJUo+g2qIre)yNqs2I zwFEDKzv*nfFcy2}WNk}J!e86r?`Q>W)c}Dqi_DvM~w+!DIL#WG)O7P@NW2U%^Ap|-~(1HE+ zNC)!7Ddyeh^UCj=-$bVaTXfnsK6eeOZH=e!n!JL!B3+8*4TUmTbw;V}QxRgx4U;9I zKPjHj#sW4h0&xaQcOcTJXS-kH*Z2*9SnwDX&Q16*0hHC9_)skLz26z+Zv4S21wV*_ z1KKi*jb1>^QgdjD<_Q{XZwkh5*4sD@M0sne7rvy`^Q{^E7P)GZ<#B|ufktRczYDpKLB$`kaCbmr9V};_= z4<{~~T5ljSNQS%~H|~dtv)@J;VoMF?Ef89-P zGy)Pws=JxT&c6ky;ubM-nJ9_MLwvF z$je%oRfzOFmwWL+#F>}t@xgTd(-}VNE=tsy>GlU@FOF4kGKa$$|a5D7yqA zPiPbzYQ#Dh;bcMlO5NLOZ2wFd$UkP2@k@G5zV`r!ql~O?S1572`V87c)bk%#wBH_4(PS&YB(JgZs zIU{b5x?lt?Jk96bJQL+GrQ`bO(X8%u=%q6y}POf%oxWR&GSJqV^Ybu&bt#2Iq=-q%p=Z?08 zi(Z+r--F^Km9oZ*&D@ra)y&rOU#*)wu%!^{@}leH^=hYQwK;Zd3j#uR^R@l#XTRE} zeOK0p`~4JV0;`6z{`eKlhC1qvX3&`LzY5HORO5ElBirZWl`R%M-yc%r!+ya*rSZ`O zVK6hmaa7aj$xjAi)R@!Wa-LIfbVhH0bEh45s<$_K$3$`PiV};udgRFQyosm!sx@y2 z^knbe3khd8)Xn9|PHC9ZafiybbWaQ+&Z0H}4+VB3cPCH2$&s1>y z*lW&b2P@17)kOkCR47w*@7k76$8i|Q0>IQ`5z`ydy}K22$g(DjPL)w%kI1mP^J`Ek z`#xvD@ky)P0(e=1aPQdtW|V00*Pu-@7ud=wbytS0?t_6V74CMV$6~w8%Tc5Ewx7+) zoCnr?b05Q+aFCWNDS2WXD6W^3?%P0R5Lb3j#H|hFKM}fCg!nP!mh(6^#_v!%Phl&8 zx{G(|+_iipGn+k9v@b%cdOzcr+?rmn%W~mpXG?c~K%Hq8yZLq| z0;g)>k9Fvy9swlU<-0clDALM37RkDtEc2LGcZ-vI3#;}HSJowVJpgyz}__&d1t>a z^893lw({i=3AeamF_O90-Mb)tKab!7Z5%`)HCdQD_-=je8+y2_qw-JsXkb+qmkyC) z`Ziz7iv6@@^YE-#upvu;;NLkHd;*BPj)&Z~ECKaL1NWENX53w)b}S}h}u>i<>P+3RC~NV z5UNZR5ML}C{+4`W_sUhfbi;;Iq=9>anJm0iKxK$zoApIcIzq;2Z2<3r+qaif8-8HC z*DB72x8&0E(9Bm;bl0H_a+z?uxA>PYvo`oFSzGSQv6jVc*@m4-{#iW**{r22&d2e^& z)4DSsu)r2|`>gql_^8Ej{s^a)u$!5PyYIPK`u--fZ9fx|z$)eG=e#ar`-591oBFD*uxXL!=3sLP`~6i)Y3_a?DIgXoXta_unAztrkvz8?@bkpZl?2v+5hnTi1%x&Lz|Hy}3qVKylxC(%KhX_7W zv6L;+$W}BEl0zT!X2fjaNuPG|bv;836tuB?`V?s^=IDFiwY6}X<8x#7Za%Zl*@O+- z?zJz&9~;o{1V8=P@>@d&tXes5^vHv@qvbn(1hM07cgrub+?Ve&QP71%`Q8+I7n;ds z>ohxbMSsa$ZY`r~Kba$A9B>ictG!O0VQNyDQMOjX1vQ2_4vIJc6tO^H_g!^;($ATV z_c9j1S^tlxuMTVSedFC2-H3Dxf`K#xq$VJOq@ohi-67or36)fkPD$zR7$Bp^U@*F6 zqq`9}`(D3u&UNko?RxgU_kBN~`xBI}^rl3(lu5rNno#w5*S(`dJA#tiI%fosiV(8vSnS<`mDMS!y_Qa&e#l&458Ugp!>5>O;pI^W&m+wN{-GU|4!`ZDM6Etqu+Xs zr*C4YN?nhF#b$BWKso8U(1w_PFm?LQX8(E+)06|VfnPNUiI*=9yhj2~KxNTvDIoQ< zjcK<$MdFmu2LcVN(|@IwC*zw65k4+!kNOe<{qk}<7|+HJ>#n#X6~6qY)Dm+&3w}TQ zC*-_8k@=1-%FU?R+)AfQJ>VA5RdASCxoI2|gS2`^Y}g_C0sN_(*dXW)F&X|NQ`PtP znIQfQUX2b@0`AetVpZa~nib_A9uTgw*#KwK?#ExyzjTNCcVZ7Tc6|Rehl^x|pyG>=k^Bz;p$wdMg0l70d(WKH7V4 ziD7e_1F1ZwKdjLK-mQKsbz;Bp^lyQr6e?fi{}lt9Lcq%a!T_I%ZPBP+Ml!w%g_uaA zv54QDCwf#u#nAxV@`X4@(%5wc*cSQX1r8&s!aO@>unGB|4GAbD>{VuXDd1SXUD_NgG!&=1xL+OD1EvwC?<-B|DVS1a9XjNqQaB)%WF0%1fa?~wD zEV6FK1|RBB>)%@F4}rW!L8~A+S}I>VM48RsorZCUr!Cu9{vurUj4qc|n=W}H)Ooit zbjKw{hlp^0z|ch}ebuleDI?~CnqCx^IOUL*lYV=9HV8;riR|e?hezHCC3XGsk-HgD z@6Htskngsn=^pqO9<}Dnug4#D4@#3Y@)*{^e-#e4(w*<=O6c`0~+8r8nP z9?Xc^AX4n|Ubdp&rc|ouKeHxm0-PTb+~*}U9U*q&x7AphQ+cy$YmG3H!G?5n&P+TE zw=>UrinJjVGe)3R+ZI~Afx2MF<>9CEtkd%$5iyKDsIBREU-NY7;}=lR7&Q*MC7Mq- zvsUEakO#ZNDesjFUL6h_Ke(y~SY4Iv+# z7SuSHNX5D9UM->*_EN~x$$&fWbkgcc9nqO=IAM|6l=l^Tlf0~3B?*66Wr!}J5a)a7 zx8}mW=hg&1v}e%|N%0CSel1l!Dw%DT4;uCLDHO?#mZFUny5A9Z%?yxtPAmp>&|_@M zhwA0mMCG=tC6h|k^kPVg1J_(zsk$AUJl zl#wBe!wO;tM}|~LSgJekvD~@(*=VNdIfOWuC2wb==X>As*UMwPHo=-ejvpsQPEP(5 z264enPAuQc&p+Y&rREXtTW0Xki-zZ?AV8ekkjR5iZ8bO zd^_@^NY~Kq;W9(oXFsehuQ*>kU{LH`*5D(v6+J*kkIvz@ENK_^Z>*eo5ugm@q0NaF zXswDD%$|b-4u2E_gcHki#Tqty-<(*ssvGG4;kG-8sE`{0mTF&Je}0_vQx$1WSvN57 zVr?{4TpH?5CB$&O9e}|Tdk(4R?NIBJ8L&$8IkaaNI@^rVSg3}~N)9Inrf361yohdM z2&xbnD~aB8I&t8}EXYZKPHRR)EDiORHH9I^T1dN);IRfWQzE#-{ef64A>j>r}4JL!AWN=2WtyqZzwo)rpm#dhubM-w4A3iK#qm_bO(=$>w$ zjz1e9O_;_P()fq}sCk8{;H$HT{Lw`>v~4_B!U7fr^?AEbbwstD_NR=z*NR@!!Pve_ z9boj1{a2ss{yAkJ)FblACXTzZUtIYJp%(I5>u#`RYQbJVxKBrmSm*N4WKWT^z})(r zNf7B&$-z%u=jRxLHi&|jr>{k?4d!Oi5#{wG5dj0z?0y?Vcx?g&zE)drS&Cw^lr<6x z3dR>5UBMO}S3|(=B8OWK7D0_(sqtt$nRJm7dg|GOu>`PuDvRVv@kfg-suT0#<7B&hPCVpkFv+%<-RjRtSB%Lz4JI>M(5)sxN?D94 zZ_7?#z7DWf069bW@pJDL?WTqCFJ9CcpGZ)9^T#(VqNiluU@(>Z<)`;Pyn5=ra6b*& zBWRpj4`R)8IxF647;Ud zb~WA`YzlYRps120UW54j-o((+1WSF)A{UP`gLXU5ON*Oyc7HZsT4MLx>(_l)Dp^nBM7Tmn!Z*}n+~ z_oYobbX<$dUyF815Z;z**w1uCC^sHBIm}(x<8%agS5JdalY=kqRy1UY0M%?DCIcx` z;1O8HU?OT~T6WTR1k<-jQuU|cni5tMHMmHanCXIQkh1=!ZKYG2L&Q=Sb02r(e^X^X z4*aP>2LRBrGzsTg&h*(;UUf6?P!+-ePXA)38V{tr{5jVo){1UO;w(_!>_EJYl%i^z zcGnY`kNnhsQ%!y>M7Q$9R_dewIXgoXStfmcrp=nWKhkf4*})_ zK8+4ofo>u$o}rv?$Mh2HX?H;Ysz0G!daTUrhr|wPz-S;1vS5IP%qbnYyeNJ;s|J^V z5x{!ArO~prXpBoc>lDuv&9)Itwn9GjhP{2?=P9WnP|%EYpv#QwwVlNICU&Yuvwe+N*Ksqb_H5%|kes|1J67y9qNfuj!R~P140_$C zM5r{zWJfwM0Ykr&GQ!hM;BB01cDz#G4%kY2KjoY)<&HKnavv!%X+1@M?A#x52|_hW zZ0g*}7^~(5L#7B_KF;}dIPNmU&CfLMb^#i%ahsq*Z{gipwy76}K41Z>-@WSt2yeQ;EuMr0!dw2&!&(JZO zid3Y=e4#pvBC3QJPPyj?NK2S#`y#uDg)+RJgRi5}+bo0wjfwo&(G2~0R(fzvnC5pDn}LrIbGYgzhT`|z~06%b7vWk0ZF z^~vTxY;C+KrG-c%P!NL`8ou;q6CJ7B3}-P~Lg&~w)uXRPM`bKB%T#SQMHOK)M9T__ zY+9&-7qmYB^42gP(efwIT0(R>Lu)bMoIvzPTKy=TwC#qCX}=KY=@_N>16_IEK`QyJ zwyMZR;DXTh)%MghZT|vQ_ZMMm=*e2gJ13kIQ7l7Cgl2L?ik)&N1xV=mG3UX0&KPZR z6$#guOp*}0BH}N_dftnM{dnIt!(d|KS$V17wp=LWzsHyz`8+`X{rZ#U?&i|uz_)zL zckcEMbY&9+FN#^-Y=p9}D4!FQer>2T!{g5(UM91(uYJh!b%eu}f@)l;^aDvw?McDN z`)T(8>i2iqCF{^?VCS3QPi?uH&Lf`T!>999M72~MQH#p+_6R4 z9dpg4RP19x<+RJF#x-JU$6dXz7uUUm^y+D=i+`}U_l^-y9~?!X%A{fo03XEdZpgFT zIqaJ_1uqKGZ4UR;iDmV<<&K+acZk`-?oaVH3A;%y`il9H$L;thw9tAeH@U^0o|y-6 z2~98_@iw-_ze^* zLZ}G9V$D+qDUJag{CF7q;foV-7ni~o?-c7{vPbLW0J%_KTRE*+#H+?7;`<$?onBfyvH`(_48L1T6k0J>EPTm#{|R@K)i^bh)qq5FKtNq-%l5IIZ}+ z?rMVkH;H*h6`c38H5SeDy}A&Vb{T?vHT`{Nv^tE+%dt=Bqh+)Vm-d@fOG%Mu71j5& zp%S7I*Sn0NadKt94=**B#187NY2{+3Bn{`>(Bq;x0UKHGr;N|}ge$W3YAiQzvajs2 zGraaASL>^D5wbbBmOy00BL1mp5zNdMhIm`NQwvD^p!#v`#8c?rFJzXLiViL+sNB$( z;NkZ|M|aE!LW*R$T7v;FiTo?30uA}VOI(%B@T6_v8%AcTO=iOeY{@yyG@8;z*?SuD znK0gVt8F%<_1LE*&*e=I)T` zJ>1h@ZBXVH1EfC=vFpnqt>rJTpW;~%RzA=44w$XGsmKl~slTR7p*5IZNcX5M7&Kt( zdm2u`b>hQogkok)7aA;?nZlR*$4Sh#7vul;IvPogUb_;EY8;K7suTwVm7p3L0^=KT z2yJ@I1?s0Tmd7%$q04$kYu1tE)ix8`WLqH|GsAr=h4R3-6~9Tlcd&BskcH7{9?te| zzYCArz;A@?eXU#V`E1n~YGWUzQOrO=VQc>+0~axWufW5`vt+G}@UH`@PW|NCxfsy0 zt(t9-us)4@*)zx8 zwl7v9$dLs6xe8;jvy5H<5F2EH0wrV5oGEE7ZrEbuMfrTpTz z&f^daY`NW#fInLKjsjGxKqxo!vvBjLctm>@p zZ}%bhN1nEqS%hS1u>0T{Qp)%{g1R;P$lKTMDAtiyGPJ~sb7n=g%H~lv>4iBOQ-P`?v z)gn_xS$>0uSD(mZo`=)-0Ub;$Oqk1-MDnuSwoq58rEB4%Rx9@dk@h3G^J}$Njv@nA znckcfVQgBW*jLNUzc(W*1Xsv)pbk7_(APF^mtC= z!(;PSGioi_@jUJszCb@sC?Mn5kXOupoG=+1Z92PW=fvXnABzZhBy6YFa5?@C_@~Y; z8R*8z*88%dn2M6qDgVsJv|IBvEfM}BZ=AOeJw5*LNuPiQ=YfQlm8yl~$+uL1J~Iae z$0UD5rVzv(pQnQeZr&XzNXgoN@aw}2#l^8)QN4Qr=qjVtP%G^nb{yt(08hP~4N)Bb z$E8vXLGSJ)uV^kEB524mStKLCRIV~ld@1?lC@rSLMRX|`Pw}fV9J;3fYUp#Y+~roI z^8!B&nN2IPS!-e;MZWFX3V$O?^7Iwso1@7~xpcKqp&VXTD^KaZCx@@2JlPbW+x}8h zhsIZUi;D~L`x#pR-Ya>4o1yLCsSjRU$4eRy=2tJfnIk2(9W{M#5~?H6Uq5Hp|IySF z(%)yb7!L9-dmUK+*RikNY6{EuMnfiJF)ywk_q6t;TRMUc5D(+U%$z1u5jQJs zo6?>7R0>~hc9PPancdb4acdbIsgBTRlqUsb&5}ov5X0hnZ9Gjw`jeKK$}_#r-L?@o zUSU1pPi2oiP_Z-L6-zT-fbzqC#x%OvWLvD86X86n>cHNnpaWu(9VBeXTGN%-DIf@# z{^&;tWkbjvnL#=s`9Iq@J)ou=!h84@xj5GLtrhSLpvIEVluda+r^ze(Y&Oev%x>## z-axVv`GxqDAzOEsrI$gh4@Ofjo@((zhy+l7GUG1CdafM9rJWCAY?+x(+p-kiOOgK2 zwO{P^(rOxmA`#fKwwafc7NwZ;G3+_N71%EGm3Kd@^TtsxeMjwmIs~`VpQ)t{&f1j! zDcPoNT`@?_h`>a@mgqDuv31;e(Vc z!2~-2eJ>7guWD}5;q-f~j`22pndc|#Or9>)w2U;Nk=TJ0AzDEWNgrE(95%pWR$iam z7^8b`6M5D|tTGdC<)s){yN?&9?(jrCMklfA+5Mt#R*(VZZ*M)x%UM&Z!%_3L^$=$9 zK{GYQIXo(6sgZQ$ZDz6I38mypy*+6K(6^swdENw_7ZFNl@A0NdE@LYCJX~A%r!a@`E)RNy@YT*#~H5+E1x(E5xlZA%X`UC z?!A;HTai6r4oLD`@#YMcN`UTo3ukQ+P_lBLH~Ior?|=E1$%!$5W|=0uNB!d!CWUgh zQ7h+v*BH^`&_@z-wk9jI6EmQD+Djc@w!O1vVX+{pN}&`ymMVZy*nqcXpa1so{a4DX z`Q?)f;3V2rk_R8pd@5g`?2Ty9R64ywPVhMtzVC7_H$t+QP?BuOr+8iV82qPACVi~F zS~OBmdNiatE#0BzRdv#5!8?r0&0bt_&g_5MeeM5bqW~W_?WOZJ*5!v4Y4jv|w#jn3 z&$NNmoDjt_x+WYkP;=Hj=}1W)w;!%l5~~yMRRMf0(PM=H!W><|)@hv`5iA;+ykuXd zVYK~@XII~yG$bc;kuWlVAt%18sVJdoo9*EP&ZxBY{z8|t+2M1i;VoNfhDXQ^038HC znG&9l>UF5itmQo>)pgRO6U|W;BBt;vF&9`}w%dh1g4#1y0n5*iZdB=v=whHHiTx!6(y&7eVG8AuP55y-UwL8-pqvIus7k}959067RPTG_?WvNyg z8v+l>N)CvKK;Yvv4z7Xj!mbMMW-;Xj*KrjLzmaqKAWTkw^h#eo{IqLZ_9@H`4LGKZ zmnHMvjeR*G25Z7bLXxU+5+0Ny65ZEA6HPB*5O72kym1|5pAYoI zAtE@+pY0%DkMQoXT|nE=L#k?=qTn@!y={|oS)DA4utvkj_TiZsQ7<+Kk*V(7`LCB` zc80K#bFhgi0%7-=eh@!VAt!}sBcL!GXhdlo!w@iXU`?)CFP(jpm}3Si(!eu-#%dOc z^FF$aF-l5EZ`p!<;mnZ_J|=>cOUKfuF-<^IbbftbWX7C+JN|+nQf!|A zSJO_Rtv*QWcq_X5VPx*g4KQ355I}m8{!$Z=CiSao4E@MEI4_Hh!$Q8?y5&G<+fe|W z90zPr_`%ROc^J*YhWMsN*CJe0hl=ti>VU^R1`NKf8AsPfv^n674nJEqGz*7JPx~fr zKPc_oq$(DfV@$x3=Cl?$Zep z1Hj3WXNQlL(uLRGi&mI@5L4NwtAe}LNYg+?VQVb$K*BWtOKB0$@W4Rp%WD%5XA3igBh2NUmv*Yqn~mQXvss8-&-XPN;x zi+Z+IuK5h`nbl7KTGC?ktFmD@87a$MoFuy7j9lp>NuHOC;HUE{Urh}EnX`f41#>19@P=1_`ldagE0r@M(U=gJ-s^hba0^|mxrq5m+ zHjIfFmY(b;pkMPhl}4Yxz{$x${G=hUS2tk2sgK>?arf)mP4bwJT@{Q~$mVCAPVWZ; zU?@==`~_ud8|M%BbbKHt!?HG<8WQT1l=YYP*<0sNY4or>RXhU&krvdwZhUPv)K1x_j29pBo0~+0wxL>_=g!vFS{wW=+S?ahGe~(U;0_k>-5ep>lAD2^Kzw1fLhT6yR!O3 zeK{B5kLg!(t50n{$nA$UMhof&L{h(Skgz+EpKI{U>E$z}6^d?t*XS@!c&@XwRs2y4 z+bR*8mr9#7FR{I8oc3AW$IistsMB9=_+@q$*)pP%>vzD~%PIdw91SOpBc?KIuddvQ zyXrq1k1nEHOh_CVQE9js>wOPDE>w+U1?wt6ru<8JI@sYe!E$#mpx-rb%6E)s=YVOEi^d9d zr#^^o>4f5+$b^G}q@zhH9<4YBydjxQ-_O|+vv+g92>CxtlmRyEts+Lj=z zw9IAeBij^3!@bR)#GgvDbXWwsQ0}Q(<9Qg3rio7xm765V9{+(^GMdVfU8zNm3^Vu9 zP$t|r2z)mo?SIubS-bh)SyumdmXS-xds@vNTXhc|^TC%VnuPZN_u|Jhkm(uCVk{!@ z4Fh-#1}x0iX{D8gOg3Ff_d?+-0-_mKgc5<*nuBkdHz1CGKkppK(#h1!uRB6N?sWEa z?URjHyPjuvIm=YJ zGwJus#d}y9p!%VLpkTmkopO3n?sIuj>@$;&2P3qwpH;xR>U;2wpqz^ke*fU-aI;5c z?|FB|7$SiEaPdJ=(*>3sHuD-GJ_QB?j_DSvTd$>>WiqZ;cbkSp8=`#vBd2oj;tu(# z+k|8*)(v?Hr|RIFyIGK|(E|4vrWn)ADx7>KiQo7^`@T!k^K~2&K%Wf=20>5vhlDb~8r>`ZNNW0|A7L`bHY_KF{@XZ$gY{srV z<~OHG%WM6Hp2Tk4B3mf8h2_Q9oK^M_c_T(62bNshCF66^w^4p;@O^%OUWwZx>w zdf`(BrnHV?SQL;aTaTtv^rF2zJPmk+s_a_99~(MwH+tS)0a{jo*HSxA9G7H4?XPXo z_r>*;6*D_G*2e5yp&6%c6;flvV;4->75nPZdGbL_V#n5$s*So_uq(4LOG?9b>r`|iPO}ua( zsF1^u?lLzIk3R%7RfBH5j+ph9=Sz~xf`KoxzH+Ly;n`Ubv}l<9WXJw_PT!?zHy^-m zi_yOs_KnrTO1WJeEz|NCa^oVSS-8gB*YpoFd@6Waa@SiUTor@xRI6=df=_oh4y9(Y z7kMWg%^s(OP9sNgn7O#TVaf0M|5rBwHLBi3uJc0ke=JZU{=H{l&OgV~E{+o$wvWQ> z3rX;3)5@y&bKm3AB?+7zTkjzNOq@jXQWD~^Hb(_hpE5+sbDcxtz11N_lMok14AFbX#&FTe}CDr+Mq3>%x}#`(B@x z`AUuSZG58H`8f5ca* zS~)W6jZXaC%?uXrCwlvl7m|O>x&or6^%|yGTfW9OgKYbB;NjEC5n@I^7{jgK?$HF3 zW5+RL+hT4Oz4W~k#KbUpY^ZP7t&kn^pHYHccN0l)-`URWO&~XzupQUqd(g8DHluq+ zV%A(1ug#nnYnb|HcS@hvJ&YTDDNy{Y6m7hm5H9MXF8YIMwp?e(NorBHn-RoeAWFb$ z!2$z=FTvUsB3W3>C>&O@fX=?xB>a1_rhGo8#L+WSR|u@~`<9cRrmuY-I;>9d`-QO@ z$Z)~LWy#=JAH1pJ(Yw%5j^=B9+|X~o;ncc`(~W=mX6<68MG%%Y?aW*~?GEWyCV|-w zgZ&!bCzi?lO|!6fK450=MP#0q+3g~LEx4io)po(-U#(8a9|QeOyy8zZMhYndv=<>6 zybGB^H2qS25eR(>y?gWk>Jj-Td9susNqIIX<2HYWOoZ)+m)U=Qm_;s~89qm5~#|7?Jy9K5hOVvhV&0{#(u7_^-{^{nzHFA$^|Q zcb7KP$dCfv$6ZWb*31)hx`th!+1Lh?91`j`L3Y6)22E>%DjfTnBmh7`ZQ-4C6QgXi zMo5{u5*5J!UL+977<)8U2_yG3xMnpPavJ0zN(p&P%G!@d22@k7c#1+$)=88(?bIlxs-#RL|RK`T%7CR+l+6Qe?`Rs=RR(ErI>9d`|@ zj{6Pe`0U>$mQe6PRw7k5+olbxaKT2XaF6YLG-b4}iP#yROM!>0s~M`Fun+UR6u%hp zGygQqmr2lj+ef{&|K@6S>CiD_@NoqWP)Yp{1;qJ?Okx{dmTsGYpW5|*mZFel5Wl;S zK(IT2gxnDg6wn!pX!jU+3oTcFvi#z@CY)~?kW;6{clz54sv!ZgLl(V5NsRNd0uwLq-wu-1Q3AByX?s<|K@8VKzBoFLJJMO9u;}WqFUWkg6Vt(i^J%TG#8-EwH2Ly8|S_nxu{t za{f+P=`BkK$@jl}QB?=rIhV?>QSUJXU&>!HX+@mbp`T`wk+8yvP6Co=TlX{5efLAE zt7&AQMWc%g{%O)xMRp)Re$u`doi>`6k`xPzP!A0jhnw<;b8X^6uPj`bkeEeTD*O}= zOV)2ve0rdZlJ)H2ODoAtD{MZN{Wl^>_?D58m-+a*NAho%=G-j!?SGmGe;g@Y>}1}3 zG|(D4^e#O=X0o*IVtCL0IoR<`3tMNDfGuuF_*To{AIQb* zuAwAG6wyHZWq=G6{}F&>Icc)V*1itn5g4JFTSLZ48drK|-wAw+1<A^tIdrpGGT3i=V5BQ0?yPg7S&S9VN_0WYKTWc2BO`-io1+b+WrWsUnm;W2Ip~cZ zyg87Y4vWw~A9mT31mHaW>z$z!jC4O%4)>%NuPfB#ka5i)TRnLHo;-SWV><6}-2cQ2 zmRJRo5=tP*U4FQe>ubRxB22}n5=@&vuX|3lt)OjM=z7z}+et9tuSIOueNC)`sT{4& zONEfSn=Y(nHpu1v$8x`O%eYec5Bcl*??I&q3p_3dG7sGwZWm(~l>>{`0AI}VauP*X zidA<5hR!pJ!;Hu71F58CU_>Xe)iW;hO*Go7yxgKJP&ZBcpsV~9;OwujXAF?Nb$uuD zC;ruys4OEQpWH&JR-mZGD+yXssFc$?JsoRS2Z#gUQCMIwNvm)UjdQqBPOm$R?0FD- zOPcAMT@;WX5>cMvy80Z-5vZAxlS{VymI+Z0c=Vz`B8FbqtjI|U`y^5OZpE(e1dw6Zgchy$=w@)$O0T=5oe1Ey+*IQT z5+%fo^mh(|-1o70!2tMnY5QdTy;=Vuz5v#JM{R4tN0xTaA)>I^JB6rE-~0UaMYcut zqvsZWrX63NgZ9d=Ay1QGyi5ec1mF;WG7|T~w{y#?8U7EEf-cnnX8eyua{w5y_V4FT zJAirKZMKW)KgmOx?CIjq1Ybn*@&;spNq9tmKGN{CF)^_j*=_W6?p!-VJZqdEZ$9@t zr!TqWxI5&?9Ks9_Wfn zM?(a!T-r)Oe?pilU5@8*u74VG?Z>B&|ES$dB7QcfRZ6bmnRC+kRP2!8nBnMIe57%V z=h`FF!e=r6c3|}=$=LxtZvlM#Tt|3}OJh8S;GnD^V6P%IHUu5xYPP7_E1isSGIAJr z|JyH))^B{9Wy8wH#IIl1<^08czY&uCSvcWE?YKVu<`|%0*g1@2jj=@PAXDjJtT8A? zO(N@OnY#;X{mv6tZ)5RH$$H==N?ii}CEV70+CkkvcwV&IbVU6^ulU7AkNGb;!S0R(ej@Fe>(HG5mhJRY%QkdWcd{Jepbln!R+ zDfTf@!2gVZlP=aWhEGb!Y;IEIBXbVkj_7A`PN55gFNA(%H)E(fA^RD4?RQ9~h0kX} zljhJ+(mDWzsX497^j861s5PZ!)L9mZ%Uc~Z08?g4I{m$zhzroO%-lAb{7heA2w};; zI?&U>kr5XV-NhH-+38iIPL_0G#2_HH~_1@lM6wP$3uXBvfp zs}n}0vqcWYY5orrSg~Mha53- zIv4P%I@PvZGcPBfjPXDIaipw6nBWf7zrl3n7vCDbClY7FNwa_x2z~_Y?)HJ5W>0qp%kaIGD|o6qXMdA1 zF$-uVr72}(MqFyMmak}G-tUXuD38Qq;OGF&qkEFJLuhpl?U^RqWr7@{nE}x7i=!F) zr&O*SRsvh2Q{%sd>0_#jv@8m~qlTkErmDQ|^YeD+VZ_n#HUpAuYtnK+e3>O8mAFYQ zYl=2%Wcm_GD*pF3w!YsPJDG_(Yf(7RfA)`vlf%cmUoWG;`MW4G7Du&q^fka_~fTbzRRm@iZtaS^51RPA7B4?6Fnaj)h4{Cu8vbIrFU&Rgr|eVBA&;| zy#1GEoBTGJwDL8zM>#)Cp%$}SaVBN27wyODE~b`%Cv&)7(oFLpngg0!9KvcU8nhq7 zE6@7wmZy5ju_+9XIY(P``FpR{_@;Ud)A6!8b~Z?7Tjm$u87U+60f&kzgL1J}%qga`-J~QB#e5cb&2Bfm`FY{K_yo~0a+#yQ zHM2M6zcZbS%!bT#>$MTvpuZrkqm{lEK4F*Sc#rWk+de${sKaA>^yhK4fX-dX?JSO~ z!i+=xc_|zuZ0F;u2Jqyiy>q8o{7~2|GPyaMrz6J4O^W`DNQL@|!iJEj_r^`OG}6t} zwzx13ph%r8z>F5l)7M}G+3OD2Q1gRnM!wtJ-zMzbVeqlAofO0Am0Mb`uEKL;%5q#d) z^e%_&`YZrI=5xxz>Cg0B_GtuAlyfLgZkVJt(XT!t?3);Y-e*_mbUvkFKQ!~|lYoJDXAysywGtOMg?niWbzU33caoY_=jB=2k2{1)W1@e{Eq>;LB8l|pH&Ned!5 zNF+a&SU-fd&7W>p#%VL}lELxc;{LVqnfv7D|Ls%J4cB}AHz79JfoCW@8D8Fcsc+nG z3o3HG-)4i~OP4J<)!d%^5}(@;{g81k;nxIgtzGZmQ5^Dy;^8w8To9d7?I4R6tpGS< z`n0R6InaYixX6?QHKic7U_52q3zf(AW!%1YQBosG`6JwiR}SP2?T^TyTLh5oCZgk{ zi0>=BYNbrmf55P#V0b5~!NC1Oaz%>08_vJ11Tmw8h~~A7P*m|f8h>q=bWZS>%SV7E3dQinh@PY1hSrVkL1M8#+w*& z?hOvM$vO-eJ*m=Px>`+QpBKXgVdlljJqeZ~0&5yVd9NQ;=1%x1CP;uG!8Ox=O*9RX zm9;)v<`JmF_gg2Ft(@2LKLDFlc`X$B6!VfVlqIJRdC$^mQ;&u4GM1*3Vvg4tk0*%V zCr~!nhzVYa%G90ei*39lV>m`&WmI~ml227yGOX3y!RO>pxdGHXth(@WVcCm}Shu>% z7 z$F`l^qoDKL4C#U9dU%T=pu)*HMq7mNz#Zn^{wL7FUmT!S8#{_wka3`HA45J>{PX>A zXTf{n_@NuA_eDefv;RhThq<;(va1H?g{#dM;qHQ(uZn`t1S*zDY)Y3iO!u1R<4x9O zC9q^mwd+fl?J+nG8Tk_{qkHYhD_biFs|H0*V4S`3do{ka)9KG|v-reqbHh$4|4tvT zn-T4U8$lvi1pN4QK)$QJ_p`{-wK?lR#rlbM^rpwZ(o0{yL;} zJ{b}d0aI-!)lOS1@j=ytTd29W6e>Pthrr!w!-Bt%L==^Vfob?hCLyE5` zHPk>G7}qBTX{YTzoJv$q90jEMpLPQ5Mk2BgkpQ0Hp`^65HSNE)=Qxx2+FG+7!ii@> zFX#ZYrW<-WWW~0@t7F{%oCKI#k*nC((Ov`u)&Kw?UNnZkWYOl`WtAUB5meJKu%dZQ zHF}xs1Fy|ysjMEC89OmY0ez>>sqi3N?u8~YlME5wEsPfyX4lq=^zfHefK~TNVi$aB z@Fz$7kyQ9Db6BE!g`&R}#gwPu{pbh_irTE_FRTqtddy-P5FuL5R}p?wCMUt6+B_#( zM;u@W=BDax`L3DiVKz2ni@tOf!gnpDy8ixSTc=N7R*3UZhntEk=R*$=r8=3DU2%Jx!o5cJ9eFxSc5x||Fzk(O5ASUsnvS2MDhDvJH11* z;_!q{o5xX@XiB9>lvDcI4pwF; zu+J-w1PQHP<�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 Aj{pDw literal 147375 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