Sprachdatei für Frontend Ausgabe laden

  • Hi ich bin ziemlich neu im Thema Wordpress und arbeite erst seit 7 Wochen fast durch gehend mit dem System. Bisher habe ich meist eine Lösung gefunden oder konnte eine Anleitung finden aber dies mal bin ich totall ratlos.

    Ich möchte mein selbst erstelltes Template in mehren Sprachen anbieten. Daher habe ich für alle Sprachen entsprechende Sprachdateien erzeugt z.B en_US.po /.mo bis dahin geht alles. Die Dateien habe ich bereits überall mal eingefügt von Themeordner angefangen oder in einem seperaten Ordner languages. Zum testen der Sprachdateien habe ich in der wp-config mit define('WPLANG','en_US') definiert, wird aber immer nur die orginal Sprache Deutsch geladen. Und wenn ich mir die Sprache mit get_site_option('WPLANG'); ausgeben lasse, zeigt er mir nur an das die Sprache de_DE ist.... also das Define hat keine Auswirkungen. Auch das ändern über das Backend brachte bisher keinen Erfolg.

    Im Themesetup in der function.php habe ich den Sprachordner mit angeben, load_theme_textdomain('my_theme', get_template_directory() . '/languages');
    Leserechte auf die Sprachdateien sind gesetzt.

    Das eigentliche Ziel ist über eine Schaltfläche mit vier Flagen die Sprache umstellen zu können. Und falls ein angemeldeter User eine Sprache eingestellt hat diese zu laden.

    Frage ist das überhaupt möglich oder habe ich bereits grundsätzlich einen Denkfehler.

    Falls noch Infos fehlen einfach bescheid geben, über Hilfe wäre ich echt dankbar.

    • 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 Problem ist das, er egal was für eine Sprache angebe nur die de-DE.mo lädt. Daher habe ich je Sprache einen Ordner angelegt und in der Themesetupfunktion, lade ich die gewünschte Sprache, die Sprachdatei musste ich umbenennen.
    Versteh leider nicht warum define ('WPLANG','en_US'); keine Auswirkungen hat.

    Ich hoffe ich finde da noch ne elegantere Lösung, da sonst für die Sprache für die Widgets nicht mit umgestellt werden. Aber das kann auch in der Themesetup direkt geladen werden, bloß halt nich so schön...

  • lösche mal den Eintrag define('WPLANG','en_US') aus der wp-config.php. Sollte mittlerweile ohne diesen Eintrag gehen.

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Habe das Define raus gemommen und gebe im Themesetup nur den Ordner mit den Sprachdateien an ... genau so wie vorher -> er läd nur die deutsche Sprachdatei.


    So wollte/möchte ich die Sprache ändern und speichern.
    <code>
    function change_lang_cookie($lang)
    {
    if (isset ($_COOKIE['language']))
    {
    $name = 'language';
    $wert = $lang;
    $t = time()+60*60*24*30;
    setcookie($name, $wert, $t, '/');
    header("Location: http://%24_server[HTTP_HOST]");

    //Andere Sprache laden
    if($lang=='en_US'){ define('WPLANG', 'en_US');$locale='en_US';}
    if($lang=='de_DE'){ define('WPLANG', 'de_DE');$locale='de_DE';}
    if($lang=='fr_FR'){ define('WPLANG', 'fr_FR');$locale='fr_FR';}
    if($lang=='nl_NL'){ define('WPLANG', 'nl_NL');$locale='nl_NL';}
    if($lang=='it_IT'){ define('WPLANG', 'it_IT');$locale='it_IT';}
    exit;
    }else return false;
    }
    </code>

    Einmal editiert, zuletzt von 3a5y2k (8. September 2015 um 13:50)

  • Problem besteht weiterhin und hab auch nix weiter mehr gefunden... scheint wirklich nur über direktes Laden der Sprachdateien zu gehen. Ansonsten je Sprache die Seiten in Subdomain´s oder seperierte Childthemes auslagern:( schade

  • Hi ich hoffe das vlt doch mal einer hier noch rein schaut und eine Idee hat oder mir wengistens erklären kann Wo der Denkfehler liegt.

    Also immer noch der Versuch die derzeitige Sprache für das FrontEnd zu ändern.
    Derzeit mach ich das über das Laden der Sprachdateien in dem ich Sprachdateien alle mit *de_DE benenne und meine Sprachdateien in jeweils unterschiedliche Ordner packe.
    Aber es muss doch möglich sein die Variable $locale zu beeinflussen, weil daher entscheidet WP ja welche Sprachdatei es lädt beim Befehl
    load_theme_textdomain('DomainName', get_template_directory() . '/languages/')
    oder sehe ich das falsch?

    Ich hab versucht die Hook von locale fuer das Theme zu ersetzten... geht auch nicht:(
    Über define('WPLANG', "Sprache") geht es nicht, was auch An sich Nichts bringen würde da es die Sprache dann der ganzen Seite ändern würde und nicht für den einzelnen User.

    Bitte klärt mich ma auf ich schnall das nicht....
    Gibt es da nur den Weg alle Sprachdateien selber zuladen? sprich für alle Plugins?

    Ich kann mir auch nicht vorstellen dass das Problem nur ich habe....

    Grüße der Paul

  • Fall bei dem Thema mal Jemand strandet:
    Die Lösung steht in der Dokumentation beim zweiten Beispiel als Kommentar mit drin -.-

    Der Hook oder die Funktion zum ändern der $Locale Variable muss unbedingt vor dem load_theme_textdomain() aufgerufen werden!
    Heißt ihr müsst euch die aktuelle Sprache in einer Variable merken, dann Variableinhalt beim INIT Hook auf $locale legen.
    get_lang() gibt einfach nur die Sprache aus einem Cookie , der Usereinstellungen oder einen standart Wert wie de_DE zurück, falls keine Sprache definiert wurde.

    Damit geht Alles wie gewünscht, sprich das Theme lädt die richtige Übersetzungdatei und auch die Widgets.
    Ich nehm mir jetzt ne Flasche Schnapps....

Jetzt mitmachen!

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