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. Learn more'|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') ~ ' ' ~ 'Learn more'|t('campaign') ~ '',
}, 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. Learn more'|t('campaign', { url: 'https://developers.google.com/recaptcha/docs/v3' }),
+ instructions: 'Enable reCAPTCHA v3 to protect mailing list subscription forms from bots.'|t('campaign') ~ ' ' ~ 'Learn more'|t('campaign') ~ '',
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. Learn more'|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') ~ ' ' ~ 'Learn more'|t('campaign') ~ '',
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.
See this article 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. Learn more' => 'Aktivieren Sie reCAPTCHA v3, um Mailing-Listen-Formulare vor Bots zu schützen. Mehr erfahren',
- '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. Learn more' => '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. Mehr erfahren',
+ '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.
See this article 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. Learn more' => '',
- '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. Learn more' => '',
+ '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.
See this article 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. Learn more' => 'Activer reCAPTCHA v3 pour empêcher des inscriptions de robots aux listes de diffusion. Learn more',
- '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. Learn more' => '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. En savoir plus',
+ '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é',