Fehlerhafte deutsche Sprachdatei

  • Guten Morgen allerseits!

    Die aktuelle deutsche Sprachdatei ("Du"-Version) scheint mir einen Hau zu haben: Beim Laden in Poedit werden oben sieben nicht übersetzte Strings angezeigt und -schlimmer noch- das Abspeichern wird verweigert mit der Fehlermeldung:

    [FONT="Fixedsys"]“msgfmt: found 2 fatal errors”[/FONT]

    Details:

    [FONT="Fixedsys"]…\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[/FONT]

    Das sollte man fixen, denke ich…

    Danke im Voraus!

    • 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)

    Mehr erfahren

  • Wir überprüfen das. Scheint mit Strings zu tun zu haben die in WP für die Übersetzung vorbereitet wurden.

    "Eine gut gestellte Frage ist schon halb beantwortet."

  • [FONT=Fixedsys]“msgfmt: found 2 fatal errors”[/FONT]

    Details:

    [FONT=Fixedsys]…\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[/FONT]

    Ich würde sagen, das es ein Bug in PoEdit ist, denn dieser bekommt es nicht auf die Reihe, das ein Text mit gleicher Message ID einmal mit und einmal ohne Pluralisierung vorkommt.
    Das ist aber von der Behandlung in der Sprachdatei selbst (*.mo) essentiell!

    Hier als Beispiel einer der betreffenden Stellen:

    Code
    #: wp-admin/includes/dashboard.php:240
    msgid "Comment"
    msgid_plural "Comments"
    msgstr[0] "Kommentar"
    msgstr[1] "Kommentare"

    und dann die aus dem Standard Theme:

    Code
    #: wp-content/themes/default/comments-popup.php:49
    msgid "Comment"
    msgstr ""

    Wie man sehen kann, ist der eine Eintrag eine Pluralisierung und der andere nicht. Dies sollte PoEdit eigentlich erkennen können, denn der Schlüssel (Key) für die obere ID ist:[INDENT] "Comment\0Comments"
    [/INDENT]während der Schlüssel (Key) für die untere ID folgender ist:[INDENT] "Comment"
    [/INDENT]Somit sind das in der *.mo Datei 2 differente Schlüssel, weswegen sie auch korrekt getrennt benutzt und gelistet werden.
    Das PoEdit das nicht versteht, ist ein Problem von PoEdit und nicht der deutschen Sprachdatei!

    Thema unübersetzte Strings, hier wieder ein Beispiel:

    Alles, was in der Sprachdatei enthalten ist und als Kommentar "[COLOR=Sienna]Not gettexted string WP_I18N_ ....[/COLOR]" enthält, sind Texte, die man nur im Quellcode ändern kann, denn zu diesem Zeitpunkt der Ausführung des Scripts ist es nicht möglich, eine Sprachdatei zu benutzen. Davon gibt es mindestens 7 Stellen im WP Core, die offizielle wordpress.pot Datei enthält diese ebenfalls. Somit ist auch dies kein Versäumnis sondern Absicht.

  • ISomit sind das in der *.mo Datei 2 differente Schlüssel, weswegen sie auch korrekt getrennt benutzt und gelistet werden.
    Das PoEdit das nicht versteht, ist ein Problem von PoEdit und nicht der deutschen Sprachdatei!

    Gut. Das heißt für mich, daß ich b.a.w. die "alte" Sprachdatei von WP 2.8 weiterbenutzen muß, weil ich in dieser diverse Änderungen und Anpassungen geschmackshalber durchgeführt habe. Diese (penibel dokumentierten) Modifikationen wollte ich in der aktuellen Version erneut vornehmen, scheitere aber daran, daß Poedit sich mit den eingangs gelisteten "Fehlermeldungen" beschwert und das Abspeichern allfälliger Änderungen nicht zuläßt.

    Frage also: gibt es einen alternativen Editor oder hat jemand einen "direkten Draht" zu den Poedit-Entwicklern? Es wäre schade, wenn man diesen beliebten Editor weiterhin zwar für alle möglichen Plugin-Lokalisierungsdateien, aber nicht mehr für WordPress selbst verwenden könnte...

    Dank & Gruß,
    Ralph

  • Hallo Ralph,

    ja, es gibt eine ziemlich gute Alternative: http://www.code-styling.de/deutsch/entwic…ng-localization

    Grüße,
    Robert

    Hallo Robert,

    danke für den Tipp: Dieses Editor-Plugin sieht ja auf den ersten Blick wirklich gut aus, und ich kann auch ordnungsgemäß die Sprachdateien sämtlicher lokalisierten Plugins einlesen und bearbeiten. Nur die Bearbeitung der großen Sprachdatei von WordPress selbst will mir nicht gelingen: Nach dem Anklicken von "Einlesen" und dann "Analysieren" passiert nix mehr, der Screen zum "Einlesen der PHP Quelldateien" bleibt mit der Nachricht "Bitte warten, Dateien werden durchsucht..." stehen. Gut, bei 273 betroffenen Dateien kann sowas ja ein paar Minuten dauern, aber doch nicht bis zum Sankt-Nimmerleinstag...

    Hast Du noch eine Idee? Mir schiene das wirklich ein schöner (und zudem von überall her aufrufbarer) Ersatz für Poedit zu sein.

    Jetzt bin ich noch einen weiteren Schritt von meinem ursprünglichen Problem entfernt: Ich will ja nur ein paar Strings in der deutschen Sprachdatei von WP 2.81 meinen eigenen Vorstellungen anpassen... :-(

    Lieben Gruß,
    Ralph

  • Hatte ich in meinem Blog schon beantwortet:

    Zitat

    Normalerweise braucht der Einleseprozess für WordPress <= 3 Sekunden pro 20 Dateien. Es werden Dateien immer in Schritten zu 20 Stück analysiert und ausgewertet. Die einzige Erklärung, die ich dafür hätte, würde sich im Bereich <em>Scriptlaufzeit</em> bewegen, denn das kann auf einigen Maschinen evtl. deutlich länger brauchen. Eine andere Möglichkeit wäre noch das Versagen der Ajax Calls zu Scannen. Das würde man im FireBug sehen können im Tab "Netzwerk" -> XHR
    Die Antwort des letzten Ajax Calls beim Scannen wäre dann interessant, ob sich dort ein Fehler äußert.

    Es läuft laut letzter bekannter Rückmeldung von zonebattler auf das Script-Laufzeit-Limit zurück, das bei ihm scheinbar voll ausgereizt wird, weil der Server nicht der Schnellste ist.

  • Hatte ich in meinem Blog schon beantwortet:
    Es läuft laut letzter bekannter Rückmeldung von zonebattler auf das Script-Laufzeit-Limit zurück, das bei ihm scheinbar voll ausgereizt wird, weil der Server nicht der Schnellste ist.

    Pardon, das hätte ich natürlich selbst hier nachtragen können und sollen: Dem schönen Plugin ist es natürlich nicht anzulasten, wenn (nur) bei mir das Einlesen der WP-Sprachdatei scheitert...

    Das Laufzeit-Limit von Skripten scheint mir ein genereller Fallstrick zu sein. Famos daher der Trick, mit dem sich z.B. der http://www.mysqldumper.de/ immer wieder durch Selbstaufruf neue 30 Sekunden verschafft, bis er mit dem Sichern der Datenbank fertig ist. Mit einem derartigen Mechanismus versehen, würde sich das Editor-PLugin "codestyling-localization" vermutlich auch von mir nutzen lassen. Wobei ich vollstes Verständnis dafür habe, daß man derlei Features nur dann implementiert, wenn mehr als nur eine Handvoll User davon profitieren würde.

    Dank & Gruß,
    Ralph

  • Ich würde sagen, das es ein Bug in PoEdit ist, denn dieser bekommt es nicht auf die Reihe, das ein Text mit gleicher Message ID einmal mit und einmal ohne Pluralisierung vorkommt.
    Das ist aber von der Behandlung in der Sprachdatei selbst (*.mo) essentiell!

    So, jetzt beißt sich die Katze leider in den Schwanz: Der von mir in dieser Sache heute angeschriebene Autor von Poedit (Vaclav Slavik, vslavik@fastmail.fm) argumentiert umgekehrt und weist auf die nötige Eindeutigkeit der String-Zuordnungen in der Katalog-Datei hin:

    [FONT="Fixedsys"]"... But the very first message in that forum shows an error in the catalog, *not* a Poedit problem. It shows a msgfmt error message (msgfmt is not part of Poedit, it is a GNU Gettext
    utility) that says the catalog is ill-formed and contains the same string twice. This is invalid .PO file and is clearly the fault of the PO file's creator, i.e. Wordpress I assume.

    This is something I, or Poedit, have no control over. The PO format description says that msgid is unique. This catalog clearly violates this requirement, by having two identical msgid lines. Notice that Poedit itself gracefully handles this malformed file, it's the GNU gettext msgfmt compiler that (rightfully) complains about it."[/FONT]

    Ich selbst bin nun zwar der englischen Sprache mächtig, aber letztlich nur ein WordPress-Endnutzer mit geringen Kenntnissen der hier interagierenden Mechanismen. Daher schlage ich vor, daß sich die zuständigen Moderatoren / Fachleute von WordPress Deutschland direkt mit Vaclav ins Benehmen setzen, um das Problem zielführend anzugehen. Zweifellos ist es vielen WordPress-Nutzern -keineswegs nur mir- ein Bedürfnis, eigene Modifikationen an der deutschen Sprachdatei vorzunehmen. Und eben dies funktionierte bislang (=bis WP 2.7) mit Poedit bestens! Leider besteht auch nicht für alle die Option, auf das empfohlene Plugin auszuweichen und die Katalog-Datien damit online zu editieren.

    Abschließend möchte ich anfügen, daß ich hier niemanden gegen jemand anderen ausspielen oder gar Zwist sähen möchte: Ich bin nur Leidtragender eines aufgetretenen Problems in meinem bislang tadellos funktionierenden Workflow geworden und habe daher an der Wiederherstellung desselben Interesse. Weder ziehe ich die Fähigkeiten noch das Fachwissen aller Beteiligten in Zweifel, daher versuche ich zu vermitteln und diejenigen zum Dialog anzuregen, die tatsächlich was zur Lösung beitragen können...

  • Ich werde das Thema aufgreifen und in der Polyglot Liste sowie im Trac von WP einwerfen. Das Problem ist nicht so einfach, denn es bedarf einer Codeänderung in WP, um das sauber zu bekommen.
    Diese verwendete Pluralform

    Code
    #: wp-admin/includes/dashboard.php:240
    msgid "Comment"
    msgid_plural "Comments"
    msgstr[0] "Kommentar"
    msgstr[1] "Kommentare"

    ist nun mal was anderes als die hier verwendete Sigular Form:

    Code
    #: wp-content/themes/default/comments-popup.php:49
    msgid "Comment"
    msgstr ""

    Es gibt 2 Möglichkeiten, das im Code kenntlich zu machen:
    1. mit implizitem Kontext:

    Code
    #: wp-content/themes/default/comments-popup.php:49
    msgid "Comment|inside popups"
    msgstr ""
    
    
    ....
    
    
    _c('Comment|inside popups');

    2. mit explizitem Kontext:

    Code
    #: wp-content/themes/default/comments-popup.php:49
    msgctx "inside popups"
    msgid "Comment"
    msgstr ""
    
    
    ....
    
    
    _x('Comment', 'inside popups');

    Damit würde man dem Problem auf Codeebene aus dem Weg gehen.
    Allein eine Änderung in der *.po Datei ist nicht Zielführend, denn der Code muß dazu passen.
    Soetwas kann man nur mit dem Entwicklern klären lassen, werde sehen, was ich tun kann.

  • Ich werde das Thema aufgreifen und in der Polyglot Liste sowie im Trac von WP einwerfen. Das Problem ist nicht so einfach, denn es bedarf einer Codeänderung in WP, um das sauber zu bekommen.
    ...

    Soetwas kann man nur mit dem Entwicklern klären lassen, werde sehen, was ich tun kann.

    Vielen Dank für die schnelle Antwort und Dein Engagement in dieser Sache! Ich weiß das sehr zu schätzen! Wie schon in meinem letzten Reply geschrieben wäre es sicher am hilfreichsten, wenn die Fachleute das Problem unter sich ausmachen und dem Anwender eine unkomplizierte Lösung an die Hand geben würden.

    P.S.: Die Editiermöglichkeit der Lokalisations-Datei zukünftig WP-intern zu realisieren hielte ich für ein weit lohnenderes Entwicklungsziel als neue Smileys zu basteln... ;-)

  • Hallo Ralph,

    ja, es gibt eine ziemlich gute Alternative: http://www.code-styling.de/deutsch/entwic…ng-localization

    Grüße,
    Robert

    ich habe das gleich problem mit poedit und würde auch gerne diesen plugin testen. ich habe in runtergeladen und aktiviert, aber ich bin schlichtweg zu doof um irgendwo in meinem admin bereich einen editor des neuen plugins zu finden! könnt ihr mir bitte kurz erklären wo ich den language-editor nun finde?

    danke vielmals

  • ich habe das gleich problem mit poedit und würde auch gerne diesen plugin testen. ich habe in runtergeladen und aktiviert, aber ich bin schlichtweg zu doof um irgendwo in meinem admin bereich einen editor des neuen plugins zu finden! könnt ihr mir bitte kurz erklären wo ich den language-editor nun finde?
    danke vielmals


    Den Editor findest du unter "Werkzeuge" -> "Lokalisierung"
    Das ist der Menüpunkt , wo man unter anderem auch Daten ex-/importieren kann.

  • danke vielmals

    müssten bei einer deutschen sprachversion eigentlich nicht auch THEME-spezifische texte umgestellt werden! ich habe alles auf deutsch i madmin, aber wenn ich ein neues theme einspiele sind so texte wie "no comments | edit" "posted on ..." blabla alle auf englisch! was muss ich da machen, dass die automatisch deutsch werden, muss ich mich da durch das theme kämpten und die texte alle raussuchen und übersetzen?

    danke für die auskunft

    edit: und müsste wenn ich in der deutschen sprachdatei "BLOGROLL" in "Tolle Links" umbenenne nicht bei dem blogroll widget "tolle links" stehen! irgendwie klappt das nicht! ???

    Einmal editiert, zuletzt von sepp88 (18. Juli 2009 um 20:40)

  • Sepp:
    Kommt drauf an, ob das Theme eben gettext hat, also die Sprachdateien nutzt, oder nicht. Manche sind in Englisch hartcodiert, dann musst du selber ans Theme ran.

    "Eine gut gestellte Frage ist schon halb beantwortet."

  • Zusammenfassung Sachstand 21.07.2009

    Servus zusammen,

    ich möchte mal zusammenfassen, was ich bislang zu dem -aus meiner Sicht immer noch nicht erledigten- Thema eruiert und recherchiert habe:


    Die hier unter

    http://wordpress-deutschland.org/download/sprachdatei/

    angebotene deutsche Sprachdatei (Redaktion: Robert Pfotenhauer) mit Timestamp 20.07.09, 10:51 Uhr läßt sich mit dem bekannten Editor "PoEdit" zwar öffnen, aber nicht wieder speichern. Die entsprechenden Fehlermeldungen habe ich weiter oben in diesem Thread dokumentiert.


    Überdies sind die folgenden 7 Textbausteine offenbar unübersetzt:

    [FONT="Fixedsys"]\n
    <h1>Error establishing a database connection</h1>\n
    <p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can't contact the database server at <code>%s</code>. This could mean your host's database server is down.</p>\n
    <ul>\n
    \t<li>Are you sure you have the correct username and password?</li>\n
    \t<li>Are you sure that you have typed the correct hostname?</li>\n
    \t<li>Are you sure that the database server is running?</li>\n
    </ul>\n
    <p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href='http://wordpress.org/support/'>WordPress Support Forums</a>.</p>\n


    \n
    <h1>Can’t select database</h1>\n
    <p>We were able to connect to the database server (which means your username and password is okay) but not able to select the <code>%1$s</code> database.</p>\n
    <ul>\n
    <li>Are you sure it exists?</li>\n
    <li>Does the user <code>%2$s</code> have permission to use the <code>%1$s</code> database?</li>\n
    <li>On some systems the name of your database is prefixed with your username, so it would be like <code>username_%1$s</code>. Could that be the problem?</li>\n
    </ul>\n
    <p>If you don't know how to setup a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href=\"http://wordpress.org/support/%5C">WordPress Support Forums</a>.</p>


    WordPress database error %1$s for query %2$s made by %3$s


    WordPress database error %1$s for query %2$s


    There doesn't seem to be a <code>wp-config.php</code> file. I need this before we can get started. Need more help? <a href='http://codex.wordpress.org/Editing_wp-config.php'>We got it</a>. You can create a <code>wp-config.php</code> file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file.</p><p><a href='%ssetup-config.php' class='button'>Create a Configuration File</a>


    Your PHP installation appears to be missing the MySQL extension which is required by WordPress.


    <strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.
    [/FONT]


    Ferner sind die von "tin68" in

    http://forum.wordpress-deutschland.org/sprachdatei/55…prachdatei.html

    genannten Fehler auch noch vorhanden.

    Das von mir soeben getestete "Konkurrenzprodukt" auf

    http://de.wordpress.org/

    weist weder unübersetzte Strings noch 1:2-Zuordnungen auf, läßt sich demzufolge auch problemlos mit PoEdit poeditten. Über die Aktualität und die sprachlichen Qualitäten jener Lokalisierungs-Datei kann und will ich dabei keinerlei Aussage treffen.

    Der von mir in dieser Sache kontaktierte Autor von Poedit weist jede Verantwortung von sich und argumentierte in einer zweiten Mail an mich wie folgt:

    Ich schrub:

    [FONT="Fixedsys"]> Now we seem to have the funny situation that the WordPress people
    > blame you and you blame the WordPress programmers...
    >
    > Since I managed to modify the WP language files with Poedit
    > numerous times before without any problems,
    > I immediately thought that the error messages that started
    > with the new WP 2.8 release must have their
    > origin in faulty catalog files. However, in
    >
    > http://forum.wordpress-deutschland.org/sprachdatei/54…html#post260251
    >
    > the user "codestyling" argues that "it seems to be a bug of Poedit
    > which obviously doesn't manage to handle text strings that adress
    > singular and plural forms under the same message ID. This is, however,
    > essential when handling the .mo file!"[/FONT]


    Er antwortete:

    [FONT="Fixedsys"]Again, this is not a Poedit problem. Poedit can, for once, handle this
    file just fine. It's GNU Gettext's msgfmt compiler that detects errors.
    So if Wordpress folks believe this kind of PO file is correct, they
    should talk to GNU Gettext maintainers, not me.

    And he's wrong, BTW, it's not "essential". The standard way to handle
    this situation in Gettext is to use msgctxt (which Poedit supports,
    albeit in suboptimal way).[/FONT]


    Mangels Einblick und Sachkunde kann ich diese Ausführungen nicht bewerten, ich will sie hier auch nur wiedergeben, damit die fähigen Insider hier an einer Stelle alle erforderlichen Informationen vorfinden und sich des Problems annehmen können.

    Einer aus diesem Kreise bat mich in einer PM um meine Mailadresse, um mir eine Testdatei zusenden zu können. Leider habe ich diese Nachricht in meinem Profilbereich erst gestern (nach 10 Tagen Abhängezeit) eher zufällig entdeckt, meine Antwort darauf blieb bislang ohne Folgen. Ich stelle mich aber gerne auch öffentlich als Tester zur Verfügung und bin unter der Adresse

    zonebattler@zonebattler.net

    jederzeit zu erreichen. Allerdings kann ich zur Lösung nicht viel mehr beitragen als den Befund hinsichtlich des Versuches, die Sprachdatei mittels PoEdit zu öffnen und wieder zu speichern...

    Beste Grüße,
    Ralph

  • zonebattler:
    Zu den nicht übersetzten Bausteien...manche Meldungen (wie z.B. Fehlermeldungen bezüglich Datenbank) können nicht per gettext übersetzt werden und sind hartcodiert und werden von uns dementsprechend in der DE-Edition auch direkt in diesen Dateien übersetzt.

    "Eine gut gestellte Frage ist schon halb beantwortet."

  • Zu dem Problem von Tine68 hatte ich bereits hier Setllung genommen, das muß angepasst werden!
    Thema: http://forum.wordpress-deutschland.org/sprachdatei/55…html#post262289

    Das zweite Problem ein Message Context Problem seitens des Codes, wenn man das so scannen lässt. Das können wir zwar beheben, aber ein re-scan aller PHP Dateien von WP produziert das wieder.

    Ich werde Robert nochmal informieren, sollte kurzfristig lösbar sein.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!