Zum Inhalt springen Zur Seitenleiste springen

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

Problem:
Ein spezifischer Eigenname ("Avinox") wurde in allen automatischen Übersetzungen fälschlicherweise als "DJI" übersetzt. Der Kunde fragt nach einer Möglichkeit, bestimmte Begriffe zentral für Übersetzungen festzulegen und ob erneute Übersetzungskosten anfallen.
Solution:
Um den Übersetzungsfehler zu korrigieren, empfehlen wir, den folgenden Code in die Datei functions.php des Themes einzufügen:

add_filter( 'wpml_pb_shortcode_encode', 'wpml_pb_shortcode_encode_urlencoded_json', 10, 3 );<br />function wpml_pb_shortcode_encode_urlencoded_json( $string, $encoding, $original_string ) {<br />    if ( 'urlencoded_json' === $encoding ) {<br />        $output = array();<br />        foreach ( $original_string as $combined_key => $value ) {<br />            $parts = explode( '_', $combined_key );<br />            $i = array_pop( $parts );<br />            $key = implode( '_', $parts );<br />            $output[ $i ][ $key ] = $value;<br />        }<br />        $string = urlencode( json_encode( $output ) );<br />    }<br />    return $string;<br />}<br /><br />add_filter( 'wpml_pb_shortcode_decode', 'wpml_pb_shortcode_decode_urlencoded_json', 10, 3 );<br />function wpml_pb_shortcode_decode_urlencoded_json( $string, $encoding, $original_string ) {<br />    if ( 'urlencoded_json' === $encoding ) {<br />        $rows = json_decode( urldecode( $original_string ), true );<br />        $string = array();<br />        foreach ( $rows as $i => $row ) {<br />            foreach ( $row as $key => $value ) {<br />            if ( in_array( $key, array( 'entry', 'value' ) ) ) {<br />                    $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => true );<br />                } else {<br />                    $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => false );<br />                }<br />            }<br />        }<br />    }<br />    return $string;<br />}

Um sicherzustellen, dass dieser Code auch nach Theme-Updates erhalten bleibt, empfehlen wir die Verwendung eines Child Themes. Nach der Code-Implementierung und einer kleinen Änderung an der Seite sollten die Übersetzungen automatisch aktualisiert und zur Überprüfung bereitgestellt werden.

Falls diese Lösung veraltet ist oder nicht auf Ihr Problem zutrifft, empfehlen wir, einen neuen Support-Ticket zu öffnen und die bekannten Probleme zu überprüfen. Stellen Sie außerdem sicher, dass Sie die neuesten Versionen von Themes und Plugins installiert haben.

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 1, hat 0 Stimmen.

Zuletzt aktualisiert von hendrikJ-8 Vor 2 Monaten, 3 Wochen.

Assistiert von: Lucas Vidal de Andrade.

Autor Beiträge
Januar 20, 2026 um 8:39

hendrikJ-8

Ich habe die gesamte Website (Entwicklungsumgebung) zunächst in fünf Sprachen übersetzen lassen, und zwar vollautomatisch. Dafür musste ich Credits im Wert von 214 € aufwenden. Leider zieht sich jedoch ein ziemlich ärgerlicher Übersetzungsfehler durch sämtliche Übersetzungen durch. Konkret wurde der Eigenname "Avinox", der auf quasi jeder von unseren Seiten mehrmals vorkommt, in alle Sprachen fälschlich mit "DJI" übersetzt. Daher habe ich nun zwei Fragen:

1: Ich habe noch nicht verstanden, wo ich außerhalb des Übersetzungs-Editors zentral hinterlegen kann, wie bestimmte Begriffe grundsätzlich übersetzt werden sollen. Wo gibt es so eine Art Glossar?

2: Im Grunde müsste ich jetzt fast alle Seiten noch einmal übersetzen lassen, denn eine manuelle Nacharbeit auf hunderten von Seiten kommt kaum infrage. Muss ich dafür jetzt erneut 214 € ausgeben, um 200.000 Credits zu erwerben?

Januar 20, 2026 um 10:47 #17745519

Lucas Vidal de Andrade
WPML-Unterstützer seit 11/2023

Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Portugiesisch, Brasilien (Português )

Zeitzone: Europe/Vienna (GMT+02:00)

Hallo,

wie versprochen, hier sind die Anweisungen:

1. Füge den untenstehenden Code in die Datei functions.php des Themes ein.

add_filter( 'wpml_pb_shortcode_encode', 'wpml_pb_shortcode_encode_urlencoded_json', 10, 3 );
function wpml_pb_shortcode_encode_urlencoded_json( $string, $encoding, $original_string ) {
    if ( 'urlencoded_json' === $encoding ) {
        $output = array();
        foreach ( $original_string as $combined_key => $value ) {
            $parts = explode( '_', $combined_key );
            $i = array_pop( $parts );
            $key = implode( '_', $parts );
            $output[ $i ][ $key ] = $value;
        }
        $string = urlencode( json_encode( $output ) );
    }
    return $string;
}
 
add_filter( 'wpml_pb_shortcode_decode', 'wpml_pb_shortcode_decode_urlencoded_json', 10, 3 );
function wpml_pb_shortcode_decode_urlencoded_json( $string, $encoding, $original_string ) {
    if ( 'urlencoded_json' === $encoding ) {
        $rows = json_decode( urldecode( $original_string ), true );
        $string = array();
        foreach ( $rows as $i => $row ) {
            foreach ( $row as $key => $value ) {
            if ( in_array( $key, array( 'entry', 'value' ) ) ) {
                    $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => true );
                } else {
                    $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => false );
                }
            }
        }
    }
    return $string;
}

Damit der Code dauerhaft erhalten bleibt und nicht durch Updates überschrieben wird, empfehle ich, ein Child Theme zu verwenden.

Der Shortcode uncode_pricing_list, den wir registrieren, ist URL-encoded. Um ihn korrekt zu registrieren, habe ich diese Schritte befolgt:
https://wpml.org/documentation/support/translating-urlencoded-shortcodes/

Es fehlte lediglich das Hinzufügen des Codes zur functions.php, was der Schritt ist, den ich dir hier geschickt habe.

Nach der Registrierung reicht es aus, eine kleine Änderung an der Seite vorzunehmen. Da deine Website „Translate Everything Automatically“ verwendet, werden die Übersetzungen automatisch aktualisiert und erhalten den Status „Review“ (Augen-Symbol). Wenn du auf das Augen-Symbol klickst, kannst du prüfen, ob es funktioniert hat, und die Übersetzungen freigeben.

Gib mir bitte Bescheid, ob es geklappt hat.

Januar 21, 2026 um 11:07 #17749982

hendrikJ-8

Vielen Dank, das hat gut geklappt.