За последние 24 часа нас посетили 52412 программистов и 1798 роботов. Сейчас ищут 720 программистов ...

Переключатель языка на странице

Тема в разделе "PHP для новичков", создана пользователем Nikel41, 4 июн 2017.

Метки:
  1. Nikel41

    Nikel41 Новичок

    С нами с:
    4 июн 2017
    Сообщения:
    9
    Симпатии:
    2
    Добрый день, форумчане!
    Обращаюсь к Вам за подсказкой, т.к. сам разобраться не могу, гуглил как мог, форум читал, но так и не въехал.
    Задача: переключатель языка на странице (русский по умолчанию, английский второй).
    Сделал ссылки на переключение, написал код для самого процесса, но страничка на него никак не реагирует, выводит русский и только. На английскую версию никак не попасть.
    Вот код (всего 2 файла):
    index.php
    PHP:
    1. <?php require "switch.php";?>
    2. <!DOCTYPE html>
    3. <html>
    4. <head>
    5. <meta charset="utf-8">
    6. <title>Переключатель языка на странице</title>
    7. <style type="text/css">
    8.     .lang_switch {
    9.         position: absolute;
    10.         top: 20px;
    11.         right: 10px;
    12.                 }
    13.     #rus {
    14.         border-right: 1px solid black;
    15.         padding-right: 4px;
    16.                 }
    17. </style>
    18. </head>
    19. <body>
    20.     <div class="lang_switch">
    21.         <a id="rus" href="index.php?lang=ru">РУ</a>
    22.         <a href="index.php?lang=en">ENG</a>
    23.     </div>
    24.  
    25.     <button formaction="https://www.gosuslugi.ru"><?php echo "$gosuslugi_bttn_name";?></button>
    26.     <button formaction="#"><?php echo "$sms_bttn_name";?></button>
    27. </body>
    28. </html>
    switch.php
    PHP:
    1. <?php
    2.       if (isset($_GET['lang']) && $_GET['lang']="ru") {
    3.             $_SESSION['lang']=ru;
    4.       }
    5.      elseif (isset($_GET['lang']) && $_GET['lang']="en") {
    6.             $_SESSION['lang']=en;
    7.      }
    8.     if ($_SESSION["lang"]=="ru") {
    9.         $gosuslugi_bttn_name = "Вход через Госуслуги";
    10.         $sms_bttn_name = "Вход через SMS";
    11.         }
    12.        else  {
    13.         $gosuslugi_bttn_name = "Enter via Gosuslugi.ru";
    14.         $sms_bttn_name = "Enter via SMS";
    15.     }
    16. ?>
    Помогите пожалуйста новичку, буду очень признателен. Уверен, что задача на самом деле тривиальная...
     
  2. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    сразу вижу, в условиях $_GET['lang']="ru" стоит одинарное равно.. а это присваивание.. то есть Вы присваиваете $_GET['lang'] значение ru надо поставить двойное равно $_GET['lang'] == 'ru'

    а вот тут $_SESSION['lang']=ru; там где присваиваете значение, значение должно быть в кавычках $_SESSION['lang']='ru';
    попробуйте..
     
    TeslaFeo и Nikel41 нравится это.
  3. Nikel41

    Nikel41 Новичок

    С нами с:
    4 июн 2017
    Сообщения:
    9
    Симпатии:
    2
    Ух, точно, помогло, спасибо большое!
    --- Добавлено ---
    Был бы благодарен также за подсказку насчет
    PHP:
    1. <button formaction="https://www.gosuslugi.ru"><?php echo "$gosuslugi_bttn_name";?></button>
    Это неправильное описание кнопки и её formaction? Потому что у меня она не срабатывает, formaction возможен только с локально расположенными адресами?
     
    Алекс8 нравится это.
  4. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    а вообще если можно совет.. выносите текст в языковые файлы..
    к примеру сделали папку language
    там сделали два файла russian.php и english.php в одном русские названия, в другом иностранные
    PHP:
    1. <?php
    2.    
    3. $txt = [
    4.     'lang' => 'язык',
    5.     'ru' => 'русский',
    6.     'en' => 'английский',
    7.     'gosuslugi_bttn_name' => 'Вход через Госуслуги',
    8.     'sms_bttn_name' => 'Вход через SMS',
    9. ];
    PHP:
    1. <?php
    2.    
    3. $txt = [
    4.     'lang' => 'language',
    5.     'ru' => 'russian',
    6.     'en' => 'english',
    7.     'gosuslugi_bttn_name' => 'Enter via Gosuslugi.ru',
    8.     'sms_bttn_name' => 'Enter via SMS',
    9. ];
    тогда файл index.php будет вот так выглядеть
    HTML:
    1. <?php require "switch.php";?>
    2. <!DOCTYPE html>
    3. <meta charset="utf-8">
    4. <title>Переключатель языка на странице</title>
    5. <style type="text/css">
    6.     .lang_switch {
    7.         position: absolute;
    8.         top: 20px;
    9.         right: 10px;
    10.                 }
    11.     #rus {
    12.         border-right: 1px solid black;
    13.         padding-right: 4px;
    14.                 }
    15. </head>
    16.     <div class="lang_switch">
    17.         <a id="rus" href="index.php?lang=ru">РУ</a>
    18.         <a href="index.php?lang=en">ENG</a>
    19.     </div>
    20.     <button formaction="https://www.gosuslugi.ru"><?=$txt['gosuslugi_bttn_name'];?></button>
    21.     <button formaction="#"><?=$txt['sms_bttn_name'];?></button>
    22. </body>
    23. </html>
    а файл switch.php вот так
    PHP:
    1. <?php
    2.    
    3.     session_start();
    4.    
    5.     $load_lang = 'russian';
    6.    
    7.     if(!empty($_SESSION['lang'])){
    8.         $load_lang = $_SESSION['lang'];
    9.     }
    10.    
    11.     if (isset($_GET['lang'])) {
    12.        
    13.         switch($_GET['lang']){
    14.             case 'ru':
    15.                 $load_lang = 'russian';
    16.                 break;
    17.             case 'en':
    18.                 $load_lang = 'english';
    19.                 break;
    20.         }      
    21.         $_SESSION['lang'] = $load_lang;
    22.     }
    23.     require_once '/language/' . $load_lang . '.php';
    --- Добавлено ---
    да)) этого я не заметил)) они не работают потому что нет тега form..
    HTML:
    1.  
    2.     <form>
    3.         <button formaction = "https://www.gosuslugi.ru"><?=$txt['gosuslugi_bttn_name'];?></button>
    4.         <button formaction = "#"><?=$txt['sms_bttn_name'];?></button>
    5.     </form>
     
    TeslaFeo и Nikel41 нравится это.
  5. Nikel41

    Nikel41 Новичок

    С нами с:
    4 июн 2017
    Сообщения:
    9
    Симпатии:
    2
    Понял Вас, спасибо большое за советы, помогли сдвинуться с мертвой точки сегодняшнего дня!
     
    Алекс8 нравится это.
  6. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    кстати вообще по логике файл switch должен быть index.php
    а файл index должен быть lang.template.php и должен лежать в папке templates или view))
    а уже из индекса его инклудить)
    как то так))