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 beantwortet Anfragen im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.

This thread is resolved. Here is a description of the problem and solution.

Problem:
Der Shortcode [cesis_icon_list] wird in der Übersetzung nicht angezeigt
Solution:

Solution:
Dazu musste für diesen Shortcode ein URL Encoding durchgeführt werden. Die Lösung besteht aus 2 Teilen:

#1
Fügen Sie diesen Code bitte in die function.php ihres aktiven Themes:

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( 'text', 'title', 'features', 'substring', 'btn_text', 'label', 'value', 'y_values', 'heading' ) ) ) {
                    $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => true );
                } else {
                    $string[ $key . '_' . $i ] = array( 'value' => $value, 'translate' => false );
                }
            }
        }
    }
    return $string;
}

#2 Überschreiben Sie die XML-Konfig unter wp-admin/admin.php?page=wpml-translation-management%2Fmenu%2Fsettings&sm=custom-xml-config

<wpml-config>
    <shortcodes>
        <shortcode>
            <tag>cesis_icon_list</tag>
            <attributes>
                <attribute type="area" encoding="urlencoded_json">values</attribute>
            </attributes>
        </shortcode>
    </shortcodes>
</wpml-config>

Relevant Documentation:
https://wpml.org/documentation/support/language-configuration-files/#using-wpml-language-configuration-file-with-child-themes
https://wpml.org/documentation/support/translating-urlencoded-shortcodes/

This topic contains 5 Antworten, has 2 Teilnehmer.

Last updated by christianH-83 vor 2 Monate, 3 Wochen.

Assigned support staff: Marcel.

Autor Beiträge
Juli 25, 2019 um 12:36 pm #4283097

christianH-83

Hallo Marcel ... jetzt wirds ärgerlich ... =(

Kann es sein, dass die Anpassungen nur für das Timeline-Element speziell greifen? Das List-Element - ich bin nicht sicher, ob ich das hier gesondert angesprochen hatte - hat die selben Probleme und scheint mit dem Bugfix nun nach wie vor nicht zu gehen.

Blöd dass ich dem Kunden schon die Euphorie eingepflanzt hatte, da es ja nun endlich voran geht mit der Übersetzung.

Juli 25, 2019 um 12:40 pm #4283133

Marcel
Supporter

Languages: Englisch (English ) Deutsch (Deutsch )

Timezone: Europe/Madrid (GMT+02:00)

Hallo Christian,

dies ist korrekt. Jeder Shortcode muss mit dieser Variante umgestellt werden. Können Sie mir bitte den Shortcode einfügen, um welchen es genau geht? Möglicherweise benötigt dieser nur die XML-Konfig und nicht die PHP Anpassung.

Vielen Dank!

Freundliche Grüße
Marcel

Juli 25, 2019 um 12:46 pm #4283169

christianH-83

Da gehts leider schon los ... während für die timeline in der wpml-config.xml im theme etwas aufzufinden war, scheint es für die Liste gänzlich zu fehlen.

Ah sekunde, ich glaube, das hier könnte es sein:

        <shortcode>
            <tag>cesis_icon_list</tag>
            <attributes>
                <attribute>heading</attribute>
                <attribute>text</attribute>
                <attribute>link</attribute>
            </attributes>
        </shortcode>

Mal nebenbei ... ist das eigentlich die Arbeit des Themeentwicklers, oder sollte das meine Aufgabe sein? Irgendwie verstehe ich diese Probleme ja eher als fiese Bugs. Und offenbar sind es ja Fehler im Theme oder?

Juli 25, 2019 um 2:23 pm #4284141

Marcel
Supporter

Languages: Englisch (English ) Deutsch (Deutsch )

Timezone: Europe/Madrid (GMT+02:00)

Vielen Dank, das ist der Shortcode. Ich habe dies zur Prüfung wieder an unser Kompatibilitätsteam weitergeleitet.

Der Autor sollte dies am besten direkt in sein Plugin integrieren, dann ist dies "von Haus aus" inkludiert. Sie können den Workaround gerne an den Theme Autor weiterleiten.

Freundliche Grüße
Marcel

Juli 29, 2019 um 7:09 am #4297271

Marcel
Supporter

Languages: Englisch (English ) Deutsch (Deutsch )

Timezone: Europe/Madrid (GMT+02:00)

Hallo Christian,

hier die geänderte XML-Konfig: Sie können es wie hier beschrieben unter "WPML -> Einstellungen -> Custom XML Configuration" hinzufügen. Das PHP bleibt durch den vorherigen Shortcode identisch und muss nicht angepasst werden:

https://wpml.org/documentation/support/language-configuration-files/#using-wpml-language-configuration-file-with-child-themes

<wpml-config>
    <shortcodes>
        <shortcode>
            <tag>cesis_timeline</tag>
            <attributes>
                <attribute type="area" encoding="urlencoded_json">events</attribute>
            </attributes>
        </shortcode>
        <shortcode>
            <tag>cesis_icon_list</tag>
            <attributes>
                <attribute type="area" encoding="urlencoded_json">values</attribute>
            </attributes>
        </shortcode>
    </shortcodes>
</wpml-config>

Falls der Shortcode nicht angezeigt wird, vergessen Sie nicht vorher eine Änderung auf der deutschen Seite durchzuführen, damit die Änderung in die Übersetzung übernommen wird.

Freundliche Grüße
Marcel

Juli 29, 2019 um 7:44 am #4297421

christianH-83

Danke Marcel,

jetzt scheints zu klappen ... ich habe es auch weitergegeben an die Cesis-Autoren und habe dabei darauf hingewiesen, dass sie ggfs. mal die komplette wpml xml config überarbeiten sollten.

Vielleicht hilft es ja.