MailPoet auf die Sie-Form umstellen (Gettext)
Problem
MailPoet verwendet in der deutschen Übersetzung teilweise die Du-Form. Bei Unternehmenswebsites passt das häufig nicht zum restlichen Sprachstil.
Die meisten Texte lassen sich problemlos über den WordPress-Filter gettext ersetzen.
Besonderheit bei MailPoet
Bei vielen Plugins reicht es aus, den englischen Originaltext zu ersetzen.
MailPoet funktioniert allerdings etwas anders:
- manche Texte kommen auf Englisch,
- manche bereits auf Deutsch,
- teilweise werden sie schon vor unserem Filter übersetzt.
Deshalb sollte immer sowohl gegen den Originaltext als auch gegen den bereits übersetzten Text geprüft werden.
Zusätzlich empfiehlt es sich, keinen Domain-Check (mailpoet) zu verwenden. MailPoet liefert je nach Ausgabe nicht immer dieselbe Textdomain. Ohne Domain-Check funktioniert das Snippet wesentlich zuverlässiger.
Snippet
add_filter('gettext', 'custom_mailpoet_sie_form_translations', 99, 3);
add_filter('gettext_with_context', 'custom_mailpoet_sie_form_translations_context', 99, 4);
function custom_mailpoet_sie_form_translations($translated, $text, $domain) {
$translations = [
// =========================
// Einstellungen
// =========================
'Your email settings' =>
'Ihre E-Mail-Einstellungen',
'Review your email address and choose whether you can receive emails from this site.' =>
'Prüfen Sie Ihre E-Mail-Adresse und legen Sie fest, ob Sie E-Mails von dieser Website erhalten möchten.',
'Need to change your email address? Unsubscribe here, then simply sign up again.' =>
'Möchten Sie Ihre E-Mail-Adresse ändern? Tragen Sie sich einfach hier aus und registrieren Sie sich anschließend erneut.',
'Musst du deine E-Mail-Adresse ändern? Trage dich einfach hier aus und registriere dich erneut.' =>
'Möchten Sie Ihre E-Mail-Adresse ändern? Tragen Sie sich einfach hier aus und registrieren Sie sich anschließend erneut.',
// =========================
// Abonnement
// =========================
'Email subscription status' =>
'Status Ihres Newsletter-Abonnements',
'Email subscription status *' =>
'Status Ihres Newsletter-Abonnements *',
'This controls whether you receive emails overall. Your list choices below control which public lists you receive.' =>
'Hier legen Sie fest, ob Sie grundsätzlich E-Mails von uns erhalten möchten. Die Auswahl weiter unten bestimmt, welche öffentlichen Newsletter Sie abonnieren.',
'There are no individual list preferences to manage for this email address.' =>
'Für diese E-Mail-Adresse stehen keine individuellen Newsletter-Einstellungen zur Verfügung.',
'Ja, wir haben dich in unsere E-Mail-Liste eingetragen. Du wirst in Kürze von uns hören.' =>
'Sie wurden erfolgreich in unseren Newsletter eingetragen.',
'Du hast' =>
'Sie haben',
// =========================
// Abmeldung
// =========================
'Confirm your unsubscribe' =>
'Bestätigen Sie Ihre Abmeldung',
'Bestätige deine Abmeldung' =>
'Bestätigen Sie Ihre Abmeldung',
'Simply click on this link to stop receiving emails from us.' =>
'Klicken Sie einfach auf diesen Link, wenn Sie künftig keine E-Mails mehr von uns erhalten möchten.',
'You are now unsubscribed.' =>
'Sie wurden erfolgreich vom Newsletter abgemeldet.',
'Du bist nun ausgetragen.' =>
'Sie wurden erfolgreich vom Newsletter abgemeldet.',
// =========================
// Verwaltung
// =========================
'Manage your subscription' =>
'Newsletter-Abonnement verwalten',
'Verwalte dein Abonnement' =>
'Newsletter-Abonnement verwalten',
'Thank you for letting us know!' =>
'Vielen Dank für Ihre Rückmeldung!',
'Danke, dass du es uns mitteilst!' =>
'Vielen Dank für Ihre Rückmeldung!',
'We appreciate your continued interest in our updates. You’ll hear from us again soon!' =>
'Es freut uns, dass Sie unseren Newsletter weiterhin erhalten möchten. Schon bald informieren wir Sie wieder über Neuigkeiten und interessante Themen.',
'We appreciate your continued interest in our updates. You\'ll hear from us again soon!' =>
'Es freut uns, dass Sie unseren Newsletter weiterhin erhalten möchten. Schon bald informieren wir Sie wieder über Neuigkeiten und interessante Themen.',
'Wir wissen dein anhaltendes Interesse an unseren Updates zu schätzen. Du wirst bald wieder von uns hören!' =>
'Es freut uns, dass Sie unseren Newsletter weiterhin erhalten möchten. Schon bald informieren wir Sie wieder über Neuigkeiten und interessante Themen.',
// =========================
// Buttons
// =========================
'Save changes' =>
'Änderungen speichern',
'Save Changes' =>
'Änderungen speichern',
'Änderungen sichern' =>
'Änderungen speichern',
];
if (isset($translations[$text])) {
return $translations[$text];
}
if (isset($translations[$translated])) {
return $translations[$translated];
}
return $translated;
}
function custom_mailpoet_sie_form_translations_context($translated, $text, $context, $domain) {
return custom_mailpoet_sie_form_translations($translated, $text, $domain);
}
Warum wird gegen $translated geprüft?
Bei vielen Plugins erhält der gettext-Filter immer den englischen Originaltext.
MailPoet liefert jedoch an verschiedenen Stellen bereits den übersetzten deutschen Text an den Filter. Würde nur gegen $text geprüft werden, greifen viele Übersetzungen nicht.
Deshalb werden beide Varianten abgefragt:
if (isset($translations[$text])) {
return $translations[$text];
}
Dadurch funktionieren sowohl englische als auch bereits übersetzte deutsche Texte zuverlässig.
Tipp
Falls eine Übersetzung dennoch nicht greift, liegt das fast immer daran, dass MailPoet den Text leicht verändert hat (z. B. andere Zeichensetzung oder Formulierung).
In diesem Fall einfach den exakten Wortlaut aus der Oberfläche oder aus Loco Translate übernehmen und als weiteren Eintrag in das $translations-Array aufnehmen.