Организация структуры многоязычного сайта

Тема в разделе "Как сделать...", создана пользователем mulekula, 24 июн 2012.

  1. mulekula

    mulekula Постоялец

    Регистр.:
    6 дек 2008
    Сообщения:
    91
    Симпатии:
    2
    Помогите пожалуйста организовать такую структуру.

    как можно чтобы язык выбирался автоматически в зависимости от языка браузера + после этого перенаправляла в нужную подпапку сайта
    site.ru/ru/index
    site.ru/eng/index
     
  2. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    язык автоматически выбирается и переадресовывается с помощью Java Script
     
  3. mulekula

    mulekula Постоялец

    Регистр.:
    6 дек 2008
    Сообщения:
    91
    Симпатии:
    2
    не согласен с вами, это реально реализовать и на php вся проблема в перенаправлении.
    PHP:
    <?php
    if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 05) == "ru_RU")
      
    $lang "rus";
    else
      
    $lang "eng";
    ?>
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.405
    Симпатии:
    1.185
    Браузеры отсылают, какой язык у них по умолчанию и узнать это можно в заголовке $_SERVER['HTTP_ACCEPT_LANGUAGE']
    http://www.master-x.com/forum/topics/35242/

    А вот перенаправление в нужную папку уже сильно зависит от движка.
    В самом простом варианте, что-то типа: include('ru/index.php');
     
  5. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Простите, но вы все не правы:p Это конечно можно как-то реализовать на PHP, но зачем ради этого нагружать сервер? От этого будет хуже и клиенту и серверу.
    В java скрипте с помощью объекта window.navigator.language узнаётся язык, а затем с помощью window.location.replace(тут куда перенаправить) перенаправляешь куда надо. Причём пользователь даже не заметит что его на нужный ему язык сразу перенаправили. Это даже в истории не сохранится
     
  6. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.405
    Симпатии:
    1.185
    Ну потому как человек изначально создал тему в разделе php :)

    Если нужна именно переадресация, то это всего лишь:
    header("Location: /ru/index");

    И кстати этот вариант более оптимален с точки зрения сервера, потому как страница не формируется и не отдается клиенту, что будет в случае редиректа на JS
     
  7. mulekula

    mulekula Постоялец

    Регистр.:
    6 дек 2008
    Сообщения:
    91
    Симпатии:
    2
    если пользователь зайдет не на index страницу, а например на страницу 2 уровня как сделать чтобы сервер оставил ее на этой странице и выбрал для нее необходимый язык.
    ПС:движок не использую
     
  8. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    мне казалось что второй уровень должен быть /ru/ либо /eng/ как же иначе-то?
    или вы хотите чтобы пользователь заходя на /eng/ получал русскую страницу потому что у него браузер на русском?:lol:
    Второй уровень в мультиязычных сайтах это всегда определение языка. Так уж повелось
     
  9. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.405
    Симпатии:
    1.185
    Обрабатывай $_SERVER["REQUEST_URI"] подставляя в начало нужный язык, а потом редирект.

    Только о фильтрации подумай.
    Как минимум фильтрация http:// - его не должно быть в $_SERVER["REQUEST_URI"] а то можно будет твой сайт для нехороших редиректов использовать...
     
  10. mulekula

    mulekula Постоялец

    Регистр.:
    6 дек 2008
    Сообщения:
    91
    Симпатии:
    2
    извиняюсь 3 уровня)