WordPress: Language string failed to load: instantiate

Heute, beim Arbeiten am Plugin „Post Notification„, erhielt ich mehrere Male die folgende Fehlermeldung:

Language string failed to load: instantiate

Bei der Suche nach einer Problemlösung, bin ich auf einige interessante Seiten gestoßen, deren Inhalte ich hier kurz zusammenfassen möchte.

Windows-Server: Probleme mit class-phpmailer.php

Anscheinend kann es bei Windows-Servern zu Problemen mit dem WordPress-PHPMailer kommen. In der Datei wp-includes/class-phpmailer.php ist folgender Code zu suchen und zu ersetzen:

Suchen:
/**
* Formats an address correctly.
* @access private
* @return string
*/
function AddrFormat($addr) {
if(empty($addr[1]))
$formatted = $addr[0];
else
{
$formatted = $this->EncodeHeader($addr[1], ‘phrase’) . ” <” .
$addr[0] . “>”;
}

return $formatted;
}

Ersetzen durch:
/**
* Formats an address correctly.
* @access private
* @return string
*/
function AddrFormat($addr) {

$formatted = $addr[0];

return $formatted;
}

Fehlende Übersetzung in PHPMailer

Codestyling.de berichtet in seinem Blog über eine fehlende Übersetzung des PHP-Mailers, welche die oben zitierte Fehlermeldung verursachen kann. Die PHP-Klasse benötigt eine eigene Sprachdatei, die so nicht von WordPress mitgeliefert wird. Fehlt diese Datei kann es zu Fehlermeldungen kommen.

Lösung:
Eine Datei phpmailer.lang-en.php im Verzeichnis wp-includes/language anlegen und die Datei folgendermaßen füllen:
/**
* PHPMailer language file.
* German Version
* Thanks to Yann-Patrick Schlame for the latest update!
*/

$PHPMAILER_LANG = array();

$PHPMAILER_LANG[„provide_address“] = ‚Bitte geben Sie mindestens eine ‚ .
‚Empfänger Emailadresse an.‘;
$PHPMAILER_LANG[„mailer_not_supported“] = ‚ mailer wird nicht unterstützt.‘;
$PHPMAILER_LANG[„execute“] = ‚Konnte folgenden Befehl nicht ausführen: ‚;
$PHPMAILER_LANG[„instantiate“] = ‚Mail Funktion konnte nicht initialisiert werden.‘;
$PHPMAILER_LANG[„authenticate“] = ‚SMTP Fehler: Authentifizierung fehlgeschlagen.‘;
$PHPMAILER_LANG[„from_failed“] = ‚Die folgende Absenderadresse ist nicht korrekt: ‚;
$PHPMAILER_LANG[„recipients_failed“] = ‚SMTP Fehler: Die folgenden ‚ .
‚Empfänger sind nicht korrekt: ‚;
$PHPMAILER_LANG[„data_not_accepted“] = ‚SMTP Fehler: Daten werden nicht akzeptiert.‘;
$PHPMAILER_LANG[„connect_host“] = ‚SMTP Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.‘;
$PHPMAILER_LANG[„file_access“] = ‚Zugriff auf folgende Datei fehlgeschlagen: ‚;
$PHPMAILER_LANG[„file_open“] = ‚Datei Fehler: konnte folgende Datei nicht öffnen: ‚;
$PHPMAILER_LANG[„encoding“] = ‚Unbekanntes Encoding-Format: ‚;
$PHPMAILER_LANG[„signing“] = ‚Fehler beim Signieren: ‚;

?>

Verwenden von @@title in der Betreffzeile

In meinem Fall lag der Fehler nicht an fehlenden oder falschen PHP-Codes, sondern einfach am Plugin Post Notification, das seltsamerweise Probleme machte, sobald ich den Code @@title im Betreff einfüge. Anscheinend tritt das Problem nicht bei allen Nutzern des Plugins auf. Mir persönlich ist das auch egal. Wichtig ist mir, dass ich nun weiß, weshalb es zu Störungen beim Mailversand kam und nun alles wieder funktioniert.

Über 

3 Responses to WordPress: Language string failed to load: instantiate

  1. Tangier sagt:

    Ich hab mal ’nen „more“ zwischengesetzt^^

  2. Tom sagt:

    Danke 🙂
    Das vergess ich gerne mal, da ich früher ein Plugin hatte, das automatisch den more-Tag gesetzt hat 😉

  3. FooBar sagt:

    Das Ersetzen der AddrFormat() ist nur…hm…irgendwie blöd – damit nehmt ihr den ganzen Sinn der Funktion raus.
    In der „alten“ Version kann man die eMails schön mit Namen versehen – eure neue Version liefert nur noch die eMailadresse.
    Ich sehe da irgendwie keine Verbesserung, egal in welcher Hinsicht.
    Falls die Änderung aufgrund von Problemen gemacht wurde ist es eher ratsam, in der Funktion EncodeHeader() nach den Ursachen zu suchen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.