Dieses Thema ist gelöst. Hier finden Sie eine Beschreibung des Problems und der Lösung.
Problem:
Die Links, welche im LayerSlider unter Link& Attribute gesetzt habe, werden auf der englischen Seite des Sliders nicht zur Übersetzung dargestellt.
Solution:
Das LayerSlider Plugin registriert nur $layer['html'] und $layer['props']['html']. Der Anker-Link ist im wp_layerslider als 'url' gespeichert. Um sie zu übersetzen, müssen wir sie also auf die gleiche Weise registrieren und anzeigen.
Als temporäre Lösung haben wir nun den Code kopiert und ihn für das "url" Feld angepasst. Bitte beachten Sie, dass es sich hierbei nicht um eine vollständig getestete Lösung handelt und dass die endgültige Korrektur vom LayerSlider-Team durchgeführt werden sollte.
Workaround:
#1 Öffnen Sie wp-content/plugins/LayerSlider/assets/wp/actions.php und fügen Sie nach Zeile 1722 folgendes hinzu:
if( ! empty( $layer['url'] ) && $layer['type'] != 'img' ) { // Check 'createdWith' property to decide which WPML implementation // should we use. This property was added in v6.5.5 along with the // new WPML implementation, so no version comparison required. if( ! empty( $layer['uuid'] ) && ! empty( $data['properties']['createdWith'] ) ) { $string_name = "slider-{$sliderID}-layer-{$layer['uuid']}-url"; do_action( 'wpml_register_single_string', 'LayerSlider Sliders', $string_name, $layer['url'] ); // Old implementation } else { $string_name = '<'.$layer['type'].':'.substr(sha1($layer['url']), 0, 10).'> layer on slide #'.($slideIndex+1).' in slider #'.$sliderID.''; do_action( 'wpml_register_single_string', 'LayerSlider WP', $string_name, $layer['url']); } }
#2 Öffnen Sie wp-content/plugins/LayerSlider/assets/includes/slider_markup_html.php und fügen Sie nach Zeile 234 ein:
if( ! empty( $slides['properties']['attrs']['createdWith'] ) ) { $string_name = "slider-{$id}-layer-{$layer['props']['uuid']}-url"; $layer['props']['url'] = apply_filters( 'wpml_translate_single_string', $layer['props']['url'], 'LayerSlider Sliders', $string_name ); // Old implementation } else { $string_name = '<'.$layer['props']['type'].':'.substr(sha1($layer['props']['url']), 0, 10).'> layer on slide #'.($slidekey+1).' in slider #'.$id.''; $layer['props']['url'] = apply_filters( 'wpml_translate_single_string', $layer['props']['url'], 'LayerSlider WP', $string_name); }
#3 Öffnen Sie den Slider, bearbeiten Sie diese (z.B. ein Leerzeichen im Layer-Text hinzufügen) und speichern Sie.
#4 Die Links sind nun in der String Translation Tabelle registriert. Markieren Sie die Strings und wählen Sie unterhalb der Tabelle "Die Sprache der ausgewählten Strings ändern" und ändern Sie die Strings von Englisch auf Deutsch (Damit die deutsche Flagge neben dem String erscheint).
#5 Übersetzen Sie nun die Links zu /en/ => z.B..: /en/services/#mindful_business.
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.
Dieses Thema enthält 14 Antworten, hat 2 Stimmen.
Zuletzt aktualisiert von oliverT-11 Vor 3 Jahren, 11 Monaten.
Assistiert von: Marcel.
Verfasser | Beiträge |
---|---|
November 12, 2020 unter 7:17 pm #7437847 | |
oliverT-11 |
Tell us what you are trying to do? Die Links, die mit den Gestaltungselementen "Finance & Accounting", "Payroll Management", "Expatriate Consulting" und "Mindful Business" aufgerufen werden, werden auf der englischen Seite des Sliders nicht korrekt umgesetzt. Auf der deutschen Originalseite wird mit dem Gestaltungselement "Finance & Accounting" der Anker-Link "versteckter Link" aufgerufen. Dieser Anker-Link wird in der übersetzten englischen Seite zu "versteckter Link" umgewandelt. Tatsächlich müsste der Anker-Link jedoch "versteckter Link" lauten. Gibt es eine Möglichkeit, die Anker-Links zu korrigieren? In der String-Übersetzung habe ich leider nichts finden können. Für Ihre Hilfe bin ich Ihnen sehr dankbar. Viele Grüße, Is there any documentation that you are following? Is there a similar example that we can see? What is the link to your site? |
November 13, 2020 unter 9:34 am #7441747 | |
Marcel Supporter
Sprachen: Englisch (English ) Deutsch (Deutsch ) Zeitzone: Europe/Madrid (GMT+01:00) |
Hallo Oliver, dieses Problem scheint LayerSlider bekannt zu sein: versteckter Link Gibt es einen Grund, warum Sie kein URL Rewrite zu "Pretty Permalinks" verwenden? (also /en/ anstatt ?lang=en) Es gibt dabei nur Vorteile für das SEO. Damit sollte LayerSlider umgehen können. Weitere Infos dazu finden sie hier: Freundliche Grüße |
November 13, 2020 unter 2:05 pm #7443491 | |
oliverT-11 |
Hallo Marcel, vielen Dank, dass Sie sich wieder meines Problems annehmen. Und auch vielen Dank frü den Hinweis zur Umstellung auf "Pretty Permalinks". Die Umstellung habe ich gerade durchgeführt. Über das Menü lassen sich damit alle Seiten aufrufen. Nur funktionieren die Links auf der Startseite weiterhin nicht. Sie werden jetzt überhaupt nicht mehr angepasst und sind die gleichen wie auf der deutschsprachigen Startseite. Ist bestimmt nur eine Kleinigkeit, ein Caching-Problem vielleicht? Ich habe alles String-Übersetzungen nochmal von Hand neu gespeichert. versteckter Link Viele Grüße, |
November 13, 2020 unter 2:54 pm #7443741 | |
Marcel Supporter
Sprachen: Englisch (English ) Deutsch (Deutsch ) Zeitzone: Europe/Madrid (GMT+01:00) |
Hallo Oliver, können Sie bitte versuchen die Startseite minimal zu verändern (z. B.: Leerzeichen einfügen) um eine Aktualisierung auszulösen. Sobald die Übersetze Version mit 100& gespeichert wurde, können Sie erneut prüfen, ob sich etwas an den Links verändert. Bitte um Info Freundliche Grüße |
November 17, 2020 unter 2:42 pm #7467407 | |
Marcel Supporter
Sprachen: Englisch (English ) Deutsch (Deutsch ) Zeitzone: Europe/Madrid (GMT+01:00) |
Hallo Oliver, danke für den Zugang. Ich sehe hier auch keine Möglichkeit, dass LayerSlider mit den Ankerlinks auch in dieser URL Variante umgehen kann. Das Feld von "Sider Linking field" wird überhaupt nicht ausgelesen, es wird somit überhaupt keine verlinkte URL zur Übersetzung sichtbar. Wir haben dieses Problem von ein paar Tagen über ein Chat Ticket gemeldet bekommen und konnten es als Bug bestätigen. Unser Kompatibilitäts-Team bereitet gerade eine Meldung an den Autor vor, damit dies im Code von LayerSlider behoben wird: https://wpml.org/forums/topic/translate-layer-slider-links/ Ich gebe Ihnen Bescheid, sobald die Lösung über ein LayerSlider Update behoben wird. Beachten Sie bitte, dass es dauern kann bis LayerSlider hier reagiert. Freundliche Grüße |
November 21, 2020 unter 8:41 am #7497645 | |
Marcel Supporter
Sprachen: Englisch (English ) Deutsch (Deutsch ) Zeitzone: Europe/Madrid (GMT+01:00) |
Hallo Oliver, wir haben einen temporären Workaround gefunden und diesen bereits an den Autor weitergeleitet. Als temporäre Lösung können Sie folgenden Code verändern, bis LayerSlider dies über ein Update löst: 1- Öffnen Sie wp-content/plugins/LayerSlider/assets/wp/actions.php // Register slider layer link if (! empty($slide['properties']['layer_link'] )) { $string_name = "slider-{$sliderID}-layer_link-{$slide['properties']['layer_link']}"; do_action( 'wpml_register_single_string', 'LayerSlider Sliders', $string_name, $slide['properties']['layer_link'] ); } 3- Öffnen Sie wp-content/plugins/LayerSlider/assets/includes/slider_markup_html.php $slide['props']['linkUrl'] = ! empty( $slide['props']['linkUrl'] ) ? $slide['props']['linkUrl'] : '#'; Und fügen Sie danach dies hinzu: $slide['props']['linkUrl'] = apply_filters( 'wpml_translate_single_string', $slide['props']['linkUrl'], 'LayerSlider Sliders', "slider-{$id}-layer_link-{$slide['props']['linkUrl']}"); 4- Speichern Sie den Slider erneut ab und übersetzen Sie die Strings in der WPML String Translation. BItte um Info, ob für Sie es damit funktioniert. Freundliche Grüße |
November 21, 2020 unter 7:10 pm #7499623 | |
oliverT-11 |
Hallo Marcel, zunächst ganz herzlichen Dank für die Mühe und den Lösungsvorschlag. Die Schritte 1 - 3 habe ich durchgeführt und den Slider gespeichert. Das hat soweit noch nicht geholfen. Ich habe aber keine Idee, was mit "and translate the registered strings in ST" gemeint ist. Welche Strings? Die bisher nicht übersetzten Links/URLs? Da habe ich keine Idee, wo ich die finden kann. Mit einer Domain-Suche habe ich sie nicht finden können. In der String-Übersetzung finde ich nur die Labels der Schaltflächen, nicht aber die URL. Haben Sie da vielleicht noch einen Tip für mich? Viele Grüße, |
November 23, 2020 unter 10:04 am #7507431 | |
Marcel Supporter
Sprachen: Englisch (English ) Deutsch (Deutsch ) Zeitzone: Europe/Madrid (GMT+01:00) |
Hallo Oliver, bitte prüfen Sie die Antwort oben mit dem Code erneut, hier war noch ein Übersetzungsfehler enthalten, bitte entschuldigen Sie. Ich habe es nun ab 3.) ausgebessert. Wenn Sie also den Slider abspeichern, sollten die neuen URL Strings in der String Translation Tabelle verfügbar sein. Können Sie dies bitte erneut überprüfen? Freundliche Grüße |
November 23, 2020 unter 8:49 pm #7512417 | |
oliverT-11 |
Hallo Marcel, die Änderungen habe ich nochmal vollständig vorgenommen. Leider hat das nicht geholfen. Zwar finde ich jetzt in der String-Übersetzung entsprechende (und bereits übersetzte) Werte - siehe beigefügter Screenshot. Diese werden auf der englischsprachigen Startseite jedoch nicht verwendet. Dort werden weiterhin die auf die deutssprachigen Seiten zeigenden Links angesteuert. Haben Sie vielleicht noch eine Idee? Viele Grüße, |
November 24, 2020 unter 7:14 pm #7520183 | |
Marcel Supporter
Sprachen: Englisch (English ) Deutsch (Deutsch ) Zeitzone: Europe/Madrid (GMT+01:00) |
Hallo Oliver, ich habe weitere Tests durchgeführt und der beschriebene Workaround funktioniert in Ihrem Fall nicht, da LayerSlider ein anderes URL-Feld dafür setzt. Ich werde versuchen das Problem erneut von Grund auf in einer isolierten Sandbox nachzustellen, um dies zur Prüfung an unser Kompatibilitäts-Team weiterzuleiten. Freundliche Grüße |
November 26, 2020 unter 11:56 am #7534157 | |
Marcel Supporter
Sprachen: Englisch (English ) Deutsch (Deutsch ) Zeitzone: Europe/Madrid (GMT+01:00) |
Hallo Oliver, ich habe das ganze nun hier auf dieser Sandbox versteckter Link reproduziert und den Fall unser Kompatibilitäts-Team zur weiteren Prüfung weitergeleitet. Soweit ich herausfinden konnte, hat der Autor das Problem bereits 2019 behoben: versteckter Link Ich melde mich, sobald ich eine Rückmeldung dazu erhalte. Freundliche Grüße |
Dezember 1, 2020 unter 9:05 am #7567947 | |
Marcel Supporter
Sprachen: Englisch (English ) Deutsch (Deutsch ) Zeitzone: Europe/Madrid (GMT+01:00) |
Hallo Oliver, Das LayerSlider Plugin registriert nur $layer['html'] und $layer['props']['html']. Der Anker-Link ist im wp_layerslider als 'url' gespeichert. Um sie zu übersetzen, müssen wir sie also auf die gleiche Weise registrieren und anzeigen. Die endgültige Behebung sollte an das LayerSlider Team gehen. Als temporäre Lösung haben wir nun den Code kopiert und ihn für das "url" Feld angepasst. Bitte beachten SIe, dass es sich hierbei nicht um eine vollständig getestete Lösung handelt und dass die endgültige Korrektur vom LayerSlider-Team durchgeführt werden sollte. Workaround: #1 Öffnen Sie wp-content/plugins/LayerSlider/assets/wp/actions.php und fügen Sie nach Zeile 1722 folgendes hinzu: if( ! empty( $layer['url'] ) && $layer['type'] != 'img' ) { // Check 'createdWith' property to decide which WPML implementation // should we use. This property was added in v6.5.5 along with the // new WPML implementation, so no version comparison required. if( ! empty( $layer['uuid'] ) && ! empty( $data['properties']['createdWith'] ) ) { $string_name = "slider-{$sliderID}-layer-{$layer['uuid']}-url"; do_action( 'wpml_register_single_string', 'LayerSlider Sliders', $string_name, $layer['url'] ); // Old implementation } else { $string_name = '<'.$layer['type'].':'.substr(sha1($layer['url']), 0, 10).'> layer on slide #'.($slideIndex+1).' in slider #'.$sliderID.''; do_action( 'wpml_register_single_string', 'LayerSlider WP', $string_name, $layer['url']); } } #2 Öffnen Sie wp-content/plugins/LayerSlider/assets/includes/slider_markup_html.php und fügen Sie nach Zeile 234 ein: if( ! empty( $slides['properties']['attrs']['createdWith'] ) ) { $string_name = "slider-{$id}-layer-{$layer['props']['uuid']}-url"; $layer['props']['url'] = apply_filters( 'wpml_translate_single_string', $layer['props']['url'], 'LayerSlider Sliders', $string_name ); // Old implementation } else { $string_name = '<'.$layer['props']['type'].':'.substr(sha1($layer['props']['url']), 0, 10).'> layer on slide #'.($slidekey+1).' in slider #'.$id.''; $layer['props']['url'] = apply_filters( 'wpml_translate_single_string', $layer['props']['url'], 'LayerSlider WP', $string_name); } #3 Öffnen Sie den Slider, bearbeiten Sie diese (z.B. ein Leerzeichen im Layer-Text hinzufügen) und speichern Sie. #4 Die Anchor Links sind nun in der String Translation Tabelle registriert. Markieren Sie die Strings und wählen Sie unterhalb der Tabelle "Die Sprache der ausgewählten Strings ändern" und ändern Sie die Strings von Englisch auf Deutsch (Damit die deutsche Flagge neben dem String erscheint). #5 Übersetzen Sie nun die Links zu /en/ => z.B..: /en/services/#mindful_business. Funktionierendes Beispiel: Freundliche Grüße |
Dezember 1, 2020 unter 8:00 pm #7573787 | |
oliverT-11 |
Hallo Marcel, Ihre Mühe und Ihre Hilfe weiß ich wirklich sehr zu schätzen. Vielen Dank! Gerne probiere ich den vorgeschlagenen Workaround. Könnten Sie mir dafür bitte mitteilen, welche Dateien ich dafür verwenden soll? Ich habe beide Dateien ja bisher zweimal mit Ihren Angaben angepasst. Mache ich die Änderungen in der Original-Datei oder in der zuletzt geänderten? Und könnten Sie mir bitte wieder die jeweils den Inhalt der vorausgehenden Zeile nenne, damit ich auch wirklich die richtige Stelle zum Einfügen finde? Nochmals vielen herzlichen Dank! Viele Grüße, |
Dezember 2, 2020 unter 9:24 am #7577449 | |
Marcel Supporter
Sprachen: Englisch (English ) Deutsch (Deutsch ) Zeitzone: Europe/Madrid (GMT+01:00) |
Hallo Oliver, falls Sie die Originaldateien noch haben können Sie die Änderung in diesen Dateien durchführen und per FTP aktualisieren. Oder Sie entfernen die Änderungen manuell und fügen es die Änderungen dann nach den oben ein. Sie können auch gerne die 2 Files einfach von meiner Testseite kopieren: Zugang: Files: versteckter Link Freundliche Grüße |