За последние 24 часа нас посетил 19191 программист и 1646 роботов. Сейчас ищут 773 программиста ...

Как сделать на странице переключатель на другой язык?

Тема в разделе "PHP для новичков", создана пользователем Andrey K., 16 апр 2008.

  1. Andrey K.

    Andrey K. Активный пользователь

    С нами с:
    22 май 2007
    Сообщения:
    83
    Симпатии:
    0
    Привет.
    Есть сайт, состоящий из нескольких страниц. Вся информация сейчас выводится на русском языке.
    Нужно сделать переключатель, чтобы информация могла отображаться на разных языках.

    Думаю сделать это следующим образом:
    На каждой странице инклудится скрипт, который смотрит какой флаг выставлен, и на странице в зависимости от флага инфа пишется или русским или английским языком. Между страницами передается флаг lang. То есть выглядит это так: page2.php?lang=rus

    На старницах есть участок кода:
    Код (Text):
    1.  
    2. // Language by default = rus
    3. global $lang;
    4. $lang="rus";
    5. if(isset($_GET['lang']))
    6. {
    7.     switch ($_GET['lang'])
    8.     {
    9.         case "rus":
    10.             $lang="rus";
    11.             break;
    12.         case "eng":
    13.             $lang="eng";
    14.             break;
    15.         default:
    16.             $lang="rus";
    17.             break;
    18.     }
    19. }
    20. // Language
    и далее по странице если флаг русский - пишем русским, если флаг английский - пишем английским.

    Тут все в порядке. Теперь далее.
    Я уже говорил, что на каждой странице инклудится файл, там выводится два изображения - русский флаг и английский.
    Эти изображения являются ссылками, ссылающимися на ту же страницу, на которой щас находимся, но только с разными языковыми флагами lang. Ссылка эта генерируется динамически. Вот тут-то и начинаются проблемы...

    Это код скрипта:
    Код (Text):
    1.  
    2. <?php
    3. $request_page=explode("/", $REQUEST_URI);
    4. $req_page=$request_page[2];
    5.  
    6. if($req_page=="")   // если запрашиваем индексовскую страницу по умолчанию, то добавляем флаг
    7. {
    8.     $req_page_eng="index.php?lang=eng";
    9.     $req_page_rus="index.php?lang=rus";
    10. }
    11. else   // если запросили другую страницу, отличной от страницы по умолчанию
    12. {
    13.     if(strpos("lang", $req_page))   // если флаг существует, заменяем его
    14.     {
    15.         $req_page_eng=str_replace("rus", "eng", $req_page);
    16.         $req_page_rus=str_replace("eng", "rus", $req_page);
    17.     }
    18.     else   // если флаг не существует, добавляем его
    19.     {
    20.         if(strpos("?", $req_page))   // если были переданы какие-то переменные, то добавляем флаг к передаваемым переменным
    21.         {
    22.             $req_page_eng=$req_page."&lang=eng";
    23.             $req_page_rus=$req_page."&lang=rus";
    24.         }
    25.         else   // если никаких переменных не было, добавляем флаг
    26.         {
    27.             $req_page_eng=$req_page."?lang=eng";
    28.             $req_page_rus=$req_page."?lang=rus";
    29.         }
    30.     }
    31. }
    32. ?>
    33.  
    34. <a href="<?=$req_page_rus;?>"><img src="img/ru_flag.gif" alt="rus"/></a>
    35. <a href="<?=$req_page_eng;?>"><img src="img/eng_flag.gif" alt="eng"/></a>
    Так вот, для начальной страницы по умолчанию (index.php) флаг добавляет нормально.
    Если уже был выбран какой-то флаг, то по идее скрипт должен заменить его.... НО! он не заменяет, а добавляет новый флаг к концу строки. И ссылка получается такой:
    Код (Text):
    1.  
    2. index.php?lang=eng?lang=rus
    Как я понимаю, strpos("lang", $req_page) всегда выдает false....
    ПОЧЕМУ?
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    А что это такое? о_0
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Я смею предположить, что правильно писать $_SERVER['REQUEST_URI'] :)
     
  4. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    Поменяй местами аргументы. http://www.php.net/strpos
     
  5. Andrey K.

    Andrey K. Активный пользователь

    С нами с:
    22 май 2007
    Сообщения:
    83
    Симпатии:
    0
    !!!! Вот это я !@#!
    Этож нужно было так лоханутся..... :oops:
    два дня бился головой об стену...
    Спасибо!!!
     
  6. Andrey K.

    Andrey K. Активный пользователь

    С нами с:
    22 май 2007
    Сообщения:
    83
    Симпатии:
    0
    может и твой вариант правильнее, но так тоже можно
     
  7. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    "register_globals on переменные" не есть неправильно. Правильно сказать рекомендую :)