Page 1 of 1

Переключатель языков

Posted: Sat Apr 15, 2017 7:55 am
by SAS
Вот добрался я к переключателю языков.

Первое, что пришло в голову это такой код в коммон.пхп

Code: Select all

function change_lang($input_lang) {
    $clear_uri = substr($_SERVER['REQUEST_URI'], 3);
    $change_url = '/'.$input_lang.$clear_uri;
    return $change_url;
}
В шаблоне так:
Image

Хожу-брожу по сиджу, тыкаю туда-сюда.. Вроде бы все нормально работает!

Но вот на форуме наткнулся на эту тему https://smartcj.com/forum/viewtopic.php ... 60#p153399

И теперь меня терзают смутные сомнения, что я сделал неправильно :)

К чему это все?

Code: Select all

    if (!isset($_SERVER['HTTP_REFERER'])) $_SERVER['HTTP_REFERER'] = '';

    if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $_SERVER['HTTP_ACCEPT_LANGUAGE'] = '';

    if (!strstr($_SERVER['HTTP_REFERER'], 'domain.com') and !$_GET['force_lng']) {

    $str = $_SERVER['REQUEST_URI']; $str2 = substr($str, 3);

       if (strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'fr')) {
          header("Location: http://www.domain.com/fr".$str."");
          exit;
       } elseif (strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'de')) {
          header("Location: http://www.domain.com/de".$str."");
          exit;
    ....
       } else {
          header("Location: http://www.domain.com/en".$str."");
          exit;
       }
    }
Это он тоже переключатель языков делал? Можете обяснить зачем такой код с header("Location ?

****
ПС: я где-то уже писал, что в пхп не профи, учу потихоньку вместе со смартом :)

Re: Переключатель языков

Posted: Sat Apr 15, 2017 7:59 am
by admin
Там старый вариант когда хочели редиректить на нужный язык по языку браузера, потом это было встроено в скрипт.
Ваш вариант ок и так, хотя я бы переносил функцию в темпелйт хедер например нежели в коммон

Re: Переключатель языков

Posted: Sat Apr 15, 2017 8:22 am
by SAS
admin wrote:Там старый вариант когда хочели редиректить на нужный язык по языку браузера, потом это было встроено в скрипт.
Ваш вариант ок и так, хотя я бы переносил функцию в темпелйт хедер например нежели в коммон
я наоборот старюсь все функции в common.php впихнуть, даже "мелкие" какие-то, а в темплейтах только вызовы :)

насчет хедера можете пояснить немного? почему лучше? быстрее сработает?
и как?

поместить просто функцию в хедер?

Code: Select all

<?php
function change_lang($input_lang) {
    $clear_uri = substr($_SERVER['REQUEST_URI'], 3);
    $change_url = '/'.$input_lang.$clear_uri;
    return $change_url;
}
?>
ну т.е. вот взять и скопировать в начало шаблона хедер? а потом выводить как я и выводил?


********
или может лучше будет вообще без функции обойтись
типа так
Image
сразу через echo?

Re: Переключатель языков

Posted: Sat Apr 15, 2017 8:29 am
by admin
Результат будет один и тот же в данном случае.
Но с точки зрения красоты - надо юзать функции и держать то что относитется к темпелйтам - в темплейтах.

Re: Переключатель языков

Posted: Sat Apr 15, 2017 8:48 am
by SAS
admin wrote:Результат будет один и тот же в данном случае.
Но с точки зрения красоты - надо юзать функции и держать то что относитется к темпелйтам - в темплейтах.
ясно, значит даже напрямую с echo вариант нормальный?

ну красота то такое, хотя тоже нужна
еще вот "правильная функциональность" мне интересна, ну чтоб работало все как надо
я просто сомневаюсь, что все сделал правильно

вот подбираюсь к завершению создания своего первого сиджа
можно будет, потом как доделаю все, заказать у вас типа "аудит"?
чтобы вы просто посмотрели мои темплейты и написали, что по вашему неправильно сделано! ну там может с тайтлами или пагинацией намутил че-то лишнего... Может какие-то части моего кода лучше кешировать.. может что-то лучше в коммон.пхп, а что-то в темплейты, может какой-то код пхп у меня написан через одно место, что вполне может быть и т.д. Вообщем советы всякие нужны будут!

не бесплатно естественно, понимаю время=деньги :)

Re: Переключатель языков

Posted: Sat Apr 15, 2017 4:56 pm
by admin
Совершенно бесплатно вы можете узнать все вопросы на фоурме.
Код который относится к темпелйтам как я уже и сказал лучше что б был в темпелйтах.
Но работать будет и там и там.