Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Сайт на двух языках (php-скрипт для определения языка) (http://forum.oszone.net/showthread.php?t=89264)

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'], 05) == "ru_RU")
  
Header ("Location: rus.php");
else
  
Header ("Location: eng.php");

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

PHP код:

<?php
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 05) == "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.

Время: 13:00.
© OSzone.net 2001-