форум вебмастеро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']}\"?"; ![]() |
|
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:31386, gzipped size:9792 |