Das Plugin ist zwar wirklich prima, nur habe ich ein kleines Problem. Wenn ich bspw. ein Plugin übersetze und die mo schreibe, so werden diese auf dem Server im Language-Ordner immer unter anderem Namen gespeichert, also nicht so, wie die anderen Sprachdateien heißen. Meist ist es ja so, dass die deutsche Sprachdatei de_DE.mo/po heißt, CL legt diese Files aber als pluginxy-de_DE.mo/po an. Eigentlich ja kein Problem, benennt man die Files einfach um, aber wenn man im Nachhinein doch noch was ändern möchte und die Files wieder umbenennt zu dem Dateinamen wie CL die Files angelegt hat, so sind in den Dateien die Übersetzungen nicht mehr vorhanden. Gibt es dafür einen Workaround?
Problem mit Codestyling Localization
-
-
- Gerade eben
- Anzeige
Hallo!
Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.
- ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
- ✔️ Deutsche Server & DSGVO-konform
- ✔️ Persönlicher Support (kein 0815-Ticket-System)
-
Meist ist es ja so, dass die deutsche Sprachdatei de_DE.mo/po heißt, CL legt diese Files aber als pluginxy-de_DE.mo/po an.
Das ist nicht richtig. Wenn der Author das Plugin korrekt geschrieben hat, dann wird die Sprachdatei auch mit dieser Kombination mittels der Funktion load_plugin_texdomain geladen, hier der WordPress Core Code Ausschnitt:PHP
Alles anzeigenfunction load_plugin_textdomain( $domain, $abs_rel_path = false, $plugin_rel_path = false ) { $locale = apply_filters( 'plugin_locale', get_locale(), $domain ); if ( false !== $plugin_rel_path ) { $path = WP_PLUGIN_DIR . '/' . trim( $plugin_rel_path, '/' ); } else if ( false !== $abs_rel_path ) { _deprecated_argument( __FUNCTION__, '2.7' ); $path = ABSPATH . trim( $abs_rel_path, '/' ); } else { $path = WP_PLUGIN_DIR; } $mofile = $path . '/'. $domain . '-' . $locale . '.mo'; return load_textdomain( $domain, $mofile ); }
Wie man sieht, wird die Textdomain mit dem Sprache verknüpft, der Dateiname so gebildet und auch so angeladen. Damit ist auch die Arbeitsweise von meinem Plugin korrekt.Den Fall, den du beschreibst, sieht mir nach einem Progammierfehler im Plugin aus. Kannst du den Plugin Download bereitstellen, damit man sich das fehlerhafte Plugin ansehen kann?
-
Ich kenne mich leider mit dem Code überhaupt nicht aus, daher kann ich darin nichts erkennen und erlesen. Es taucht bei mir bei so gut wie allen Plugins auf, die ich übersetzt haben, die da wären:
Buddypress Easy Albums
Buddypress Achievements
Buddystream
Buddypress Invite AnyoneDas müssten eigentlich alle sein, wo ich die Probleme hatte...
-
Fehlerbeschreibung anhand von "Invite Anyone"
Der Author lädt die Sprachdatei nach eigenem Ermessen und nicht passend zu dem, was für Plugins standard ist:PHPfunction invite_anyone_locale_init () { $plugin_dir = basename(dirname(__FILE__)); $locale = get_locale(); $mofile = WP_PLUGIN_DIR . "/invite-anyone/languages/invite-anyone-$locale.mo"; if ( file_exists( $mofile ) ) load_textdomain( 'bp-invite-anyone', $mofile ); } add_action ('plugins_loaded', 'invite_anyone_locale_init');
Anstatt load_plugin_textdomain zu benutzen, wird auch hier der Dateiname selbst konstruiert und mittels load_textdomain geladen. Dies wiederum führt dazu, wie die Warnung meines Plugins bereits aussagt, daß es im Ladeverhalten zu Problemen kommen kann.
Da der Author außerdem noch die Textdomain im PHP Code so verwendet:
wird mein Plugin nur Sprachdateien erzeugen und/oder akzeptieren, die dem Plugin Schema unterliegen, also:bp-invite-anyone-de_DE.po
bzw.
bp-invite-anyone-de_DE.moDer Author versucht allerdings eine Datei "invite-anyone-de_DE.mo" zu laden, die mein Plugin gar nicht erzeugt.
Der Ladecode und die Sprachdateinamen müssten angepasst werden, damit das auch dem Standard entspricht. Du kannst das gern anpassen aber teile dies auch dem Author mit, denn Abweichungen von der standardisierten Ladeprozedur für Sprachdateien (Plugin, Themes oder Core) führen meist zu weiteren, nicht einfach zu lösenden Problemen oder Fehlverhalten von WordPress.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!