Wordpress Multilanguage

Fehlerhaftes Zurückspringen auf die Standardsprache von qTranslate beseitigen

Das WordPress Mehrsprachen-Plugin qTranslate springt bei internen Links oder einer internen Suche bei der Anzeige der Zielseite bzw. Suchergebnisse immer wieder auf die Standardsprache zurück. Der nachfolgende Patch beseitigt dieses Fehlverhalten.

Die Quelle dieses Patches ist ein Posting von Frank im englischsprachigen qTranslate-Forum. Es arbeitet bei mir schon seit langer Zeit über mehrere WordPress/qTranslate-Versionen sehr zuverlässig, ist aber ein „dirty fix“.

Es gibt eine wichtige Einschränkung. Er arbeitet nur korrekt, wenn man in den qTranslate Einstellungen beim „URL Veränderungsmodus“ den „Verzeichnis-Modus“ (fügt das Länderkürzel zwischen die Domäne und der Posting-URL ein) eingestellt hat. Also wenn die URL z.B. so aussieht:  http://meine-domain.de/en/mein_posting/ oder ähnlich.

Suche die Datei qtranslate_core.php im qTranslate-Plugin-Verzeichnis und gehe in die Zeile 83. Ersetze:

$q_config['language'] = $q_config['url_info']['language'];

mit:

$languagelist = qtrans_getSortedLanguages();
for($i=0;$i

Dieser Fix sucht zuerst nach dem Sprachkürzel (z.B. /en/) am Beginn der URL. Wenn diese Suche erfolgreich ist, wird diese als aktuelle Sprache verwendet und das Cookie gesetzt. Bei erfolgloser Suche verwendet es die Standardsprache für alle Initial-Besucher und später das Cookie.

6 Kommentare

  • Hallöchen, das habe ich getan, leider wechslt er dann gar nicht mehr die sprache, sondern bleibt auf der standartsprache (deutsch). Muss ich bei den Permalink einstellungen was anpassen?

  • Ja, aber zuerst müssen „Pretty URLs“ auf deinem Server installiert und für deinen Blog aktiviert sein. Ersteres ist i.d.R. der Fall (ggf. deinen Hoster fragen). Zum Aktivieren gehe unter unter „Einstellungen › Permalinks“. Du kannst alles außer „Standard“ wählen. „Änderung übernehmen“ klicken nicht vergessen!

    Außerdem in der qTranslate Verwaltung im „URL Veränderungsmodus“ den „Verzeichnis-Modus“ wählen (wie ich es w.o. im Artikel beschrieben habe).

    Dann sollte es gehen. Falls nicht, schaue per FTP in deinem WordPress Wurzelverzeichnis, ob eine Datei mit dem Namen „.htaccess“ existiert (Der Punkt vor dem Namen ist wichtig) und ob darin folgende Zeilen enthalten sind:

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    Die letzten drei Zeilen sollten am besten ziemlich am Ende der Datei stehen.

  • Hallo Hani,

    ist alles so, meine Permalinkstruktur lautet: meinedomain.de/wp//%postname%
    installation der seite ist in einem unterordner.
    die zeilen sind in der „.htaccess“ vorhanden, geht aber trotzdem nicht.

    habe zeile 83 in der qtranslate_core.php mit dem code überschrieben. dann reagiert der languageswitcher nicht und die seite wird nur deutsch angezeigt

    • Komisch, bei mir passiert das nur, wenn ich keine Pretty URLs verwende (Permalink: Standard). Die Einstellungen sollten sonst bei dir OK sein.

      Schau mal folgendes:

      • Sind Cookies bei dir aktiviert?
      • Hast du den Browser mal neu gestartet oder einen anderen verwendet. Das hilft oft, da der Browser Cache einem oft einen Streich spielt

      Ansonsten: Poste oder maile mir mal eine Original-URL eines Artikels, bitte.

      • biker71 hat folgendes herausgefunden:

        „Habe das Problem lösen können ohne den Code. Is ganz simpel, muss man erst mal drauf kommen.

        Lasse ich die Seiten anzeigen mit dem normalen Menü, dann tritt der Fehler auf. Erstelle ich einen individuelles Menü und nutze das, dann funktioniert es. Warum das so ist habe ich noch nicht herausgefunden. Aber gut zu wissen“

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert