'Eigene Cookies des Plugins', 'purpose' => 'Keine. Die Hörstatistik erzeugt keine Cookies, PHP-Sitzungen oder localStorage-Einträge.', 'duration' => '—', 'condition' => 'In der aktuellen Version' ), array( 'name' => 'wp-postpass_[hash]', 'purpose' => 'WordPress: Zugriff auf einen passwortgeschützten Beitrag und dessen Aufnahme.', 'duration' => 'Standardmäßig 10 Tage; die WordPress-Konfiguration kann die Gültigkeit ändern.', 'condition' => 'Erst nach Eingabe des Beitragspassworts' ), array( 'name' => 'wordpress_logged_in_[hash], wordpress_[hash], wordpress_sec_[hash]', 'purpose' => 'WordPress: Authentifizierung angemeldeter Benutzer und Zugriffskontrolle.', 'duration' => 'Sitzung oder WordPress-Gültigkeitsdauer; „Angemeldet bleiben“ standardmäßig 14 Tage.', 'condition' => 'Nur nach Anmeldung; WordPress-Cookies, keine zusätzlichen Cookies des Plugins' ), array( 'name' => 'Cookies der Einwilligungsverwaltung', 'purpose' => 'Speicherung der Statistikentscheidung, falls die gewählte CMP Cookies verwendet. Tatsächliche Namen und Anbieter ergänzen.', 'duration' => '[Anhand der CMP-Konfiguration ergänzen]', 'condition' => 'Abhängig vom Einwilligungswerkzeug; das Plugin speichert die Entscheidung nicht selbst' ), array( 'name' => 'CacheStorage: accessibility-audio-tts-*, aat-audio-files-v1', 'purpose' => 'Verbliebene Plugin-Caches älterer Versionen werden entfernt. Die automatische Service-Worker-Registrierung ist deaktiviert; Aufnahmen benötigen eine Online-Autorisierung.', 'duration' => 'Beim Laden des Players entfernt, soweit der Browser es erlaubt; Website-Daten können auch manuell gelöscht werden.', 'condition' => 'Browserspeicher, kein Cookie; nur Überreste früherer Versionen' ), ); } if ( 'es' === $language ) { return array( array( 'name' => 'Cookies propias del plugin', 'purpose' => 'Ninguna. Las estadísticas de escucha no crean cookies, sesiones PHP ni entradas en localStorage.', 'duration' => '—', 'condition' => 'En la versión actual' ), array( 'name' => 'wp-postpass_[hash]', 'purpose' => 'WordPress: acceso a una entrada protegida por contraseña y a su grabación.', 'duration' => '10 días por defecto; la configuración de WordPress puede cambiar la caducidad.', 'condition' => 'Solo después de introducir la contraseña de la entrada' ), array( 'name' => 'wordpress_logged_in_[hash], wordpress_[hash], wordpress_sec_[hash]', 'purpose' => 'WordPress: autenticación de usuarios conectados y control de acceso.', 'duration' => 'Sesión o caducidad de WordPress; «Recuérdame» dura 14 días por defecto.', 'condition' => 'Solo tras iniciar sesión; cookies de WordPress, no cookies adicionales del plugin' ), array( 'name' => 'Cookies del gestor de consentimiento', 'purpose' => 'Recordar la decisión sobre estadísticas si la CMP elegida utiliza cookies. Completar los nombres reales y el proveedor.', 'duration' => '[Completar según la configuración de la CMP]', 'condition' => 'Depende de la herramienta de consentimiento; el plugin no guarda la decisión por sí mismo' ), array( 'name' => 'CacheStorage: accessibility-audio-tts-*, aat-audio-files-v1', 'purpose' => 'Se eliminan las cachés antiguas del plugin. El registro automático del Service Worker está desactivado; las grabaciones requieren autorización en línea.', 'duration' => 'Se eliminan al cargar el reproductor cuando el navegador lo permite; también se pueden borrar manualmente los datos del sitio.', 'condition' => 'Almacenamiento del navegador, no una cookie; solo restos de versiones anteriores' ), ); } $pl = 'pl' === $language; return array( array( 'name' => $pl ? 'Własne cookies wtyczki' : 'Plugin-owned cookies', 'purpose' => $pl ? 'Brak. Statystyki nie tworzą cookies, sesji PHP ani localStorage.' : 'None. Listening statistics do not create cookies, PHP sessions or localStorage.', 'duration' => '—', 'condition' => $pl ? 'W aktualnej wersji' : 'Current version' ), array( 'name' => 'wp-postpass_[hash]', 'purpose' => $pl ? 'WordPress: dostęp do wpisu i nagrania po podaniu hasła.' : 'WordPress: access to a password-protected post and its recording.', 'duration' => $pl ? 'Domyślnie 10 dni; termin może zmienić konfiguracja WordPressa.' : '10 days by default; the WordPress configuration may change expiry.', 'condition' => $pl ? 'Dopiero po podaniu hasła wpisu' : 'Only after submitting the post password' ), array( 'name' => 'wordpress_logged_in_[hash], wordpress_[hash], wordpress_sec_[hash]', 'purpose' => $pl ? 'WordPress: uwierzytelnienie zalogowanego użytkownika i kontrola dostępu.' : 'WordPress: logged-in authentication and access control.', 'duration' => $pl ? 'Sesja lub termin WordPressa; „Zapamiętaj mnie” domyślnie 14 dni.' : 'Session or WordPress expiry; Remember Me defaults to 14 days.', 'condition' => $pl ? 'Tylko po zalogowaniu; cookies WordPressa, nie dodatkowe cookies wtyczki' : 'Logged-in users only; WordPress cookies, not additional plugin cookies' ), array( 'name' => $pl ? 'Cookies menedżera zgód' : 'Consent-manager cookies', 'purpose' => $pl ? 'Zapis wyboru dotyczącego statystyk, jeśli wybrany CMP stosuje cookies. Nazwy i dostawcę należy uzupełnić.' : 'Remember the statistics choice if the selected CMP uses cookies. Complete the actual names and provider.', 'duration' => $pl ? '[Uzupełnij według konfiguracji CMP]' : '[Complete from your CMP configuration]', 'condition' => $pl ? 'Zależnie od narzędzia do zarządzania zgodą; wtyczka nie zapisuje wyboru samodzielnie' : 'Depends on the consent tool; the plugin does not persist consent itself' ), array( 'name' => 'CacheStorage: accessibility-audio-tts-*, aat-audio-files-v1', 'purpose' => $pl ? 'Pozostałości cache starszych wersji są usuwane. Aktualna wersja nie uruchamia automatycznie Service Workera; nagrania wymagają autoryzacji online.' : 'Legacy plugin caches are removed. Automatic Service Worker registration is disabled; recordings require online authorization.', 'duration' => $pl ? 'Usuwane podczas załadowania odtwarzacza, jeśli przeglądarka zezwala; można też usunąć dane witryny.' : 'Removed when the player loads where browser permissions allow; site data can also be cleared manually.', 'condition' => $pl ? 'Pamięć przeglądarki, nie cookie; tylko pozostałości poprzednich wersji' : 'Browser storage, not a cookie; previous-version remnants only' ), ); } /** Match the selected collection mode and disclose externally owned GA cookies separately. */ public static function storage_inventory( $language = null ) { $language = self::language( $language ); $rows = self::base_inventory( $language ); if ( 'consented' !== Privacy_Settings::get( 'analytics_mode' ) ) { array_splice( $rows, 3, 1 ); } if ( Privacy_Settings::get( 'ga4_enabled' ) ) { $labels = array( 'pl' => array( 'Google Analytics 4 (zewnętrzna konfiguracja): _ga, _ga_', 'Pomiar odsłuchu przez zainstalowany tag Google. Google może łączyć zdarzenia z własnymi cookies, sesją i danymi strony. Wtyczka nie tworzy tych cookies.', '[Uzupełnij rzeczywisty termin z konfiguracji tagu Google i CMP]', 'Tylko tryb szczegółowy, włączona integracja i zgoda na statystyki; nazwy i zachowanie zależą od zainstalowanego tagu.' ), 'en' => array( 'Google Analytics 4 (external configuration): _ga, _ga_', 'Listening measurement through the installed Google tag. Google may associate events with its cookies, session and page data. The plugin does not create these cookies.', '[Complete the actual expiry from your Google tag and CMP configuration]', 'Detailed mode, integration enabled and statistics consent only; names and behavior depend on the installed tag.' ), 'de' => array( 'Google Analytics 4 (externe Konfiguration): _ga, _ga_', 'Hörmessung über das installierte Google-Tag. Google kann Ereignisse mit eigenen Cookies, Sitzungs- und Seitendaten verknüpfen. Das Plugin erzeugt diese Cookies nicht.', '[Tatsächliche Gültigkeit aus Google-Tag- und CMP-Konfiguration ergänzen]', 'Nur im detaillierten Modus mit aktivierter Integration und Statistik-Einwilligung; Namen und Verhalten hängen vom installierten Tag ab.' ), 'es' => array( 'Google Analytics 4 (configuración externa): _ga, _ga_', 'Medición de escucha mediante la etiqueta Google instalada. Google puede asociar los eventos con sus cookies y datos de sesión y página. El plugin no crea estas cookies.', '[Completar la caducidad real según la etiqueta Google y la CMP]', 'Solo con el modo detallado, la integración activada y consentimiento para estadísticas; los nombres y el comportamiento dependen de la etiqueta instalada.' ), ); $labels = $labels[ $language ]; $rows[] = array( 'name' => $labels[0], 'purpose' => $labels[1], 'duration' => $labels[2], 'condition' => $labels[3] ); } return $rows; } private static function analytics_notice( $language, $days ) { $mode = Privacy_Settings::get( 'analytics_mode' ); $notices = array( 'pl' => array( 'off' => "Statystyki są wyłączone. Wtyczka nie zbiera nowych statystyk odsłuchu ani żądań audio. Istniejące zbiorcze dane mogą pozostać do końca okresu {$days} dni.", 'anonymous' => "Włączony jest anonimowy licznik serwerowy. Nowe pomiary w tym trybie zapisują wyłącznie dzienną liczbę prawidłowych żądań rozpoczynających pobieranie publicznego nagrania danego artykułu, do {$days} dni. Wcześniejsze szczegółowe agregaty mogą pozostać do pierwotnego terminu retencji {$days} dni, a ich techniczny stan aktualizacji i deduplikacji do 24 godzin. Licznik nie używa skryptu śledzącego, cookies, identyfikatorów słuchacza ani skrótów IP i nie przekazuje zdarzeń do Google. Nie obejmuje nagrań prywatnych lub chronionych hasłem. To przybliżona liczba żądań, nie unikalnych osób ani potwierdzonych odsłuchów; automatyczne pobieranie, boty i ponowienia mogą wpływać na wynik. Nie mierzymy czasu ani ukończenia. Ten licznik nie wymaga zgody w mechanizmie wtyczki; administrator ocenia wymagania prawne dla całej witryny i hostingu.", 'consented' => "Włączone są szczegółowe statystyki odsłuchu. Pomiar rozpoczyna się dopiero po zgodzie na statystyki przekazanej przez menedżera zgód strony. Można odmówić lub wycofać zgodę przez [ustawienia zgód] i nadal korzystać z odtwarzacza. W bazie przechowujemy dzienne, zbiorcze liczniki dla artykułu, czas i stopień ukończenia do {$days} dni, bez trwałych identyfikatorów słuchaczy, surowego IP, User-Agent i kont użytkowników. Szczegółowy pomiar i zdarzenia Google obejmują tylko publiczne artykuły bez hasła. Nie wyliczamy unikalnych słuchaczy.", ), 'en' => array( 'off' => "Statistics are disabled. The plugin collects no new listening or audio-request statistics. Existing aggregate records may remain for the {$days}-day retention period.", 'anonymous' => "Anonymous server counting is enabled. New measurements in this mode keep only the daily number of valid requests beginning delivery of each public article recording, for up to {$days} days. Earlier detailed aggregates may remain until their original {$days}-day expiry, with their technical update and deduplication state lasting up to 24 hours. The counter uses no tracking script, cookies, listener identifiers or IP hashes and sends no events to Google. Private and password-protected recordings are excluded. This is an approximate request count, not unique people or confirmed listens; preloading, bots and retries may affect it. Listening time and completion are not measured. This counter does not require a consent signal in the plugin; the controller assesses legal requirements for the whole site and hosting.", 'consented' => "Detailed listening statistics are enabled. Measurement starts only after statistics consent supplied by the site's consent manager. You can refuse or withdraw through [consent settings] and continue using the player. We keep daily per-article aggregate counts, duration and completion for up to {$days} days, without persistent listener identifiers, raw IP, User-Agent or user accounts. Detailed measurement and Google events cover only public, unprotected articles. We do not calculate unique listeners.", ), 'de' => array( 'off' => "Statistiken sind deaktiviert. Das Plugin erhebt keine neuen Hör- oder Audioanfragestatistiken. Vorhandene aggregierte Daten können bis zum Ende der Frist von {$days} Tagen bestehen bleiben.", 'anonymous' => "Die anonyme serverseitige Zählung ist aktiviert. Neue Messungen in diesem Modus speichern bis zu {$days} Tage lang nur die tägliche Anzahl gültiger Anfragen, die die Übertragung der öffentlichen Aufnahme eines Artikels beginnen. Frühere detaillierte Aggregate können bis zum ursprünglichen Ablauf ihrer {$days}-Tage-Frist bestehen bleiben, ihr technischer Aktualisierungs- und Deduplizierungszustand bis zu 24 Stunden. Der Zähler verwendet weder Tracking-Skripte noch Cookies, Hörerkennungen oder IP-Hashwerte und sendet keine Ereignisse an Google. Private und passwortgeschützte Aufnahmen sind ausgeschlossen. Dies ist eine ungefähre Zahl von Anfragen, keine Zahl eindeutiger Personen oder bestätigter Wiedergaben; Vorladen, Bots und Wiederholungen können sie beeinflussen. Hördauer und Abschluss werden nicht gemessen. Dieser Zähler benötigt im Plugin kein Einwilligungssignal; der Verantwortliche prüft die rechtlichen Anforderungen für die gesamte Website und das Hosting.", 'consented' => "Detaillierte Hörstatistiken sind aktiviert. Die Messung beginnt erst nach einer durch die Einwilligungsverwaltung übermittelten Statistik-Einwilligung. Sie können diese unter [Einwilligungseinstellungen] verweigern oder widerrufen und den Player weiterhin nutzen. Wir speichern tägliche aggregierte Zähler, Hördauer und Abschluss je Artikel bis zu {$days} Tage, ohne dauerhafte Hörerkennungen, unveränderte IP-Adressen, User-Agent oder Benutzerkonten. Die Detailmessung und Google-Ereignisse umfassen nur öffentliche Artikel ohne Passwortschutz. Einzelne Hörer werden nicht gezählt.", ), 'es' => array( 'off' => "Las estadísticas están desactivadas. El plugin no recoge nuevas estadísticas de escucha ni de solicitudes de audio. Los datos agregados existentes pueden permanecer hasta el final del plazo de {$days} días.", 'anonymous' => "El recuento anónimo del servidor está activado. Las nuevas mediciones en este modo conservan únicamente el número diario de solicitudes válidas que inician la entrega de cada grabación pública, durante un máximo de {$days} días. Los agregados detallados anteriores pueden permanecer hasta el vencimiento original de su plazo de {$days} días, y su estado técnico de actualización y deduplicación durante un máximo de 24 horas. El contador no utiliza scripts de seguimiento, cookies, identificadores de oyentes ni hashes de IP y no envía eventos a Google. Excluye las grabaciones privadas y protegidas por contraseña. Es un recuento aproximado de solicitudes, no de personas únicas ni de escuchas confirmadas; la precarga, los bots y los reintentos pueden influir. No medimos el tiempo ni la finalización. Este contador no requiere una señal de consentimiento en el plugin; el responsable evalúa los requisitos legales de todo el sitio y del alojamiento.", 'consented' => "Las estadísticas detalladas de escucha están activadas. La medición comienza solo después del consentimiento para estadísticas comunicado por el gestor de consentimiento. Puede rechazarlo o retirarlo mediante [ajustes de consentimiento] y seguir usando el reproductor. Conservamos recuentos agregados diarios por artículo, duración y finalización durante un máximo de {$days} días, sin identificadores persistentes del oyente, IP sin transformar, User-Agent ni cuentas de usuario. La medición detallada y los eventos de Google solo abarcan artículos públicos sin contraseña. No calculamos oyentes únicos.", ), ); return $notices[ $language ][ $mode ] . "\n\n"; } private static function network_notice( $language ) { $notices = array( 'pl' => 'Wtyczka nie uruchamia sesji PHP i nie zapisuje własnych cookies ani identyfikatorów słuchacza w localStorage. Serwer strony otrzymuje zwykłe dane żądań sieciowych, w tym IP; zakres i retencja logów hostingu: [uzupełnij]. Tylko w trybie szczegółowym po zgodzie techniczny skrót IP ogranicza nadużycia przez około 2 minuty, a skrót zdarzenia z identyfikatorem artykułu, czasem i długością nagrania służy aktualizacji i deduplikacji przez maksymalnie 24 godziny. Surowy IP nie jest zapisywany w statystykach.', 'en' => 'The plugin starts no PHP sessions and creates no own cookies or listener localStorage identifiers. The site server receives normal network request data including IP addresses; hosting log scope and retention: [complete]. Only in detailed mode after consent, a technical IP hash limits abuse for approximately 2 minutes, and an event hash with article ID, listening time and recording duration supports updates and deduplication for up to 24 hours. Raw IP is not stored in statistics.', 'de' => 'Das Plugin startet keine PHP-Sitzungen und erstellt keine eigenen Cookies oder Hörerkennungen in localStorage. Der Website-Server erhält übliche Netzwerkanfragedaten einschließlich IP-Adressen; Umfang und Aufbewahrung der Hosting-Protokolle: [ergänzen]. Nur im detaillierten Modus nach Einwilligung begrenzt ein technischer IP-Hashwert Missbrauch für ungefähr 2 Minuten; ein Ereignis-Hashwert mit Artikelkennung, Hördauer und Aufnahmedauer dient bis zu 24 Stunden zur Aktualisierung und Duplikaterkennung. Die unveränderte IP-Adresse wird nicht in Statistiken gespeichert.', 'es' => 'El plugin no inicia sesiones PHP ni crea cookies propias o identificadores de oyentes en localStorage. El servidor recibe los datos habituales de las solicitudes, incluidas las direcciones IP; alcance y conservación de los registros del alojamiento: [completar]. Solo en modo detallado y tras el consentimiento, un hash técnico de IP limita el abuso durante unos 2 minutos; un hash del evento con el identificador del artículo, el tiempo de escucha y la duración permite actualizar y deduplicar durante un máximo de 24 horas. La IP sin transformar no se almacena en las estadísticas.', ); return $notices[ $language ] . "\n\n"; } private static function ga4_notice( $language ) { if ( ! Privacy_Settings::get( 'ga4_enabled' ) ) { return ''; } $notices = array( 'pl' => 'Opcjonalna integracja Google Analytics 4 jest włączona. Po zgodzie na statystyki przekazuje do istniejącego tagu Google lub menedżera tagów zdarzenia rozpoczęcia, postępu i ukończenia (aat_audio_start, aat_audio_progress, aat_audio_complete), identyfikator publicznego artykułu i parametry odtwarzania. Wtyczka nie przesyła tytułu ani treści artykułu, tożsamości użytkownika czy identyfikatora sesji; zainstalowany tag Google może łączyć zdarzenia z danymi urządzenia, strony, sesji i własnymi cookies. Konfiguracja GTM może dodawać inne dane. Wtyczka nie ładuje skryptów Google i nie nadaje zgody. Administrator konfiguruje zgodę i warunki tagu oraz uzupełnia: [dane dostawcy Google i role, podstawa prawna, umowy, transfery poza EOG, rzeczywista retencja GA4 i cookies, ustawienia cofnięcia zgody].', 'en' => 'The optional Google Analytics 4 integration is enabled. After statistics consent it passes start, progress and completion events (aat_audio_start, aat_audio_progress, aat_audio_complete), the public article ID and playback metrics to the existing Google tag or tag manager. The plugin sends no article title or content, user identity or session ID; the installed Google tag may associate events with device, page, session data and its own cookies. GTM configuration may add other data. The plugin loads no Google scripts and grants no consent. The controller configures tag consent and conditions and completes: [Google provider details and roles, legal basis, agreements, transfers outside the EEA, actual GA4/cookie retention and consent withdrawal settings].', 'de' => 'Die optionale Google-Analytics-4-Integration ist aktiviert. Nach Statistik-Einwilligung übermittelt sie Start-, Fortschritts- und Abschlussereignisse (aat_audio_start, aat_audio_progress, aat_audio_complete), die öffentliche Artikelkennung und Wiedergabemesswerte an das vorhandene Google-Tag oder die Tag-Verwaltung. Das Plugin sendet weder Artikeltitel oder -inhalt noch Benutzeridentität oder Sitzungskennung; das installierte Google-Tag kann Ereignisse mit Geräte-, Seiten- und Sitzungsdaten sowie eigenen Cookies verknüpfen. Die GTM-Konfiguration kann weitere Daten ergänzen. Das Plugin lädt keine Google-Skripte und erteilt keine Einwilligung. Der Verantwortliche konfiguriert die Tag-Einwilligung und ergänzt: [Google-Anbieter und Rollen, Rechtsgrundlage, Verträge, Übermittlungen außerhalb des EWR, tatsächliche GA4-/Cookie-Aufbewahrung und Widerrufseinstellungen].', 'es' => 'La integración opcional de Google Analytics 4 está activada. Tras el consentimiento para estadísticas, envía eventos de inicio, progreso y finalización (aat_audio_start, aat_audio_progress, aat_audio_complete), el identificador del artículo público y métricas de reproducción a la etiqueta Google o al gestor de etiquetas existente. El plugin no envía el título o contenido del artículo, la identidad del usuario ni un identificador de sesión; la etiqueta Google puede asociar los eventos con datos de dispositivo, página y sesión y con sus propias cookies. La configuración de GTM puede añadir otros datos. El plugin no carga scripts de Google ni otorga consentimiento. El responsable configura el consentimiento y completa: [proveedor Google y funciones, base jurídica, contratos, transferencias fuera del EEE, conservación real de GA4/cookies y ajustes de retirada del consentimiento].', ); $events = 'datalayer' === Privacy_Settings::get( 'ga4_transport' ) ? 'aat_audio_start, aat_audio_progress, aat_audio_complete' : 'audio_start, audio_progress, audio_complete'; return "\n\n" . str_replace( 'aat_audio_start, aat_audio_progress, aat_audio_complete', $events, $notices[ $language ] ); } /** German and Spanish drafts use the same runtime settings as the PL/EN drafts. */ private static function translated_texts( $language, $days, $backup_days, $analytics ) { if ( 'de' === $language ) { $privacy = "Artikel-Audio und Datenschutz\n\nVerantwortlich für die Datenverarbeitung ist [vollständiger Name und Anschrift]. Kontakt: [Datenschutzkontakt / gegebenenfalls Datenschutzbeauftragter]. Wir verwenden Accessibility Audio TTS, um Audioversionen von Artikeln bereitzustellen.\n\nBeim Erstellen einer Aufnahme werden Artikeltext, Titel und gegebenenfalls Bildbeschreibungen von unserem Server an ElevenLabs übermittelt. Dies kann im Artikel veröffentlichte personenbezogene Daten umfassen. Die Wiedergabe einer fertigen Aufnahme ruft die Audiodatei von unserer Website ab; die Wiedergabe selbst übermittelt den Artikel nicht erneut an einen KI-Anbieter.\n\n"; $privacy .= Privacy_Settings::openai_enabled() ? "Die OpenAI-Textkorrektur ist aktiviert. Daher wird der Artikeltext vor der Sprachsynthese auch an die OpenAI-API übermittelt. Das Plugin fordert store=false an; Sicherheitsprotokolle des Anbieters und andere Aufbewahrungsregeln des Kontos können weiterhin gelten.\n\n" : "Die OpenAI-Textkorrektur ist deaktiviert. Mit diesen Einstellungen übermittelt das Plugin keinen Artikeltext zur Korrektur an OpenAI. Der Administrator kann einen Schlüssel ausdrücklich mit einem Beispieltext testen; die Verwaltungsoberfläche kann außerdem Kosten und Limits des API-Kontos abfragen.\n\n"; $privacy .= "Zweck und Rechtsgrundlage für personenbezogene Daten in Artikeln: [zutreffende Rechtsgrundlage nach Artikel 6 und gegebenenfalls Voraussetzung nach Artikel 9 ergänzen]. Anbieter, ihre datenschutzrechtlichen Rollen, Auftragsverarbeitungsverträge und Schutzmaßnahmen für mögliche Übermittlungen außerhalb des EWR: [für das tatsächlich verwendete ElevenLabs-/OpenAI-Konto, die Region und die Verträge ergänzen]. Hosting-Anbieter: [Name und Rolle]. Die Verwendung eines eigenen API-Schlüssels ersetzt diese Vereinbarungen nicht.\n\n"; $privacy .= self::analytics_notice( $language, $days ); $privacy .= self::network_notice( $language ); $privacy .= "Die Aufbewahrung der Aufnahmen folgt der Lebensdauer des Artikels. Nach dem endgültigen Löschen eines Beitrags entfernt das Plugin ungenutzte verwaltete Aufnahmen immer automatisch; bei laufender Verarbeitung kann die Bereinigung in nachfolgenden geplanten Aufgaben abgeschlossen werden. Eine Datei, die ein anderer noch vorhandener Beitrag verwendet, bleibt für diesen Beitrag erhalten. Im Papierkorb bleiben Aufnahmen für die Wiederherstellung des Beitrags erhalten.\n\n"; $privacy .= "Verwaltete lokale Altsicherungen verfallen nach einer festen Frist von {$backup_days} Tagen. Dies sind ältere Archive, die der Migrationsprozess des Plugins übernommen hat, keine vollständigen Website-Sicherungen des Hostings und keine auf einen Computer heruntergeladenen Exporte. Neue temporäre Exportdateien werden nach der Bereitstellung des Downloads entfernt. Optionale Debug-Protokolle des Plugins sind auf 7 Tage begrenzt und dürfen keine Artikeltexte oder Schlüssel enthalten. Vollständige Website-Sicherungen, heruntergeladene Exporte und die Aufbewahrung durch Drittanbieter benötigen eigene Regeln: [ergänzen]. Bei der Deinstallation bleiben Aufnahmen standardmäßig erhalten; ihre Entfernung muss bei der Stilllegung berücksichtigt werden.\n\nRechte betroffener Personen, deren Ausübung und zuständige Aufsichtsbehörde: [entsprechend der geltenden Rechtsgrundlage und Rechtsordnung ergänzen]."; $cookies = "Cookies und Browserspeicher des Players\n\nAccessibility Audio TTS erzeugt keine eigenen Analyse-Cookies, PHP-Sitzungen oder Hörer-Kennungen in localStorage. Der Player bleibt verfügbar, wenn die Einwilligung in optionale Statistiken verweigert wird.\n\nWordPress kann nach Eingabe eines Beitragspassworts wp-postpass_[hash] setzen (standardmäßig 10 Tage) sowie nach der Anmeldung die Authentifizierungs-Cookies wordpress_logged_in_[hash], wordpress_[hash] und wordpress_sec_[hash]. Sie dienen der Zugriffskontrolle; die WordPress-Konfiguration kann die Gültigkeitsdauer ändern. Dies sind WordPress-Mechanismen, keine zusätzlichen Analyse-Cookies des Plugins.\n\nIhre Einwilligungsverwaltung kann die Entscheidung in Cookies speichern. Wir verwenden [Name der CMP] mit den Cookies [tatsächliche Namen, Zwecke, Kategorien und Gültigkeitsdauer]. Entscheidungen können unter [Link/Schaltfläche zu den Einwilligungseinstellungen] geändert werden.\n\nVerbliebene CacheStorage-Einträge accessibility-audio-tts-* und aat-audio-files-v1 älterer Versionen werden entfernt, soweit der Browser dies erlaubt. Geschützte Aufnahmen benötigen eine Online-Autorisierung; die automatische Service-Worker-Registrierung ist deaktiviert.\n\nDieses Verzeichnis umfasst nur den Player und zugehörige Abhängigkeiten. Ergänzen Sie nach einer Prüfung der gesamten Website weitere Cookies und Speicher von WordPress, Hosting, Theme und Plugins."; } else { $privacy = "Audio de artículos y protección de datos\n\nEl responsable del tratamiento es [nombre legal completo y dirección]. Contacto: [contacto de privacidad / delegado de protección de datos, cuando corresponda]. Utilizamos Accessibility Audio TTS para ofrecer versiones de audio de los artículos.\n\nAl generar una grabación, el texto del artículo, sus títulos y las descripciones de imágenes que correspondan se envían desde nuestro servidor a ElevenLabs. Esto puede incluir datos personales publicados en el artículo. La reproducción de una grabación terminada obtiene el audio de nuestro sitio; la reproducción en sí no vuelve a enviar el artículo a un proveedor de IA.\n\n"; $privacy .= Privacy_Settings::openai_enabled() ? "La corrección de texto de OpenAI está activada, por lo que el texto del artículo también se envía a la API de OpenAI antes de la síntesis de voz. El plugin solicita store=false; pueden seguir siendo aplicables los registros de seguridad del proveedor y otras reglas de conservación de la cuenta.\n\n" : "La corrección de texto de OpenAI está desactivada. Con esta configuración, el plugin no envía el texto del artículo a OpenAI para corregirlo. El administrador puede probar expresamente una clave con un texto de ejemplo; el panel de administración también puede consultar los costes y límites de la cuenta de API.\n\n"; $privacy .= "Finalidad y base jurídica del tratamiento de datos personales incluidos en los artículos: [completar la base aplicable del artículo 6 y la condición del artículo 9, si corresponde]. Proveedores, sus funciones en el tratamiento, contratos de encargo del tratamiento y garantías para posibles transferencias fuera del EEE: [completar según la cuenta real de ElevenLabs/OpenAI, la región y los contratos]. Proveedor de alojamiento: [nombre y función]. Utilizar una clave de API propia no sustituye estos acuerdos.\n\n"; $privacy .= self::analytics_notice( $language, $days ); $privacy .= self::network_notice( $language ); $privacy .= "La conservación de las grabaciones sigue la disponibilidad del artículo. Tras eliminar una entrada de forma permanente, el plugin siempre elimina automáticamente las grabaciones gestionadas que ya no se utilizan; si hay un proceso activo, la limpieza puede finalizar en tareas programadas posteriores. Un archivo que todavía utilice otra entrada existente se conserva para esa entrada. La papelera conserva el audio para poder restaurar la entrada.\n\n"; $privacy .= "Las copias locales antiguas gestionadas caducan tras un plazo fijo de {$backup_days} días. Son archivos antiguos incorporados por el proceso de migración del plugin, no copias de todo el sitio creadas por el alojamiento ni exportaciones descargadas a un ordenador. Los nuevos archivos temporales de exportación se eliminan después de servir la descarga. Los registros opcionales de depuración del plugin se limitan a 7 días y no deben contener texto de artículos ni claves. Las copias de todo el sitio, las exportaciones descargadas y la conservación por terceros requieren reglas independientes: [completar]. La desinstalación conserva el audio por defecto; incluya su eliminación en los procedimientos de retirada del servicio.\n\nDerechos de las personas interesadas, cómo ejercerlos y autoridad de control competente: [completar según la base jurídica y la jurisdicción aplicables]."; $cookies = "Cookies y almacenamiento del navegador relacionados con el reproductor\n\nAccessibility Audio TTS no crea cookies analíticas propias, sesiones PHP ni identificadores de oyentes en localStorage. El reproductor sigue disponible cuando se rechaza el consentimiento para las estadísticas opcionales.\n\nWordPress puede establecer wp-postpass_[hash] después de introducir la contraseña de una entrada (10 días por defecto), y las cookies de autenticación wordpress_logged_in_[hash], wordpress_[hash] y wordpress_sec_[hash] después de iniciar sesión. Controlan el acceso; la configuración de WordPress puede cambiar su caducidad. Son mecanismos de WordPress, no cookies analíticas adicionales del plugin.\n\nSu gestor de consentimiento puede guardar la decisión en cookies. Utilizamos [nombre de la CMP], con las cookies [nombres reales, finalidades, categorías y plazos]. Las decisiones se pueden cambiar mediante [enlace/botón de ajustes de consentimiento].\n\nLos restos de versiones anteriores en CacheStorage accessibility-audio-tts-* y aat-audio-files-v1 se eliminan cuando el navegador lo permite. Las grabaciones protegidas requieren autorización en línea; el registro automático del Service Worker está desactivado.\n\nEste inventario solo cubre el reproductor y sus dependencias. Añada las demás cookies y formas de almacenamiento de WordPress, el alojamiento, el tema y los plugins después de revisar todo el sitio."; } return array( 'privacy' => $privacy, 'cookies' => $cookies ); } public static function texts( $language = null ) { $language = self::language( $language ); $pl = 'pl' === $language; $days = Privacy_Settings::get( 'analytics_retention_days' ); $backup_days = Privacy_Settings::get( 'backup_retention_days' ); $analytics = Privacy_Settings::get( 'analytics_enabled' ); if ( in_array( $language, array( 'de', 'es' ), true ) ) { $translated = self::translated_texts( $language, $days, $backup_days, $analytics ); $privacy = $translated['privacy']; $cookies = $translated['cookies']; } elseif ( $pl ) { $privacy = "Odtwarzanie artykułów i ochrona danych\n\nAdministratorem danych jest [pełna nazwa i adres administratora]. W sprawach ochrony danych można skontaktować się przez [adres kontaktowy / kontakt do IOD, jeżeli dotyczy]. Na stronie używamy Accessibility Audio TTS, aby umożliwić odsłuch treści artykułów.\n\nPodczas generowania nagrania tekst artykułu, tytuł i ewentualne opisy ilustracji są przekazywane z serwera strony do ElevenLabs. Tekst może zawierać dane osobowe zamieszczone przez administratora w artykule. Odtwarzanie gotowego nagrania odbywa się z serwera strony i samo w sobie nie wysyła ponownie treści artykułu do dostawcy AI.\n\n"; $privacy .= Privacy_Settings::openai_enabled() ? "Korekta tekstu OpenAI jest włączona. Przed syntezą tekst jest również przekazywany do API OpenAI w celu przygotowania go do odczytu. Wtyczka żąda niewłączania zapisu stanu odpowiedzi (store=false); nie wyłącza to wszystkich możliwych logów i okresów retencji dostawcy.\n\n" : "Korekta tekstu OpenAI jest wyłączona. Przy tych ustawieniach wtyczka nie wysyła tekstu artykułu do OpenAI w celu korekty. Administrator może osobno uruchomić test klucza na przykładowym tekście; panel administracyjny może również odczytywać koszty i limity konta API.\n\n"; $privacy .= "Cel i podstawa prawna przetwarzania danych osobowych zawartych w artykułach: [uzupełnij dla swojego wdrożenia; podaj właściwą podstawę z art. 6 RODO, a jeżeli dotyczy, także warunek z art. 9]. Dostawcy, ich role, umowy powierzenia oraz podstawy ewentualnych transferów poza EOG: [uzupełnij według rzeczywiście używanego konta ElevenLabs/OpenAI, regionu i zawartych umów]. Dane mogą być przetwarzane również przez dostawcę hostingu strony: [nazwa i rola]. Samo podanie własnego klucza API nie zastępuje tych ustaleń.\n\n"; $privacy .= self::analytics_notice( $language, $days ); $privacy .= self::network_notice( $language ); $privacy .= "Nagrania są przechowywane razem z okresem dostępności artykułu. Po trwałym usunięciu wpisu wtyczka zawsze automatycznie usuwa nieużywane, zarządzane pliki; jeśli trwa przetwarzanie, sprzątanie może zakończyć się w kolejnych zadaniach. Plik nadal używany przez inny istniejący wpis pozostaje do jego dyspozycji. Przeniesienie do kosza zachowuje nagranie, aby umożliwić przywrócenie wpisu.\n\n"; $privacy .= "Lokalne kopie historyczne zarządzane przez wtyczkę wygasają po stałym okresie {$backup_days} dni. Są to starsze archiwa przejęte przez mechanizm migracji wtyczki, a nie kopie całej witryny tworzone przez hosting ani eksporty pobrane na komputer. Nowe tymczasowe pliki eksportu są usuwane po obsłużeniu pobierania. Techniczne logi debugowania wtyczki, jeżeli włączone, są ograniczone do 7 dni i nie powinny zawierać treści artykułów ani kluczy. Kopie całej witryny, eksporty pobrane na komputer oraz retencja u dostawców zewnętrznych podlegają osobnym zasadom administratora: [uzupełnij]. Odinstalowanie domyślnie zachowuje nagrania; należy uwzględnić ich usunięcie w procedurze likwidacji usługi.\n\nPrawa osób, których dane dotyczą, sposób ich realizacji oraz właściwy organ nadzorczy: [uzupełnij stosownie do podstawy przetwarzania i jurysdykcji; wskaż kontakt do realizacji praw i właściwy organ nadzorczy]."; $cookies = "Cookies i pamięć przeglądarki związane z odtwarzaczem\n\nAccessibility Audio TTS nie tworzy własnych cookies analitycznych, sesji PHP ani identyfikatora słuchacza w localStorage. Odtwarzanie pozostaje dostępne przy odmowie zgody na opcjonalne statystyki.\n\nWordPress może stosować cookie wp-postpass_[hash] po podaniu hasła wpisu (domyślnie 10 dni) oraz cookies uwierzytelniające wordpress_logged_in_[hash], wordpress_[hash] i wordpress_sec_[hash] po zalogowaniu. Służą kontroli dostępu; ich rzeczywisty termin może zmieniać konfiguracja WordPressa. Są to mechanizmy WordPressa, a nie dodatkowe cookies analityczne wtyczki.\n\nWybrany menedżer zgód może zapisywać cookies przechowujące decyzję użytkownika. Używamy [nazwa CMP], cookies [rzeczywiste nazwy, cele, kategorie i terminy]. Preferencje można zmienić przez [link/przycisk ustawień zgód].\n\nPozostałości cache poprzednich wersji w magazynach CacheStorage accessibility-audio-tts-* i aat-audio-files-v1 są usuwane, jeżeli przeglądarka na to pozwala. Nagrania chronione wymagają połączenia i autoryzacji; aktualna wersja nie włącza automatycznie Service Workera.\n\nTen wykaz obejmuje odtwarzacz i powiązane mechanizmy. Pozostałe cookies i magazyny używane przez motyw, WordPress, hosting i inne wtyczki należy dopisać po sprawdzeniu całej witryny."; } else { $privacy = "Article audio and data protection\n\nThe controller is [full legal name and address]. Contact [privacy contact / DPO where applicable]. We use Accessibility Audio TTS to provide audio versions of articles.\n\nWhen generating a recording, article text, titles and applicable image descriptions are sent from our server to ElevenLabs. This may include personal data published in the article. Playing a completed recording retrieves audio from our site; playback itself does not send the article to an AI provider again.\n\n"; $privacy .= Privacy_Settings::openai_enabled() ? "OpenAI text correction is enabled, so article text is also sent to the OpenAI API before synthesis. The plugin requests store=false; provider security logs and other account retention rules may still apply.\n\n" : "OpenAI text correction is disabled. Under these settings the plugin does not send article text to OpenAI for correction. The administrator may explicitly test a key using sample text; the admin panel may also request API account costs and limits.\n\n"; $privacy .= "Purpose and legal basis for personal data in articles: [complete the applicable Article 6 basis and Article 9 condition if relevant]. Providers, processing roles, processing agreements and safeguards for any transfers outside the EEA: [complete for the actual ElevenLabs/OpenAI account, region and contracts]. Hosting provider: [name and role]. Providing your own API key does not replace these arrangements.\n\n"; $privacy .= self::analytics_notice( $language, $days ); $privacy .= self::network_notice( $language ); $privacy .= "Recordings follow the article lifetime. After permanent post deletion, the plugin always automatically removes unused managed recordings; cleanup may finish in subsequent scheduled tasks if work is active. A file still used by another existing post is retained for that post. Trash retains audio for post recovery.\n\n"; $privacy .= "Managed local legacy backups expire after a fixed {$backup_days}-day period. These are older archives adopted by the plugin's migration process, not whole-site hosting backups or exports downloaded to a computer. New temporary exports are removed after serving the download. Optional plugin debug logs are limited to 7 days and must not contain article text or keys. Whole-site backups, downloaded exports and third-party retention require separate rules: [complete]. Uninstall preserves audio by default; include its disposal in decommissioning procedures.\n\nData-subject rights, how to exercise them and the relevant supervisory authority: [complete for the applicable legal basis and jurisdiction]."; $cookies = "Player-related cookies and browser storage\n\nAccessibility Audio TTS creates no own analytics cookies, PHP sessions or listener localStorage identifiers. The player remains available when optional statistics consent is refused.\n\nWordPress may set wp-postpass_[hash] after submission of a post password (10 days by default), and authentication cookies wordpress_logged_in_[hash], wordpress_[hash] and wordpress_sec_[hash] after login. They control access; expiry may be changed by the WordPress configuration. These are WordPress mechanisms, not additional plugin analytics cookies.\n\nYour consent manager may store a consent choice. We use [CMP name], with cookies [actual names, purposes, categories and durations]. Choices can be changed through [consent-settings link/button].\n\nLegacy CacheStorage entries accessibility-audio-tts-* and aat-audio-files-v1 are removed where the browser allows. Protected recordings require online authorization; automatic Service Worker registration is disabled.\n\nThis inventory covers the player and related dependencies only. Add other cookies/storage from WordPress, hosting, theme and plugins after inspecting the whole site."; } $privacy .= self::ga4_notice( $language ); $cookies .= self::ga4_notice( $language ); $scope_notice = self::scope_notice( $language ); $privacy .= "\n\n" . $scope_notice; $cookies .= "\n\n" . $scope_notice; if ( 'de' === $language ) { $privacy .= "\n\nDie festen Aufbewahrungsfristen bestimmen den Ablauf der Gültigkeit. Die physische Bereinigung erfolgt durch eine nachfolgende geplante Aufgabe oder Anfrage; verzögertes WP-Cron kann das Löschen verzögern. Der Verantwortliche muss geplante Aufgaben betreiben und überwachen."; $privacy .= Privacy_Settings::get( 'allow_restricted_content' ) ? "\n\nDer Administrator hat die KI-Audioerstellung für passwortgeschützte oder nicht öffentliche Beiträge aktiviert. Ihr Text wird an ElevenLabs sowie bei aktivierter Textkorrektur an OpenAI übermittelt. Dies ist eine gesonderte Freigabe des Administrators zur Übermittlung von Text an externe Dienste; sie veröffentlicht den Beitrag nicht, ersetzt weder eine Einwilligung noch eine andere Rechtsgrundlage für die Verarbeitung personenbezogener Daten und hebt die Zugriffskontrolle für die Wiedergabe nicht auf." : "\n\nDie neue KI-Audioerstellung für passwortgeschützte oder nicht öffentliche Beiträge ist deaktiviert. Diese Sperre entfernt keine Aufnahmen oder Texte, die zuvor an Anbieter übermittelt wurden."; } elseif ( 'es' === $language ) { $privacy .= "\n\nLos plazos fijos de conservación definen la caducidad. La limpieza física se ejecuta en una tarea programada o solicitud posterior; los retrasos de WP-Cron pueden demorar la eliminación. El responsable debe mantener y supervisar las tareas programadas."; $privacy .= Privacy_Settings::get( 'allow_restricted_content' ) ? "\n\nEl administrador ha activado la generación de audio con IA para entradas protegidas por contraseña o no públicas. Su texto se envía a ElevenLabs y también a OpenAI si está activada la corrección de texto. Es un permiso independiente del administrador para enviar texto a servicios externos; no publica la entrada, no sustituye el consentimiento ni otra base jurídica para el tratamiento de datos personales y no elimina los controles de acceso a la reproducción." : "\n\nLa nueva generación de audio con IA para entradas protegidas por contraseña o no públicas está desactivada. Este bloqueo no elimina grabaciones ni textos enviados previamente a los proveedores."; } else { $privacy .= $pl ? "\n\nStałe terminy retencji oznaczają okresy ważności. Fizyczne sprzątanie wykonuje najbliższe zadanie harmonogramu lub kolejne żądanie; opóźniony WP-Cron może opóźnić usunięcie danych. Administrator zapewnia działanie i monitorowanie zadań." : "\n\nFixed retention periods define expiry. Physical cleanup runs in a subsequent scheduled task or request; delayed WP-Cron may delay deletion. The controller must maintain and monitor scheduled tasks."; $privacy .= Privacy_Settings::get( 'allow_restricted_content' ) ? ( $pl ? "\n\nGenerowanie nagrań treści chronionych hasłem lub niepublicznych u dostawców AI jest włączone w konfiguracji administratora. Tekst takich wpisów jest przekazywany do ElevenLabs oraz do OpenAI, jeżeli włączono korektę tekstu. To osobna zgoda administratora na wysłanie tekstu do usług zewnętrznych; nie publikuje wpisu, nie zastępuje zgody ani innej podstawy prawnej przetwarzania danych i nie znosi kontroli dostępu do odtwarzania." : "\n\nThe administrator has enabled AI audio generation for password-protected or non-public posts. Their text is sent to ElevenLabs and also to OpenAI if text correction is enabled. This is a separate administrator permission to send text to external services; it does not publish the post, replace consent or another legal basis for processing personal data, or remove playback access controls." ) : ( $pl ? "\n\nNowe generowanie nagrań treści chronionych hasłem lub niepublicznych u dostawców AI jest wyłączone. Ta blokada nie usuwa nagrań ani kopii tekstu przekazanych wcześniej do dostawców." : "\n\nNew AI audio generation for password-protected or non-public posts is disabled. This block does not remove recordings or text previously sent to providers." ); } $status = ( new \Accessibility_Audio_TTS\Admin\Listening_Statistics() )->privacy_status(); if ( ! $status['complete'] ) { if ( 'de' === $language ) { $privacy .= "\n\nDer Abschluss der Bereinigung historischer Statistiken ist noch nicht bestätigt. Frühere Sitzungs- und Kontokennungen, IP-Adressen und Browserinformationen können noch in der Datenbank vorhanden sein. Schließen Sie die Bereinigung ab und aktualisieren Sie diesen Text vor der Veröffentlichung."; } elseif ( 'es' === $language ) { $privacy .= "\n\nTodavía no se ha confirmado que la limpieza de las estadísticas históricas haya finalizado. Pueden permanecer en la base de datos antiguos identificadores de sesión o cuenta, direcciones IP e información del navegador. Complete la limpieza y actualice este texto antes de publicarlo."; } else { $privacy .= $pl ? "\n\nCzyszczenie historycznych statystyk nie zostało jeszcze potwierdzone jako zakończone. W bazie mogą pozostawać wcześniejsze identyfikatory sesji, kont, adresy IP i informacje o przeglądarce. Administrator powinien dokończyć czyszczenie i zaktualizować ten opis przed publikacją." : "\n\nHistorical analytics cleanup is not yet confirmed complete. Earlier session/account identifiers, IP addresses and browser information may remain in the database. Complete cleanup and update this wording before publication."; } } $inventory_labels = array( 'pl' => array( 'Okres: ', 'Kiedy: ' ), 'en' => array( 'Duration: ', 'When: ' ), 'de' => array( 'Dauer: ', 'Wann: ' ), 'es' => array( 'Duración: ', 'Cuándo: ' ) ); $inventory = array(); foreach ( self::storage_inventory( $language ) as $row ) { $inventory[] = $row['name'] . "\n" . $row['purpose'] . "\n" . $inventory_labels[ $language ][0] . $row['duration'] . "\n" . $inventory_labels[ $language ][1] . $row['condition']; } return array( 'privacy' => $privacy, 'cookies' => $cookies, 'inventory' => implode( "\n\n", $inventory ) ); } public static function register_policy_text() { if ( ! function_exists( 'wp_add_privacy_policy_content' ) ) { return; } $language = self::language( null ); $texts = self::texts( $language ); $tutorials = array( 'pl' => 'Przed publikacją uzupełnij dane administratora, podstawę prawną, dostawców, transfery i mechanizm zgód wskazane w nawiasach. Te wzory odnoszą się do ram UE i nie gwarantują zgodności z RODO, pozostałym prawem UE ani prawem krajowym, w tym krajowymi przepisami o cookies.', 'en' => 'Complete the bracketed controller, legal basis, provider, transfer and consent-manager details before publishing. These EU-focused drafts do not guarantee compliance with the GDPR, other EU law or national law, including national cookie rules.', 'de' => 'Ergänzen Sie vor der Veröffentlichung die Angaben in eckigen Klammern zu Verantwortlichem, Rechtsgrundlage, Anbietern, Datenübermittlungen und Einwilligungsverwaltung. Diese auf den EU-Rahmen bezogenen Vorlagen garantieren weder die Einhaltung der DSGVO noch anderer EU-Vorschriften oder nationalen Rechts, einschließlich nationaler Cookie-Regeln.', 'es' => 'Antes de publicar, complete los datos entre corchetes sobre el responsable, la base jurídica, los proveedores, las transferencias y el gestor de consentimiento. Estas plantillas centradas en el marco de la UE no garantizan el cumplimiento del RGPD, de otras normas de la UE ni del derecho nacional, incluidas las normas nacionales sobre cookies.', ); wp_add_privacy_policy_content( 'Accessibility Audio TTS', '

' . esc_html( $tutorials[ $language ] ) . '

' . wpautop( esc_html( $texts['privacy'] ) ) . '

Cookies

' . wpautop( esc_html( $texts['cookies'] ) ) ); } }