From 06acbdbd44f9798a580ee6e109b1075506a86499 Mon Sep 17 00:00:00 2001
From: bencroker <ben@putyourlightson.com>
Date: Sun, 1 Sep 2024 13:19:06 +0200
Subject: [PATCH] Fix and improve translations

---
 src/templates/_settings/general/index.twig   |  2 +-
 src/templates/_settings/recaptcha/index.twig |  2 +-
 src/templates/_settings/turnstile/index.twig |  4 ++--
 src/translations/de/campaign.php             | 17 +++++++++++++++--
 src/translations/en/campaign.php             | 18 ++++++++++++++++--
 src/translations/fr/campaign.php             | 17 +++++++++++++++--
 6 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/src/templates/_settings/general/index.twig b/src/templates/_settings/general/index.twig
index d8092ff1..4bc39064 100644
--- a/src/templates/_settings/general/index.twig
+++ b/src/templates/_settings/general/index.twig
@@ -34,7 +34,7 @@
     {{ forms.field({
         label: "Cron Job"|t('campaign'),
         instructions: "Create a cron job using the following console command to queue and run pending sendouts on a scheduled basis (every 10 minutes for example). Change `{phpBinPath}` to your PHP path (if different)."|t('campaign', {phpBinPath: phpBinPath}),
-        warning: isDynamicWebAliasUsed ? 'It appears that one or more of your site or asset volume URLs is using a dynamic `@web` alias. If not explicitly defined, the `@web` alias is unavailable with console commands and will return a blank string. <a href="{url}" class="go" target="_blank" rel="noopener">Learn more</a>'|t('campaign', {url: 'https://putyourlightson.com/plugins/campaign#how-sendouts-are-sent'}),
+        warning: isDynamicWebAliasUsed ? 'It appears that one or more of your site or asset volume URLs is using a dynamic `@web` alias. If not explicitly defined, the `@web` alias is unavailable with console commands and will return a blank string.'|t('campaign') ~ ' <a href="https://putyourlightson.com/plugins/campaign#how-sendouts-are-sent" class="go" target="_blank" rel="noopener">' ~ 'Learn more'|t('campaign') ~ '</a>',
     }, code) }}
 
     {{ forms.autosuggestField({
diff --git a/src/templates/_settings/recaptcha/index.twig b/src/templates/_settings/recaptcha/index.twig
index 3cbfd3d0..f1f1fefe 100644
--- a/src/templates/_settings/recaptcha/index.twig
+++ b/src/templates/_settings/recaptcha/index.twig
@@ -17,7 +17,7 @@
     {{ forms.lightswitchField({
         first: true,
         label: "reCAPTCHA"|t('campaign'),
-        instructions: 'Enable reCAPTCHA v3 to protect mailing list subscription forms from bots. <a href="{url}" class="go" target="_blank" rel="noopener">Learn more</a>'|t('campaign', { url: 'https://developers.google.com/recaptcha/docs/v3' }),
+        instructions: 'Enable reCAPTCHA v3 to protect mailing list subscription forms from bots.'|t('campaign') ~ ' <a href="https://developers.google.com/recaptcha/docs/v3" class="go" target="_blank" rel="noopener">' ~ 'Learn more'|t('campaign') ~ '</a>',
         warning: (config.reCaptcha is defined ? macros.configWarning('reCaptcha')),
         id: 'reCaptcha',
         name: 'reCaptcha',
diff --git a/src/templates/_settings/turnstile/index.twig b/src/templates/_settings/turnstile/index.twig
index d3d521e5..d3ac3b55 100644
--- a/src/templates/_settings/turnstile/index.twig
+++ b/src/templates/_settings/turnstile/index.twig
@@ -17,7 +17,7 @@
     {{ forms.lightswitchField({
         first: true,
         label: "Turnstile"|t('campaign'),
-        instructions: 'Enable Turnstile to protect mailing list subscription forms from bots using the “invisible” Turnstile widget. <a href="{url}" class="go" target="_blank" rel="noopener">Learn more</a>'|t('campaign', { url: 'https://developers.cloudflare.com/turnstile/' }),
+        instructions: 'Enable Turnstile to protect mailing list subscription forms from bots using the “invisible” Turnstile widget.'|t('campaign') ~ ' <a href="https://developers.cloudflare.com/turnstile/" class="go" target="_blank" rel="noopener">' ~ 'Learn more'|t('campaign') ~ '</a>',
         warning: (config.turnstile is defined ? macros.configWarning('turnstile')),
         id: 'turnstile',
         name: 'turnstile',
@@ -56,7 +56,7 @@
 
     {{ forms.autosuggestField({
         label: "Turnstile Error Message"|t('campaign'),
-        instructions: "Your form submission was blocked. Please go back and verify that you are human."|t('campaign'),
+        instructions: "The error message to display if a form submission is blocked."|t('campaign'),
         warning: (config.turnstileErrorMessage is defined ? macros.configWarning('turnstileErrorMessage')),
         id: 'turnstileErrorMessage',
         name: 'turnstileErrorMessage',
diff --git a/src/translations/de/campaign.php b/src/translations/de/campaign.php
index 9b191938..376e094c 100644
--- a/src/translations/de/campaign.php
+++ b/src/translations/de/campaign.php
@@ -16,6 +16,7 @@
     // -------------------------------------------------------------------------
     '“{name}” Campaigns' => '',
     '“{name}” Mailing Lists' => '',
+    '“Include original headers” must be enabled for each notification type.<br>See this <a href="{url}" target="_blank">article</a> for details on where and how to enable this.' => '',
     '(reply to {email})' => '(an {email} antworten)',
     '{count} pending sendout(s) queued.' => '{count} Sendung(en) in Warteschlange',
     '{num, plural, =1{mailing list} other{mailing lists}}' => '{num, plural, =1{Mailing-Liste} other{Mailing-Listen}}',
@@ -233,6 +234,7 @@
     'Create a template condition to apply to this segment. The `contact` tag is available in this context.' => 'Erstelle eine Template-Bedingung, die diesem Segment zugeordnet werden soll. Der `contact`-Tag ist in diesem Kontext verfügbar.',
     'Create and view your ipstack.com API key at {link}' => 'Erstellen und betrachten Sie Ihren ipstack.com API-Schlüssel unter {link}',
     'Create and view your reCAPTCHA keys at {link}' => 'Erstellen und betrachten Sie Ihre reCAPTCHA-Schlüssel unter {link}',
+    'Create and view your Turnstile keys at {link}' => '',
     'Cron Job' => 'Cronjob',
     'CSV file successfully queued for importing.' => 'CSV-Datei wurde erfolgreich in die Import-Warteschlange geladen.',
     'CSV File' => 'CSV-Datei',
@@ -266,9 +268,10 @@
     'Email settings saved.' => 'E-Mail-Einstellungen gespeichert.',
     'Email Settings' => 'E-Mail-Einstellungen',
     'Email' => 'E-Mail',
+    'Enable Anonymous Tracking' => '',
     'Enable GeoIP to geolocate contacts by their IP addresses.' => 'Aktivieren Sie GeoIP, um Kontakte über ihre IP-Adresse zu lokalisieren.',
     'Enable reCAPTCHA v3 to protect mailing list subscription forms from bots. <a href="{url}" class="go" target="_blank" rel="noopener">Learn more</a>' => 'Aktivieren Sie reCAPTCHA v3, um Mailing-Listen-Formulare vor Bots zu schützen.  <a href="{url}" class="go" target="_blank" rel="noopener">Mehr erfahren</a>',
-    'Enable Anonymous Tracking' => '',
+    'Enable Turnstile to protect mailing list subscription forms from bots using the “invisible” Turnstile widget.' => '',
     'End Date' => 'Enddatum',
     'ends with' => 'endet mit',
     'equals' => 'entspricht',
@@ -330,12 +333,13 @@
     'is not' => 'ist nicht',
     'is on' => 'ist auf',
     'is' => 'ist',
-    'It appears that one or more of your site or asset volume URLs is using a dynamic `@web` alias. If not explicitly defined, the `@web` alias is unavailable with console commands and will return a blank string. <a href="{url}" class="go" target="_blank" rel="noopener">Learn more</a>' => 'Es sieht so aus, als ob eine oder mehrere Site- oder Datei-Volumen-URLs einen dynamischen `@web`-Alias nutzen. Falls nicht expliziert definiert ist der `@web`-Alias für Konsolen-Befehle nicht verfügbar und gibt einen leeren String zurück. <a href="{url}" class="go" target="_blank" rel="noopener">Mehr erfahren</a>',
+    'It appears that one or more of your site or asset volume URLs is using a dynamic `@web` alias. If not explicitly defined, the `@web` alias is unavailable with console commands and will return a blank string.' => 'Es sieht so aus, als ob eine oder mehrere Site- oder Datei-Volumen-URLs einen dynamischen `@web`-Alias nutzen. Falls nicht expliziert definiert ist der `@web`-Alias für Konsolen-Befehle nicht verfügbar und gibt einen leeren String zurück.',
     'Last Activity' => 'Letzte Aktivität',
     'Last activity' => 'Letzte Aktivität',
     'Last Name' => 'Nachname',
     'Last Sent' => 'Zuletzt gesendet',
     'Last sent' => 'Zuletzt gesendet',
+    'Learn more' => 'Mehr erfahren',
     'Light' => 'Hell',
     'Link not found.' => 'Link nicht gefunden.',
     'Links' => 'Links',
@@ -418,6 +422,7 @@
     'No user groups exist.' => 'Es existiert keine Benutzergruppe.',
     'None' => 'Keine',
     'Normal' => 'Normal',
+    'Notification Contacts' => '',
     'Notification Email Address' => 'Benachrichtigungs-E-Mail-Adresse',
     'One or more condition rules to apply to this segment.' => 'Eine oder mehrere Bedingungen, die auf dieses Segment angewendet werden sollen.',
     'One or more condition rules to apply to this sendout.' => 'Eine oder mehrere Bedingungen, die auf dieses Sendout angewendet werden sollen.',
@@ -592,6 +597,7 @@
     'The amount of time to wait after subscribers join the list(s). Set to 0 for immediately.' => 'Die Zeitspanne, die nach Eintragung in die Liste(n) abgewartet werden muss. Auf 0 setzen für keine Wartezeit.',
     'The campaign to send.' => 'Die zu sendende Kampagne.',
     'The color theme of the reCAPTCHA widget.' => 'Das Farb-Theme des reCAPTCHA-Widgets.',
+    'The contacts to notify when sending of sendouts is complete or fails.' => '',
     'The date and time at which to begin sending.' => 'Datum und Uhrzeit ab denen gesendet werden soll.',
     'The date on which to end sending (leave blank for forever).' => 'Das Datum, ab dem nicht mehr gesendet werden soll (leerlassen für keinen Endzeitpunkt)',
     'The days of the month on which to send.' => 'Tage im Monat, an denen gesendet werden soll.',
@@ -599,6 +605,7 @@
     'The default contacts to use for test emails (leave blank to use a contact with the same email address as the currently logged-in user).' => 'Die Standard-Kontakte für Test-E-Mails (Leerlassen nutzt den aktuell angemeldeten Benutzer)',
     'The email sending service to use for sending.' => 'Der E-Mail-Service, der zum Senden genutzt werden soll.',
     'The email subject (emojis allowed 🎉).' => 'Betreff der E-Mail (Emojis erlaubt 🎉).',
+    'The error message to display if a form submission is blocked.' => '',
     'The execution time limit per sendout batch in seconds (set to 0 for unlimited).' => 'Das Zeitlimit zum Ausführen einer Sende-Charge in Sekunden (auf 0 setzen bedeutet ungebrenzte Zeit)',
     'The file you selected to upload must be a CSV file.' => 'Die Datei, die Sie zum Hochladen ausgewählt haben, muss eine CSV-Datei sein.',
     'The following contact fields are available:' => 'Die folgenden Kontakt-Felder sind verfügbar:',
@@ -631,6 +638,8 @@
     'The template to use when a contact successfully unsubscribes from a mailing list (leave blank for default message template).' => 'Das Template, das genutzt werden soll, wenn ein Kontakt sich erfolgreich von einer Mailing-Liste abmeldet (Leerlassen für Standard-Template).',
     'The template to use when a contact verifies their email address (leave blank for default message template).' => 'Das Template, das genutzt werden soll, wenn ein Kontakt seine E-Mail-Adresse verifiziert (Leerlassen für Standard-Template).',
     'The time of day at which to send (recommended).' => 'Tageszeit, zu der gesendet werden soll (empfohlen)',
+    'The Turnstile secret key for this domain.' => '',
+    'The Turnstile site key for this domain.' => '',
     'The value in the CSV file should be an array of element IDs surrounded by double quotation marks, for example: {value}' => '',
     'The value in the CSV file should be an array of option values surrounded by double quotation marks, for example: {value1}. Two double quotation marks should be used for escaping string values, for example: {value2}' => '',
     'This email address is blocked from subscribing.' => 'Diese E-Mail-Adresse wurde blockiert.',
@@ -651,6 +660,10 @@
     'To' => 'An',
     'Total' => 'Gesamt',
     'Transport Type' => 'Transportart',
+    'Turnstile Error Message' => '',
+    'Turnstile Secret Key' => '',
+    'Turnstile Settings' => '',
+    'Turnstile Site Key' => '',
     'Unable to upload CSV file.' => 'Hochladen der CSV-Datei nicht möglich.',
     'Unknown' => 'Unbekannt',
     'Unlimited' => 'Unbegrenzt',
diff --git a/src/translations/en/campaign.php b/src/translations/en/campaign.php
index 1448d295..98313d2a 100644
--- a/src/translations/en/campaign.php
+++ b/src/translations/en/campaign.php
@@ -15,6 +15,7 @@
     // -------------------------------------------------------------------------
     '“{name}” Campaigns' => '',
     '“{name}” Mailing Lists' => '',
+    '“Include original headers” must be enabled for each notification type.<br>See this <a href="{url}" target="_blank">article</a> for details on where and how to enable this.' => '',
     '(reply to {email})' => '',
     '{count} pending sendout(s) queued.' => '',
     '{num, plural, =1{mailing list} other{mailing lists}}' => '',
@@ -232,6 +233,8 @@
     'Create a template condition to apply to this segment. The `contact` tag is available in this context.' => '',
     'Create and view your ipstack.com API key at {link}' => '',
     'Create and view your reCAPTCHA keys at {link}' => '',
+    'Create and view your reCAPTCHA keys at {link}' => '',
+    'Create and view your Turnstile keys at {link}' => '',
     'Cron Job' => '',
     'CSV file successfully queued for importing.' => '',
     'CSV File' => '',
@@ -265,9 +268,10 @@
     'Email settings saved.' => '',
     'Email Settings' => '',
     'Email' => '',
+    'Enable Anonymous Tracking' => '',
     'Enable GeoIP to geolocate contacts by their IP addresses.' => '',
     'Enable reCAPTCHA v3 to protect mailing list subscription forms from bots. <a href="{url}" class="go" target="_blank" rel="noopener">Learn more</a>' => '',
-    'Enable Anonymous Tracking' => '',
+    'Enable Turnstile to protect mailing list subscription forms from bots using the “invisible” Turnstile widget.' => '',
     'End Date' => '',
     'ends with' => '',
     'equals' => '',
@@ -329,12 +333,13 @@
     'is not' => '',
     'is on' => '',
     'is' => '',
-    'It appears that one or more of your site or asset volume URLs is using a dynamic `@web` alias. If not explicitly defined, the `@web` alias is unavailable with console commands and will return a blank string. <a href="{url}" class="go" target="_blank" rel="noopener">Learn more</a>' => '',
+    'It appears that one or more of your site or asset volume URLs is using a dynamic `@web` alias. If not explicitly defined, the `@web` alias is unavailable with console commands and will return a blank string.' => '',
     'Last Activity' => '',
     'Last activity' => '',
     'Last Name' => '',
     'Last Sent' => '',
     'Last sent' => '',
+    'Learn more' => '',
     'Light' => '',
     'Link not found.' => '',
     'Links' => '',
@@ -417,6 +422,7 @@
     'No user groups exist.' => '',
     'None' => '',
     'Normal' => '',
+    'Notification Contacts' => '',
     'Notification Email Address' => '',
     'One or more condition rules to apply to this segment.' => '',
     'One or more condition rules to apply to this sendout.' => '',
@@ -591,6 +597,7 @@
     'The amount of time to wait after subscribers join the list(s). Set to 0 for immediately.' => '',
     'The campaign to send.' => '',
     'The color theme of the reCAPTCHA widget.' => '',
+    'The contacts to notify when sending of sendouts is complete or fails.' => '',
     'The date and time at which to begin sending.' => '',
     'The date on which to end sending (leave blank for forever).' => '',
     'The days of the month on which to send.' => '',
@@ -598,6 +605,7 @@
     'The default contacts to use for test emails (leave blank to use a contact with the same email address as the currently logged-in user).' => '',
     'The email sending service to use for sending.' => '',
     'The email subject (emojis allowed 🎉).' => '',
+    'The error message to display if a form submission is blocked.' => '',
     'The execution time limit per sendout batch in seconds (set to 0 for unlimited).' => '',
     'The file you selected to upload must be a CSV file.' => '',
     'The following contact fields are available:' => '',
@@ -630,6 +638,8 @@
     'The template to use when a contact successfully unsubscribes from a mailing list (leave blank for default message template).' => '',
     'The template to use when a contact verifies their email address (leave blank for default message template).' => '',
     'The time of day at which to send (recommended).' => '',
+    'The Turnstile secret key for this domain.' => '',
+    'The Turnstile site key for this domain.' => '',
     'The value in the CSV file should be an array of element IDs surrounded by double quotation marks, for example: {value}' => '',
     'The value in the CSV file should be an array of option values surrounded by double quotation marks, for example: {value1}. Two double quotation marks should be used for escaping string values, for example: {value2}' => '',
     'This email address is blocked from subscribing.' => '',
@@ -650,6 +660,10 @@
     'To' => '',
     'Total' => '',
     'Transport Type' => '',
+    'Turnstile Error Message' => '',
+    'Turnstile Secret Key' => '',
+    'Turnstile Settings' => '',
+    'Turnstile Site Key' => '',
     'Unable to upload CSV file.' => '',
     'Unknown' => '',
     'Unlimited' => '',
diff --git a/src/translations/fr/campaign.php b/src/translations/fr/campaign.php
index 61e6e6b7..7970b5d5 100644
--- a/src/translations/fr/campaign.php
+++ b/src/translations/fr/campaign.php
@@ -16,6 +16,7 @@
     // -------------------------------------------------------------------------
     '“{name}” Campaigns' => '“{name}” Newsletter',
     '“{name}” Mailing Lists' => '“{name}” Listes d’envoi',
+    '“Include original headers” must be enabled for each notification type.<br>See this <a href="{url}" target="_blank">article</a> for details on where and how to enable this.' => '',
     '(reply to {email})' => '(répondre à {email})',
     '{count} pending sendout(s) queued.' => '{count} envoi(s) en attente.',
     '{num, plural, =1{mailing list} other{mailing lists}}' => '{num, plural, =1{liste de diffusion} other{listes de diffusion}}',
@@ -233,6 +234,7 @@
     'Create a template condition to apply to this segment. The `contact` tag is available in this context.' => 'Créer une template à appliquer à ce segment. La balise `contact` est disponible dans ce contexte.',
     'Create and view your ipstack.com API key at {link}' => 'Créez et consultez votre clé API ipstack.com à l’adresse {lien}.',
     'Create and view your reCAPTCHA keys at {link}' => 'Créez et visualisez vos clés reCAPTCHA à {lien}.',
+    'Create and view your Turnstile keys at {link}' => '',
     'Cron Job' => 'Tâche Cron',
     'CSV file successfully queued for importing.' => 'Fichier CSV mis en attente pour l’importation.',
     'CSV File' => 'Fichier CSV',
@@ -266,9 +268,10 @@
     'Email settings saved.' => 'Réglages d’email sauvegardés.',
     'Email Settings' => 'Réglages email',
     'Email' => 'Email',
+    'Enable Anonymous Tracking' => 'Activer le tracking anonyme',
     'Enable GeoIP to geolocate contacts by their IP addresses.' => 'Activer GeoIP pour géocaliser les contacts par leurs valeurs d’adresses IP.',
     'Enable reCAPTCHA v3 to protect mailing list subscription forms from bots. <a href="{url}" class="go" target="_blank" rel="noopener">Learn more</a>' => 'Activer reCAPTCHA v3 pour empêcher des inscriptions de robots aux listes de diffusion. <a href="{url}" class="go" target="_blank" rel="noopener">Learn more</a>',
-    'Enable Anonymous Tracking' => 'Activer le tracking anonyme',
+    'Enable Turnstile to protect mailing list subscription forms from bots using the “invisible” Turnstile widget.' => '',
     'End Date' => 'Date de fin',
     'ends with' => 'Se terminant par',
     'equals' => 'égal à',
@@ -330,12 +333,13 @@
     'is not' => 'n’est pas',
     'is on' => 'est en cours',
     'is' => 'est',
-    'It appears that one or more of your site or asset volume URLs is using a dynamic `@web` alias. If not explicitly defined, the `@web` alias is unavailable with console commands and will return a blank string. <a href="{url}" class="go" target="_blank">Learn more</a>' => 'Il semble qu’une ou plusieurs URL de votre site ou de votre volume de media utilisent l’alias `@web`. S’il n’est pas sépcifiquement défini, l’alias `@web` est inacessible à partir de la console et retourne une chaine vide. <a href="{url}" class="go" target="_blank">En savoir plus</a>',
+    'It appears that one or more of your site or asset volume URLs is using a dynamic `@web` alias. If not explicitly defined, the `@web` alias is unavailable with console commands and will return a blank string.' => 'Il semble qu’une ou plusieurs URL de votre site ou de votre volume de media utilisent l’alias `@web`. S’il n’est pas sépcifiquement défini, l’alias `@web` est inacessible à partir de la console et retourne une chaine vide.',
     'Last Activity' => 'Dernière activité',
     'Last activity' => 'Dernière activité',
     'Last Name' => 'Nom',
     'Last Sent' => 'Plus récent',
     'Last sent' => 'Plus récent',
+    'Learn more' => 'En savoir plus',
     'Light' => 'Léger',
     'Link not found.' => 'Lien introuvable.',
     'Links' => 'Liens',
@@ -418,6 +422,7 @@
     'No user groups exist.' => 'Aucun groupe d’utilisateurs existant.',
     'None' => 'Non inscrit',
     'Normal' => 'Normal',
+    'Notification Contacts' => '',
     'Notification Email Address' => 'Email de notification',
     'One or more condition rules to apply to this segment.' => 'Une ou plusieurs conditions pour ce segment.',
     'One or more condition rules to apply to this sendout.' => 'Une ou plusieurs conditions pour cette campagne.',
@@ -593,12 +598,14 @@
     'The campaign to send.' => 'La newsletter à envoyer',
     'The color theme of the reCAPTCHA widget.' => 'Le thème de couleur du widget reCAPTCHA.',
     'The date and time at which to begin sending.' => 'La date et l’heure à laquelle l’envoi doit commencer.',
+    'The contacts to notify when sending of sendouts is complete or fails.' => '',
     'The date on which to end sending (leave blank for forever).' => 'La date à laquelle il faut mettre fin à l’envoi (laissez le champ libre pour toujours).',
     'The days of the month on which to send.' => 'Les jours du mois où il faut envoyer.',
     'The days of the week on which to send.' => 'Les jours de la semaine où il faut envoyer.',
     'The default contacts to use for test emails (leave blank to use a contact with the same email address as the currently logged-in user).' => 'Les contacts par défaut à utiliser pour les email de test (laissez vide pour utiliser l’utilisateur actuellement connecté).',
     'The email sending service to use for sending.' => 'Le service d’envoi d’email à utiliser pour l’envoi.',
     'The email subject (emojis allowed 🎉).' => 'Le sujet de la newsletter (emojis autorisées 🎉).',
+    'The error message to display if a form submission is blocked.' => '',
     'The execution time limit per sendout batch in seconds (set to 0 for unlimited).' => 'La limite de temps d’exécution par lot d’envoi en secondes (0 pour illimité).',
     'The file you selected to upload must be a CSV file.' => 'Le fichier requis pour le téléchargement doit être un fichier CSV.',
     'The following contact fields are available:' => 'Les champs de contact suivants sont disponibles:',
@@ -631,6 +638,8 @@
     'The template to use when a contact successfully unsubscribes from a mailing list (leave blank for default message template).' => 'Le template à utiliser lorsqu’un contact se désabonne avec succès d’une liste de diffusion (laisser vide pour utiliser le template par défaut).',
     'The template to use when a contact verifies their email address (leave blank for default message template).' => 'Le template à utiliser lorsqu’un contact vérifie son adresse mail (laisser vide pour utiliser le template par défaut).',
     'The time of day from which to send (recommended).' => 'L’heure à laquelle envoyer (recommandé).',
+    'The Turnstile secret key for this domain.' => '',
+    'The Turnstile site key for this domain.' => '',
     'The value in the CSV file should be an array of element IDs surrounded by double quotation marks, for example: {value}' => 'La valeur dans le fichier CSV doit être un tableau d’ID d’éléments entourés de guillemets doubles, par exemple : {valeur}',
     'The value in the CSV file should be an array of option values surrounded by double quotation marks, for example: {value1}. Two double quotation marks should be used for escaping string values, for example: {value2}' => 'La valeur du fichier CSV doit être un tableau de valeurs d’options entourées de guillemets doubles, par exemple : {valeur1}. Deux guillemets doubles doivent être utilisés pour échapper aux valeurs des chaînes de caractères, par exemple : {valeur1} : {valeur2}.',
     'This email address is blocked from subscribing.' => 'Cette adresse mail est bloquée pour l’inscription.',
@@ -651,6 +660,10 @@
     'To' => 'À',
     'Total' => 'Total',
     'Transport Type' => 'Type de transport',
+    'Turnstile Error Message' => '',
+    'Turnstile Secret Key' => '',
+    'Turnstile Settings' => '',
+    'Turnstile Site Key' => '',
     'Unable to upload CSV file.' => 'Impossible de télécharger le fichier CSV.',
     'Unknown' => 'Inconnu',
     'Unlimited' => 'Illimité',