• Gelöst youngtimer

    (@youngtimer)


    Jeder WP Admin, Nutzer kennt das: Irgendwo schleichen sich manche, im Frontend sichtbare Beschriftungen in falscher Sprache ein. Auch wenn die Sprache in WP korrekt eingestellt ist.

    Übersetzungen im WP Kosmos sind eine relativ vielschichtige Sache. Ob Plugins oder Themes etwas in falscher Sprache ausliefern, es gibt ein paar Methoden, dies updatesicher zu ändern.

    Jene Methoden, die ich kenne sind:

    1. Das externe Tool „Poedit“
    2. Das Plugin Loco Translate
    3. und einige machen das per Stringersetzung in der functions.php

    Es mag noch mehrere geben und welche davon die „bessere“ ist, kann man hier diskutieren.

    Doch ich fand auch manchmal Hinweise der Professionisten hier, wonach alle diese lokalen Methoden eigensinnig wären, weil die anderen Nutzer der, noch nicht vollständig übersetzen Produkte nichts davon haben.
    Man solle sich doch hier und dort anmelden und bei einer Übersetzung mithelfen, von der die gesamte WP Welt etwas hat.

    Ich nehme an, man startet hier: https://de.wordpress.org/mitwirken/uebersetzung-erste-schritte/ ?
    Nehmen wir weiterhin an, ich will für meine Sprache (Deutsch) etwas beitragen und habe auch ein bestimmtes Plugin im Visier.
    Also steuert man als erstes die Sprache an > dann das Plugin in die Suche > die gewünschte Version (z.B. Stable) anwählen. Man ist dann in translate.wordpress.org/projects/wp-plugins/pluginname/stable/de-at/default/.

    Und wie geht es dann weiter?

    1. Darf jeder da einfach seine Übersetzung eintragen, auf Suggest klicken?
    2. … prüft das jemand?
    3. Was habe ich selber davon?
    4. Muss man warten, bis die nächste Aktualisierung des Plugins, dessen Sprachdateien kommt?

    Also da kommen mir die anfangs erwähnten egoistischen Methoden einfacher vor.
    Wobei es da auch oft Probleme gibt, weil manchmal hat man mit Poedit keine Chance, etwas zu verändern (geändertes ist beim nächsten Update weg) und sogar mit Loco, was die Sprachdateien (nach meinem bescheidenen Verständnis) ja auslagert, kann so etwas passieren. Hier habe ich früher schon so manche Diskussion mit Plugin-Autoren geführt, warum nicht einmal Loco eine dauerhafte Übersetzung bauen kann.

    Fazit: Übersetzungen im WP Kosmos sind nicht trivial …
    (Aber Mann <-> Frau | Frau <-> Mann ist sicherlich noch weit komplizierter)

    Eventuell hat jemand ein paar einfache, hoffentlich deutschsprachige Hin- und Verweise, die mich da ein bissl erleuchten.

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

    (@pixolin)

    1. Darf jeder da einfach seine Übersetzung eintragen, auf Suggest klicken?

    Alle, die sich auf WordPress.org registriert haben.

    1. … prüft das jemand?

    Dafür gibt es Project Translation Editors, die bezogen auf einzelne Themes und Plugins die Befugnis erhalten haben, Übersetzungen freizugeben und die Global Translation Editor, die auch Übersetzungen für den WordPress Core freigeben und PTE freischalten.
    als PTE wirst du üblicherweise freigeschaltet, wenn du dich bereits mit verwertbaren Übersetzungen beteiligt hast, die Richtlinien einhältst und das Glossar (eine Sammlung festgelegter Übersetzungen) verwendest.

    1. Was habe ich selber davon?

    Viel Arbeit. Als GTE zusätzlich viel Verwaltungsaufwand, regelmäßige Teilnahme an Meetings und Rückfragen, wieso es nicht schneller geht. (Zumindest meine Erfahrung.)

    Du bekommst allerdings einen tieferen Einblick in Plugins oder eben auch neue Festures im Core. Kann mal für eine Weile interessant sein.

    Meine Motivation war damals, dass einiges wirklich schlecht übersetzt war. Aber die allgemeine Erwartungshaltung lässt die Motivation schnell sinken.

    1. Muss man warten, bis die nächste Aktualisierung des Plugins, dessen Sprachdateien kommt?

    Sobald ein Plugin/Theme zu mehr als 95% übersetzt wurde, wird die Übersetzung automatisch gepusht. Nachträgliche Änderungen werden zweimal täglich an Websites verteilt.

    Also da kommen mir die anfangs erwähnten egoistischen Methoden einfacher vor.

    Stimmt. Macht weniger Arbeit. Es lohnt sich, ein Freeloader zu sein. Bringt allerdings das Projekt nicht weiter. Wenn dir das egal ist … Loco Translate.

    Wobei es da auch oft Probleme gibt, weil manchmal hat man mit Poedit keine Chance, etwas zu verändern.

    Das Problem hast du, sobald der Entwickler (oft aus Unkenntnis oder Nachlässigkeit) keine Übersetzungsfunktionen verwendet. Manchmal hilft es, den Entwickler darauf anzusprechen und kostenlose Hilfe anzubieten. Manchmal hat der Entwickler aber einfach keinen Bock, hält deine Anfrage für eine Zumutung und meldet sich nicht mal. Alles erlebt.

    Achso, ich sollte vielleicht mehr im Sinne der WordPress-Community schreiben? Also … Übersetzen ist voll geil und macht riesig Spaß und bei Übersetzungen vom Core taucht sogar dein Name auf der Seite der Mitwirkenden auf, die niemand liest. Du darfst dich von der Community beschimpfen lassen und bekommst garantiert jeden Fehler unter die Nase gehalten. Das ist doch was?

    Thread-Starter youngtimer

    (@youngtimer)

    Danke für den motivierenden Praxisbericht und die Beantwortung der Fragen. Ja, das ist schon was und ich werde es mal so versuchen.
    (Man gönnt sich ja sonst nichts, außer DSGVO, Marken-, Urheber- und Medienrecht, Offenlegungspflichten, E-Commerce- und Wettbewerbsregeln usw. usf. etc.)

    Vielleicht mag Angelika (@la-geek) noch ein paar Sätze dazu schreiben, die etwas motivierender klingen.

    Thread-Starter youngtimer

    (@youngtimer)

    Das passt schon. Nichts motiviert mich mehr als ungeschminkte Wahrheit.
    So wie mir Fehlermeldungen von Scripts mehr helfen, als ein Haufen Anleitungen.

    Nachtrag:
    Mir geht es grade um ein bestimmtes Plugin und ja, ich denke, die nehmen das Thema ernst, die haben zwei Seiten mit Anleitungen und Hinweisen gefüllt. Und nehmen auch noch gerne lokal übersetzte .po, .mo an, um sie dann ihrerseits dem Projekt zuzuführen.

    Sobald ein Plugin/Theme zu mehr als 95% übersetzt wurde, wird die Übersetzung automatisch gepusht.

    Wurde geändert auf 90 % -> https://make.wordpress.org/polyglots/handbook/frequently-asked-questions/#strings-are-validated-when-are-they-taken-into-account-for-download

    Du darfst dich von der Community beschimpfen lassen und bekommst garantiert jeden Fehler unter die Nase gehalten.

    Joa, von „Danke, Danke, Danke“ bis hin zu Anspruchsdenken, beleidigten Reaktionen, Vorwurf der Besserwisserei & co ist so alles dabei.

    Du bekommst allerdings einen tieferen Einblick in Plugins oder eben auch neue Festures im Core. Kann mal für eine Weile interessant sein.

    Man beschäftigt sich zudem sehr mit der deutschen Sprache und kann viel dazulernen, wo man doch zuvor dachte, dass man diese eigentlich gut beherrschen würde 🙈🌞

    Ergänzende Lektüre:

    https://make.wordpress.org/polyglots/handbook/translating/how-to-translate/
    bzw.
    https://make.wordpress.org/polyglots/handbook/

    Siehste. Klingt doch gleich besser.

    Danke, Angelika.

    Bego, deinen Beitrag hatte ich vor meiner ersten Antwort hier nicht gesehen bzw. ich habe sie gerade erst gesehen (die Beiträge hatten sich zeitlich wohl überschnitten). Meine Antwort war als Ergänzung zu deiner ersten Antwort (der ich übrigens vollkommen zustimme) gedacht 🙂 – aber ob die nun tatsächlich positiver war …? 😁 😉

    Thread-Starter youngtimer

    (@youngtimer)

    Wie kann man eigentlich alle Sprachdateien (zb eines Plugins) wieder zurücksetzten, wenn man diese mit Loco komplett verhauen hat?
    Plugin neu installieren?
    Alle mo, po löschen und hoffen das sich die bei der nächsten Aktualisierung wieder einfinden?
    Was ist mit dieser *.pot? Auch löschen?

    An den Fragen sieht man schon: Ich habe nichts kapiert, was bearbeiten von Übersetzungen anbelangt.
    Nicht einmal lokal (ja ich hätte diese Übersetzungen dann dem Autor übermittelt) schaffe ich das.

    Ich habe nun 6x(!!) Deutsch formal in verschiedensten Übersetzungsfortschrittsstufen in zig Ordnern herumliegen und völlig die Übersicht verloren, was wie wo. Bereits geänderte Dateien zeigen keine Wirkung (ja, klar nach allen Cache leeren usw.)

    Also WP mal umgeschaltet auf das Standard-Deutsch (das mit „Du“). Hier sollte dieses Plugin 100% übersetzt sein. Stimmt, das zeigt auch Loco und Poedit. Dennoch ist mindestens die Hälfte (der im Frontend sichtbaren Elemente) davon weiterhin Englisch.
    Ich gebe es auf, müssen die Besucher und Kunden hat damit leben.
    Möchte eben nur wissen, wie man dieses Chaos am besten zurücksetzt.

    Ok, klar werde ich den Pluginautor auch damit anjammern. Hier gings mir aber mal um einen (Wieder)-Einstig ins übersetzen. Doch so wird das nichts.

    Da stellen wir uns janz dumm und fragen uns, wat is ene Dampfmaschin‘ … pardon, ich meinte, wie funktioniert das mit der Übersetzung?

    Nehmen wir an, ein Plugin will die Zeichenkette Hello world ausgeben. In PHP gibt es dafür das Sprachkonstrukt echo():

    <?php echo 'Hello world"; ?>

    Um das zu übersetzen, bietet WordPress verschiedene Funktionen zur Internationalisierung (abgekürzt I18n) und Localization (wenn z.B. Zahl- oder Datumsformate angepasst werden müssen). Statt der Funktion echo() verwenden wir

    <?php _e( 'Hello world', 'textdomain' );?>

    Das _e ersetzt echo(), der textstring (hier „Hello world“) ist die Zeichenkette, die übersetzt werden soll und die Textdomain gibt an, in welchem Zusammenhang die Übersetzung erfolgen soll. Meistens hat das Plugin/Theme eine eigene Textdomain, die im Plugin-/Theme-Header angegeben wird. Die Textdomain ermöglicht vereinfacht gesagt, das Wort bank einmal mit „Finanzinstitut“ und einmal mit „Parkbank“ zu übersetzen.

    Hat der Entwickler gar keine Übersetzungsfunktion verwendet, lässt sich auch nichts übersetzen. Wurden hingegen Übersetzungsfunktionen verwendet, kann mit einem Tool jede Zeichenkette ausgelesen und in einer Übersetzungsvorlage mit der Endung .pot (für Portable Object Template, auf Deutsch Vorlage übersetzbarer Objekte) gesichert werden. Diese Datei kann dann in Programmen wie z.B. POedit eingelesen und für eine Übersetzung in verschiedene Sprachen verwendet werden. Das Programm speichert zu jeder Zeichenkette die Übersetzung in einer Datei mit der Endung .po (für Portable Objects). Außerdem wird eine maschinenlesbare Version mit der Endung .mo (machine readable object) erstellt, mit der Übersetzungen schneller gelesen werden können. Wenn du (im Rahmen eines OpenSource-Projekts) eine Übersetzung mit jemand teilen möchtest, verwendest du immer nur die .po-Datei, weil die mit jedem Programmiereditor im Klartext lesbar ist. Die .mo-Datei könnte theoretisch auch Malware enthalten; niemand läd sowas gerne auf seinen Computer.

    Wenn ich Plugins übersetzt habe, habe ich meistens die Vorlagendatei (.pot) geladen oder bei bereits vorhandenen Dateien die .po-Datei und dann mit dem Plugin POedit zuende übersetzt. Da können je nach Komplexität des Plugins mehrere Tage bei drauf gehen, manchmal ist das auch in einer Viertelstunde erledigt. Mit den entsprechenden Benutzerrechten kann ich die fertige Übersetzung auch komplett in translate.wordpress.org importieren. Für die formelle Übersetzung lade ich die Datei erneut in POedit, gehe die Sätze einzeln durch und ändere „du“ in „Sie“, „deine“ in „Ihre“ usw.

    Tools wie LocoTranslate habe ich nie benutzt. Ich war immer der Meinung, wenn ich mir ohnehin schon die Mühe mache, ein Plugin zu übersetzen, kann ich das auch mit anderen teilen. Wenn dann jemand einen Tippfehler findet und korrigiert, haben wir beide etwas davon. Wenn jemand meine Übersetzung nicht gefällt, bleibe ich ganz tapfer. Er/sie kann eine alternative Übersetzung vorschlagen. Vielleicht gebe ich sie anschließend selber frei. 😉

    Loco Translate bietet dir an, eigene Übersetzungen in wp-content/languages/loco anzuspeichern. Bekommst du einen Koller und willst die ganzen Übersetzungen loswerden, löschst du dieses Verzeichnis.

    Was mich immer wieder fasziniert hat: du kannst jederzeit das Verzeichnis wp-content/languages löschen und WordPress schlägt anschließend unter Dashboard > Aktualisierungen vor, die Sprachdateien entsprechend deiner Auswahl in Einstellungen > Allgemein, neu zu laden. Das geht erstaunlich schnell und es werden stets die neuesten Varianten der Übersetzung aus dem WordPress-Polyglot-Verzeichnis abgerufen. Und Zack! spricht WordPress wieder Deutsch mit dir. Oder Nederlands, Français, … was auch immer.

    Thread-Starter youngtimer

    (@youngtimer)

    Danke für diesen Kurs.

    Wenn ich das auch schon mehrmals so oder so ähnlich las: Ganz kapieren tu ich es nicht.
    Okay, das Konzept von *.po und *.mo ist einfach verständlich und verinnerlicht. Nun scheint mir auch bei *.pot, der eigentlichen Vorlage, ein Lichtlein aufzugehen. Danke.
    Aber das mit der „Textdomain“ ist mir völlig abstrakt. Nein, muss man nicht noch besser erklären, es hapert an meinem Brain.exe, was schon eine recht alte Version ist.

    Tools wie LocoTranslate habe ich nie benutzt. Ich war immer der Meinung, wenn ich mir ohnehin schon die Mühe mache, ein Plugin zu übersetzen, kann ich das auch mit anderen teilen.

    Naja, genauso wie man per Poedit weiter übersetzte *.po weitergeben kann, geht das ja auch mit Loco.

    Loco bietet aber den oft sehr hervorgehobenen Vorteil, dass man die Dateien updatesicher verschieben kann. Und genau dieser Vorteil ist mein Nachteil: Denn Loco versteht unter Verschieben eigentlich Kopieren. Ergo hat man dann einen Haufen gleich lautender Dateien in diversen Ordnern außerhalb der gewohnten Struktur. Und das unübersichtliche Plugin zeigt einem dann Unmengen von Sprachdateien und man weiß nicht mehr, welche ist nun die richtige. Würde es echt verschieben, würde sich dieses Verwirrspiel nicht bieten.

    Bekommst du einen Koller und willst die ganzen Übersetzungen loswerden, löschst du dieses Verzeichnis.

    Genau das habe ich vorhin gemacht und Loco gleich ebenso weg.
    Das und noch viel mehr von den, per Loco verkorksten Sprachdateien des betreffenden Plugins, welches ich übersetzen wollte und neue Sprachdateien aus dessen frischen Paket genommen. Passt.

    Mit Poedit geht das alles weit stressfreier. Man muss sich die Dateien halt selber wo sichern, um die in Falle eines Updates wiederzuhaben. Oder sie eben dem Autor senden und hoffen, dass das alles passt und beim nächsten Mal schon mit an Bord sind.

    du kannst jederzeit das Verzeichnis wp-content/languages löschen und WordPress schlägt anschließend unter Dashboard > Aktualisierungen vor, die Sprachdateien entsprechend deiner Auswahl in Einstellungen > Allgemein, neu zu laden.

    Super.
    Aber werden dann auch die Millionen darin enthaltener anderer Sprachedateien der Plugins und Themes neu geladen?
    So, eben probiert: Ja, alles wird neu geladen!

    Somit hat man aber schon wieder 2 Versionen der gleichen Dateien:

    1. wp-content/languages/plugins/pluginname-de_DE_formal.po (+ mo)
    2. wp-content/plugins/pluginname/languages/pluginname-de_DE_formal.po usw.

    Warum?
    Welche nun bearbeiten?
    Also auch ohne den Krämerladen Loco ist das schon doppelt gemoppelt. Oder?

    • Diese Antwort wurde geändert vor 1 Woche, 6 Tage von youngtimer. Grund: Testergebnis

    Aber das mit der „Textdomain“ ist mir völlig abstrakt.

    Du entwickelst ein Plugin zur amerikanischen Presidentschaftswahl und möchtest den Begriff „he/she is running for president“ gerne mit „er/sie bewirbt sich um das Amt des Präsidenten“ (und nicht mit „er/sie rennt für den Präsidenten“) übersetzen. Ein anderes Plugin verwendet den Begriff „run“ vielleicht für ein Programm („the program runs, if you click a button“). Um solche Mehrdeutigkeiten in der Übersetzung zu vermeiden, gibst du im Header deines Plugins an, wie die Textdomain lautet:

    /*
    * Plugin Name: My Basics Plugin
    * Plugin URI: https://example.com/plugins/the-basics/
    * Description: Handle the basics with this plugin.
    * Version: 1.10.3
    * Requires at least: 5.2
    * Requires PHP: 7.2
    * Author: John Smith
    * Author URI: https://author.example.com/
    * License: GPL v2 or later
    * License URI: https://www.gnu.org/licenses/gpl-2.0.html
    * Update URI: https://example.com/my-plugin/

    * Text Domain: my-basics-plugin

    * Domain Path: /languages
    * Requires Plugins: my-plugin, yet-another-plugin
    */

    Die Übersetzungsfunktion verwendet dann diese Text-Domain:

    _e( 'he/she is running for president', 'my-basic-plugin' );

    Naja, genauso wie man per Poedit weiter übersetzte *.po weitergeben kann, geht das ja auch mit Loco. Loco bietet aber den oft sehr hervorgehobenen Vorteil …

    Alles OK. Ich nutze es trotzdem nicht. 🙂

    Aber werden dann auch die Millionen darin enthaltener anderer Sprachedateien der Plugins und Themes neu geladen?

    Kleine Anekdote: Gelegentlich gibt es bei Websites Probleme mit falsch zugewiesenen Benutzerrechten. Aus Erfahrung weiß ich, dass sich dann unter Einstellungen > Allgemein nur Englisch und Deutsch als Sprache für die Website auswählen lassen. Ich frage dann schon mal nach, ob es theoretisch möglich wäre, zum Beispiel Französisch auszuwählen. Dann kommt die Rückmeldung „ja, habe ich jetzt gemacht, ist jetzt alles in Französisch – und ich weiß, dass jetzt zusätzlich alle Übersetzungen für Themes und Plugins auf Franzözisch geladen wurden und bei jedem Sprach-Update berücksicht werden müssen. Urgs. Bekommt man aber wieder in den Griff, indem man die Website wieder auf Deutsch umstellt und dann den ganzen Inhalt des Verzeichnisses languages löscht.

    Die Anzahl der Übersetzungsdateien ist vor allem durch die Einführung des Block-Editors enorm gestiegen, weil jeder Block seine eigene Übersetzungsdatei als .json-Datei bekommt (hier gelten nicht die üblichen Übersetzungsfunktionen). Eigentlich kann einem das aber auch egal sein. Der Server bekommt die Dateiflut gut bewältigt und als Nutzer braucht man sich mit diesen Dateien nicht weiter beschäftigen.

    Wieso einige Plugins die Übersetzungsdateien in einem Unterverzeichnis wp-content/plugins/{pluginname}/languages und andere in wp-content/languages/plugins speichern, kann ich adhoc gar nicht beantworten. Ich vermute, dass die vom Theme-Entwickler erstellten Übersetzungen im Plugin-Verzeichnis landen, während die auf translate.wordpress.org erzeugten Übersetzungen in wp-content/languages landen.

    Kurz noch ein Hinweis zu „einige machen das per Stringersetzung in der functions.php [eines Child-Themes]“: Damit kann man eine „offizielle“ Übersetzung für die eigene Website dauerhaft anpassen, ohne die eigentliche Übersetzung zu ändern. WordPress liest erst das Skript des Plugins ein, ersetzt dann mit Hilfe der Übersetzung Zeichenketten, sucht anschließend raus, für welche Zeichenketten es eine Stringersetzung gibt und korrigiert den Text entsprechend. Wenn man diesen Ablauf kennt, überrascht es nicht, dass sich diese Ersetzung negativ auf die Performance auswirkt. Wenn es irgendwie geht, sollte darauf verzichtet werden.

    Thread-Starter youngtimer

    (@youngtimer)

    Sorry, ich habe diese Antwort erst gesehen, als ich eine ähnliche, aber etwas spezifischere Frage als neues Thema https://de.wordpress.org/support/topic/eigene-plugin-uebersetzung-vor-update-schuetzen/ angefangen hatte.
    Daher werde ich dann dort weitermachen, damit das nicht so zersplittert und verdoppelt wird.

    Hier nur kurz zu

    Textdomain:
    Heißt, das ist bloß eine Unterscheidungshilfe, eine Art eindeutige Var, eher „Konstante“ welchem Plugin welche Übersetzung zugeordnet werden soll. Sofern es mehrere ähnliche oder gar gleiche Übersetzungen für den gleichen englischen Begriff gibt, ist so der Kontext zu einem bestimmten Plugin herstellbar. Oder so.
    (Eventuell finde ich noch eine bessere Eigendefinition dafür)

    Loco:
    Ich brauche es auch nicht. War nur eine Anmerkung. Komme damit nicht zurecht, auch wenn es viele für einfacher halten als Podit.

    Ich vermute, dass die vom Theme-Entwickler erstellten Übersetzungen im Plugin-Verzeichnis landen, während die auf translate.wordpress.org erzeugten Übersetzungen in wp-content/languages landen.

    Glaube ich auch.

    Stringersetzung:
    War auch nur eine Erwähnung, mehr nicht.

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