Ankerlink an den Anfang der Seite
foto von olilynch
Generic filters
Filter by Kategorien

Der Beitrag, geschriebem am 12. März 2022, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein

Die erste Wahl, eigene Übersetzungsdateien anzulegen und zu verwenden, ist das Plugin Loco Translate. Wer Sprachdateien allerdings lieber mit poedit verwaltet, kann mit dem load_textdomain_mofile-Filter festlegen, dass die eigene Übersetzungs-Datei statt der offiziellen geladen wird.

add_filter( 'load_textdomain_mofile', function ( $mofile, $domain ){

     if ( file_exists(  WP_LANG_DIR . '/custom/themes/' . $domain . '-' . get_locale() . '.mo' ) ) {
        $mofile = WP_LANG_DIR . '/custom/themes/' . $domain . '-' . get_locale() . '.mo';
        return $mofile;
    } elseif ( file_exists(  WP_LANG_DIR . '/custom/plugins/' . $domain . '-' . get_locale() . '.mo' ) ) {
        $mofile = WP_LANG_DIR . '/custom/plugins/' . $domain . '-' . get_locale() . '.mo';
        return $mofile;
    } else {
        return $mofile;
    }

}, 10, 2 ); 

Allerdings klappte in einem Fall neulich weder das eine, noch das andere. Die eigene Sprachdatei wurde weder über Loco Translate, noch über den Filter geladen. Es lag an der Art und Weise, wie in dem Plugin die text_domain definiert war – abhängig davon, ob an der üblichen Stelle eine Übersetzungsdatei zu finden war.

In diesem Fall half, wie im folgenden Snippet vorzugehen, und die textdomain zuerst zu entfernen, und dann mit Verweis auf die eigene Sprachdatei neu zu laden.

add_action('plugins_loaded', function() {

    $text_domain = 'plugin-name';
    $locale = get_locale();

    $nlf = trailingslashit( WP_LANG_DIR )   . trailingslashit('custom/plugins')  . sanitize_title( $text_domain ) . '-' . $locale . '.mo';
    $olf = trailingslashit( WP_LANG_DIR )   . trailingslashit('plugins')  . sanitize_title( $text_domain ) . '-' . $locale . '.mo';
    
    unload_textdomain($text_domain);
    // custom file(s) first
    load_textdomain($text_domain, $nlf );
    // original translation file(s) second
    load_textdomain($text_domain, $olf );
  
});

Bitte das Kommentarfeld nicht für Supportanfragen nutzen; hier kann kein Support angeboten werden. Die Angabe von Name oder E-Mail-Adresse ist optional, ein Spitzname wäre trotzdem nett.

Schreibe einen Kommentar

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

Hinweis: Name und E-Mail-Adresse (beides optional, da alle Kommentare moderiert werden) werden dauerhaft gespeichert. Über dieses Formular kann jeder Zeit die Löschung persönlicher Daten oder Kommentare angefordert werden; die Anfrage wird nicht veröffentlicht und nach der Bearbeitung gelöscht. IP-Adressen, die mit Kommentaren gespeichert werden, werden nach zwei Monaten automatisch gelöscht.

Ihre Nachricht wird möglicherweise zur Spam-Prüfung an OpenAI (USA) weitergeleitet. Weitere Informationen finden Sie in unserer Datenschutzerklärung.