форум вебмастероff на AlfaSpace.NET

Ubuntu и Linux |реактивный бесплатный хостинг | Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга | правила форума

  Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ °
Форум вебмастеров на AlfaSpace.NET / Создание сайта / Проблема с PHP кодом для смены языка.
Автор Сообщение
Miralex
Участник

192
# Дата: 18 Янв 2007 02:50


Вообщем делаю английский вариант сайта. При этом хочу (думаю что так лучше) чтобы и тот и другой вариант "висел" на index.php и различались только передаваемым ключем lan=.... Также в тестовой страничке есть еще один тестовый передаваемый параметр item=...

Вот сам код:
 
<? 
//Определяем язык: 
if(isset($lan)){ 
    if($lan=='en'){ 
        setcookie("lang","en",time()+3000000); 
    }else{ 
        setcookie("lang","ru",time()+3000000); 
    } 
} 
if(isset($_COOKIE['lang'])){ 
    if($_COOKIE['lang']=="en"){ 
        $display_language='en'; 
    }else{ 
        $display_language='ru'; 
    } 
}else{ 
    setcookie("lang","en",time()+3000000); 
    $display_language='en'; 
} 
?> 
<html> 
<head> 
 
</head> 
<body> 
<? 
 
if(isset($lan)){ 
    echo "<script language='javascript'>\n"; 
echo "  location.href=\"${_SERVER['SCRIPT_NAME']}?"; 
    $i=0; 
    if(isset($item)){ 
        if($i==0){ 
            echo "item=$item"; 
            $i=1; 
        }else{ 
            echo "&item=$item"; 
        } 
    } 
    if($lan=='ru'){ 
    if ($i<>0) {echo "&";} 
        echo "lan=ru"; 
        $i=1; 
    }else{ 
    if ($i<>0) {echo "&";} 
        echo "lan=en"; 
    } 
    echo "\";\n"; 
    echo "</script>\n"; 
} 
 
if($display_language=='ru'){ 
    echo "Current language is Russian"; 
}else{ 
    echo "Current language is English"; 
} 
?> 
<br><br> 
 
<A href="./<? 
$k1=explode('/',$PHP_SELF); 
echo $k1[count($k1)-1]; 
?>?<? 
$i=0; 
if($i==0){ 
    echo "lan=ru"; 
    $i=1; 
}else{ 
    echo "&lan=ru"; 
} 
if(isset($item)){ 
    if($i==0){ 
        echo "item=$item"; 
        $i=1; 
    }else{ 
        echo "&item=$item"; 
    } 
} 
?>">Russian</A> 
<A href="./<? 
$k1=explode('/',$PHP_SELF); 
echo $k1[count($k1)-1]; 
?>?<? 
$i=0; 
if($i==0){ 
    echo "lan=en"; 
    $i=1; 
}else{ 
    echo "&lan=en"; 
} 
if(isset($item)){ 
    if($i==0){ 
        echo "item=$item"; 
        $i=1; 
    }else{ 
        echo "&item=$item"; 
    } 
} 
?>">English</A> 
 
 
<br><br> 
 
 
 
<A href="./<? 
$k1=explode('/',$PHP_SELF); 
echo $k1[count($k1)-1]; 
?>?item=test<? 
if($display_language=='ru'){ 
    echo "&lan=ru"; 
    $i=1; 
}else{ 
    echo "&lan=en"; 
} 
?>">Test link</A> 
 
 
 
</body> 
</html> 



Если просто посетить такую страничку то откроется. Если нажать на какую либо ссылку, то она начнет постоянно рефрешиться, что не годится.
Если выкинуть этот код:
 
if($lan=='ru'){ 
if ($i<>0) {echo "&";} 
    echo "lan=ru"; 
    $i=1; 
}else{ 
if ($i<>0) {echo "&";} 
    echo "lan=en"; 
} 


То страничка не виснет. Ссылки все работают, но в адресной строке не добавляется ключ, указывающий язык. Не очень удобно будет, если люди захотят скопировать полную ссылку с инфой на конкретном языке.

Кто может подсказать в чем проблема и как лучше сделать?
Заранее спасибо.

Miralex
Участник

192
# Дата: 19 Янв 2007 00:53


Никто не разбирается в PHP?
Все еще нуждаюсь в помощи.

Михаил
Ушел в бан)

2572
# Дата: 19 Янв 2007 01:12


Miralex
Я разбираюст но что-то не вьехал в твой код. Счас приду домой, подумаю.

Михаил
Ушел в бан)

2572
# Дата: 19 Янв 2007 03:17


Вообщем вердик таков - нафиг мучаться? Сделай index.php с русским и index-eng.php с английским. При заходе на обычный индекс - в сессии записывается русский язык, при заходе на индекс английской версии - записывается кука с инглишем. А уже остальные модули юзают проверку и инклюдят тот или иной языковой файл.

Miralex
Участник

192
# Дата: 19 Янв 2007 03:54


Та хотелось бы в одном файле. Делают же как-то люди.

И еще один вопросик:
Есть переменная: $showbeginner.
Она обьявлена и в нее занесено значение.
Далее идет обьявление ф-ции:
function display_help_title()
При попытке отобразить страничку денвер ругается:
Notice: Undefined variable: showbeginner in z:\home\stealth\www\help.php on line 156
В строке 156 написано:
if ( ($showbeginner==1) && (strcasecmp($helperror, '')==0) )

В чем может быть проблема?

Михаил
Ушел в бан)

2572
# Дата: 19 Янв 2007 03:58 ° Поправил: Михаил


Miralex
В функции есть эта переменная? Если да, то при указании функции надо указать и переменную. Допустим так:

Сама функция

function display_help_title($showbeginner){
... тут текст с использованием переменной.
};

Пользоваться так:
function display_help_title($showbeginner);



А насчет моего предложения - так выбрось свою систему и делай по моему, только вместо двух файлов юзая index.php?l=rus сделай index.php?l=eng. То есть человек зашел, записал в куки язык и уже ходит по сайту как обычно. Надо поменять - юзает вторую ссылку и в куках новый язык. Для ссылок на переключения поставь флажки языков к примеру ))

Miralex
Участник

192
# Дата: 19 Янв 2007 04:04


Насчет языков подумаю ...

Насчет ф-ции - у меня 5 переменных объявлены и занесены значения до объявления ф-ции. Они же начиная с того момента видны во всем коде PHP того файла? Зачем мне их еще передавать? Это геморрой искать что юзаю и передавать еще раз в ф-ции, которое уже и так есть. А если 10-20 переменных использует ф-ция? Наверняка есть способ как использовать "глобально объявленные" переменные в ф-ции.

Михаил
Ушел в бан)

2572
# Дата: 19 Янв 2007 04:12 ° Поправил: Михаил


Miralex
Слушай, когда ты описываешь функцию
function display_help_title($showbeginner){
... тут текст с использованием переменной.
};


То ты тут прописываешь не существующие переменные, а свои, то есть тут можешь написать ($net_takoy_peremenoy1, $net_takoy_peremenoy2) и т.д.

А уже при запуске функции прописываешь реальные переменные, к примеру ($realnaya_peremenaya1, $realnaya_peremenaya2). Потом будет как бы сравнение переменных, то есть первая нереальная заменится первой реальной и т.д. Других способов лично я не знаю.

Miralex
Участник

192
# Дата: 19 Янв 2007 09:16


Вообщем домучал я проблему с языками. Ошибка была в строке:
echo " location.href=\"${_SERVER['SCRIPT_NAME']}?";
А надо так:
echo " location.href=\"${_SERVER['SCRIPT_NAME']}\"?";


Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:31386, gzipped size:9792

Mp3 Download || Мир Спанч боба || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]