Gettext-Übersetzungen funktioniert nicht

  • ich entwickle gerade mein erstes plugin und habe eine gettext-übersetzung mit poEdit erstellt. leider nimmt wordpress meine deutsche sprachdatei nicht und gibt mir nur die englischen texte aus.
    jetzt ist mir aufgefallen, dass wordpress bei allen meinen plugins nur die englischen texte anzeigt, obwohl die plugins übersetzt sind und deutsche sprachdateien vorliegen.

    ich nutze wordpress 2.5.1 DE-Edition und in der wp-config.php ist "define ('WPLANG', 'de_DE');" gesetzt.

    kann wer helfen?

    • 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

  • Fragen:

    1. Nutzt du die Funktion "load_plugin_textdomain" in deinem Plugin? Damit gibst du WordPress nämlich bekannt, dass eine Sprachdatei vorhanden ist. Der erste Parameter ist die Domäne (idR ein einfacher Name deines Plugins, ohne Sonderzeichen, usw.), der zweite Parameter ist der Ordner deines Plugins. Man macht es zwar nicht, aber du kannst zum Testen fest kodieren "/wp-content/plugins/...", usw. Im Live-Betrieb solltest du eine bessere Funktion nutzen, um den tatsächlichen Ordner zu ermitteln.

    2. Hast du daran gedacht, dass deine Sprachdatei (*.po, *.mo) den Namen tragen muss, den du als Domäne angibst? Zusätzlich muss auch das Sprachkürzel ran. Nehmen wir an, die Domäne (s. Punkt 1) wäre "deinplugin", und dein Sprachkürzel ist "de_DE", dann muss die Sprachdatei "deinplugin-de_DE.mo" heißen, sonst wird das nichts.

  • Bindestriche sind natürlich erlaubt. Kannst du mal die entsprechenden Teile deines Plugins posten, die gettext-Funktionen nutzen (_e(), __(), load_plugin_textdomain)?

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Plugin-datei "highslide-integration.php" (ordner: "highslide-integration"):

    "highslide-integration-de_DE.po" ("highslide-integration-de_DE.mo" daraus mit poEdit kompiliert):

  • Es gibt doch schon ein Plugin für Highslide. :mrgreen: Aber OK, der Code ist so dermaßen schlecht und umständlich, dass ich ihn auch erst mal aufgeräumt habe. "Meine Version" funktioniert (auch mit deutscher Übersetzung) einwandfrei.

  • Es gibt doch schon ein Plugin für Highslide. :mrgreen: Aber OK, der Code ist so dermaßen schlecht und umständlich, dass ich ihn auch erst mal aufgeräumt habe. "Meine Version" funktioniert (auch mit deutscher Übersetzung) einwandfrei.


    ja, aber meines funktioniert anders. einfacher.

  • Das kann ich mir vorstellen. ;) Mir gefiel das Original nämlich auch nicht. Das erste, das ich rausgeschmissen habe, war der Unfug mit dem Speichern der Einstellungen in der Datenbank. Dann habe ich die Parameter verkürzt. Und zu guter Letzt habe ich den Highslide-Stil gewählt, bei dem oben rechts auf dem Bild diese "Werkzeugleiste" eingeblendet wird. Grundsätzlich! Und damit waren auch die meisten Optionen überflüssig.

    Und ich habe die Syntax erweitert. Bei mir funktioniert beides

    Code
    <highslide image="bild" thumb="thumb" caption="Beschreibung" />
    <highslide image="bild" thumb="thumb">Beschreibung</highslide>

    Die neue Regex dafür sieht so aus:

    Code
    '!<highslide([^>]*)[ ]*(>(.*)</highslide|[/]*)>!Ui'

    Oh, da fällt mir ein, das Original unterstützt für die Attribute nur die doppelten Anführungszeichen ". Mit der folgenden Regex geht's dann auch mit den einfachen

    Code
    '!(image|thumb|alt|caption)=(\'|")([^"\']*)(\'|")!Ui'

    :cool:

  • um mal auf mein problem zurückzukommen: was mich wundert, ist dass wordpress bei allen meinen plugins nur englische sprache anzeigt, obwohl diese z.t. multilingual sind.

    wer von euch nutzt eines von dieses plugins und hat in den einstellungen deutsche sprache? diese mit deutschen sprachfiles habe ich installiert und sie sind trotzdem englisch:

    • all-in-one-seo-pack
    • google-sitemap-generator
    • runPHP
  • Fehler gefunden:
    der pfad bei [FONT=monospace]"[/FONT]load_plugin_textdomain" scheinte nicht zu stimmen.

    habe jetzt

    Code
    load_plugin_textdomain(HI_TEXTDOMAIN, PLUGINDIR . '/highslide-integration');


    und in poEdit unter base-path: "."
    jetzt funktionierts.

  • und in poEdit unter base-path: "."
    jetzt funktionierts.


    poEdit ist eigentlich in dem Fall unwichtig. Die Verzeichnisangabe dient nur dazu, dass poEdit die vorhandenen Dateien absuchen kann. Die Angabe wird ja ohnehin als Kommentar gespeichert und spielt in der erzeugten MO-Datei dann keine Rolle mehr.

    Aber schön, dass es jetzt bei dir funktioniert. ;)

Jetzt mitmachen!

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