Войти

Показать полную графическую версию : Сайт на двух языках (php-скрипт для определения языка)


vitalyhan
28-08-2007, 16:08
Есть вопрос. Помогите разобраться.
Необходимо создать сайт на двух языках, сайт должен грузиться на английском языке, но если заходит наш юзер (русскоязычный), тогда необходима автоматическая загрузка страниц на русском. Есть ли возможность реализовать это средствами php или есть какой-нибудь оптимальный способ это сделать без установки на сервер дополнительных компонентов и какой вид тогда будет иметь синтаксис объекты сайта (кнопки, ссылки, статьи)?
Извините, если немного запутанно написал...

Coutty
28-08-2007, 16:55
Смотря как определять русского пользователя. Может быть проще будет предложить на главной странице выбор - EN|RU?

Можно в начале скрипта проверить предпочтения клиента на принимаемые языки, и в зависимости от ответа загрузить русский или английский файл (тут перенаправление):

<?php
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) == "ru_RU")
Header ("Location: rus.php");
else
Header ("Location: eng.php");


Ну или просто присвоить результат переменной, а потом уже смотреть, какие данные подсовывать клиенту:


<?php
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) == "ru_RU")
$lang = "rus";
else
$lang = "eng";


Но это сработает только если браузер передаёт строку с предпочтениями)) Например, у меня Опера передаёт. Насчёт других - не знаю. Попробуйте.

miha_conan
22-11-2009, 15:36
Переделанный мной вариант


preg_match('/^\w{2}/',$_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
switch (strtolower($matches[0])){
case "ru": $accept_lang="ru";break;
case "de": $accept_lang="de";break;
case "en": case "uk": case "us": $accept_lang="en";break;
default: $accept_lang="de";break;
}

if (isset($_REQUEST["lang"])) $_SESSION["lang"] = $_REQUEST["lang"];
elseif(!isset($_SESSION["lang"])||($_SESSION["lang"]=='')) $_SESSION["lang"] = $accept_lang;
$lang=$_SESSION["lang"];
if ($lang!='ru'&&$lang!='de'&&$lang!='en') $lang=$accept_lang;
$_SESSION["lang"] = $lang;

затем просто

<a href="?lang=de">Немецкий</a>
<a href="?lang=ru">Русский</a>
<a href="?lang=en">Английский</a>


Таким образом, язык сначала определяется и ставится на старте. Затем записывается в сессию и остается в ней до конца, или пока пользователь сам не переключит язык.
Если пользователь думает, что он самый умный и пытается выставить что то типа "?lang=bb" , то включается язык браузера.
Новый язык записывается в сессию.
Но можно например записывать и в куки...




© OSzone.net 2001-2012