WP: Plugin-Sprachdateien vor dem Überschreiben beim Update schützen

by Connie on Juli 29, 2013

Es ist ja schon gut, wenn ein Plugin Sprachdateien vorsieht und diese auch noch mit GetText generiert, man also mithilfe der *:Po-Dateien zusätzliche Sprachdateien erstellen oder vorhandene editieren kann.

Leider gehen diese Änderungen bei jedem Plugin-Update verloren, denn WP löscht beim Update erstmal alle Dateien in den betreffenden Ordnern, bevor die neuen Dateien eingespielt werden.

Es gibt aber Möglichkeiten, die solcherart veränderten Dateien überschreibsicher einzubinden, und das ist mir heute endlich mal gelungen.  Gert de Deckere beschreibt in einem Beitrag wie man Sprachdateien richtig einbindet und damit habe ich mich dann heute beschäftigt.

Am Beispiel des Plugins Event Organiser möchte ich das kurz beschreiben.

  1. Das Plugin speichert die Sprachdateien im Ordner /wp-content/plugins/event-organiser/languages.
    Dort findet man die Dateien eventorganiser.mo, eventorganiser.po, die man für ganz neue Sprachdateien benötigt, und die Dateien eventorganiser-de_DE.mo und eventorganiser-de_DE.mo für WordPress-Installation mit der Spracheinstellung de_DE.
  2. Wichtig zu wissen: Im Vorspann einer Plugin-Datei findet man die Informationen zur Identifizierung der Sprachdateien.
    Plugin Name: Event Organiser
    Text Domain: eventorganiser
    …..
    Domain Path: /languages
    Zusätzlich braucht man zur Anpassung noch den Namen des jeweiligen Plugin-Folders, in unserem Fall event-organiser (nicht nachvollziehbar, warum der Entwickler mal mit und mal ohne Bindestrich benamst…)
  3. Bearbeiten kann man die Sprachdatei entweder mit dem PC-Programm POEDIT oder mit einem WP-Plugin.
  4. Beim nächsten Update sind die Änderungen aber wieder weg.
  5. Also geht man zum sicheren Abspeichern so vor:
    • im Ordner wp-content/languages auf dem Server legt man ein Unterverzeichnis an, das den gleichen Namen trägt wie das jeweilige Plugin. In diesem Beispiel also event-organiser
    • In den Ordner /wp-content/languages/event-organiser werden die abgeänderten oder neu angelegten Sprachdateien abgespeichert, also eventorganiser-de_DE.mo und eventorganiser-de_DE.po
    • Nun muss in der Datei functions.php des eingesetzten Themes eine Funktion eingebunden werden, die die relevante Sprachdatei nicht aus dem Original-Plugin-Verzeichnis, sondern aus dem eben angelegten Order im WPLANG-Standard-Verzeichnis liest.
  6. Ist das alles durchgeführt, kann man  testen ob die gewünschte Sprachdatei beim Laden der Seiten genutzt wird, denn nun gibt es im Plugin-Language-Verzeichnis wie auch im neu angelegten Verzeichnis /wp-content/languages/event-organiser gleichnamige Sprachdateien.

Hier nun die Änderung in der Datei functions.php:

//load language-files the correct way:
//http://geertdedeckere.be/article/loading-wordpress-language-files-the-right-way
add_action('load_textdomain', 'load_custom_language_files_for_my_plugin', 10, 2);
function load_custom_language_files_for_my_plugin($domain, $mofile)
{
    // Note: the plugin directory check is needed to prevent endless function nesting
    // since the new load_textdomain() call will apply the same hooks again.
    if ('eventorganiser' === $domain && plugin_dir_path($mofile) === WP_PLUGIN_DIR.'/event-organiser/languages/')
    {
load_textdomain('eventorganiser', WP_LANG_DIR.'/event-organiser/'.$domain.'-'.get_locale().'.mo');
   }
}

Dabei gilt:

eventorganiser = $domain und event-organiser = Name des Plugin-Verzeichnisses

nachdem ich das mit dem Bindestrich geschnallt hatte, klappte alles wie gewünscht.

Und hier die Sprachdateien dieses Plugins, die auf der Dateiversion von Ania Groß beruht. Danke dafür!

2 comments

darüber streiten sich die Geister.
Ich habe viele Funktionen in Themen eingebaut, um das System zu „verschnellern“ und dann wiederum hat es nichts bewirkt oder es wurde langsamer, es gibt Vergleiche der Ladezeiten, was weiß ich

das wichtigste ist: ist das Plugin ordentlich programmiert, ist es auf schnelle Abarbeitung optimiert? Darauf sollte man achten, vor dem Installieren die Bewetungen, Kommentare und Support-Meldungen des Plugins anschauen

by Connie on 07.08.2013 at 12:42. #

ist eine vielzahl von installierten plugins nicht eher schlecht für den ganzen blog, da er vielleicht immer langsamer wird etc etc ??

by magdeburger on 06.08.2013 at 10:56. #