WooCommerce – Übersetzungsproblem
-
Hallo zusammen! Ich nutze WooCommerce (DE formal) sowie zusätzlich WooCommerce Germanized. Die Übersetzungen sind alle korrekt. Nur werden sie im Kundenbereich an 2-3 Stellen nicht angezeigt (siehe hier: https://picload.org/image/rraopdrc/screenshot.png)
Ich hab alles gefühlte tausend mal probiert. Von der kompletten Neu-Installation bis über PO und Mo neu anlegen und hochladen. Wenn ich die entsprechenden Strings lokalisiere, wird mir als Quelle die PO-Datei des WooCoomerce Plugin ausgegeben (also nicht WooCommerce Germanized). In der PO-Datei des WooCoomerce Plugin ist aber alles korrekt übersetzt. Ich verstehe nicht, warum an dieser Stelle nicht die richtige Übersetzung gezogen wird. Ich muss die Website nächste Woche übergeben und bin am Ende meines Lateins. Gibt es noch jemanden, der dieses Problem hatte und lösen konnte?Achso, im Theme an sich ist dieser String nicht zu finden, der kommt tasächlich aus WooCommerce…
-
Zunächst mal noch eine Frage:
Bei WooCommerce möchtest du die formelle Variante nutzen.
Welche Deutsch-Variante hast du aktuell eigentlich im WordPress-Dashboard unter Einstellungen > Allgemein (Sprache der Seite) gewählt?Zu deiner Rückfrage:
(2)
Hast du aus den beiden .po-Dateien die entsprechenden .mo-Dateien generiert und, falls ja, mit welcher Software?Was meinst du mit generieren?
Siehe hier.
Du könntest also mal versuchen, deine manuell übersetzte .po-Datei in ein Übersetzungstool wie Poedit oder Loco Translate zu laden und, falls möglich, ohne Änderung (falls nicht, mit einer einzigen Änderung) abzuspeichern. Durch das Abspeicherm wird auch eine der .po-Datei entsprechende, maschinenlesbare .mo-Datei generiert/kompiliert. Dabei musst du schauen, ob tatsächlich beide (.po *und* .mo) aktualisiert werden und in welchem Verzeichnis genau sie zusammen abgelegt werden.
Vorher also Backups der bestehenden Übersetzungsdateein machen und vermutlich bestehende besser ersetzen als überschreiben.Aber bevor du dir die Mühe machst, sollte eigentlich noch die vorhergehende Frage geklärt werden:
Zunächst mal noch eine Frage:
Bei WooCommerce möchtest du die formelle Variante nutzen.
Welche Deutsch-Variante hast du aktuell eigentlich im WordPress-Dashboard unter Einstellungen > Allgemein (Sprache der Seite) gewählt?Hallo,
erst einmal danke für die Hilfe!Bei Einstellungen habe ich die Sprache „Deutsch“ gewählt. Wähle ich „Deutsch (Sie) aus, dann wird alles englisch, sowohl die Mails als auch das backend….Wäre natürlich schön, wenn man das darüber einfach lösen könnte. Aber warum das dann Englisch wird, kann ich mir auch nicht erklären….
Ich werde dann als nächsten Schritt diese Tools ausprobieren, sodass die mo-Datei mit generiert wird. Ich hoffe das funktioniert dann…..
Bei Einstellungen habe ich die Sprache „Deutsch“ gewählt. Wähle ich „Deutsch (Sie)“ aus, dann wird alles englisch, sowohl die Mails als auch das backend….
Dann hast du vermutlich entweder noch nicht die entsprechenden Sprachdateien heruntergeladen (erscheint da nicht ein entsprechender Link unten, wenn man „Deutsch (Sie)“ auswählt?), oder sie sind im falschen Ordner abgelegt, sodass sie nicht gefunden werden und auf die Default-Dateien (Englisch) zurückgegriffen wird.
Aber mal davon abgesehen, dass das bei dir grade nicht klappt mit dem „Deutsch (Sie)“:
Meines Erachtens dürfte der „Workaround“, so wie du ihn dir offenbar vorstellst, unter der Einstellung „Deutsch (Sie)“ doch gar nicht funktionieren, oder?
Denn ich sehe nicht, wie die informellen WooCommerce-Dateien (lediglich intern nach „Sie“ abgeändert) unter der formellen WP-Einstellung „Deutsch (Sie)“ laufen sollen.
Verstehst du, was ich da für ein Problem sehe?Umgekehrt: Unter der informellen WP-Einstellung „Deutsch“ kommt dann im Shop auf einmal der Wechsel von „du“ auf „Sie“? Das passt für mich alles irgendwie nicht so richtig zusammen.
Wäre schön, wenn @strellegedanser sich mal melden würde und jetzt seinerseits mal Hilfe anbieten könnte. 🙂
Und falls du das durchziehst und es tatsächlich so klappen sollte, wie von dir gewünscht:
Vergiss nicht, dir Sicherheitskopien der von dir in die Sie-Form gebrachten informellen Dateien zu machen, denn, je nachdem, wo du sie ablegst (deswegen hatte ich oben nach den genauen Ordnern gefragt), werden sie beim nächsten Update überschrieben.Und berichte bitte, ob bzw. wie es geklappt hat!
- Diese Antwort wurde geändert vor 8 Jahren, 1 Monat von Flower33.
Hallo Flower33,
ich bin jetzt einen Schritt weiter gekommen.
Ich habe erneut unter Einstellungen -> Allgemein -> Sprache: Deutsch(Sie) eingestellt, weil ich schauen wollte, ob ich da einen von dir genannten Link sehen kann.
Dieser Link ist nicht aufgetaucht ABER das backend war weiterhin Deutsch. Also habe ich eine weitere Bestellung getätigt, um die E-Mails zu checken.
Jetzt ist es so, dass ein Teil auf SIE umgeswitched ist. Ein anderer Teil aber bei DU bleibt.
Das ist mir jetzt wirklich ein Rätsel!!!Habe mir auch das Plugin WooCommerce Store Tool Kit installiert und da das entsprechende Sprachpaket Deutsch Sie reingeladen.
Jedoch keine weitere Veränderung.Also wie erklärt sich das, dass er einen Teil tatsächlich geändert hat….
Sehr verwirrend.
Ich denke ich bin nah dran aber eben noch nicht ganz…Hallo nocheinmal,
ich habe jetzt eine Lösung gefunden, alles ist jetzt so, wie ich es haben möchte 🙂
Ich habe noch mal ewig gesucht, recherchiert, gegoogled etc. und bin dabei auf eine ganz simple Lösung gestoßen:
Einfach diesen Code Schnipsel in die functions.php kopieren und Text ersetzen:
add_filter(‚gettext‘, ‚translate_text‘);
add_filter(’ngettext‘, ‚translate_text‘);function translate_text($translated) {
$translated = str_ireplace(‚Choose and option‘, ‚Select‘, $translated);
return $translated;
}Die genaue Anleitung findent ihr hier: https://www.emoose.de/woocommerce-uebersetzungen-und-texte-anpassen/#comment-145
Ich muss sagen, es funktioniert reibungslos und ich bin überaus zufrieden. Jetzt gibt es nur noch ein letztes Problem zu lösen, aber das ist eine andere Geschichte 😉
Hallo Christiane,
bin gerade heimgekommen und freue mich, dass du offenbar eine praktikable Lösung gefunden hast!
Ich muss mir das mal in Ruhe anschauen und versuchen, es nachzuvollziehen.
Danke schön für deine Rückmeldung!Hallo Christiane,
ich hatte nach dem Heimkommen nur einen ganz kurzen Blick ins Forum geworfen und mich gefreut, als ich deinen Kommentar las, dass es reibungslos funktioniert. Ich habe eben beim genaueren Durchlesen gemerkt, dass mir diese Lösung doch auch schon bekannt war. Stimmt, so kann man es auch machen, obwohl sich diese Methode meines Wissens nach eigentlich eher dafür eignet, einzelne Wörter, Wendungen oder selbst Sätze zu übersetzen. Ich meine mich aber zu erinnern, dass sich diese Methode unter Umständen negativ auf die Performance der Website auswirken kann, wenn man damit große Mengen Text übersetzt.
Falls du also tatsächlich die kompletten Texte von WooCommerce ins formelle Deutsch übertragen hast, wäre es echt interessant, in den nächsten Tagen mal einen kurzen Erfahrungsbericht von dir zu hören, ob du Auswirkungen auf die Performance bemerkt hast.
Denk nur dran, wenn du all diese Übersetzungen in die
functions.php
geschrieben hast, dass sie beim nächsten Theme-Update überschrieben werden! Also auf jeden Fall eine Sicherheitskopie anlegen bzw. mit einem Child-Theme arbeiten…Hallo Christiane,
Falls du also tatsächlich die kompletten Texte von WooCommerce ins formelle Deutsch übertragen hast, wäre es echt interessant, in den nächsten Tagen mal einen kurzen Erfahrungsbericht von dir zu hören, ob du Auswirkungen auf die Performance bemerkt hast.
dürfen wir noch auf eine Rückmeldung von dir über deine Erfahrungen mit der gettext-Methode hoffen?
Wäre wirklich schön, abschließend noch zu erfahren, ob sich dieser Workaround auch bei größeren Textmengen (Übers. der kompletten WooCommerce-Texte) in der Praxis bewährt und ob die Website-Performance deiner Erfahrung nach darunter nicht leidet. Die derzeitigen als auch die zukünftigen Leser dieses Threads werden dir dankbar dafür sein. 🙂Hallo Flower 33,
ich habe nicht bemerkt, dass die Methode irgendwelche negativen Auswirkungen auf die Performance hat 🙂 Kann ich also getrost weiter empfehlen!
Hallo Christiane,
das ist ja sehr erfreulich! 🙂
Da dieser Thread zukünftig noch unzählige Male aufgerufen werden wird, wäre es schön, wenn die Schritte, die du durchgeführt hast, noch einmal klar benannt würden, da sie in den Beschreibungen teilweise nur angedeutet werden.Du hattest anfangs geschrieben:
Ich habe nun die Dateien „woocommerce-germanized-de_DE.po“ sowie „woocommerce-de_DE.po“ jeweils in den beiden Ordnern geändert (also den Text). Nun komme ich nicht weiter.
Darf man daraus folgern,
(1)
dass du *sämtliche* Übersetzungsstrings aus diesen *beiden* Dateien über die gettext-Methode in die *functions.php* deines Themes eingefügt hast?
(2)
Oder hast du sie aus Sicherheitsgründen nicht in diefunctions.php
, sondern in eine andere Datei gepackt (Plugin)?
(3)
Wie groß (kB) ist diese Datei bei dir geworden?
(4)
Liegen die Dateien „woocommerce-germanized-de_DE.po“ sowie „woocommerce-de_DE.po“ weiterhin am alten Platz, in ursprünglicher Form oder so, wie du sie vor der gettext-Methode verändert hattest?Das wären noch 4 Fragen, deren Klärung für alle Interessierten hier sicher sehr nützlich wäre.
Wäre toll, wenn du uns das abschließend noch kurz erläutern könntest, danke! 🙂- Diese Antwort wurde geändert vor 8 Jahren, 1 Monat von Flower33.
Ich löse mal die offenen Fragen auf:
Wenn man WordPress auf „Deutsch (Sie)“ umstellt, dann sind alle Themes/Plugins ohne eine formale Übersetzung auf Englisch, weil für die Sie-Version eben keine Übersetzung vorliegt. Das ist also völlig korrekt.
Damit in diesem Fall einfach die informelle/Du-Version geladen wird, kann dieses Plugin genutzt werden:
http://de.wordpress.org/plugins/fallback-languageUnd jetzt wird es komplizierter:
In Plugins können Sprachdateien mitgeliefert werden, es können aber auch Sprachpakete genutzt werden (über translate.wordpress.org von der Community übersetzt). Liefert das Plugin eigene Übersetzungen mit, wird die Community-Übersetzung ignoriert. Mit WP 4.6 wurde diese Ladereihenfolge umgedreht. Die Community-Übersetzung wird jetzt bevorzugt. Es kann somit sein, dass die Übersetzung des Plugins (obwohl komplett) ignoriert wird, weil eine Community-Übersetzung existiert und diese kann auch mal hinterherhinken. Gerade weil die formale Version gerne vergessen wird.Ich hoffe, dass damit die Rätsel gelüftet sind. Die Variante über den gettext-Filter ist bei einzelnen Strings und wenigen Besuchern vielleicht zu vernachlässigen. Er skaliert jedoch nicht gut und ist daher besser zu vermeiden.
Hallo, ich melde mich auch nochmal zurück.
(1)
dass du *sämtliche* Übersetzungsstrings aus diesen *beiden* Dateien über die gettext-Methode in die *functions.php* deines Themes eingefügt hast?Ja, ich habe mit diesem Code-Schnipsel alle Texte geändert. Alles in einem Abwasch 😉
(2)
Oder hast du sie aus Sicherheitsgründen nicht in die functions.php, sondern in eine andere Datei gepackt (Plugin)?Ich habe alles in die functions.php gepackt, da das die einfachste Lösung war, die ich finden und umsetzen konnte.
(3)
Wie groß (kB) ist diese Datei bei dir geworden?Kann ich dir jetzt gar nicht genau sagen aber sie hat sich ja nur um ein paar Zeilen erweitert.
(4)
Liegen die Dateien „woocommerce-germanized-de_DE.po“ sowie „woocommerce-de_DE.po“ weiterhin am alten Platz, in ursprünglicher Form oder so, wie du sie vor der gettext-Methode verändert hattest?Diese Dateien habe ich gar nicht angerührt. Also nach meinen vielen Experimenten und Versuchen habe ich ein backup drauf gespielt, dass alles wieder im Urzustand war. Ich habe dann nichts mehr in den Dateien rumgefummelt, sondern wirklich NUR den Codeschnipsel in der functions.php eingefügt. Mehr nicht.
Also zusammenfassend heißt das: Alles lassen wie es ist, WordPress Sprache auf Deutsch (Du) stellen, bzw. so eingestellt lassen und folgenden Code in die functions.php einfügen:
add_filter(‚gettext‘, ‚translate_text‘);
add_filter(’ngettext‘, ‚translate_text‘);function translate_text($translated) {
$translated = str_ireplace(‚Choose and option‘, ‚Select‘, $translated);
return $translated;
}„gettext“ wird ersetzt mit dem Wort oder der Wortgruppe, die exisitert und „translate_text“ ersetzen mit dem, was ihr raus haben wollt.
Das funktioniert bis jetzt reibungslos bei mir und ist wohl die einfachste und schnellste Variante 😉
Hallo Christiane,
schön, dass du doch noch detailliert auf die Rückfragen reagiert hast, vielen Dank dafür!
Ich muss gestehen, ich war doch etwas enttäuscht, als die wichtigen abschließenden Fragen scheinbar nicht mehr beantwortet wurden, weil doch ’ne Menge Zeitaufwand in diesen Thread geflossen ist und er außerdem spannend ist. 🙂Ich melde mich später am Abend noch mal, um noch ein paar Dinge anzusprechen und auch auf Torstens Beitrag einzugehen (danke, Torsten!), wollte aber nur schnell mal noch eine Korrektur einfügen, damit es nicht zu Missverständnissen kommt, falls andere User zwischenzeitlich diese Lösung testen wollen:
Ich gebe den Code, den du zitierst, nachfolgend mal noch in der korrekten Form wieder, denn wenn man beim Erstellen des Beitrags nicht in der Zeile vor und in der Zeile danach den „code“-Schalter anklickt, werden z.B. von der Foren-Software die falschen typografischen Anführungszeichen verwendet (oben/unten), statt der korrekten Hochkammata.
add_filter('gettext', 'translate_text'); add_filter('ngettext', 'translate_text'); function translate_text($translated) { $translated = str_ireplace('ausgangstext', 'zieltext', $translated); return $translated; }
Beim Folgenden hast du dich bestimmt geirrt:
„gettext“ wird ersetzt mit dem Wort oder der Wortgruppe, die exisitert und „translate_text“ ersetzen mit dem, was ihr raus haben wollt.
denn nicht
gettext
undtranslate_text
müssen meines Wissens ersetzt werden, sondernausgangstext
undzieltext
, wobei Ersteres für den zu übersetzenden Text steht und Letzteres für die gewünschte Übersetzung. Anders kann das nicht geklappt haben, richtig? 🙂
- Das Thema „WooCommerce – Übersetzungsproblem“ ist für neue Antworten geschlossen.