it-swarm.com.de

Wie werden Plugin-Übersetzungen nach Updates beibehalten?

http://wordpress.org/extend/plugins/bbpress/ bbpress 'Sprachordner (wp-content/plugins/bbpress/bbp-languages) hat diese Warnung:

/**
 * Do not put custom translations here. They will be deleted on bbPress updates.
 *
 * Keep custom bbPress translations in /wp-content/languages/
 */

Eigentlich ist das kein neues Problem und ja, sie haben Recht. Dies ist ein großes Problem, wenn Sie WordPress-Plugins mit einer anderen Sprache als Englisch verwenden.

Grundsätzlich übersetzte ich bbpress und erstellte .po und .mo Dateien. Dateien funktionieren, wenn ich sie in ihren normalen Ordner wp-content/plugins/bbpress/bbp-languages ​​lege. Aber wie oben schon gesagt, wird das beim Update gelöscht. Aber das Problem ist, dass das Übersetzen nicht funktioniert, wenn ich sie in den Ordner wp-content/languages ​​/ lege, wie in bbpress vorgeschlagen.

Ich denke, es muss einen Haken geben oder etwas, das ich aktivieren kann, aber was ist die beste Lösung dafür? Ich möchte einfach Plugin-Sprachdateien in wp-content/languages ​​/ behalten.

9
Ünsal Korkmaz

Sie müssen den Aufruf der Sprachdatei von BBpress ersetzen.

Ein guter Ort, um dies zu tun, ist eine sprachspezifische Datei in Ihrem allgemeinen Sprachverzeichnis. Für Türkisch wäre es wahrscheinlich eine Datei mit dem Namen tr_TR.php. Dies wird automatisch geladen und nur wenn es der Sprache Ihres Blogs entspricht. Es wird nicht überschrieben.

BBPress verwendet nicht die Funktion load_plugin_textdomain, sondern load_textdomain. Hier finden Sie einen Filter:

$mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );

Fügen Sie in Ihrer PHP-Sprachdatei einfach einen Filter hinzu, um den Pfad zu ändern:

function load_bbpress_tr_mofile( $mofile, $domain )
{
    if ( 'bbpress' == $domain )
    {
        // replace this. :)
        return 'FULL_PATH_TO_YOUR_FILE';
    }
    return $mofile;
}
add_filter( 'load_textdomain_mofile', 'load_bbpress_tr_mofile', 10, 2 );
3
fuxia

Sie müssen lediglich ein einfaches Plugin erstellen, das die text_domain der installierten Plugins verwaltet. Wenn Sie keine globale Lösung haben möchten, können Sie den Code zu Ihrer functions.php in Ihrem Theme hinzufügen.

Die Idee ist, WordPress anzuweisen, wo Übersetzungen zu finden sind. Intern geschieht dies in allen Plugins mit etwas ähnlichem

load_plugin_textdomain( 'regenerate-thumbnails', false, '/regenerate-thumbnails/localization' );

dies ist die Funktion, die Sie verwenden werden. Wie Sie hier sehen können, wird das letzte Argument verwendet, um den relativen Pfad zum Plugin festzulegen, in dem sich die Übersetzungsdateien befinden.

Sie können tun, was Sie möchten, indem Sie für jedes Plugin, dessen Sprachordner Sie ändern möchten, eine Zeile wie folgt einfügen.

load_plugin_textdomain('bbpress', false, '../../languages/bbpress');

dadurch wird WordPress angewiesen, Ihre benutzerdefinierten Übersetzungsdateien aus einem Ordner neben dem Ordner plugins zu laden, der einen Ordner mit dem Namen bbpress enthält, in dem die Übersetzungsdateien den gleichen EXACT-Namen haben, den jedes Plugin verwendet.

Ihre Methode, die die Textdomänen für alle Plugins anweist, sollte in der init-Phase wie folgt ausgeführt werden

function set_myplugins_languages() {
     .... your code here.....
}
add_action('init', 'set_myplugins_languages');

(Vergessen Sie nicht, dies als Antwort zu markieren, wenn Sie es nützlich fanden.)

2
Odys

Damit dies funktioniert, müssen Sie die WordPress-Übersetzungsdateien bereits in WP_LANG_DIR haben und das globale Gebietsschema auf diese Sprache eingestellt haben. Wenn Sie nur Übersetzungen für bbPress einbinden, ohne das Gebietsschema zu ändern oder die wichtigsten Übersetzungsdateien von WordPress zu haben, wird nichts übersetzt, obwohl Sie sie laden.

Wenn Sie das Gebietsschema nur für bbPress überschreiben möchten, müssen Sie 'bbpress_locale' einen Filter hinzufügen, mit dem Sie die bbPress mo-Datei überschreiben können.

Obwohl bbPress 2.0 die Funktion load_textdomain () verwendet, ist load_plugin_textdomain () ohnehin nur ein Wrapper für load_textdomain (). Die bbPress 2.0-Methode ist robuster und ermöglicht die globale Platzierung von Übersetzungsdateien, sodass Sie diese während des Plugin-Updates nicht verlieren.

0