Navigation überspringen

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)

Schlagwörter: 

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

Zuletzt aktualisiert von Bruno Kos Vor 1 Monat, 3 Wochen.

Assistiert von: Bruno Kos.

Verfasser Beiträge
September 18, 2024 unter 8:31 am #16191619

larsZ

Background of the issue:
Wir verwenden über unseren Page Builder WPBakery selbst gebaute Module/Blöcke. Diese benutzen teilweise den Parameter-Typen "param_group", die wiederum weitere Parameter (Textfeld, Link, Bild) enthalten. Diese untergeordneten Parameter werden in einem Attributen als "urlencoded" JSON gespeichert. Die Übersetzung von regulären Textfeldern funktioniert, doch leider erkennt der ATE nicht die URL des Links und die Media Translation greift nicht bei den Bildern. Folgende XML-Konfiguration haben wir verwendet: awx_shortcode_features awx_features_items

Symptoms:
Der ATE erkennt nicht die URL des Links und die Media Translation greift nicht bei den Bildern.

Questions:
Wie kann ich die URL des Links und die Bilder in den "urlencoded" Shortcodes korrekt übersetzen?

September 18, 2024 unter 9:19 am #16191862

Bruno Kos
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

Zeitzone: Europe/Zagreb (GMT+01:00)

In diesem Sandbox: versteckter Link

Können Sie hier den Filter, XML für dieses Element hinzufügen und eine Seite mit diesem Element erstellen?

September 18, 2024 unter 9:59 am #16192049

larsZ

Ich habe das Theme installiert und die entsprechenden Module auf der Startseite eingebaut.

September 18, 2024 unter 12:46 pm #16193055

Bruno Kos
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

Zeitzone: Europe/Zagreb (GMT+01:00)

Können Sie Ihr XML zu versteckter Link und den Filter zu versteckter Link hinzufügen?

September 18, 2024 unter 3:02 pm #16194237

larsZ

Der filter ist bereits in der "functions.php" und das XML in der "wpml-config.xml" im Theme eingebunden.

September 19, 2024 unter 6:21 am #16196028

Bruno Kos
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

Zeitzone: Europe/Zagreb (GMT+01:00)

Auf versteckter Link sehe ich, dass Sie 2 Shortcodes hinzugefügt haben, aber keiner davon ist awx_shortcode_features.

Können Sie mir zeigen (mit einem Screenshot), welches Feld Sie übersetzen möchten?

URL von den Cards? Sie können diese Seite auch im Übersetzungseditor öffnen, um zu sehen, welche Felder dort im Moment erscheinen.

September 19, 2024 unter 2:03 pm #16199294

larsZ

Der Shortcode "awx_shortcode_features" war nur ein Beispiel, das Problem gilt auch für die beiden eingesetzten. Anbei die Felder, die übersetzbar sein sollen.

Die URLs werden mir zwar im ATE angezeigt, allerdings decoded. Außerdem werden die Bilder nicht von der Media Translation erfasst.

Bildschirmfoto 2024-09-19 um 16.00.40.png
Bildschirmfoto 2024-09-19 um 16.00.55.png
September 20, 2024 unter 9:40 am #16202186

Bruno Kos
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

Zeitzone: Europe/Zagreb (GMT+01:00)

Ich sehe, ich überprüfe dies mit unserer zweiten Ebene und werde Sie auf dem Laufenden halten.

September 24, 2024 unter 9:38 am #16213473

larsZ

Hallo, gibt es hier schon neue Erkenntnisse?

September 24, 2024 unter 12:48 pm #16215002

Bruno Kos
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

Zeitzone: Europe/Zagreb (GMT+01:00)

Das Problem wurde an unser 2nd-Tier-Team weitergeleitet und kann einige Zeit zur Fehlersuche in Anspruch nehmen. Ich melde mich bei Ihnen, sobald ich Neuigkeiten oder Fragen habe.

Oktober 2, 2024 unter 8:07 am #16243823

larsZ

Gibt es hier einen neuen Stand?

Oktober 2, 2024 unter 8:44 am #16244098

Bruno Kos
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

Zeitzone: Europe/Zagreb (GMT+01:00)

Ich habe noch keine Neuigkeiten aus unserer 2. Ebene.

Oktober 2, 2024 unter 9:07 am #16244311

larsZ

Wann können wir damit rechnen? Wir bräuchten hier zeitnah eine Lösung.

Oktober 2, 2024 unter 1:33 pm #16245918

Bruno Kos
Supporter

Sprachen: Englisch (English ) Deutsch (Deutsch ) Französisch (Français )

Zeitzone: Europe/Zagreb (GMT+01:00)

Können Sie das ausprobieren? Dies sollte richtig codieren und decodieren.

// Filter to encode the shortcode attributes
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 );

            // If the key is part of the link, we need to combine the URL and title back
            if ( 'awx_cards_link_url' === $key || 'awx_cards_link_title' === $key ) {
                if ( !isset( $output[ $i ]['awx_cards_link'] ) ) {
                    $output[ $i ]['awx_cards_link'] = 'url:' . rawurlencode($original_string[ 'awx_cards_link_url_' . $i ]) . '|title:' . $original_string[ 'awx_cards_link_title_' . $i ];
                }
            } else {
                $output[ $i ][ $key ] = $value;
            }
        }
        $string = urlencode( json_encode( $output ) );
    }
    return $string;
}


// Filter to decode the shortcode attributes
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 the key is the link, we need to split the url and title into separate translatable fields
                if ( 'awx_cards_link' === $key ) {
                    // Extract URL and title from the combined string
                    $value = rawurldecode($value);
                    $link_parts = explode('|', $value);
                    $url = str_replace('url:', '', $link_parts[0]);
                    $title = str_replace('title:', '', $link_parts[1]);

                    // Add separate fields for the URL and the title
                    $string[ 'awx_cards_link_url_' . $i ] = array( 'value' => $url, 'translate' => true );
                    $string[ 'awx_cards_link_title_' . $i ] = array( 'value' => $title, 'translate' => true );
                }
                // Other fields that need translation
                elseif ( in_array( $key, array( 'awx_toggleboxes_title', 'awx_toggleboxes_subtitle', 'awx_toggleboxes_toggle', 'awx_cards_title', 'awx_cards_list' ) ) ) {
                    $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => true );
                } else {
                    $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => false );
                }
            }
        }
    }
    return $string;
}

Lassen Sie mich wissen, ob dies das ist, wonach Sie suchen, oder ob wir Ihnen bei etwas anderem behilflich sein können.

Oktober 8, 2024 unter 8:04 am #16264217

larsZ

Hallo Bruno, das hat funktioniert! Allerdings nur für die Links, die Bilder betrifft das leider nicht. Diese werden immer noch auf deutsch angezeigt, obwohl die mit der Media Translation übersetzt worden sind.

Das Thema '[Geschlossen] Links und Bilder übersetzen in' ist für neue Antworten geschlossen.