[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите пожалуйста сделать переключение языков.
Страницы: 1, 2, 3
Kusss
в файле который подключается к языковым страницам прописать переадресацию на страницу.
$lang_url = '<a href="/eng/'. $_SERVER['SCRIPT_NAME'] .'" title="in english">ENG</a>';
или
$lang_url = '<a href="/'. $_SERVER['SCRIPT_NAME'] .'" title="По русски">RUS</a>';
walerus
vv54 Решение которое Вам дали... так себе...
Astin Дал верное направление Вам, но Вы, его не доработали.

Почему - верное...

Потому как, если открыть Ваш сайт в новой вкладке, придется снова выбирать ENG/RUS, да и само по себе решение - костыльное.

Нужно при загрузке сайта, определять - есть ли кука с языком у пользователя или нет, если нет - ставить куку по дефолту RUS(ну или ENG) и использовать префикс в ссылках, что бы не пришлось потом править весь сайт, если захочется добавить еще один(два, три...) языка.
Эли4ка
Цитата (Santehnick @ 26.03.2019 - 22:28)
анализировать заголовок Accept-Language.

Сейчас уже никто так не делает,ибо подделать очень легко.
Эли4ка
Цитата (Santehnick @ 27.03.2019 - 01:49)
Подделать в http запросе можно что угодно. Пруф будет о том, что уже никто так не делает? На данный момент такая реализация на mdn, youtube.com, google.com и у всех остальных крупных игроков, а какой-нибудь вася с форума может и не делает.

https://twitter.com/DasSurma/status/893588422237073413

Какой-то бред, тем более ссылка на непонятный твит.
То есть по вашему гугл, ютуб имея мощнейшие geoip базы для рекламы adwords будут выдавать сайт по http заголовку? laugh.gif
Kusss
А что смущает то в такой работе. Заголовок выдает язык пользователя, зачем ещё лесть куда-то ?
Вот боевой пример
	// При выборе языка
if (isset($_GET["lang"])) {

setcookie("lang", htmlspecialchars($_GET["lang"]), time() + 3600*24*31*100, '/');
header('Location: '.$_SERVER['HTTP_REFERER'].'' );
die();
}

// переключение языка
if (isset($_GET["language"])) {
header('Location: '.$_SERVER['HTTP_REFERER'].'' );
die();
}

if (isset($_COOKIE["lang"])) {
// Если выбран язык
switch ($_COOKIE["lang"]){
case "rus":
define("LANG","rus");
break;
case "eng":
define("LANG","eng");
break;
default:
setcookie("lang", "rus", time() + 3600*24*31*100, '/');
header('Location: '.$_SERVER['HTTP_REFERER'].'' );
die();
break;
}
}
else {
// Язык пользователя по умолчению
preg_match('/^\w{2}/',$_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
switch (strtolower($matches[0])){
case "ru":
define("LANG","rus");
break;
case "en":
define("LANG","eng");
break;
case "us":
define("LANG","eng");
break;
default:
define("LANG","rus");
break;
}
}

// Подключаем файл с нужным языком
include_once '_lang_'.LANG.'.php';
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.