Übersetzung von Plugins

  • edit: Bitte ins richtige Forum verschieben, ich dachte zunächst, dort ginge es nur um die offizielle deutsche Übersetzung des WP-Grundgerüsts. Sorry.
    ==============

    Moin zusammen!

    Ich würde gerne ein Plugin nutzen, um Einladungsbestätigungen im Blog entgegenzunehmen. Soweit, so gut, RSVPmaker ist super dafür geeignet. Allerdings hätte ich das Ganze gern auf deutsch und da fangen die Probleme an.

    Es existiert eine englische .po-Datei, die ich als Basis genommen habe und gemäß diverser Anleitungen mit dem poEditor die deutsche .po und .mo-Dateien daraus erstellt habe (rsvpmaker-de_DE.mo & .po).

    Die Dateien habe ich in den 'translation'-Ordner des Plugins gepackt, in der rsvpmaker.php ist als Ort angegeben:

    PHP
    if(($_GET["post_type"] == 'rsvpmaker') || ($post->post_type == 'rsvpmaker') || ($pagenow == 'plugins.php') )
        {
        //if we're on the admin page for adding a new event, or are editing or viewing an event, or are on the plugins activation page
        $locale = get_locale();
        $mofile = WP_PLUGIN_DIR . '/rsvpmaker/translation/rsvpmaker-' . $locale . '.mo';
        load_textdomain('rsvpmaker',$mofile);
        }

    Also müsste "wp-content/plugins/rsvpmaker/translation/rsvpmaker-de_DE.mo" doch eigentlich korrekt sein, nicht wahr?

    In der wp-config.php ist

    PHP
    define ('WPLANG', 'de_DE');

    angegeben, also sollte der Suffix ebenfalls richtig sein.

    Leider wird weder in den Einstellungen des Plugins, noch auf den dargestellten Ereignis-Seiten selbst irgendetwas auf deutsch angezeigt.

    Die Permissions sind - soweit ich das sehen kann - korrekt gesetzt, alles auf 644 und der Owner ist der Webserver (www-data).

    Habt ihr eine Idee, wo ich noch suchen könnte?

    Einmal editiert, zuletzt von Cantello (21. April 2011 um 13:00)

    • 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

  • das Plugin hat eine Sprachdatei im Ordner translations ([COLOR=Red]rsvp.pot[/COLOR])

    diese Datei kopieren und die Kopie umbenennen in [COLOR=Red]de_DE.po[/COLOR]

    Nun Poedit herunter laden und diese de_DE.po damit öffnen und dort die Übersetzungen eintragen.

    Abspeichern und die .po sowie die beim Abspeichern automatisch erstellte .mo hochladen fertig

    [COLOR=Red]Edit: [/COLOR]sehe gerade du hast schon übersetzt, hab wohl den Beitrag zu schnell überflogen
    Aber versuche trotzdem mal "de_DE.po" und "de_DE.mo", statt "rsvpmaker-de_DE.mo"

    oder wenn das auch nicht funktioniert nenne die deutsche .mo mal nur "rsvp.mo"

    Einmal editiert, zuletzt von Tutrix (21. April 2011 um 13:49)

  • Danke erstmal für die Antwort!

    ... aber: Funktioniert leider nicht - das Plugin sucht doch explizit (siehe rsvpmaker.php) nach einer Datei, die nicht de_DE.mo heißt, sondern rsvpmaker-[locale].mo.

    Oder gibt es einen allgemeingültigen Standard, nach dem alle Plugins im eigenen Ordner im Unterordner 'language' diese [locale].mo-Dateien haben dürfen? Habe zumindest nichts dazu gefunden.


    edit: Geht leider alles nicht. Gibt es eine Art Log, in dem man nachschauen könnte, was das Plugin zu laden versucht und woran es scheitert?

  • was passiert wenn du

    PHP
    $mofile = WP_PLUGIN_DIR . '/rsvpmaker/translation/rsvpmaker-' . $locale . '.mo';

    hier die Datei voll angibst
    also z.B.

    PHP
    $mofile = WP_PLUGIN_DIR . '/rsvpmaker/translation/de_DE.mo';
  • was passiert wenn du [...] hier die Datei voll angibst

    Ich habe jetzt den kompletten Pfad angegeben (beginnend mit /var/..., also vollständig) und keinerlei Änderung. Als ob es überhaupt nicht ausgewertet wird.

    Naja, ich habe mal beim Autor angefragt, ob er eine Idee hat.

  • die Übersetzung ist auch korrekt? also der original sowie der übersetzte String in [COLOR=Red]"[/COLOR]......[COLOR=Red]"[/COLOR]

  • die Übersetzung ist auch korrekt? also der original sowie der übersetzte String in [COLOR=Red]"[/COLOR]......[COLOR=Red]"[/COLOR]

    Jepp, das macht poEdit ja auch relativ automatisch, glaube ich:

    PHP
    #: ../rsvpmaker-admin.php:99
    msgid "Month:"
    msgstr "Monat:"
  • sodele, hab das jetzt mal lokal getestet

    und wie vorgeschlagen funktioniert dies

    PHP
    $mofile = WP_PLUGIN_DIR . '/rsvpmaker/translation/de_DE.mo';
  • sodele, hab das jetzt mal lokal getestet

    und wie vorgeschlagen funktioniert dies

    Mist, dann liegt es ja einfach daran, dass ich zu unfähig bin... :-)

    Mir fällt nur gerade keine Möglichkeit ein, wie ich das Problem eingrenzen könnte. Ich habe rsvpmaker neu installiert, nur die zusätzliche Zeile in rsvpmaker.php ergänzt und die originale .po-Datei mit zwei-drei übersetzten Einträgen ergänzt und die .mo-Datei erstellen lassen.

    Hast du die Übersetzung per Hand gemacht oder ebenfalls mit poEdit? Und hast du das "translation"-Verzeichnis in rsvp-Ordner geändert? Im Originalzustand wird in rsvpmaker.php ein Verzeichnis namens "translations" abgefragt, während es nur ein Verzeichnis "translation" gibt.

    Dank dir aber schon mal für ausdauernde Hilfe!

  • nun das muss natürlich beides gleich heißen, sonst stimmt der Pfad ja nicht
    hab da jetzt nicht darauf geachtet. da ich beides mehrmals umbenannt habe

    Ursache dürfte die Abfrage sein, in der ja ein .mo schon vorgegeben ist und die Datei selbst ja auch mit .mo endet

    was meinst du damit?

    Zitat

    nur die [COLOR=Red]zusätzliche Zeile[/COLOR] in rsvpmaker.php ergänzt

    ich hab nur den Pfad wie oben geschrieben geändert, nix zusätzlich eingefügt

    die .mo habe ich wie in meinem ersten Post beschrieben erstellt

  • nun das muss natürlich beides gleich heißen, sonst stimmt der Pfad ja nicht

    Ja, istr hier auch korrekt geändert.


    Ursache dürfte die Abfrage sein, in der ja ein .mo schon vorgegeben ist und die Datei selbst ja auch mit .mo endet

    Aber in der Variante, die du benutzt, ist ja nur einmal .mo vorgegeben. Nämlich genau für den Dateinamen. Oder wie meintest du das?


    was meinst du damit?
    ich hab nur den Pfad wie oben geschrieben geändert, nix zusätzlich eingefügt

    Ich meinte auch die Änderung des Pfades, nur habe ich die ursprüngliche Zeile auskommentiert und deinen Vorschlag eingefügt.

    Selbst, wenn ich den kompletten Pfad im load_textdomain-Befehl angebe:

    PHP
    load_textdomain('rsvpmaker','/[...]/wordpress/wp-content/plugins/rsvpmaker/translation/rsvp.mo');

    klappt es nicht. Was mich dann zum Schluss bringt, dass meine .mo-Datei fehlerhaft ist. Gerade aber noch einmal nachgeschaut, alles sieht gut aus, keine Leerzeichen am Ende, richtige Kodierung, wunderbar. Vermutlich irgendein total dämlicher Fehler... :-/

  • warum fügst du nicht einfach mal das ein was ich gepostet habe, statt auskommentieren und den Pfad verlängern damit noch mehr doppelt ist ;-)

    Mit .mo am Ende, meinte ich das .mo am Ende :razz:

    Code
    [COLOR=#000000][COLOR=#DD0000]rsvpmaker-' [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]$locale [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#DD0000]'.mo'[/COLOR][COLOR=#007700]; [/COLOR][/COLOR]

    wenn nun [COLOR=#000000][COLOR=#0000BB]$locale[/COLOR][/COLOR] ersetzt wird, ist das.mo doppet da die Datei, ja auch mit .mo endet

    sieht dann so aus [COLOR=#000000][COLOR=#DD0000]rsvpmaker-de_DE.mo[/COLOR][COLOR=#DD0000].mo
    [/COLOR][/COLOR] also .mo.mo (vermute das einfach mal, da die direkte Eingabe ja funktioniert)

    Dein eigentlicher Blog läuft ja schon auf deutsch oder?!

    Einmal editiert, zuletzt von Tutrix (21. April 2011 um 17:34)

  • Jepp, der Blog läuft (mehr oder weniger, es wird eigentlich nur eine Einladungs- und Infoseite für eine Hochzeit) auf deutsch. Allerdings wurden die Sprachdateien nachträglich eingefügt, macht das einen Unterschied?

    WP_LOCALE ist auf "de_DE" gesetzt.

    Dein Beispiel verstehe ich übrigens nicht so ganz:

    PHP
    rsvpmaker-' . $locale . '.mo';

    $locale sollte eigentlich "de_DE" lauten, also wäre der Dateiname dann ganz ok: "rsvpmaker-de_DE.mo" Oder verstehe ich das falsch?

    Ich habe jetzt exakt das eingefügt, was du auch schon gepostet hattest, ohne Erfolg:

    PHP
    $mofile = WP_PLUGIN_DIR . '/rsvpmaker/translation/de_DE.mo';

    (die Datei heißt natürlich auch "de_DE.mo" :|)

    Naja, jetzt erstmal Feierabend und morgen weiter probieren...

  • so hab jetzt noch etwas herum getestet

    der Code muss so aussehen

    PHP
    $mofile = WP_PLUGIN_DIR . '/rsvpmaker/translation/' . get_locale() . '.mo';

    die Sprachdatei dann "de_DE.mo"

    oder im Original

    PHP
    $mofile = WP_PLUGIN_DIR . '/rsvpmaker/translation/rsvpmaker-' . get_locale() . '.mo';

    und die Sprachdatei dann "rsvpmaker-de_DE.mo"

    gefehlt hat also das

    PHP
    ()

    bei get_locale

    Zitat

    mehr oder weniger

    was heißt denn das wieder?
    läuft er auf deutsch oder nur zur Hälfte, also wird nicht alles übersetzt....

    [COLOR=Red]Edit:[/COLOR] kannst ja mal die Datei verwenden http://www.file-upload.net/download-3376777/de_DE.zip.html ist aber nur ein Teil übersetzt(Monat,Jahr,Tag usw.)

    Einmal editiert, zuletzt von Tutrix (21. April 2011 um 20:31)

  • So, ich habe jetzt einmal deine Datei ausprobiert, anscheinend ohne Erfolg, dann weiter durchprobiert mit verschiedenen Namen, Pfaden, etc. und bin auf Folgendes gestoßen:

    http://img88.imageshack.us/img88/8527/menie.png

    Im Menüpunkt "Erstellen" klappt die deutsche Übersetzung:

    http://img854.imageshack.us/img854/2838/erstellen.png

    im Menüpunkt RSVP Event, dann die Veranstaltung ausgewählt, nicht mehr, obwohl quasi alle Strings übersetzt sind:

    http://img695.imageshack.us/img695/3165/evente.png

    Genausowenig klappt es auf der Seite im Blog selbst, auf der die Veranstaltung mitsamt RSVP-Angaben angezeigt wird. Deshalb habe ich vermutlich auch nicht bemerkt, wann eine Datei klappte und wann nicht, da ich stets auf diese beiden Seiten geschaut hatte.

    http://img196.imageshack.us/img196/5084/clipboard5d.png

    Ok, ein Rätsel gelöst, bleibt die Frage, warum es auf der einen Seite klappt, und auf der anderen nicht. Im Quelltext (rsvpmaker-pluggable.php hauptsächlich) sind die korrekten Strings angegeben, auch jeweils mit dem "__" davor. In der .po-Datei sind eben diese Strings auch übersetzt, sollte also gehen:

    PHP
    <?php echo __('First Name','rsvpmaker');?>
    PHP
    #: ../rsvpmaker-plugabble.php:648
    #: ../rsvpmaker-plugabble.php:676
    msgid "First Name"
    msgstr "Vorname"

    Konntest du bei dir auch auf der Blog-Seite die Übersetzung anzeigen lassen? Merkwürdig...

  • hau dem Autor eine an die Backe :lol:

    der hat nicht alles für die Sprachdateien vorbereitet, sondern manches noch direkt drin stehen, so das die Übersetzung nicht greift

    z.B. (das steht mehrmals drin)

    Code
    <div class="guest_blank">[COLOR=Red]First Name:[/COLOR] <input type="text" name="guestfirst[]" /> [COLOR=Red]Last Name:[/COLOR] <input type="text" name="guestlast[]" />

    da kannst du ja einfach die deutschen Begriffe reinschreiben

    Einmal editiert, zuletzt von Tutrix (22. April 2011 um 14:53)

  • hau dem Autor eine an die Backe :lol:

    D'Oh!

    Das ist aber noch nicht alles, warum auch immer greift die Übersetzung nicht, weil das bedingte Laden der .mo-Datei mittels:

    PHP
    if(($_GET["post_type"] == 'rsvpmaker') || ($post->post_type == 'rsvpmaker') || ($pagenow == 'plugins.php') )

    nicht sauber auf jeder Seite funktioniert, meiner Meinung nach eigentlich auch logisch, wenn man sich die enthaltenen Sachen (plugins.php, etc.) ansieht. Wenn die Zeile auskommentiert ist, klappt es zumindest auf der Blog-Seite, der Rest ist immer noch irgendwie unvollständig deutsch/englisch.

    Ganz ok ist es noch nicht, aber auf besten Wege dorthin!

    http://img845.imageshack.us/i/clipboard2.png/

    Dank dir nochmal für die ausdauernde Hilfe! :-)

Jetzt mitmachen!

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