Uncaught ValueError: Missing format specifier at end of string…

brown and white cat in shallow focus shot
foto von 傅甬 华 auf unsplash

Überraschung! Nach der Umstellung eines Projekt auf PHP 8.0 war der Bildschirm nur noch weiß. Die Aktivierung der Fehlerprotokolls ergab:

thrown in /home/www/wp-single/wp-content/plugins/woocommerce/includes/class-wc-post-types.php on line ...
class-wc-post-types.php(234): sprintf('Alle %', '\xC3\x9Cbersetzung')

Im Grunde sagt der Eintrag im Fehlerprotokoll eigentlich schon alles. Die Meldung wird von der Funktion sprintf ausgelöst, da ein Übersetzungstring nicht korrekt formattiert ist. Die Meldung sagt auch genau, an welcher Stelle der Fehler auftritt.

In PHP 7.4 war so ein Fehler einfach übergangen und einfach nur der im Platzhalter vorgesehen Text weggelassen.

Tatsächlich muss hier nichts im eigentlichen Quellcode korrigiert, sondern in der Übersetzungsdatei nach dem fehlerhaften Platzhalter gesucht, und dieser korrigiert werden. In diesem speziellen Fall war es so, dass irgendwann eine manuelle Übersetzungsdatei für WooCommerce angelegt werden war, in der in einem Übersetzungsstring (jenem in der Fehlermeldung) das „s“ nach dem Prozentzeichen fehlte.

Mit poedit war der Fehler dann auch in Nullkommanix behoben.

2 Antworten zu „Uncaught ValueError: Missing format specifier at end of string…“

  1. Bogdan

    Danke für den Hinweis mit den Übersetzungen, hat mir viel Zeit erspart. 👍🙂

  2. Ein dankbarer User

    Ich bin euch für den Hinweis richtig dankbar! Genau das gleiche Problem hatte ich auch und bin fast verzweifelt. Danke! 🙂

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable