• Hallo Community

    Ich brauche bitte eure Hilfe. Ich habe ein Plugin, das für verschiedene Sprachen ein .PO u. MO File zur Verfügung stellt. Leider werden ein paar Wörter nicht korrekt ins Deutsche übersetzt. Das kuriose ist, dass die dargestellten deutschen Wörter sich gar nicht im .PO-File des Plugins befinden. Das Plugin ist nicht das Problem. Irgendetwas überschreibt die Wörter aus dem .PO-File. Ich habe schon alle meine Plugins deaktiviert und getestet. Keine Änderung, weshalb ich jetzt gerne bei euch Rat einholen möchte.

    Habt ihr eine Ideen wie ich hier Vorgehen könnte? Wie schon gesagt, das Plugin ist nicht das Problem.

    Danke und Grüsse

    Meggs

Ansicht von 5 Antworten – 1 bis 5 (von insgesamt 5)
  • Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    … das für verschiedene Sprachen ein .PO u. MO File zur Verfügung stellt

    … wobei .po für „Portable Object“ steht (also die Übersetzung) und .mo das „Machine Object“, eine in Binärcode kompilierte Fassung, die sich vom Webserver schneller einlesen lässt. Änderst du nur die .po-Datei, ändert sich die Übersetzung erst einmal nicht, weil die .mo-Datei tatsächlich verwendet wird.

    Leider werden ein paar Wörter nicht korrekt ins Deutsche übersetzt.

    Das gibt es (vor allem bei gekauften Themes und Plugins) oft. Der Entwickler vergisst, die Textstelle mit einem Übersetzungsfunktion übersetzbar zu machen, oder die Text-Domain anzugeben.

    Eine einfache Übersetzungfunktion, mit der eine Zeichenkette übersetzt (im Sinne von return) zurückgegeben werden soll, sieht sinngemäß so aus:

    __( 'Your name', 'awesome_plugin')

    Vergisst der Entwickler die Übersetzungsfunktion und der Code enthält z.B. ein

    <label>Your name 
      <input type="text" name="your_name">
    </label>

    dann hast du englischen Text, der sich nicht auf herkömmlichen Weg übersetzen lässt. Verwendet der Übersetzung die Übersetzungsfunktion, vergisst aber die Textdomain … 

    <label><?php _e('Your name'); ?> 
      <input type="text" name="your_name">
    </label>

    lässt sich der Text zwar übersetzen, wird aber ohne die Text-Domain nicht verwendet. Die Text-Domain soll angeben, auf was sich die zu übersetzende Zeichenkette bezieht und verhindern, dass mehrdeutige Begriffe (z.B. „save“ einmal übersetzt als „sparen“ und einmal als „(Datei) sichern“) aus dem Kontext falsch übersetzt werden. Ist keine Text-Domain angegeben, wird unter Umständen die Übersetzung aus einer anderen Text-Domain verwendet, was zu unschönen Übersetzungsfehlern führt.

    Wenn du für ein Plugin im Verzeichnis tolles-plugin Übersetzungsdateien nutzen möchtest, sollen die Datei tolles-plugin-de_DE.po und die kompilierte Version tolles-plugin-de_DE.mo zusammen im Verzeichnis wp-content/languages/plugins/ liegen, damit sie verwendet werden können.

    Achte darauf, nach Änderungen den Browser-Cache zu leeren und bei Verwendung von Cache-Plugins und/oder Plugins für serverseitigen („perisistent“) Cache jeweils den Cache zu leeren.

    Mehr lässt sich zu deiner Frage ohne weitere Informationen zur Website und vor allem dem zu übersetzenden Plugin aus meiner Sicht nicht schreiben.

    Thread-Starter meggsico

    (@meggsico)

    Hallo Bego Maria Garde

    Vielen Dank für deine schnelle Nachricht. Es ist auch ein .mo File vorhanden. Entschuldigung, dass dies in meinem Beitrag untergegangen ist.

    Ich hatte auch schon Kontakt mit dem Support. Die denken, dass irgendein anderes Plugin die Übersetzung für diese Wörter übernimmt, welches eine höhere Priorisierung hat.

    Es werden 99% der Wörter korrekt übersetzt. Ich hab den Code angesehen, die korrekten Wörter haben die gleiche Code-Struktur, als jene die nicht funktionieren.

    Den Cache habe ich immer gelöscht. Keine Änderung.

    Z.B: wird anstelle „storniert“ das Wort „gestrichen“ angezeigt. Ich habe die Datenbanken nach dem Wort „gestrichen“ durchsuchen lassen. Das einzige was gezeigt wird ist in wp_options -> option name: brs_data

    a:8:{s:13:"select_tables";a:0:{}s:16:"case_insensitive";s:3:"off";s:13:"replace_guids";s:3:"off";s:7:"dry_run";s:2:"on";s:10:"search_for";s:10:"gestrichen";s:12
    :"replace_with";s:0:"";s:15:"completed_pages";i:0;s:11:"total_pages";i:0;}
    
    

    Gibt es kein Plugin, welches aufzeigt, wie die Übersetzung zustande kommt?

    Danke und Gruss

    Meggs

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Die Übersetzung liegt nur in den .mo-Dateien in lesbarer Form vor – die Datenbank hat damit nichts zu tun.

    „gestrichen“ hört sich für mich nach einer automatisierten Übersetzung von „canceled“ an. Du könntest das Plugin lokal auf deinem Computer extrahieren und mit einem Programmiereditor (z.B. VS Code) dateiübergreifend prüfen, ob/wo das Wort vorkommt und ob an der Stelle eine Übersetzungsfunktion verwendet wird. (Vielleicht wurde auch nur bei der Text-Domain ein Tippfehler gemacht?)

    Um andere Übersetzungsquellen auszuschließen, kannst du die anderen Plugins vorübergehend deaktivieren.

    Thread-Starter meggsico

    (@meggsico)

    Ich habe alle Plugins deaktiviert. Habe dann das Plugin am Ort ../wp-content/plugin gezipt downgeloaded und alle Dateien nach gestrichen durchsuchen lassen. Kein Treffer

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Irgendwo muss die Übersetzung aber herkommen. Gerade nachgeschaut: Im WordPress-Core gibt es den Begriff „canceled“ bzw. die Übersetzung „gestrichen“ nicht als eigenständiges Wort. (Nur als „Download canceled“ und „durchgestrichen“ … )

Ansicht von 5 Antworten – 1 bis 5 (von insgesamt 5)
  • Das Thema „Übersetzung aus .PO -File wird nicht übernommen“ ist für neue Antworten geschlossen.