Sprache wählen mit Smarty

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sprache wählen mit Smarty

    Hallo zusammen

    Ich hab ein kleines Problem. Undzwar versuch ich das man beim einlogen auch die sprache auswählen kann. soweit macht er das auch. Jedoch sobald ich mich einloge ist alles wieder in deutsch. Der behält sozusagen die sprache nicht bei.

    Hat jemand eine Idee?

    Gruss Dragon

    Hier mal mein code

    Quellcode

    1. $_SESSION['lang'] = lang($_SESSION['lang'], $_POST['lang']);//Das hier sucht sich die Sprache aus
    2. if(is_file("lang/lang.".$_SESSION['lang'].".php")) {//Prüfe, ob die Sprachdatei existiert
    3. include("lang/lang.".$_SESSION['lang'].".php");//Das hier inkludiert die Sprachdatei
    4. } else {//Wenn nicht, include die defaultdatei
    5. include("lang/lang.".$config->default_lang.".php");
    6. }


    Und hier die Smarty ausgabe

    Quellcode

    1. $smarty->assign("lang", $_SESSION['lang']);
    Riek-Media.com - Webhosting riek-media.com
  • Eigendlich nur in der Session. Das Problem ist das er dies ihrgenwie falsch übergibt. Wenn ich mir die betreffende session ausgebenlasse steht dann auf der login english z.b wenn ich mich dann einloge mit der sprache english und dann eingelogt bin steht in der session wieder german. Und ich weiss einfach nicht warum. Normalerweise ist das ja ganz simplem aber ihrgendwie weiss ich nicht mag mein eigenes script mich net :P

    Vieleicht kann ja einer von euch weiter helfen

    Gruss

    Dragon
    Riek-Media.com - Webhosting riek-media.com
  • Smarty kann mehr!

    wie sieht denn erstens deine lang Methode aus und zweitens deine includierten Dateien.

    Ausschnitte reichen.

    Ansonsten gibts aber für Smarty weitaus bessere Methoden Sprachen einzubauen. Sei es wie hier beschrieben: robertnitsch.de/2007/05/23/php…prachen-multilingualitat/

    Oder aber über eine config Datei die du mit $smarty->config_load("de.conf"); lädst
  • Quellcode

    1. default_lang);
    2. }
    3. //Der Abschnitt war sinnlos
    4. */
    5. if($lang != $post) {
    6. if($post == "") {
    7. return($config->default_lang);
    8. } else {
    9. return($post);
    10. }
    11. } else {
    12. if($lang == "") {
    13. if($post != "") {
    14. return($post);
    15. } else {
    16. return($config->default_lang);
    17. }
    18. } else {
    19. if($lang != "") {
    20. return($lang);
    21. } else {
    22. return($config->default_lang);
    23. }
    24. }
    25. /*
    26. if(is_file("lang/lang.".$lang.".php")) {
    27. return $lang;
    28. } else {
    29. return $config->default_lang;
    30. }
    31. //Der auch
    32. */
    33. } return $post;
    34. }
    35. ?>
    Alles anzeigen


    Das wäre die funktions.lang.php der rest der datein befassen sich mit den anderen sachen wie z.b tempdir.php mit dem template smarty sachen.


    Bin dem ganzen jedoch ein wenig näher gekommen.

    Habe z.b dies in meiner index sprich login datei

    Quellcode

    1. $benutzername = mysql_real_escape_string($_POST['benutzername']);
    2. $passwort = mysql_real_escape_string($_POST['passwort']);
    3. $lang = $_SESSION['lang'];
    4. mysql_connect($dbhost,$dbuser,$dbpass);
    5. mysql_select_db($db);
    6. $sql = mysql_query('SELECT * FROM ******** WHERE Benutzername = "'.$benutzername.'" AND Passwort = "'.($passwort).'"');
    7. $result = mysql_fetch_object($sql);
    8. if($benutzername == '' OR $passwort == ''){
    9. echo '';
    10. }
    11. else{
    12. if($benutzername == $result->benutzername AND ($passwort) == $result->passwort){
    13. setcookie('PAGELOGIN',implode('Willkommen im Kundenlogin',array($result->id,$result->benutzername,$result->passwort,$result->lang)));
    14. header('Location: index.php?act=slogin&action=kundenlogin&set=login_check&from=login_ok');
    15. }
    16. else{
    17. $msg=loginerror;
    18. }
    19. }
    20. if($_LOGIN == TRUE)
    21. {
    22. ";
    23. include ('module/startseite.php');
    Alles anzeigen


    hab mir alles ausgegeben usw und bin soweit gekommen bis zum headder. So wie es aussieht zerlegt der header mir jedesmal die session zumindest macht es sehr den anschein nach da es bis davor noch in der session gespeichert ist und nach dem header wieder auf standart zurück gesetzt ist im endefekt.

    Kann ich das im header auch anders lösen, so das er mich nicht die session zerlegt?
    Riek-Media.com - Webhosting riek-media.com
  • HI

    Bin deinem link mal gefolgt und muss sagen das es sehr hilfreich ist. Werde es mal mit diesem sprachmodul versuchen. Jedoch habe ich leider ein Problem.

    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /var/www/vhosts/stagate.de/httpdocs/kci/core/lang.php on line 13

    Nutze derzeit debian 4.0

    Hier mal eine phpinfo

    stagate.de/phpinfo.php

    Was müsste ich in der lang.php usw ändern? Besser gesagt woran liegt das?

    Wäre net dOnut wenn mir da nochmal unter die arme greifen kannst.

    Vielen dank für deine mühe

    ps die meldung bekomme ich laufend.


    Gruss

    Sascha
    Riek-Media.com - Webhosting riek-media.com

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dragon4048 ()

  • Im Prinzip hast du dort ja bereits alles erfahren ;)


    [...]wir dürfen nicht vergessen, dass wir noch nicht wissen, ob es wirklich an der PHP-Version liegt. WENN es aber an der PHP_Version liegt, dann ersetze einfach alle Klassenvariablendefinitionen wie z.B. public/protected/private $variable; mit:
    var $variable;

    Public, protected und private sind nämlich Bestandteile von PHP5. In PHP4 hat man stattdessen einfach nur “var” genommen.

    Ich bin mir jedoch derzeit nicht ganz sicher, wie es sich mit “parent” verhält:
    return parent::fetch( $_smarty_tpl_file, $_smarty_cache_id, $_smarty_compile_id, $_smarty_display);

    Diese Anweisung bereitet evtl. Probleme bei der Portierung zu PHP4. Zur Not muss man eben nicht nur die Syntax des Codes an PHP4 anpassen, sondern auch die Logik…
  • wie im tutorial


    Quellcode

    1. Außerdem setzt diese Klasse eine gewisse Verzeichnisstruktur vorraus… (/include/lng) */
    2. $path = DIR_ROOT.‘/include/lng/’.$lng.‘.txt’;
    3. if(file_exists($path))
    4. {
    5. $fh = fopen($path, ‘r’);
    6. $matches = array();
    7. while($zeile = fgets($fh))
    8. {
    9. if(preg_match(‘/^([^;\s]+)\s*=([^;]*).*$/’, $zeile, $matches))
    10. {
    11. $this->lng_strings[$matches[1]] = $matches[2];
    12. }
    Alles anzeigen
    Riek-Media.com - Webhosting riek-media.com