Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Мультиязык приставка к URL
 
 автор: sl1p   (22.10.2009 в 16:43)   письмо автору
 
 

Допустим стандартный язык стоит русский, ссылка выглядит так http://example.com/smth/
далее меняем на англ ссылка: http://example.com/en/smth/

как делается приставка к URL (/en/). Это получается к каждой ссылке нужно добавлять "вручную"?

  Ответить  
 
 автор: cheops   (22.10.2009 в 16:48)   письмо автору
 
   для: sl1p   (22.10.2009 в 16:43)
 

Можно при помощи mod_rewrite преобразовать ссылки вида http://example.com/smth/?lang=en к http://example.com/en/smth/

  Ответить  
 
 автор: sl1p   (22.10.2009 в 17:34)   письмо автору
 
   для: cheops   (22.10.2009 в 16:48)
 

Я не о том, как в каждой ссылке на сайте передавать этот параметр?
То есть, получается, нужно добавлять вручную этот параметр к любой ссылке на сайте?

  Ответить  
 
 автор: Temnovit   (22.10.2009 в 17:39)   письмо автору
 
   для: sl1p   (22.10.2009 в 17:34)
 

Попробуйте вот эту функцию. Если ее совместить с тем, что предложит cheops, должно получится:
http://ru.php.net/manual/en/function.output-add-rewrite-var.php

  Ответить  
 
 автор: sl1p   (22.10.2009 в 18:07)   письмо автору
 
   для: Temnovit   (22.10.2009 в 17:39)
 

мм уже ближе:)
а как передать в таком виде /en/ ? :)

возможно есть какаято функция которая вообще любую запись к юрл приставляет?

  Ответить  
 
 автор: neadekvat   (22.10.2009 в 19:48)   письмо автору
 
   для: sl1p   (22.10.2009 в 18:07)
 

Ну, добавьте в начала скрипта переменную $lang, в неё запишите язык (/en) или пустой строкой оставье (для русского языка).
А ссылки такие делайте:
<?
$lang 
'/en';
?>
<a href="http://example.com<?=$lang?>/smth/">Link</a>

  Ответить  
 
 автор: sl1p   (22.10.2009 в 20:10)   письмо автору
 
   для: neadekvat   (22.10.2009 в 19:48)
 

ну это элементарно, но ёпт ссылок же куча, имхо должно быть чтото попроще

  Ответить  
 
 автор: neadekvat   (22.10.2009 в 20:58)   письмо автору
 
   для: sl1p   (22.10.2009 в 20:10)
 

Да, можно сделать куда проще:

<?php
if ($lang == 'en') {
echo 
'<a href="site.ru/en/blabla/">link</a>';
} elseif (
$lang == 'ru') {
echo 
'<a href="site.ru/blabla/">link</a>';
}


И так на каждой ссылке.

  Ответить  
 
 автор: sl1p   (22.10.2009 в 21:40)   письмо автору
 
   для: neadekvat   (22.10.2009 в 20:58)
 

ага очень круто)
пошёл щас 500 ссылок так переделывать)

короче такой способ не подходит, это я и имел ввиду вручную.

  Ответить  
 
 автор: Лена   (22.10.2009 в 17:46)   письмо автору
 
   для: sl1p   (22.10.2009 в 17:34)
 

Если я правильно Вас поняла.
Чтобы не добавлять вручную, можно составить регулярное выражение. Далее пишете скрипт, который рекурсией проходит по всем каталогам и файлам, ищет в файлах ссылки и меняет их в соответствии с Вашим регулярным выражением. Я так меняла строку в файлах.

  Ответить  
 
 автор: heed   (22.10.2009 в 22:28)   письмо автору
 
   для: Лена   (22.10.2009 в 17:46)
 

думаю автору больше подойдёт то-же, но выполняющееся каждый раз при загрузке страницы, если там несколько разных языков
<?php
function callback($buffer)
{
// replace all the apples with oranges
return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");
?>
........

  Ответить  
 
 автор: sl1p   (22.10.2009 в 23:14)   письмо автору
 
   для: heed   (22.10.2009 в 22:28)
 

оу вот это оно!)
как я же я забыл про буфер :)

спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования