[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Смена языка на сайте.
nazarlee
Здравствйте.

Ситуация такая:
- В блоке хедера, который подключается на старницы сайта из отдельного файла header.php, есть функция смены языка. Точнее - это обычная ссылка, которая перемещает пользователя на главную страницу сайта, но уже на другом языке.

Задача: Сделать так, что бы при смене языка, пользователь оставался на той же странице, где он и нажал на ссылку смены языка. Тоесть если человек находится в разделе "контакты", то, если он захочет узнать те же контакты, но на английском, его не редиректело бы на главную страницу, а оставляло бы на нынешней старнице.



Я так подозреваю, что необходимо какоето условие )))
Так же я думаю, что всё как всегда достаточно просто ))

Всем заранее СПАСИБО!





Спустя 19 часов, 31 минута, 28 секунд (29.04.2011 - 11:28) Guest написал(а):
Нужно знать как хранится выбранный язык.

Если он хранится в url - т.е. site.com/en/articles - то при переходе, достаточно будет
заменять en на выбранный язык, т.е. просто меняя url.

Если в сессии то просто меняем в сессии язык не меняя страницу.

Если ещё где то.. то .. по смыслу

Спустя 51 минута, 27 секунд (29.04.2011 - 12:20) Guest написал(а):
На сайте продублированы все страницы на 2 языках.
К примеру:
- странице contact.php которая содержит информацию на английском языке, соответствует точно такая же страница contact_fra.php, которая содержит тот же текст (данные) только на французском языке. И так для всех страниц на сайте.

Блок хедера, вместе с меню и ссылкой на переключение языка, лежит в отдельном файле header.php, который просто подключается в нужном месте на каждой странице сайта.

Вот код блока со ссылкой:
<div class="smena_jazikov">
<a
class="smena_jazikov_link" href="index_f.php">FRA</a>
</div>

Он, как вы видете, переключает пользователя, который нажимает на "FRA" на главную страницу сайта с французским текстом.

Задача та же:
- Сделать так, что бы пользователь находясь на станице (к примеру contact.php) при клике на ссылку смены языка попадал не на index_f.php, а на старницу соответствующую той, на которой он сейчас находится. В нашем случае странице contact.php соответствует страница conttact_fra.php.
Такая схема должна работать для каждой страницы сайта. Их около 10 штук.

Спустя 1 минута, 12 секунд (29.04.2011 - 12:21) nazarlee написал(а):
Это я был ))) вверху простите.

Спустя 6 часов, 30 минут, 23 секунды (29.04.2011 - 18:51) liw написал(а):
Выбор языков сделан коряво конечно.

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

$lang = 'fra';

$link = preg_replace(
'/^(.*)(_[a-z]{1,3})?\.php(\?.*)?$/DUi',
'$1'.($lang?'_'.$lang:'').'.php$3',
$_SERVER['REQUEST_URI']);


<div class="smena_jazikov">
<a
class="smena_jazikov_link" href="<?php echo $link; ?>">FRA</a>
</div>

Спустя 11 месяцев, 19 дней, 1 час, 38 минут, 17 секунд (18.04.2012 - 20:30) fr33ze написал(а):
А файл с тем или иным языком будет выглядеть как <название>_<название языка>.php ?

Спустя 5 месяцев, 16 дней, 22 часа, 6 минут, 6 секунд (5.10.2012 - 18:36) babets написал(а):
Цитата (liw @ 29.04.2011 - 18:51)
Выбор языков сделан коряво конечно.

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

$lang = 'fra';

$link = preg_replace(
'/^(.*)(_[a-z]{1,3})?\.php(\?.*)?$/DUi',
''.($lang?'_'.$lang:'').'.php',
$_SERVER['REQUEST_URI']);


<div class="smena_jazikov">
<a
class="smena_jazikov_link" href="<?[SPAN=darling]php[/SPAN] echo $link; ?>">FRA</a>
</div>

Поясніть будь-ласка як поміняти цей код, щоб ссилка виходила http://мій_сайт/com/fra/решта/php?a=1

Спустя 1 час, 59 минут, 55 секунд (5.10.2012 - 20:36) twin написал(а):
babets
Цитата
Поясніть будь-ласка як поміняти цей код, щоб ссилка виходила http://мій_сайт/com/fra/решта/php?a=1

Спустя 1 час, 19 минут, 3 секунды (5.10.2012 - 21:55) babets написал(а):
Когда всавляеш етот код то ссылка получается http://мій_сайт.com/view_fra.php?a=1, а нужно чтоб было http://мій_сайт.com/fra/view.php?a=1. У меня другой язык в папке fra.

Спустя 1 день, 22 часа, 59 минут, 47 секунд (7.10.2012 - 20:55) babets написал(а):
Цитата (liw @ 29.04.2011 - 18:51)
Выбор языков сделан коряво конечно.

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

$lang = 'fra';

$link = preg_replace(
'/^(.*)(_[a-z]{1,3})?\.php(\?.*)?$/DUi',
''.($lang?'_'.$lang:'').'.php',
$_SERVER['REQUEST_URI']);


<div class="smena_jazikov">
<a
class="smena_jazikov_link" href="<?[SPAN=darling]php[/SPAN] echo $link; ?>">FRA</a>
</div>

что в етом коде значит переменная $1 и $3

Спустя 1 час, 3 минуты, 19 секунд (7.10.2012 - 21:58) inpost написал(а):
babets
В этом коде - РЕГУЛЯРНЫЕ выражения. Любой учебник объясняет это! Почитай про регулярные выражения и всё поймешь.

Спустя 12 часов, 31 минута, 42 секунды (8.10.2012 - 10:30) babets написал(а):
inpost Спасибо

Спустя 5 часов, 7 минут, 39 секунд (8.10.2012 - 15:37) Zzepish написал(а):
Я делал так- создаю две таблицы.
например:
ru_medicine
eng_medicine

А потом сверялся с куками.
Если
if( (int)$_COOKIE['lang']===1){
$sufix='eng';
}
else $sufix='ru';
И коннект соответственно с таблицами по суфиксу

Спустя 36 минут, 20 секунд (8.10.2012 - 16:14) n58oo написал(а):
зачем таблицы плодить, проще добавить в одну поле 'lang', если еще потребуется 10 языков добавить в базе можно заблудиться

Спустя 6 часов, 20 минут, 55 секунд (8.10.2012 - 22:35) killer8080 написал(а):
Цитата (Zzepish @ 8.10.2012 - 15:37)
А потом сверялся с куками.

Не самый лучший вариант - использовать куки. Поисковики будут индексировать только одну языковую версию контента. Лучше использовать урл, или субдомен.

Спустя 1 день, 41 минута, 9 секунд (9.10.2012 - 23:16) VELIK505 написал(а):
Цитата (nazarlee @ 28.04.2011 - 12:57)
Здравствйте.

Ситуация такая:
- В блоке хедера, который подключается на старницы сайта из отдельного файла header.php, есть функция смены языка. Точнее - это обычная ссылка, которая перемещает пользователя на главную страницу сайта, но уже на другом языке.

Задача: Сделать так, что бы при смене языка, пользователь оставался на той же странице, где он и нажал на ссылку смены языка. Тоесть если человек находится в разделе "контакты", то, если он захочет узнать те же контакты, но на английском, его не редиректело бы на главную страницу, а оставляло бы на нынешней старнице.



Я так подозреваю, что необходимо какоето условие )))
Так же я думаю, что всё как всегда достаточно просто ))

Всем заранее СПАСИБО!

В самомом верху где нить.
if(isset($_GET["language"])){
setcookie ("leng", intval($_GET["language"]),time()+60*60*24*31*3);
$_COOKIE["leng"] = intval($_GET["language"]);
header('Location: '.$_SERVER['HTTP_REFERER']);
}
include ( (isset($_COOKIE["leng"]) AND $_COOKIE["leng"] == 2) ? "funcions/lang/eng.php" : "funcions/lang/rus.php" );

в хеад:
<script>function changes(type,val){
document.location.replace('?'+type+'='+val);return false
}</script>

на странице:
<span style="cursor: pointer" onclick="return changes('language','2');">English</span>
<span
style="cursor: pointer" onclick="return changes('language','1');">Русский</span>

Так понятно?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.