Navigation überspringen

Dieses Thema ist gelöst. Hier finden Sie eine Beschreibung des Problems und der Lösung.

Problem:
Wenn Sie Ihre PHP-Version auf PHP 8.xx erhöhen, erhalten Sie einen kritischen Fehler in der Datei

class-wc-post-types.php

von WooCommerce, verursacht durch eine fehlerhafte Formatangabe in einer übersetzten Zeichenkette.
Solution:
Dies scheint ein Bug in der aktuellen Version unserer Plugins zu sein, der bereits untersucht wird. Eine mögliche Lösung ist, alle betroffenen Strings in die Standardsprache (in diesem Fall Deutsch) zu übersetzen, um den Fehler zu vermeiden. Ein alternativer Workaround ist verfügbar unter: WPML String Translation 3.2.10 Fatal Error due to Format Specifier.
Es ist sicher, den Inhalt des Ordners

/wp-content/languages/wpml/missing/

zu löschen, aber es wird empfohlen, eine Sicherungskopie der Dateien zu erstellen.

Falls diese Lösung für Sie nicht relevant ist oder veraltet erscheint, überprüfen Sie bitte die bekannten Probleme, bestätigen Sie die Version der dauerhaften Lösung und stellen Sie sicher, dass Sie die neuesten Versionen von Themes und Plugins installiert haben. Sollten weiterhin Probleme auftreten, empfehlen wir, ein neues Support-Ticket zu eröffnen.

Dies ist das technische Support-Forum für WPML – das mehrsprachige WordPress-Plugin.

Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team antwortet im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.

Schlagwörter: 

Dieses Thema enthält 3 Antworten, hat 2 Stimmen.

Zuletzt aktualisiert von Andreas W. Vor 10 Monaten, 1 Woche.

Assistiert von: Andreas W..

Verfasser Beiträge
April 5, 2024 unter 6:45 am #15486410

Christian

Guten Morgen

wir erhalten einen kritischen Fehler wenn wir die PHP Version auf PHP 8.xx anheben. Die Fehlermeldung lautet:


Ein Fehler vom Typ E_ERROR wurde in der Zeile 234 der Datei /home/wp/disk/wordpress/wp-content/plugins/woocommerce/includes/class-wc-post-types.php verursacht. Fehlermeldung: Uncaught ValueError: Missing format specifier at end of string in /home/wp/disk/wordpress/wp-content/plugins/woocommerce/includes/class-wc-post-types.php:234

Stack trace:

#0 /home/wp/disk/wordpress/wp-content/plugins/woocommerce/includes/class-wc-post-types.php(234): sprintf()

#1 /home/wp/disk/wordpress/wp-includes/class-wp-hook.php(324): WC_Post_Types::register_taxonomies()

#2 /home/wp/disk/wordpress/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()

#3 /home/wp/disk/wordpress/wp-includes/plugin.php(517): WP_Hook->do_action()

#4 /home/wp/disk/wordpress/wp-settings.php(645): do_action()

#5 /home/wp/disk/wordpress/wp-config.php(63): require_once('/home/wp/disk/w...')

#6 /home/wp/disk/wordpress/wp-load.php(50): require_once('/home/wp/disk/w...')

#7 /home/wp/disk/wordpress/wp-login.php(12): require('/home/wp/disk/w...')

#8 {main}

  thrown

Die dazugehörige Zeile in der class-wc-post-types.php sieht so aus:

						'all_items'         => sprintf( __( 'All %s', 'woocommerce' ), $label ),

Ich habe jetzt in den WPML String Translations nachgeschaut und gesehen das mehrere Strings übersetzt wurden (nicht nur woocommerce). Siehe Screenshot. Die Übersetzung sieht z.B. so aus:

All %s | Tous(tes) les %s

Meine Frage ist nun: Herauslöschen lässt sich die Übersetzung scheinbar nicht:

*Können wir hier einfach in der Übersetzung die Urpsrungs Variable wieder einsetzen? *All %s*
*Scheinbar hat man nicht nur einen woocommerce String übersetzt sondern auch weitere, sollte man die auch gleich alle überschreiben?

Vielen Dank und Grüße Marc

Screenshot 2024-04-05 082116.jpg
April 5, 2024 unter 7:02 pm #15489543

Andreas W.
Supporter

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Hallo Marc,

Es handelt sich hier anscheinend um einen Bug in der aktuellen Version unserer Plugins, welcher aktuell untersucht wird.

Es gibt verschiedene Lösungsansätze.

Das Problem scheint dann aufzutreten, wenn die Standardsprache Deutsch ist.

Wenn Du also all diese Strings auf Deutsch übersetzt, sollte der Fehler nicht mehr auftauchen.

Einen alternativen Workaround findest Du hier:
https://wpml.org/errata/wpml-string-translation-3-2-10-fatal-error-due-to-format-specifier/

Mit freundlichen Grüßen
Andreas

April 8, 2024 unter 8:32 am #15493051

Christian

Hallo Andreas

wenn wir den Workaround umsetzen und den Inhalt des Ordners /wp-content/languages/wpml/missing/ löschen. welche Auswirkungen hat das?

Wie schnell wird hier ein Fix zur Verfügung stehen?

Danke und Gruß Marc

April 9, 2024 unter 2:16 pm #15499750

Andreas W.
Supporter

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch )

Zeitzone: America/Lima (GMT-05:00)

Hallo,

Es sollte keine negativen Auswirkungen haben, aber Du kannst sicherheitshalber eine Kopie der Dateien auf Deinem Computer abspeichern und dies bei Bedarf wieder auf den Server hochladen.

Das Übersetzen aller dieser Strings auf Deinem Screenshot Deutsch löste das Problem bei meinem Test auf einer anderen Website ebenfalls.

Wann ein Fix zum Problem verfügbar sein wird, kann ich aktuell noch nicht sagen, da vor diesem Problem zuvor eine anderes verbundenes Problem mit dem Update zu WPML 4.6.11 gelöst werden muss.

Mit freundlichen Grüßen
Andreas