[Geschlossen] wpml_translate_single_string gibt falsche Werte zurück
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.
Sun
Mon
Tue
Wed
Thu
Fri
Sat
-
8:00 – 13:00
9:00 – 13:00
9:00 – 13:00
8:00 – 12:00
8:00 – 12:00
-
-
14:00 – 17:00
14:00 – 18:00
14:00 – 18:00
13:00 – 17:00
13:00 – 17:00
-
Unterstützt die Zeitzone: Europe/Zagreb (GMT+01:00)
Ich möchte es hier noch einmal auf den Punkt bringen: Der core-WPML-Filter wpml_translate_single_string gibt bei uns manchmal offensichtlich falsche Werte zurück.
Beispiel:
- ich rufe apply_filters('wpml_translate_single_string', ...) auf einer Seite in der Sprache DE auf.
- nun rufe ich apply_filters('wpml_translate_single_string', ...) mit gleichen Parametern auf einer Seite in Sprache FR auf.
Die Ergebnisse sind zweimal unterschiedlich, obwohl ich die Parameter gleich gelassen habe.
- Es müsste das Gleiche rauskommen.
- Es kommen jedoch unterschiedliche Ergebnisse raus.
Der Fehler ist uns bis jetzt nur aufgefallen, wenn unser Custom-Plugin aktiviert ist.
Wenn wir es deaktivieren, scheint der Fehler nicht aufzutreten.
Da unser Custom-Plugin keine Callbacks mit add_filter auf den core-WPML-Filter registriert, sollte das Ergebnis von wpml_translate_single_string nicht verändert werden!
wpml_translate_single_string sollte bei gleichen Parametern immer gleiche Ergebnisse ausgeben - macht es jedoch nicht.
Das Ergebnis von wpml_translate_single_string ist derzeit manchmal falsch.
Und das, obwohl wir nicht in den Filter eingreifen.
Wir nutzen lediglich apply_filters, wie in euren docs beschrieben.
Das macht keinen Sinn für uns.
Wir können uns nicht erklären, warum die Ergebnisse von dem Filter inkonsistent sind.
Wie können wir fortfahren, um den Fehler zeitnah zu lösen?
ich kann dir gerne bis Anfang nächste Woche Zugang zu einer Staging-Umgebung von uns zukommen lassen.
Dort kann ich dir auch konkrete Beispiele vorbereiten, die du dir ansehen kannst.
Dann sollte sehr schnell klar sein, worum es geht.
Wenn das für dich in Ordnung ist, dann lass mir gerne eine Nachricht mit Zugangsdaten-Feld zukommen.
Wenn es sich um einen einfachen Fall handelt, ist es immer besser, dies in der Sandbox auszuprobieren, weil dadurch mögliche Kompatibilitätsprobleme schnell ausgeschlossen werden können und sich zeigen lässt, ob es einen Fehler in unserem Filter gibt.
Wenn ich diese Funktion aktiviere und die Seite mit dem Test-String neu lade, dann klappt es.
Der Filter gibt korrekte Werte zurück.
Das Problem ist jedoch, dass einige Inhalte dann neu zur string translation Tabelle hinzugefügt werden.
Die neu hinzugefügten Inhalte sind jedoch teilweise falsch hinzugefügt.
- Ausgangssprache wird falsch erfasst (deutsche Kommentare werden der englischen Ausgangssprache zugeordnet, das ist falsch)
- Domain stimmt nicht (statt wcml-reviews haben die strings alle die Domain woocommerce. Auch das ist falsch. Die Identifier 'product-1370-review-29096' fehlen komplett.)
Wenn ich die falsch hinzugefügten strings aus der Tabelle lösche, dann geht es nicht mehr.
Der Fehler ist wieder da.
Was ich besonders interessant finde:
- im Frontend wird genutzt: apply_filters( 'wpml_translate_single_string', 'Das ist kein China Müll.', 'wcml-reviews', 'product-1370-review-29096', 'fr' )
- in der string translation Table wird der string neu hinzugefügt mit der Domain "woocommerce"
- der Filter, der die Domain "wcml-reviews" nutzt, gibt auf einmal einen passenden Wert aus.
Das passt nicht.
Hier haut irgendetwas überhaupt nicht hin, ist mein Eindruck.
Habe die Staging wieder auf den stand von vor dem Experiment zurückgesetzt.
Testet gerne rum und debuggt.
Zugang habe ich dir gesendet.