• Gelöst onlaie

    (@onlaie)


    Bei einer noch nicht öffentlichen Site soll ein Mitgliedschaftsplugin übersetzt werden. Nur wenige Wörter, Sätze sind hier noch auf EN und wir hätten die gerne mit formalen DEUTSCH (Sie).
    Die Wahl fiel auf Loco Translate, weil man damit die selbst angepassten Übersetzungen vor Updates schützen kann.

    So, nun zum Fehler: Nur bei der einen Website klappt keine einzige Änderung keiner einzigen Sprache!
    Egal was man übersetzen will: Theme, Plugins … Egal welche Sprache, egal wo gelagert, beim Speichern kommt stets:

    Fehler: Es gab einen kritischen Fehler auf Ihrer Website. Erfahren Sie mehr über die Problembehandlung in WordPress.. Überprüfe die Konsole, um Debugging-Informationen zu erhalten

    So habe ich DEBUG ein und das zeigt immer nur das eine:

    [27-Apr-2025 10:18:46 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function error_log() in /var/www/clients/client21/web238/web/wp-content/plugins/loco-translate/src/error/Exception.php:120
    Stack trace:
    #0 /var/www/clients/client21/web238/web/wp-content/plugins/loco-translate/src/error/AdminNotices.php(89): Loco_error_Exception->log()
    #1 /var/www/clients/client21/web238/web/wp-content/plugins/loco-translate/src/error/AdminNotices.php(147): Loco_error_AdminNotices::add()
    #2 /var/www/clients/client21/web238/web/wp-content/plugins/loco-translate/src/gettext/Compiler.php(75): Loco_error_AdminNotices::debug()
    #3 /var/www/clients/client21/web238/web/wp-content/plugins/loco-translate/src/ajax/SaveController.php(61): Loco_gettext_Compiler->writePo()
    #4 /var/www/clients/client21/web238/web/wp-content/plugins/loco-translate/src/mvc/AjaxRouter.php(173): Loco_ajax_SaveController->render()
    #5 /var/www/clients/client21/web238/web/wp-content/plugins/loco-translate/src/mvc/AjaxRouter.php(87): Loco_mvc_AjaxRouter->renderAjax()
    #6 /var/www/clients/client21/web238/web/wp-includes/class-wp-hook.php(322): Loco_mvc_AjaxRouter->on_wp_ajax_loco_json()
    #7 /var/www/clients/client21/web238/web/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
    #8 /var/www/clients/client21/web238/web/wp-includes/plugin.php(517): WP_Hook->do_action()
    #9 /var/www/clients/client21/web238/web/wp-admin/admin-ajax.php(192): do_action()
    #10 {main}
      thrown in /var/www/clients/client21/web238/web/wp-content/plugins/loco-translate/src/error/Exception.php on line 120

    Dies kommt bei jedem Klick auf Speichern einer Übersetzung aufs Neue dazu.

    Was kann da kaputt sein?
    Soweit ich als Laie das sehe, wird hier eine unbekannte Loco Funktion namens error_log() angesteuert. Und da es die nicht gibt? kommt eine Lawine an Folgefehlern bzw. Meldungen darüber, das man dies dem Admin mitteilte.
    Leider setzt diese das Speichern der Übersetzung aus. Ansonsten wäre mir diese Meldung im Backend eh egal.

    Der Fehler tritt auch auf, wenn mit Standardtheme und nur aktivem Loco gefahren wird.
    Loco selbst liefert noch folgende Infos zu jeder Sprachdatei:
    – Nicht synchron mit .POT Template-Datei (logisch, speichern geht ja nicht)
    – Die Schreibrechte für die PO-Datei sind korrekt gesetzt
    – Verzeichnis ist beschreibbar

    Übersetzungen in, mit WP sind ja ohnehin komplex, Loco auch und so Fehler helfen nicht eben …
    Bei anderen Websites, bei früheren Arbeiten mit Loco klappte es eigentlich immer. Auch am gleichen Host und fast gleicher Einstellung.

    Notiz zu einer eventuellen Zusatzfrage zu Loco:
    Kann man eigentlich alle Sprachdateien (etwa eines Plugins) löschen und bekommt die mittels Update wieder im Original geliefert? Denn wie gesagt, manchmal gibt es manchmal 6 Sprachdateien pro Sprache und Plugin.
    Ok, nur eine Frage pro Thema. Muss das nur notieren, bevor ichs vergesse.

Ansicht von 5 Antworten – 1 bis 5 (von insgesamt 5)
  • Die Funktion error_log() ist eigentlich Standard von PHP selbst:
    https://www.php.net/manual/en/function.error-log.php

    Daher ist es wahrscheinlich, dass dies nur der Fehler ist, der kommt, weil das Logging auf Serverebene deaktiviert wurde und nicht der echte Fehler, um den es geht.

    Mein Tipp wäre, mal den Hoster-Support zu fragen, warum das Loggen nicht korrekt möglich ist und wie du es aktivieren kannst.

    Thread-Starter onlaie

    (@onlaie)

    Verstehe, klingt logisch

    Werde den Hoster dazu fragen – Danke vorerst!

    Thread-Starter onlaie

    (@onlaie)

    Du hattest Recht! Der Hoster hat die Funktion aktiviert und ich darf endlich über einen Haufen neuer Fehlermeldungen rätseln.

    Das kommt nun nach jeder Speicherung:

    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Wrote backup: paid-memberships-pro-de_DE_formal.po -> paid-memberships-pro-de_DE_formal-backup-202504271430010.po~" in src/gettext/Compiler.php:75
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/build/single-level/index.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/src/single-level/edit.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/build/single-level-description/index.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/src/single-level-description/edit.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/build/single-level-expiration/index.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/src/single-level-expiration/edit.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/build/single-level-name/index.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/src/single-level-name/edit.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/build/single-level-price/index.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/src/single-level-price/edit.js; no translations" in src/gettext/Compiler.php:202
    [27-Apr-2025 14:30:01 UTC] [Loco.debug] "Skipping JSON for blocks/src/membership/edit.js; no translations" in src/gettext/Compiler.php:202

    Aber die neuen Übersetzungen werden nun gespeichert und auch so angezeigt (Also habe ich auch die richtige Datei erwischt – die am Speicherort „Individuell“ als also in Loco selbst)

    Moderator threadi

    (@threadi)

    Das sieht mir nicht nach Fehlermeldungen aus sondern eher nach Log-Einträgen die bestätigen, dass die Übersetzungen gespeichert wurden. Vermutlich passiert das nur, weil du in Loco Translate dieses Loggen aktiviert hast. Sieht aber ansonsten in Ordnung aus 🙂

    Thread-Starter onlaie

    (@onlaie)

    weil du in Loco Translate dieses Loggen aktiviert hast

    Habe alles so gelassen, fand auch keine Logging Optionen. Aber ja, kann gut sein, dass das aus welchen Grund auch immer eigentlich harmlose Logeinträge in die debug.log geschrieben wird. Deren Erzeugung ja nach Start des Livebetriebs eh nicht mehr gewünscht ist.

    Kann man mal als gelöst bezeichnen – Danke euch!

Ansicht von 5 Antworten – 1 bis 5 (von insgesamt 5)