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.

Heute stehen keine Supporter zur Arbeit im German-Forum zur Verfügung. Sie können gern Tickets erstellen, die wir bearbeiten werden, sobald wir online sind. Vielen Dank für Ihr Verständnis.

Schlagwörter: 

This topic contains 9 Antworten, has 2 Teilnehmer.

Last updated by christophr-16 vor 1 Jahr, 5 Monate.

Assigned support staff: Cristina.

Autor Beiträge
Mai 11, 2018 um 7:31 am

christophr-16

Ich versuche mittels "Linkziele übersetzen" die Links auf meiner Seite automatisch zu einer anderen Sprache umzuleiten.

URL der/meiner Website, auf der das Problem auftritt: hidden link

Erwartet hatte ich zu sehen: Übersetzte Links, welche auf die entsprechende Sprache verweisen.

Stattdessen bekam ich: Ein hängender Übersetzungsprozess (Siehe Screenshot)

Mai 11, 2018 um 12:58 pm #2088964

Cristina

Hallo Christopher,

da diese Übersetzung der Linkziele etwas ressourcenintensiv sein kann und der Time-Limit in PHP auf 0 gesetzt ist, kann es sein, dass es hier zu einem timeout kommt und die Requests vom Server geblockt werden. Dann kann auch eine Sicherheitseinstellung sein, die hier blockiert.

Der Prozess ist an sich ziemlich langsam und es kann passieren, dass ein Server das beim Erreichen einer bestimmten Grenze abblockt.

Könnten Sie die Debug-Informationen von WordPress dazu erstellen oder weiterleiten, um zu sehen, ob es einen Timeout gibt oder etwas anderes, was bei diesem Limit stockt?

Wenn das machbar ist, könnten Sie auch versuchen, diese Funktion einmal durchlaufen zu lassen, und dabei unbeteiligte Plugins deaktivieren, die eventuell hier eingreifen, wenn viel Aktivität auf der Seite ist (Tracking- oder Monitoring Plugins).

Um das Problem besser zu identifizieren wäre es hilfreich, wenn Sie uns die Informationen des WordPress Debugs zukommen lassen könnten.

Wenn Sie den Debug einrichten, und dann die Linkziele noch einmal durchlaufen lassen, könnten wird die Fehlermeldungen im WordPress selbst bekommen.

Dafür müssten Sie in der Datei wp-config.php im Root-Verzeichnis der WordPress-Installation diese Zeile suchen:

define('WP_DEBUG', false);

Bitte ändern Sie dort "false" auf "true" und fügen Sie eine weitere Zeile ein, so dass es wie folgt lautet:

define('WP_DEBUG', true);
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY',false);

Damit werden die PHP-Fehler in eine Datei namens debug.log im Verzeichnis /wp-content/ gespeichert.

Es handelt sich um eine Textdatei, die wir über den Link kopieren und analysieren können.
Wenn Sie den Inhalt in die Antwortbox hineinkopieren, entsteht sonst ein ziemlich unübersichtlicher Textsalat. Wenn Sie diese Datei (debug.log) kopieren und auf pastebin.com verlinken könnten, wäre das sehr hilfreich für uns.

Da die Seite komplex ist, einiges noch als Übersetzungsauftrag in Arbeit ist und dadurch vielleicht auf manche Linkziele mehr Rechenarbeit erfordern, könnte es ein Ressourcenproblem oder ein serverseitiges Problem sein.

Ich müsste da die Kollegen vom second level support fragen, und dafür bräuchte ich mehr Informationen.

MfG,
Cristina

Mai 15, 2018 um 10:58 am #2136278

christophr-16

Hallo Cristina

Besten Dank für die ausfürliche Rückmeldung. Ich werde den DEBUG-Mode aktivieren und die Linkübersetzung erneut starten. Sobald das besagte File vorliegt werde ich es hochladen.

Freundliche Grüsse.

Stephan

Mai 15, 2018 um 1:10 pm #2139260

christophr-16

Wie versprochen hier der Link zur debug.log Datei:

https://pastebin.com/B7aQJuyB

Leider stehen nicht wirklich viele Dinge darin.

Mai 15, 2018 um 1:29 pm #2139936

Cristina

Hallo Christopher,

vielen Dank für die Infos, ich habe damit die Kollegen um Feedback gebeten.

Ich sehe, dass der Time Limit immer noch bei 0 ist. Ich habe jetzt nochmal nachgefragt, wie relevant der Time-Limit hierfür ist.

Sobald ich Feedback habe, melde ich mich damit.

MfG,
Cristina

Mai 18, 2018 um 11:35 am #2188872

Cristina

Hallo Christopher,

die Kollegen haben für dieses Problem einen temporären Workaround gefunden, mit dem man die Suche nach den betreffenden Strings effizienter macht, um mögliche Timeouts zu vermeiden und weniger Ressourcen zu nutzen.

Es handelt sich um eine kleine Änderung im Code des Plugins, um die Links besser vor zu filtern und damit die Gesamtzahl an gescannten Links zu reduzieren. Damit wird der Prozess beschleunigt und effizienter durchgeführt.

Bitte erstellen Sie einen Backup Ihrer Seite, bevor Sie das auf der Live-Seite probieren:

Sie müssten im Plugin-Verzeichnis WPML Translation Management im Verzeichnis "classes/translate_link_targets" die Datei "class-wpml-translate-link-targets-in-strings-global.php" öffnen und den vorhandenen Inhalt mit diesem Code ersetzen:

<?php

class WPML_Translate_Link_Targets_In_Strings_Global extends WPML_Translate_Link_Targets_In_Strings {

    protected function get_contents_with_links_needing_fix( $start_id = 0, $count = 0 ) {

        $limit = '';
        if ( $count > 0 ) {
            $limit = " LIMIT " . $count;
        }

        $this->content_to_fix = $this->wpdb->get_results( $this->wpdb->prepare(
            "SELECT id as element_id, language as language_code, status as status FROM {$this->wpdb->prefix}icl_string_translations WHERE id >= %d AND status = 10 ORDER BY id " . $limit,
            $start_id
        ) );
    }

    public function get_number_to_be_fixed( $start_id = 0 ) {
        return $this->wpdb->get_var( $this->wpdb->prepare(
            "SELECT COUNT(id) FROM {$this->wpdb->prefix}icl_string_translations WHERE id >= %d AND status = 10 ORDER BY id ",
            $start_id
        ) );
    }

}

Es wird nur eine Kleinigkeit bei der Auswahl der Links geändert, um die Links nach Status zu filtern. Der Code ist korrekt von den Entwicklern validiert worden.

Der alte Inhalt der Datei /plugins/wpml-translation-management/classes/translate_link_targets/class-wpml-translate-link-targets-in-strings-global.php, ist dieser:

<?php

class WPML_Translate_Link_Targets_In_Strings_Global extends WPML_Translate_Link_Targets_In_Strings {

	protected function get_contents_with_links_needing_fix( $start_id = 0, $count = 0 ) {

		$limit = '';
		if ( $count > 0 ) {
			$limit = " LIMIT " . $count;
		}

		$this->content_to_fix = $this->wpdb->get_results( $this->wpdb->prepare(
			"SELECT id as element_id, language as language_code FROM {$this->wpdb->prefix}icl_string_translations WHERE id >= %d ORDER BY id " . $limit,
			$start_id
		) );
	}

	public function get_number_to_be_fixed( $start_id = 0 ) {
		return $this->wpdb->get_var( $this->wpdb->prepare(
			"SELECT COUNT(id) FROM {$this->wpdb->prefix}icl_string_translations WHERE id >= %d ORDER BY id ",
			$start_id
		) );
	}

}

Damit könnten Sie den Prozess noch einmal durchführen, und es sollten viel weniger Links angezeigt werde und damit der Ablauf auch schneller und ressourcenschonender sein.

MfG,
Cristina

Mai 18, 2018 um 3:24 pm #2190248

christophr-16

Besten Dank für das Update. Ich werde den Code einspielen und die Übersetzung erneut laufen lassen. Sobald ich eine Rückmeldung habe, werde ich mich erneut melden.

MfG,
Stephan

Mai 18, 2018 um 4:07 pm #2190433

christophr-16

Ich habe soeben die Änderung am Code vorgenommen und die Linkübersetzung erneut lauffen lassen. Der Prozess ging dieses mal zwar viel schneller, jedoch wurden keine Links zum Übersetzen gefunden. Leider zeigen die Links beispielshalber auf der Landing seite noch immer auf die ursprüngliche Sprache.

Mai 22, 2018 um 7:16 pm #2211477

Cristina

Hallo Christopher,

ich habe das auf der Seite gesehen, und das liegt wahrscheinlich daran, dass die Links in den Buttons nicht als solche erkannt wurden und nicht als übersetzbares Element registriert sind.

Das passiert bei manchen Themes, wenn die Buttons nicht für WPML erkennbar sind und daher auch nicht automatisch das Ziel des Links übersetzen, bzw. das richtige Pendant finden.

Was ich bisher gesehen habe, deutet leider darauf hin, dass man die Links in solchen Module manuell übersetzen muss.

Ich habe bei Uncode das gleiche in einer Testinstallation erlebt, daher könnte es sein, dass man die URLs selbst übersetzen muss, weil es Inhalte von Button-Module im Pagebuilder sind.

Ich muss dazu Feedback von den Kollegen einholen.

MfG,
Cristina

Mai 23, 2018 um 5:38 am #2212744

christophr-16

Hallo Cristina

Danke für den Hinweis. Ich werde in diesem Fall die Links entsprechend der Sprache manuell anpassen.

MfG,
Stephan