Задать вопрос
@tryvols
Front-End разработчик

Как на php реализовать многоязычность при помощи куки?

setcookie('lang', $_POST['lang']);

if(session_start()) {
    $_SESSION['lang'] = $_COOKIE['lang'];
} else {
    $_SESSION['lang'] = $_POST['lang'];
}

$lang = $_SESSION['lang'];

$defaultlang = 'rus';

if (!isset($lang))
{
   $lang = (!file_exists("./lang/{$lang}.php")) ? $defaultlang : $lang;
}

echo "lang=".$lang;

require "./lang/{$lang}.php";


<form action="?set=lang" method="post">
        <select name="lang">
            <option value="rus">ru</option>
            <option value="eng">en</option>
        </select>
        <input type="submit" value="ok" />
    </form>


Основная проблема в том, что до куки доходит только со второго раза
  • Вопрос задан
  • 198 просмотров
Подписаться 2 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
ak-o
@ak-o
web-developer
Как вариант разобрать заголовок "Accept-Language" и сразу выдать "предпочитаемый язык" вместе с кукой. Которую скажем, меняем при необходимости (при выборе другого языка через селект, обновляем страницу, грузим нужный язык и ставим куку)

У себя же использую такую схему:
site.ru/some_page
site.ru/en/some_page
Можно и ru.site.ru / en.site.ru и т.д
Использую такую схему потому что поисковики ищут на странице специальные ссылки, в которых как бы говорится, что эта страница существует на N языках. Тем самым они понимают что это один и тот же контент.
Ответ написан
Комментировать
@KIN1991
Python, PHP developer
реализовывать мультиязычность через куки, не очень хорошая практика, лучше реализовывать через url.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽