1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Sprachdatei für Frontend Ausgabe laden

Dieses Thema im Forum "Design" wurde erstellt von 3a5y2k, 3. September 2015.

  1. 3a5y2k

    3a5y2k Member

    Registriert seit:
    3. September 2015
    Beiträge:
    24
    Zustimmungen:
    0
    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.
     
  2. 3a5y2k

    3a5y2k Member

    Registriert seit:
    3. September 2015
    Beiträge:
    24
    Zustimmungen:
    0
    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...
     
  3. maxe

    maxe Well-Known Member
    Ehrenmitglied

    Registriert seit:
    1. Mai 2008
    Beiträge:
    19.581
    Zustimmungen:
    277
    lösche mal den Eintrag define('WPLANG','en_US') aus der wp-config.php. Sollte mittlerweile ohne diesen Eintrag gehen.
     
  4. 3a5y2k

    3a5y2k Member

    Registriert seit:
    3. September 2015
    Beiträge:
    24
    Zustimmungen:
    0
    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://$_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>
     
    #4 3a5y2k, 8. September 2015
    Zuletzt bearbeitet: 8. September 2015
  5. 3a5y2k

    3a5y2k Member

    Registriert seit:
    3. September 2015
    Beiträge:
    24
    Zustimmungen:
    0
    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
     
  6. 3a5y2k

    3a5y2k Member

    Registriert seit:
    3. September 2015
    Beiträge:
    24
    Zustimmungen:
    0
    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
     
  7. 3a5y2k

    3a5y2k Member

    Registriert seit:
    3. September 2015
    Beiträge:
    24
    Zustimmungen:
    0
    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.

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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....
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden