Wie bereits mehrfach im Forum kritisiert wurde, streitet man sich bereits sowohl um die Qualität als auch um den Zustand der zum Download bereitgestellten Dateien. Ich möchte dies zum Anlass nehmen, um in etwas breiterer Form darauf einzugehen und die eine oder andere Hintergrundinformation darstellen, damit man sich ein Bild machen kann, was es heißt, Sprachdateien zu pflegen und verfügbar zu halten.
Dies soll keine Entschuldigung sein, warum es zu Fehlern kommen kann, aber es verdeutlicht hoffentlich ein wenig, was es bedeutet eine so komplexe Sprachdatei zeitnah zu liefern. Wir sehen die Arbeit an der Sprachdatei als eine der wichtigsten Arbeiten für die deutsche Community und diskutieren daher auch immer wieder mit den WordPress Entwicklern über das Thema, damit WordPress auch weiterhin optimiert und qualifiziert einzusetzen ist, egal in welchen Sprachraum man sich bewegt.

Ein wenig Statistik als Einstieg:

  • Anzahl Texte einer WP 2.8.x Sprachdatei  => 3300 Einträge
  • Anzahl Texte für Zeitzonenanzeige => 487 Einträge
  • davon Einträge die beim Übergang von WP 2.7.x zu WP 2.8.0 geändert oder ganz neu waren (also leer) => 960 Einträge

Dies alles will gewartet, getestet und sinnvoll geprüft sein. Einige der Texte erscheinen nur in Javascipt basierten Strings (innerhalb von js Code) und müssen deshalb nochmals geprüft werden, denn ein vergessenes Escape eines einfachen oder doppelten Hochkomma produziert umgehend Scriptfehler.

Das Translation-Team arbeitet so zeitnah wie möglich an den Sprachdateien, damit diese so schnell wie möglich bereitgestellt werden können (idealerweise am Erscheinungstag einer neuen Version). Dies setzt aber auch voraus, das die Übersetzer grundsätzlich mit einer Entwicklerversion hantieren müssen, damit das auch funktioniert. Denn die offizielle Vorlage seitens wordpress.org als wordpress.pot Datei erscheint erst am Tag der neuen Version. Somit würde, wie bei den französischen, italienischen oder spanischen Kollegen die Übersetzung erst dann losgehen und dementsprechend nachhängen.

Das Team versucht jedoch dies zu umgehen und kämpft dadurch erfahrungsgemäß mit ständigen Änderungen an und in der Entwicklerversion. Dabei kann es schon mal vorkommen, dass der eine oder andere Schnitzer passiert. Es reicht aus, dies im Forum unter Sprachdatei zu melden, wir nehmen uns der Sachen dann auch an.

Um auf die offenen Fragen aus dem Forum einzugehen, hier im Groben erstmal die Fragensammlung:

  1. Warum funktioniert die de_DE.po nicht mit PoEdit und wirft stattdessen 2 Fehler aus ?
  2. Warum sind die Komma und Tausender Separatoren „komisch“ übersetzt ?
  3. Warum sind 7 Texte grundsätzlich nicht übersetzt ?
  4. Warum sind in vorherigen Versionen 487 Texte manchmal nicht übersetzt ?

Punkt 1: PoEdit Bearbeitungsprobleme

Das sieht im Normalfall so aus:

<span style="font-family: Fixedsys;">“msgfmt: found 2 fatal errors”
</span>Details:
<span style="font-family: Fixedsys;">…de_DE.po:16148: duplicate message definition…
…de_DE.po:1684: …this is the location of the first definition
…de_DE.po:16152: duplicate message definition…
…de_DE.po:10189: …this is the location of the first definition
</span>

Dabei handelt es sich um ein Problem zwischen Akismet und WordPress Einträgen, die seitens der Entwickler nicht korrekt behandelt wurden. (Falls ihr es noch nicht wissen solltet, die Texte von Akismet sind in der WordPress Hauptsprachdatei enthalten!)
Dies kläre ich gerade mit den Entwickler per Ticket ab, wir (Robert und ich) haben aber die Sprachdateien heute angepasst, funktionsfähig gemacht und die Download erneuert.

Punkt 2: Komma- und Tausenderstellen

Diese wurden unsererseits fehlerhaft bearbeitet. Dies ist ebenfalls heute behoben worden. Allerdings haben wir das aus einem speziellen Grund weiterhin in englischen Format übersetzt:

#. translators: $decimals argument for
    http://php.net/number_format, default is 0
#: wp-includes/locale.php:182
msgid "number_format_decimals"
msgstr "0"

#. translators: $dec_point argument for
    http://php.net/number_format, default is .
#: wp-includes/locale.php:186
msgid "number_format_decimal_point"
msgstr "."

#. translators: $thousands_sep argument for
    http://php.net/number_format, default is ,
#: wp-includes/locale.php:190
msgid "number_format_thousands_sep"
msgstr ","

Der Hintergrund ist ist relativ einfach erklärt. Wenn man eine Zahl wie dieser hier 12345.67 gemäß der Tausender und Dezimaltrennung des Landes (Sprache) nur ausgeben will, dann würde das kein Problem darstellen:

  • en_US  => 12,345.67
  • de_DE  => 12.345,67

Soweit so gut. Fängt aber ein Plugin oder Theme jetzt an mit diesem String rechnen zu wollen, versagt die Zurückkonvertierung von 12.234,67 in eine Zahl, denn PHP macht dann 12.345 draus, also ein 5 stelliger Schwund, stellt euch das auf eurem Konto vor. Ich hatte das Problem schon in einem Artikel von mir beleuchtet, weil es von der Provider-Einstellung des Servers abhängt, wie konvertiert wird (und diese meist en_US ist) und bei mir den XML Sitemap Generator lahmlegte. Deshalb haben wir erstmal darauf verzichtet, dass direkt anzupassen, damit Plugins und Themes nicht auch noch „zerfallen“. Wir würden das bereitstellen, können das aber nicht mit allen > 5000 Plugins und hunderten von Themes testen. Da dies nicht sehr oft genutzt wird, sollte es im Moment keine große Rolle spielen. Eure Meinung dazu würde uns aber trotzdem interessieren.

Punkt 3: die nicht übersetzten 7 Texte

Hier mal ein Screenshot der DU-Version eingeladen im PoEdit mit 7 nicht übersetzten Texten:

Bei diesen Texten handelt es sich um Ausgaben in PHP Core Dateien, die vor den WordPress Entwicklern an Stellen gemacht werden, an denen noch keine Sprachdatei zu Verfügung stehen kann. Diese Texte sind direkt und ohne Unterstützung durch das Sprachdatei-Feature in den Dateien zu ändern. Das Verfahren, die Sprachdateivorlage zu erstellen, basiert auf dem der originalen wordpress.pot Datei, sodass wir auch wissen, wo direkt im Code geändert werden muß. Dies können wir auch in der Sprachdatei pflegen bei Bedarf, jedoch hat das keinerlei Wert für die aus dieser Datei resultierenden de_DE.mo, weswegen dies auch leer ist (und damit keine Platz in der *.mo verbraucht).

Punkt 4: zeitweise 487 nicht übersetzte Texte

Dies resultiert daraus, das wir die Quelldateien der nächsten Version (Entwicklerversion) bereits per PoEdit immer wieder periodisch einlesen lassen. Wer PoEdit kennt, weiss um dieses Tool und seine Besonderheiten. Es interessiert sich schlicht nicht für die Textdomains, zu denen Texte gehören.
Die Entwickler haben aber mit Version 2.8.0 diese besagten 487 neuen Strings eingeführt allerdings mit einer eigenen Textdomain: continents-cities

Mir ist das erst recht spät aufgefallen (so etwas Essentielles kommuniziert ja das Entwickler-Team nicht!) und wir mussten dann die Sprachdateien trennen, denn nun benötigt der WordPress Core gleich 2 davon:

  • de_DE.mo
  • continents-cities-de_DE.mo

Nur leider macht das PoEdit nicht. Deswegen gab es einige Zwischenversionen, die diese 487 Texte für die Zeitzonen und Gebietschema Einstellungen enthielten, nun aber sauber getrennt und ebenfalls übersetzt wurden. Aus diesem Grund musste ich auch erstmal mein WP Plugin für Übersetzungen in WordPress überarbeiten, damit man multiple Textdomains auch dort sauber trennen kann.

Zusammenfassung

Ich hoffe, dem Einen oder Anderen wird hiermit klarer, dass Übersetzung kein Zuckerschlecken ist und nicht mal eben zwischen Tür und Angel passieren kann. Um ebenfalls zeitnah zu sein, ist eine Menge mehr zu leisten, als man nach außen hin vielleicht sieht. Deswegen ist es ja auch erfreulich, dass wir die Sprachdatei-Version von de.wordpress.org nun auch mit warten dürfen, denn der Aufwand dafür immens und allein nur schwer zu schaffen. Wir werden uns bemühen, den Anforderungen gerecht zu werden, die Ihr alle an uns habt, seid bitte ein wenig nachsichtig, wenn nicht immer gleich alles so ist, wie gewünscht. Wichtig ist uns, teilt uns eure Probleme, Auffälligkeiten und Sorgen mit, so können wir zeitnah reagieren und die Sprachdateien anpassen.

Bitte nutzt auch das Forum, um im Bereich Sprachdatei Probleme zu melden, wir kümmern uns so wie es unser Zeitrahmen zulässt, darum.

“msgfmt: found 2 fatal errors”

Details:

…\wp-content\languages\de_DE.po:16148: duplicate message definition…
…\wp-content\languages\de_DE.po:1684: …this is the location of the first definition
…\wp-content\languages\de_DE.po:16152: duplicate message definition…
…\wp-content\languages\de_DE.po:10189: …this is the location of the first definition

——————
Die folgenden Beiträge befassen sich alle mit dem Thema Sprachdatei:

Verbesserungsvorschläge und Korrekturen der Sprachdatei gesucht!
Vorschläge zur Sprachdatei -Teil 1
Umfrage zur WordPress-Sprachdatei
Patch gegen den Speicherverbrauch der Sprachdatei
Enormer PHP-Speicherverbrauch – Ursache gefunden?
WordPress Deutschland