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:
#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.
Tell us what you are trying to do?
Nachdem jetzt mit Ihrer Hilfe (vorausgegangenes Ticket) die Umschaltung der Startsteite zwischen deutsch und englisch funktioniert, ist ein neues Problem entstanden.
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.
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.
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.
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.
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.
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
2- Nach Zeile 1702 foreach($data['layers'] as $slideIndex => $slide) { fügen Sie folgendes hinzu:
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.
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?
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.
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.
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.
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:
#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:
Mindfull Business => versteckter Link
URL Ziel ist nun versteckter Link
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?
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: