-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
vitalyhan |
28-08-2007 16:08 634285 |
Сайт на двух языках (php-скрипт для определения языка)
Есть вопрос. Помогите разобраться.
Необходимо создать сайт на двух языках, сайт должен грузиться на английском языке, но если заходит наш юзер (русскоязычный), тогда необходима автоматическая загрузка страниц на русском. Есть ли возможность реализовать это средствами php или есть какой-нибудь оптимальный способ это сделать без установки на сервер дополнительных компонентов и какой вид тогда будет иметь синтаксис объекты сайта (кнопки, ссылки, статьи)?
Извините, если немного запутанно написал...
|
Coutty |
28-08-2007 16:55 634315 |
Смотря как определять русского пользователя. Может быть проще будет предложить на главной странице выбор - EN|RU?
Можно в начале скрипта проверить предпочтения клиента на принимаемые языки, и в зависимости от ответа загрузить русский или английский файл (тут перенаправление):
PHP код:
<?php
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) == "ru_RU")
Header ("Location: rus.php");
else
Header ("Location: eng.php");
Ну или просто присвоить результат переменной, а потом уже смотреть, какие данные подсовывать клиенту:
PHP код:
<?php
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) == "ru_RU")
$lang = "rus";
else
$lang = "eng";
Но это сработает только если браузер передаёт строку с предпочтениями)) Например, у меня Опера передаёт. Насчёт других - не знаю. Попробуйте.
|
miha_conan |
22-11-2009 15:36 1277229 |
Переделанный мной вариант
PHP код:
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;
затем просто
HTML код:
<a href="?lang=de">Немецкий</a>
<a href="?lang=ru">Русский</a>
<a href="?lang=en">Английский</a>
Таким образом, язык сначала определяется и ставится на старте. Затем записывается в сессию и остается в ней до конца, или пока пользователь сам не переключит язык.
Если пользователь думает, что он самый умный и пытается выставить что то типа "?lang=bb" , то включается язык браузера.
Новый язык записывается в сессию.
Но можно например записывать и в куки...
|
Время: 13:00.
© OSzone.net 2001-