1. Wo befinden sich die WordPress Übersetzungsdateien?

Standardmäßig sind die Übersetzungsdateien, je nachdem es sich um ein Thema, Child-Theme oder ein Plugin handelt, in einem Subverzeichnis languages oder manchmal auch i10n/languages  innerhalb des Plugin- oder Theme-Verzeichnisses gespeichert.

Darüber hinaus gibt es für die Sprachdateien das Standardverzeichnis für  Wordpress Core Dateien 
wp-content/languages ( = WP_LANG_DIR ) und die Subverzeichnisse WP_LANG_DIR/plugins und WP_LANG_DIR/themes für Plugins und Themes.

Dort sind immer alle Sprachdateien zu finden, die bei Updates oder Änderung der Sprache der Website von WordPress automatisch downgeloaded werden. (Seit WordPress Version 3.8) 

Einige Plugins, wie z.B.: WOOCOMMERCE oder WOOCOMMERCE GERMANIZED legen im WP_LANG_DIR auch eigene Verzeichnisse an.

VerzeichnisStruktur_wp-content_languages

Wurden eigene Übersetzungen in dieses Verzeichnis gestellt, gehen sie bei Updates verloren.

AktualisiereUebersetzungen

Das Bild zeigt die Aktualisierung von Plugins und Themes nach Änderung der Sprache der Website auf „Deutsch (Sie)“

Wie man  Core-Übersetzungen vor Überschreiben bei Updates schützen kann, habe ich hier beschrieben:
www.zeiller.eu/updatesichere-uebersetzung-der-wordpress-core-dateien/

 2. Allgemeines zu Übersetzungsdateien

2.1 Grundsätzlich gibt es hier folgende Dateien:

*.pot –> Vorlage der Sprachdatei, enthält alle übersetzbaren Zeichenketten im Klartext *.po –> Übersetzungsdatei in Klartext (kann editiert werden) *.mo –> kompilierte Übersetzungsdatei (kann nicht editiert werden)

Die Nomenklatur ist je nachdem, ob es ein Theme ist oder ein Plugin und ob es sich im WP_LANG_DIR oder innerhalb des Plugin- oder Themenverzeichnisses befindet unterschiedlich.

2.2 Übersetzungsdateien im jeweiligen WP_LANG_DIR-Verzeichnis:

themenname-locale.po bzw. pluginname-locale.po
themenname-locale.mo oder pluginname-locale.mo

„locale“ steht z.B.: für Sprache und das Land de_DE, en_US usw.

2.3 PLUGINS

Übersetzungsdateien von Plugins sind im Verzeichnis: 
wp-content/plugins/pluginname/languages

domain-locale.mo
domain-locale.po

 „domain“ ist die Text Domain.
Eine vom Programmierer des Plugins frei vergebene Bezeichnung, die als eindeutige ID für die Übersetzung dient.

Die Text Domain findet sich bei guten Programmierern im Header des Plugin Startfiles. Dazu geht man im Admin-Menü -> Plugins -> Editor und wählt das entsprechende Plugin aus.

PluginsBearbeiten

Hier als Beispiel das Plugin EU Cookie Law, das als Text Domain eu-cookie-law enthält.

Die Sprachdateien für Deutsch heißen somit:
eu-cookie-law-de_DE.mo und eu-cookie-law-de_DE.po 
bzw. die Vorlage eu-cookie-law-de_DE.pot

2.4 THEMES

Übersetzungsdateien von Themes sind im Verzeichnis: 
wp-content/themes/themename/languages

locale.mo
locale.po
themenname.pot

Die Text Domain steht bei Themes im header des css-Files styles.css

  3. Eigene Übersetzungen mit dem „Loco Translate“ Plugin

Installation über Plugins -> Installieren, dazu „Loco Translate“ in die Suche eingeben und Gefundenes auswählen. Nach der erfolgreichen Installation und Aktivierung des Plugins, erscheint ein neuer Menuepunkt im Admin:

LocoTranslate_admin

Nun können die Sprachpakete gewählt werden, aber auch neue Übersetzungsdateien (po-Dateien) erstellt werden. Beim Speichern wird automatisch eine mo-Datei kompiliert und abgelegt.

Hinweis: in der vorliegenden Loco Translate Version 1.5.5 können „locale“ mit längeren Namen wie z.B.: de_DE_formal für Deutsch (Sie) NICHT bearbeitet werden!

NeueSprache

Ist noch keine Vorlagendatei (pot-Datei) vorhanden, kann diese unter „Neues Template“ erstellt werden. Loco Translate liest alle Templates ein und sucht nach übersetzbaren Zeichenketten. Diese haben beispielsweise die Form:

__( 'Standardtext in Englisch (en_US) der einer Variablen zugeordnet wird, wenn keine Locale ausgewählt wurde', 'textdomainname' ) //oder für direkte Ausgabe 'echo' _e( 'Standardtext in Englisch (en_US) der ausgegeben wird, wenn keine Locale ausgewählt wurde', 'textdomainname' ) // oder für automatische Einzahl/Mehrzahl Übersetzung je nach $count _n('We deleted %d spam message.', 'We deleted %d spam messages.', $count, 'my-text-domain'

Hinweis: Das blaue „de_DE: German“ im Bild steht übrigens für die bereits vorhandene Deutsche Übersetzung im Themen-Verzeichnis. Der Link dazu wird im Browser unten angezeigt, wenn man mit der Maus drüber geht: http://www.domain.com/wp-admin/admin.php?name=privatsachen&type=theme&poedit=themes/privatsachen/languages/privatsachen-de_DE.po&page=loco-translate

 

4. Welche der vielen Sprachdateien werden nun geladen und in welcher Reihenfolge?

Das hängt von der Programmierung des Plugins bzw. des Themes ab und kann pauschal nicht beantwortet werden.

Werden mehrere Sprachdateien zu einem Plugin oder Theme geladen, bestimmt die erste geladene die Übersetzung. Nachfolgende Übersetzungsstrings in den Sprachdateien werden nur verwendet, wenn sie in der ersten nicht übersetzt waren, d.h. leer blieben.

Ein äußerst hilfreiches Plugin ist hier Query Monitor von John Blackbourn

QueryMonitor

Unter Languages werden exakt die Reihenfolgen der Sprachdateien gezeigt:

QueryMonitor_languages

Weiterführende Links:
Loco Translate von Tim Whitlock
codex.wordpress.org/I18n_for_WordPress_Developers