Gettext, Poedit und INTOUCH

  • Grüß Euch!

    Ich versuche grad, das intouch-Plugin zweissprachig zu machen.

    Dazu verwende ich beispielsweise:

    PHP
    load_plugin_textdomain('intouch');

    und

    PHP
    if($field_required == 1) {
                $content .= __('required','intouch');
            }

    de_DE.mo Datei ist im selben Verzeichnis wie intouch.php

    Wenn ich mit Poedit synchronisiere, dann erkennt es obige Zeile ohne Fehler und ich kanns übersetzen.
    Nur in der Website dann bleibt der Ausdruck immer auf Englisch und schaltet nicht wie die anderen auf deutsch um.

    Übersehe ich was?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Die Funktion load_plugin_textdomain in WP 2.5.1 ist wie folgt codiert:

    Somit hängt es also von mehreren Sachen ab.

    1.) ist dein Plugin in einem Unterverzeichnis installiert?
    Nur für den Fall das es so ist, mußt du der Funktion als 2. Parameter das Verzeichnis klarmachen, wo es suchen muß. Da ABSPATH auf den Root deiner Blog Installation zeigt, bräuchtest du in diesem Fall:

    Code
    /wp-content/plugins/intouch

    oder sicherer, wenn .mo und plugin php im gleichen Verzeichnis liegen, mit

    PHP
    load_plugin_textdomain('intouch', PLUGINDIR."/".dirname(plugin_basename(__FILE__)));

    2.) die .mo Datei muß korrekt benannt sein und hat eine spezielle Anforderung, in deinem Fall dann:

    Code
    intouch-de_DE.mo
  • Statt

    PHP
    load_plugin_textdomain('intouch');


    solltest du

    PHP
    load_plugin_textdomain('intouch', PLUGINDIR . '/intouch/');


    nutzen, damit die Funktion auch weiß, wo die Sprachdatei zu finden ist. In diesem Fall (und auch generell) sollte dein Plugin im Ordner intouch/ in wp-content/plugins/ liegen.

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Ach, ich komm einfach nicht weiter. Jetzt kann ich zwar intouch übersetzen, aber habe natürlich keinen Einfluss auf die Werte, die aus dem Backend kommen wie "Nachricht", "Telefon" etc.

    Was kann ich denn da machen? Das Plugin so ändern, dass man die Eingaben nicht mehr im Backend machen kann? Aber wie?
    Oder gibts eine zweisprachige Alternative?

  • Was kann ich denn da machen?


    Wie wär's mit einem Link zum ursprünglichen Source des Plugin's, den du benutzt? Ohne die Ursprungsquelle, muß ja nicht WP Plugin Store sein, wird's schwer, sich was vorzustellen, wenn man das Plugin gar nicht kennt :-D

    PHP
    load_plugin_textdomain('intouch', PLUGINDIR . '/intouch/');


    Ich mag "fest verdrahtete" Pfade gar nicht! Ich möchte pro Plugin, das was auf sich hält, immer noch selbst entscheiden können, wie dessen Pfad lauten soll.
    Für mich sind Plugin's, die nicht damit zurecht kommen, das man ihren Pfad umbenennt, einfach nicht tolerant genug geschrieben und unflexibel.
    Es gibt öfter Kollisionen bei zig Tausend Plugins in der Welt, das jemand den gleichen Pfad für ein Plugin gewählt hat, den ein anderes schon benutzt, dann muß man das einfach umbenennen können.

    PHP
    load_plugin_textdomain('intouch', PLUGINDIR."/".dirname(plugin_basename(__FILE__)));

    Wenn man den Plugin Base Name benutzt, kannst du das Verzeichnis des Plugin's umbenennen, wie du lustig bist, es funktioniert immer.

  • hmm, also der Code hat schon ein paar Jahre auf dem Buckel :-D
    Jetzt weiß ich auch, was du meinst. Die Eingaben, die der Benutzer machen kann für die Beschriftung der Eingabefelder ist ja gerade aus Ermangelung einer *.mo Übersetzung gemacht worden und weil man so z.B. Webseite gegen Skypename austauschen kann.
    Allerdings geht das dann nicht mehr in Japanisch, Chinesisch oder sonstwas anzuzeigen, denn du hast ja nur diese eine Wahl, wie das beschriftet wird.

    Wenn du das schon als Basis für einen Umbau nehmen willst, solltest du überlegen, ob man Wahlfreiheit erlaubt, oder ob man feste Dropdown Listen anbietet, deren Inhalte per *.mo Datei bereits feststehen.
    Dann kann man keine Beschriftungen mehr eingeben, sondern nur noch wechseln. Was nicht vorhanden ist und jemand braucht, könntest du als nächste Version bereitstellen.

    Was mir noch auffällt ist, das dieses
    1.) Plugin offensichlich register_globals braucht, was nicht immer geht und u.U. ein Sicherheitsproblem ist,
    2.) Das Formular ohne Javascript nicht richtig (oder gar nicht) geht,
    3.) ich mir nach flüchtiger Durchsicht nicht sicher bin, ob das Spam-sicher genug ist.

    PS: Die Verbesserung im vorigen Post bezog sich auf den Plugin Ordner, der somit frei wechselbar wäre (aber eben nicht für dieses Plugin, weil das auch wieder hart codierte Pfade nutzt).

  • Ich mag "fest verdrahtete" Pfade gar nicht! Ich möchte pro Plugin, das was auf sich hält, immer noch selbst entscheiden können, wie dessen Pfad lauten soll.
    Für mich sind Plugin's, die nicht damit zurecht kommen, das man ihren Pfad umbenennt, einfach nicht tolerant genug geschrieben und unflexibel.
    Es gibt öfter Kollisionen bei zig Tausend Plugins in der Welt, das jemand den gleichen Pfad für ein Plugin gewählt hat, den ein anderes schon benutzt, dann muß man das einfach umbenennen können.


    Die Flexibilität ist in der Tat ein gutes Argument.

    Allerdings würde dieses wilde Umbenennen zu eben jenen Kollisionen führen, die du ansprachst. Ich bin Fan der neuen Auto-Plugin-Update-Funktion in WordPress, welche einen vorgesehenen Plugin-Namen voraussetzt, plus dass die Dateien in einem Unterordner des wp-content/plugins/-Verzeichnisses liegen, damit das System die Daten holen kann. Daher vergebe ich das fest, um diese Konventionen einhalten zu können. Nennt jemand das Plugin um, so stößt man leicht auf dieses Problem: http://forum.wordpress-deutschland.org/plugins-und-wi…aber-nicht.html

    Und durch die Konstante PLUGINDIR bleibt man dennoch flexibel, da man diese ja dennoch anpassen kann, wenn man seine Plugins lieber in wp-content/themes/plugins haben will. :)

    Sorry AndivomBerg für die leichte Abweichung des Themas.

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Arrgh!

    Obwohl ich exakt den selben Code verwende wie oben beschrieben und es schon mal funktioniert hat, geht es jetzt nicht mehr!

    Intouch gibt jetzt nur noch den übersetzten Text aus der .mo-Datei aus, switcht aber nicht mehr zur anderen Version wenn ich ihm das via poedit befehle!

    Weiß jemnad was ich tun muss?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!