http://wordpress.org/extend/plugins/bbpress/ Der Sprachordner von bbpress (wp-content / plugins / bbpress / bbp-language) enthält 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 nicht englischen Sprache verwenden.
Grundsätzlich habe ich bbpress übersetzt und .po und .mo Dateien erstellt. Dateien funktionieren, wenn ich sie in ihren normalen Ordner wp-content / plugins / bbpress / bbp-Languages lege. Aber wie oben angegeben, wird die Warnung 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 / language / behalten
quelle
Antworten:
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 mit der Sprache Ihres Blogs übereinstimmt. Es wird nicht überschrieben.BBPress verwendet die Funktion nicht
load_plugin_textdomain
,load_textdomain
sondern. Hier finden Sie einen Filter:Fügen Sie in Ihrer Sprach-PHP-Datei einfach einen Filter hinzu, um den Pfad zu ändern:
quelle
WP_LANG_DIR
) und Ihrer Mo-Datei.load_plugin_textdomain()
Führen Sie Ihre Aufrufe während der Aktion "init" durch, andernfalls können wir uns nicht in den Filter "load_textdomain_mofile" einbinden. Dann ist es schon zu spät.Sie müssen lediglich ein einfaches Plugin erstellen, das die text_domain der installierten Plugins verwaltet. Wenn Sie keine globale Lösung wünschen, können Sie den Code zu Ihrer functions.php in Ihrem Thema hinzufügen.
Die Idee ist, WordPress anzuweisen, wo Übersetzungen zu finden sind. Intern erfolgt dies in allen Plugins mit etwas ähnlichem wie
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 wollen, indem Sie für jedes Plugin, dessen Sprachordner Sie ändern möchten, eine Zeile wie folgt einfügen.
Dadurch wird WordPress angewiesen, Ihre benutzerdefinierten Übersetzungsdateien aus einem Ordner neben einem
plugins
Ordner mit einem Ordnerbbpress
mit den Übersetzungsdateien zu laden, wobei der gleiche Name wie für jedes Plugin verwendet wird.Ihre Methode, die die Textdomänen für alle Plugins anweist, sollte in der folgenden
init
Phase ausgeführt werden(Vergessen Sie nicht, dies als Antwort zu markieren, wenn Sie es nützlich fanden.)
quelle
Damit dies funktioniert, müssen die WordPress-Übersetzungsdateien bereits im WP_LANG_DIR vorhanden sein und das globale Gebietsschema auf diese Sprache eingestellt sein. Wenn Sie nur Übersetzungen für bbPress einfügen, ohne das Gebietsschema zu ändern oder die wichtigsten Übersetzungsdateien von WordPress zu haben, wird nichts übersetzt, obwohl Sie sie geladen haben.
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.
Während es stimmt, dass bbPress 2.0 die Funktion load_textdomain () verwendet, ist load_plugin_textdomain () sowieso nur ein Wrapper für load_textdomain (). Die bbPress 2.0-Methode ist robuster und ermöglicht die globale Platzierung von Übersetzungsdateien, sodass Sie sie während des Plugin-Updates nicht verlieren.
quelle
In meinem Fall erfordert das Erstellen einer permanenten benutzerdefinierten Übersetzung für das Plugin die folgenden Schritte (Beispiele für die Übersetzung des ACF-Plugins):
wp-content/languages/plugins/
Verzeichnis erstellen.po
aus dem Plugin-lang/
Ordner (oder einer anderen mit Übersetzungen) in die erstellte Dateiwp-content/languages/plugins/
(z. B. vonlang/acf-pl_PL.po
biswp-content/languages/plugins/acf-pl_PL.po
)..po
Dateien und dann generieren.mo
und speichert inwp-content/languages/plugins/
(zBwp-content/languages/plugins/acf-pl_PL.mo
)Auf diese Weise sollte die Übersetzung auch nach dem Plugin-Update erhalten bleiben.
Ich bin nicht sicher, ob diese Strategie für alle Plugins funktioniert, aber das ist definitiv einen Versuch wert.
quelle