Eigene Übersetzungen dauerhaft nutzen

Jun 3, 2021 | WordPress

Vor einiger Zeit hatte ich mich kräftig geärgert, und zwar über die deutsche WordPress-Community. Anlass war ein Plugin, das ich auf jeder von mir betreuten Sites verwende. Die vorhandene deutsche Übersetzung war schon etwas älter und hatte mit der aktuellen Plugin-Version fast gar nichts mehr zu tun. Ergebnis war ein deutsch-englisches Mischmasch, das den Anwender stirnrunzelnd mit einigen Fragezeichen zurücklassen würde.
So machte ich mich an die Arbeit, übersetzte die Strings und lud sie anschließend auf die WordPress-Übersetzungsplattform hoch. Dort steht geschrieben, wenn mehr als 90 Prozent der Strings übersetzt seien, werde automatisch eine Sprachdatei generiert. Doch WordPress kennt wohl die deutsche Community nicht. Hier ist es offenbar wichtiger, Grundsätzliches wie das Für und Wider der Verwendung eines Begriffs wie “Zeilenhöhe” zu klären – ob der Anwender eine gute Übersetzung sieht, ist zweitrangig. Folgerichtig geschah: nichts.
Es kann immer mal passieren, dass eine Übersetzung nicht passt, oder auch schlichtweg falsch ist. Ich würde zum Beispiel erwarten, dass eine “formale” Sprachdatei (Anrede: “Sie”) nicht plötzlich beginnt, den Anwender zwischenzeitlich zu duzen (das stört die Community offenbar weniger). Nun kann man die Sprachdatei zwar selbst korrigieren, aber die Korrektur hält nur bis zum nächsten Plugin- oder WordPress-Update. Dann werden alle Sprachdateien gnadenlos überschrieben.

Wenn Sie Schreibzugriff auf die WordPress-Verzeichnisstruktur haben, gibt es eine komfortable und dauerhafte Lösung für das Problem (wenn nicht, fragen Sie Ihren Provider …).
Damit Ihre eigenen Übersetzungen nicht überschrieben werden, müssen Sie sie an einem anderen Ort als dem allgemeinen Übersetzungsordner speichern. Dazu legen Sie parallel zu dem Verzeichnis wp-content/languages eine neue Struktur an, die Sie z.B. my-languages nennen. Unterhalb dieses Verzeichnisses erstellen Sie die Ordner plugins und themes. Je nachdem, ob es um ein Plugin oder ein Thema geht, platzieren Sie in diesen Ordnern Ihre persönlichen Übersetzungen. Die Bezeichnungen der Sprachdateien müssen mit denen der Originaldateien übereinstimmen.

Im Verzeichnis wp-content/mu-plugins speichern Sie den folgenden Code als PHP-Datei mit beliebiger Dateibezeichnung:

function my_custom_load_textdomain ($domain = '', $mofile = '') {
$basedir = trailingslashit(WP_LANG_DIR);
$baselen = strlen($basedir);
// nur ausfuehren, wenn sich die zu ladende Datei im Verzeichnis WP_LANG_DIR befindet
if ($basedir === substr($mofile,0,$baselen)) {
// das eigene Verzeichnis ist parallel zum allgemeinen Sprachenverzeichnis
// ändern Sie den Verzeichnisnamen eventuell ab
if ($mofile = realpath($basedir . '../my-languages/' . substr($mofile,$baselen))) {
load_textdomain($domain, $mofile);
}
}
}
add_action('load_textdomain', 'my_custom_load_textdomain', 10, 2);

Plugins im Verzeichnis mu-plugins werden immer zuerst, in alphabetischer Reihenfolge, geladen – vor allen “normalen” Plugins. Bei den installierten Plugins werden sie als “obligatorisch” angezeigt. Sie können nicht versehentlich deaktiviert werden.
Ihre eigenen Übersetzungsdateien müssen nur die Zeichenfolgen enthalten, die Sie geändert sehen möchten. Beim Zusammenführen von zwei Übersetzungen wird eine bereits existierende Version nicht überschrieben. Im obigen Code wird Ihre eigene Datei zuerst verarbeitet, und nur Strings, die nicht existieren, werden anschließend aus der “Werksversion” hinzugeführt.